mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-18 06:30:05 +00:00
Update.
2000-09-28 Ulrich Drepper <drepper@redhat.com> * sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle unaligned relocation also for R_ALPHA_RELATIVE. Reported by Ivan Kokshaysky <ink@jurassic.park.msu.ru>.
This commit is contained in:
parent
52d895a4ce
commit
7c81011531
@ -1,3 +1,9 @@
|
|||||||
|
2000-09-28 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle unaligned
|
||||||
|
relocation also for R_ALPHA_RELATIVE.
|
||||||
|
Reported by Ivan Kokshaysky <ink@jurassic.park.msu.ru>.
|
||||||
|
|
||||||
2000-09-18 Bruno Haible <haible@clisp.cons.org>
|
2000-09-18 Bruno Haible <haible@clisp.cons.org>
|
||||||
|
|
||||||
* intl/dcigettext.c: Outside libc, use local variable names that don't
|
* intl/dcigettext.c: Outside libc, use local variable names that don't
|
||||||
|
@ -482,7 +482,19 @@ elf_machine_rela (struct link_map *map,
|
|||||||
/* Already done in dynamic linker. */
|
/* Already done in dynamic linker. */
|
||||||
if (map != &_dl_rtld_map)
|
if (map != &_dl_rtld_map)
|
||||||
#endif
|
#endif
|
||||||
*reloc_addr += map->l_addr;
|
{
|
||||||
|
/* XXX Make some timings. Maybe it's preverable to test for
|
||||||
|
unaligned access and only do it the complex way if necessary. */
|
||||||
|
void *reloc_addr_1 = reloc_addr;
|
||||||
|
Elf64_Addr reloc_addr_val;
|
||||||
|
|
||||||
|
/* Load value without causing unaligned trap. */
|
||||||
|
memcpy (&reloc_addr_val, reloc_addr_1, 8);
|
||||||
|
reloc_addr_val += map->l_addr;
|
||||||
|
|
||||||
|
/* Store value without causing unaligned trap. */
|
||||||
|
memcpy (reloc_addr_1, &reloc_addr_val, 8);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (r_type == R_ALPHA_NONE)
|
else if (r_type == R_ALPHA_NONE)
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user