diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-05-10 19:24:54 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-05-10 19:24:54 -0700 |
commit | 0a10fb9eecc1f890cc247ae0dd4bdd4c20e7343e (patch) | |
tree | a88c9589cd7491e68943674e118a18cd8c9d6223 /sysdeps/x86_64 | |
parent | df8a552f6f93f62c494177a49ee49d3bf40949b8 (diff) | |
download | glibc-0a10fb9eecc1f890cc247ae0dd4bdd4c20e7343e.tar glibc-0a10fb9eecc1f890cc247ae0dd4bdd4c20e7343e.tar.gz glibc-0a10fb9eecc1f890cc247ae0dd4bdd4c20e7343e.tar.bz2 glibc-0a10fb9eecc1f890cc247ae0dd4bdd4c20e7343e.zip |
Don't handle R_X86_64_RELATIVE64 in ld.so
Diffstat (limited to 'sysdeps/x86_64')
-rw-r--r-- | sysdeps/x86_64/dl-machine.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h index e3bab5f22d..32814b14f7 100644 --- a/sysdeps/x86_64/dl-machine.h +++ b/sysdeps/x86_64/dl-machine.h @@ -487,11 +487,13 @@ elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, void *const reloc_addr_arg) { ElfW(Addr) *const reloc_addr = reloc_addr_arg; +#if !defined RTLD_BOOTSTRAP /* l_addr + r_addend may be > 0xffffffff and R_X86_64_RELATIVE64 relocation updates the whole 64-bit entry. */ if (__builtin_expect (ELFW(R_TYPE) (reloc->r_info) == R_X86_64_RELATIVE64, 0)) *(Elf64_Addr *) reloc_addr = (Elf64_Addr) l_addr + reloc->r_addend; else +#endif { assert (ELFW(R_TYPE) (reloc->r_info) == R_X86_64_RELATIVE); *reloc_addr = l_addr + reloc->r_addend; |