diff options
author | Maciej W. Rozycki <macro@codesourcery.com> | 2014-06-20 20:08:03 +0100 |
---|---|---|
committer | Maciej W. Rozycki <macro@codesourcery.com> | 2014-06-20 20:22:42 +0100 |
commit | 90e5dd482fc4708d559fbec9740104470ffdb9df (patch) | |
tree | 0e1cf5705463c270c44330e0b8b4660004dc55e6 /sysdeps/arm/dl-machine.h | |
parent | 809fdf0d23ddb683eb60672465d7a39d02ef272b (diff) | |
download | glibc-90e5dd482fc4708d559fbec9740104470ffdb9df.zip glibc-90e5dd482fc4708d559fbec9740104470ffdb9df.tar.gz glibc-90e5dd482fc4708d559fbec9740104470ffdb9df.tar.bz2 |
[BZ #17075] ARM: Fix immediate calculation of R_ARM_TLS_DESC
This fixes the calculation of R_ARM_TLS_DESC relocations for lazy global
symbol references, i.e. created with `-z lazy' in effect with the static
linker, where immediate resolution is requested with LD_BIND_NOW.
Diffstat (limited to 'sysdeps/arm/dl-machine.h')
-rw-r--r-- | sysdeps/arm/dl-machine.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index 899b256..c5ffc93 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -452,7 +452,10 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, else # endif { - value = sym->st_value + td->argument.value; + if (ELF32_R_SYM (reloc->r_info) == STN_UNDEF) + value = td->argument.value; + else + value = sym->st_value; # ifndef RTLD_BOOTSTRAP # ifndef SHARED |