diff options
author | Will Newton <will.newton@linaro.org> | 2015-02-03 12:51:14 +0000 |
---|---|---|
committer | Will Newton <will.newton@linaro.org> | 2015-02-03 14:05:06 +0000 |
commit | 3a63561744873b54e13c45923fba4aaca7a2fec7 (patch) | |
tree | 67e115be1d5e04e4402c8b0d4b3257d8deb5e491 /bfd | |
parent | 8e02d7f52092fe95f29d006e1df45b110490adc1 (diff) | |
download | gdb-3a63561744873b54e13c45923fba4aaca7a2fec7.zip gdb-3a63561744873b54e13c45923fba4aaca7a2fec7.tar.gz gdb-3a63561744873b54e13c45923fba4aaca7a2fec7.tar.bz2 |
bfd/elf32-arm.c: Improve comment in elf32_arm_finish_dynamic_symbol
Improve the comment discussing why we clear st_value for some
symbols.
bfd/ChangeLog:
2015-02-03 Will Newton <will.newton@linaro.org>
* elf32-arm.c (elf32_arm_finish_dynamic_symbol): Improve
comment discussing why we clear st_value for some symbols.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf32-arm.c | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5942e1c..e6f0418 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2015-02-03 Will Newton <will.newton@linaro.org> + + * elf32-arm.c (elf32_arm_finish_dynamic_symbol): Improve + comment discussing why we clear st_value for some symbols. + 2015-02-02 Kuan-Lin Chen <kuanlinchentw@gmail.com> * elf32-nds32.c (nds32_get_section_contents): Add one more argument. diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 3ebd1f3..5801fe9 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -14238,12 +14238,16 @@ elf32_arm_finish_dynamic_symbol (bfd * output_bfd, if (!h->def_regular) { /* Mark the symbol as undefined, rather than as defined in - the .plt section. Leave the value alone. */ + the .plt section. */ sym->st_shndx = SHN_UNDEF; - /* If the symbol is weak, we do need to clear the value. + /* If the symbol is weak we need to clear the value. Otherwise, the PLT entry would provide a definition for the symbol even if the symbol wasn't defined anywhere, - and so the symbol would never be NULL. */ + and so the symbol would never be NULL. Leave the value if + there were any relocations where pointer equality matters + (this is a clue for the dynamic linker, to make function + pointer comparisons work between an application and shared + library). */ if (!h->ref_regular_nonweak || !h->pointer_equality_needed) sym->st_value = 0; } |