diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2018-02-13 14:31:53 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2018-02-13 14:32:06 -0800 |
commit | 1031c264fd23641111df1e12a35d0a8f7e82fb80 (patch) | |
tree | 7d5badf3b4c32c68b10aa66140216993fbea2891 | |
parent | db5d5ad16fb02ceb636ccef232ec846086c6cef3 (diff) | |
download | gdb-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/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elfxx-x86.c | 2 |
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) |