]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
ld/ELF: Add --image-base command line option to the ELF linker
authorHakan Candar <hakancandar@protonmail.com>
Mon, 28 Oct 2024 11:01:59 +0000 (11:01 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 29 Oct 2024 09:08:39 +0000 (19:38 +1030)
commitf4e363cae297ec3e24dec0d95f3d422879f498a3
tree4ab387403489f6d95a894ce56d6f221637ebb7b4
parent80ac47851105702689004e07952ab6a4c04062b0
ld/ELF: Add --image-base command line option to the ELF linker

LLD has dropped the option -Ttext-segment for specifying image base
addresses, instead forcing the use of the --image-base option for both
ELF and PE targets. As it stands, GNU LD and LLVM LLD are incompatible,
having two different options for the same functionality.

This patch enables the use of --image-base on ELF targets, advancing
consistency and compatibility.

See: https://reviews.llvm.org/D70468
     https://maskray.me/blog/2020-11-15-explain-gnu-linker-options#address-related
     https://sourceware.org/bugzilla/show_bug.cgi?id=25207

Moreover, a new test has been added to ensure -z separate-code behaviour
when used with -Ttext-segment stays the same. When this combination is
used, -Ttext-segment sets the address of the first segment (R), not the
text segment (RX), and like with -z noseparate-code, no segments lesser
than the specified address are created. If this behaviour was to change,
the first (R) segment of the ELF file would begin in a lesser address
than the specified text (RX) segment, breaking traditional use of this
option for specifying image base address.
ld/NEWS
ld/emultempl/beos.em
ld/emultempl/pe.em
ld/emultempl/pep.em
ld/ld.texi
ld/ldlex.h
ld/lexsup.c
ld/testsuite/ld-elf/pr25207.d [new file with mode: 0644]
ld/testsuite/ld-elf/pr25207.s [new file with mode: 0644]