aboutsummaryrefslogtreecommitdiff
path: root/bfd/ChangeLog
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-04-21 12:03:14 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-04-21 12:03:26 -0700
commite133d00576f3da89e7772149e8d2b6a059d26919 (patch)
treeb1ac9f41d4f96706a1806d54cf45095651d0b811 /bfd/ChangeLog
parent3c5fce9bc29b216af7d10f8d6e4d8c3f11a48359 (diff)
downloadgdb-e133d00576f3da89e7772149e8d2b6a059d26919.zip
gdb-e133d00576f3da89e7772149e8d2b6a059d26919.tar.gz
gdb-e133d00576f3da89e7772149e8d2b6a059d26919.tar.bz2
i386: Avoid dynamic symbol with GOT reference in PIE
GOT reference to global symbol in PIE will lead to dynamic symbol. It becomes a problem when "time" or "times" is defined as a variable in an executable, clashing with functions of the same name in libc. If a symbol isn't undefined weak symbol, don't make it dynamic in PIE and generate R_386_RELATIVE relocation. bfd/ PR ld/21402 * elf32-i386.c (elf_i386_link_hash_entry): Add no_finish_dynamic_symbol. (elf_i386_link_hash_newfunc): Set no_finish_dynamic_symbol to 0. (elf_i386_allocate_dynrelocs): If a symbol isn't undefined weak symbol, don't make it dynamic in PIE. (elf_i386_relocate_section): If a symbol isn't dynamic in PIE, set no_finish_dynamic_symbol and generate R_386_RELATIVE relocation for R_386_GOT32 (elf_i386_finish_dynamic_symbol): Abort if no_finish_dynamic_symbol isn't 0. ld/ PR ld/21402 * testsuite/ld-elf/indirect.exp: Don't skip PIE indirect5 and indirect6 tests on i386.
Diffstat (limited to 'bfd/ChangeLog')
-rw-r--r--bfd/ChangeLog14
1 files changed, 14 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4576020..ba2d134 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,19 @@
2017-04-21 H.J. Lu <hongjiu.lu@intel.com>
+ PR ld/21402
+ * elf32-i386.c (elf_i386_link_hash_entry): Add
+ no_finish_dynamic_symbol.
+ (elf_i386_link_hash_newfunc): Set no_finish_dynamic_symbol to 0.
+ (elf_i386_allocate_dynrelocs): If a symbol isn't undefined weak
+ symbol, don't make it dynamic in PIE.
+ (elf_i386_relocate_section): If a symbol isn't dynamic in PIE,
+ set no_finish_dynamic_symbol and generate R_386_RELATIVE
+ relocation for R_386_GOT32
+ (elf_i386_finish_dynamic_symbol): Abort if no_finish_dynamic_symbol
+ isn't 0.
+
+2017-04-21 H.J. Lu <hongjiu.lu@intel.com>
+
PR ld/19617
PR ld/21086
* elflink.c (elf_link_add_object_symbols): Require