[PATCH] x86: Properly handle __ehdr_start

H.J. Lu hjl.tools@gmail.com
Sat Sep 9 12:07:00 GMT 2017


On Fri, Sep 8, 2017 at 2:34 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> After _bfd_i386_elf_convert_load and _bfd_x86_64_elf_convert_load are
> removed, elf_i386_convert_load_reloc and elf_x86_64_convert_load_reloc
> see __ehdr_start as an undefined symbol when they are called from
> check_relocs to convert GOT relocations against local symbols.  But
> __ehdr_start will be defined as a hidden symbol by linker at the later
> stage if it is referenced.  This patch marks __ehdr_start as a defined
> local symbol at the start of check_relocs if it is referenced and not
> defined.
>
> bfd/
>
>         PR ld/22115
>         * elf32-i386.c (elf_i386_convert_load_reloc): Check linker_def.
>         Don't use UNDEFINED_WEAK_RESOLVED_TO_ZERO.
>         * elf64-x86-64.c (elf_x86_64_convert_load_reloc): Check
>         linker_def.  Don't use UNDEFINED_WEAK_RESOLVED_TO_ZERO.
>         * elfxx-x86.c (_bfd_x86_elf_link_check_relocs): Set local_ref
>         and linker_def on __ehdr_start if it is referenced and not
>         defined.
>         (_bfd_x86_elf_link_symbol_references_local): Also set local_ref
>         and return TRUE when building executable, if a symbol has
>         non-GOT/non-PLT relocations in text section or there is no
>         dynamic linker.
>         * elfxx-x86.h (elf_x86_link_hash_entry): Add linker_def.
>
> ld/
>
>         PR ld/22115
>         * ld-i386/i386.exp: Run PR ld/22115 tests,
>         * ld/testsuite/ld-x86-64/x86-64.exp: Likewise.
>         * testsuite/ld-i386/pr22115-1.s: New file.
>         * testsuite/ld-i386/pr22115-1a.d: Likewise.
>         * testsuite/ld-i386/pr22115-1b.d: Likewise.
>         * testsuite/ld-x86-64/pr22115-1.s: Likewise.
>         * testsuite/ld-x86-64/pr22115-1a-x32.d: Likewise.
>         * testsuite/ld-x86-64/pr22115-1a.d: Likewise.
>         * testsuite/ld-x86-64/pr22115-1b-x32.d: Likewise.
>         * testsuite/ld-x86-64/pr22115-1b.d: Likewise.

This is what I checked in.


-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-x86-Properly-handle-__ehdr_start.patch
Type: text/x-patch
Size: 18719 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20170909/1f743d16/attachment.bin>


More information about the Binutils mailing list