[PATCH v1] ld/ELF: Add --image-base command line option to the ELF linker
Alan Modra
amodra@gmail.com
Fri Oct 25 03:37:23 GMT 2024
On Fri, Oct 25, 2024 at 01:25:21AM +0000, hakan wrote:
> 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/
> PR 25207
> * emultempl/pe.em: Remove redeclaration of --image-base.
> * emultempl/pep.em: Ditto.
> * emultempl/beos.em: Ditto.
> * ldlex.h (enum option_values): Move OPTION_IMAGE_BASE.
> * lexsup.c (ld_options): Add --image-base.
> (parse_args): On ELF, make --image-base follow -Ttext-segment behaviour.
> * ld.texi: Document the new option and re-define -Ttext-segment
> with established behaviour.
> * testsuite/ld-elf/pr25207.d: New file.
> * testsuite/ld-elf/pr25207.s: New file.
> * NEWS: Mention the new feature.
>
> Tested on Linux x86-64, for ELF and PE targets.
The test needs some tweaking. Fix these fails then the patch is OK.
arc-linux-uclibc +FAIL: ld-elf/pr25207
bfin-linux-uclibc +FAIL: ld-elf/pr25207
h8300-linux-gnu +FAIL: ld-elf/pr25207
hppa64-linux-gnu +FAIL: ld-elf/pr25207
metag-linux-gnu +FAIL: ld-elf/pr25207
mips64-linux-gnuabi64 +FAIL: ld-elf/pr25207
mipsel-linux-gnu +FAIL: ld-elf/pr25207
mipsisa32el-linux-gnu +FAIL: ld-elf/pr25207
mips-linux-gnu +FAIL: ld-elf/pr25207
nds32le-linux-gnu +FAIL: ld-elf/pr25207
sparc64-linux-gnu +FAIL: ld-elf/pr25207
--
Alan Modra
More information about the Binutils
mailing list