bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/27425] erroneous __ImageBase relocation using Microsoft COFF .OB


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/27425] erroneous __ImageBase relocation using Microsoft COFF .OBJ linked to .ELF x86_64
Date: Sat, 06 Mar 2021 02:32:38 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=27425

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by H.J. Lu <hjl@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8c0546e928b557f10cb5aba2a91f3ecee660029d

commit 8c0546e928b557f10cb5aba2a91f3ecee660029d
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Mar 5 18:24:56 2021 -0800

    elf/x86-64: Subtract __ImageBase for R_AMD64_IMAGEBASE

    When linking Windows x86-64 relocatable object files to generate x86-64
    ELF executable, we need to subtract __ImageBase, aka __executable_start,
    for R_AMD64_IMAGEBASE relocation:

    1. Add link_info to struct output_elf_obj_tdata to store linker info and
    _bfd_get_link_info() to retrieve it.
    2. Add ldelf_set_output_arch to set up link_info.
    3. Add pex64_link_add_symbols to create an indirect reference to
    __executable_start for __ImageBase to support R_AMD64_IMAGEBASE relocation
    when adding symbols from Windows x86-64 relocatable object files to
    generate x86-64 ELF executable.
    4. Also subtract __ImageBase for R_AMD64_IMAGEBASE when generating x86-64
    ELF executable.

    bfd/

            PR ld/27425
            PR ld/27432
            * bfd.c (_bfd_get_link_info): New function.
            * elf-bfd.h (output_elf_obj_tdata): Add link_info.
            (elf_link_info): New.
            * libbfd-in.h (_bfd_get_link_info): New prototype.
            * coff-x86_64.c (coff_amd64_reloc): Also subtract __ImageBase for
            R_AMD64_IMAGEBASE when generating x86-64 ELF executable.
            * pe-x86_64.c: Include "coff/internal.h" and "libcoff.h".
            (pex64_link_add_symbols): New function.
            (coff_bfd_link_add_symbols): New macro.
            * libbfd.h: Regenerated.

    ld/

            PR ld/27425
            PR ld/27432
            * ldelf.c (ldelf_set_output_arch): New function.
            * ldelf.h (ldelf_set_output_arch): New prototype.
            * emultempl/elf.em (LDEMUL_SET_OUTPUT_ARCH): Default to
            ldelf_set_output_arch.
            * ld-x86-64/pe-x86-64-1.od: Expect __executable_start.
            * testsuite/ld-x86-64/pe-x86-64-2.od: Likewise.
            * testsuite/ld-x86-64/pe-x86-64-3.od: Likewise.
            * testsuite/ld-x86-64/pe-x86-64-4.od: Likewise.
            * testsuite/ld-x86-64/pe-x86-64-5.od: Likewise.
            * testsuite/ld-x86-64/pe-x86-64-5.rd: Likewise.
            * testsuite/ld-x86-64/pe-x86-64-6.obj.bz2: New file.
            * testsuite/ld-x86-64/pe-x86-64-6.od: Likewise.
            * testsuite/ld-x86-64/pe-x86-64.exp: Run ld/27425 test.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]