aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2018-02-13 14:31:53 -0800
committerH.J. Lu <hjl.tools@gmail.com>2018-02-13 14:32:06 -0800
commit1031c264fd23641111df1e12a35d0a8f7e82fb80 (patch)
tree7d5badf3b4c32c68b10aa66140216993fbea2891
parentdb5d5ad16fb02ceb636ccef232ec846086c6cef3 (diff)
downloadgdb-1031c264fd23641111df1e12a35d0a8f7e82fb80.zip
gdb-1031c264fd23641111df1e12a35d0a8f7e82fb80.tar.gz
gdb-1031c264fd23641111df1e12a35d0a8f7e82fb80.tar.bz2
x86: Properly check building shared library
If a symbol is not defined in a regular file, and we are not generating a shared library, then set the symbol to its location in the .plt. This is required to make function pointers compare as equal between the normal executable and the shared library. * elfxx-x86.c (elf_x86_allocate_dynrelocs): Check bfd_link_dll, instead of bfd_link_pic, for building shared library.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elfxx-x86.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 726225a..77cdfe8 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
2018-02-13 H.J. Lu <hongjiu.lu@intel.com>
+ * elfxx-x86.c (elf_x86_allocate_dynrelocs): Check bfd_link_dll,
+ instead of bfd_link_pic, for building shared library.
+
+2018-02-13 H.J. Lu <hongjiu.lu@intel.com>
+
PR gas/22791
* elf64-x86-64.c (is_32bit_relative_branch): Removed.
(elf_x86_64_relocate_section): Check PIC relocations in PIE.
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index fc08d1b..bd36707 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -200,7 +200,7 @@ elf_x86_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
location in the .plt. This is required to make function
pointers compare as equal between the normal executable and
the shared library. */
- if (! bfd_link_pic (info)
+ if (! bfd_link_dll (info)
&& !h->def_regular)
{
if (use_plt_got)