[all-commits] [llvm/llvm-project] 4dc2fb: [ELF] Error if -Ttext-segment is specified

Fangrui Song via All-commits all-commits at lists.llvm.org
Thu Nov 21 09:42:52 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 4dc2fb123dcfe9a97ad6f3a1135053b74efd0bc9
      https://github.com/llvm/llvm-project/commit/4dc2fb123dcfe9a97ad6f3a1135053b74efd0bc9
  Author: Fangrui Song <i at maskray.me>
  Date:   2019-11-21 (Thu, 21 Nov 2019)

  Changed paths:
    M lld/ELF/Driver.cpp
    M lld/ELF/Options.td
    M lld/test/ELF/sectionstart.s
    A lld/test/ELF/ttext-segment.s

  Log Message:
  -----------
  [ELF] Error if -Ttext-segment is specified

In GNU ld, -Ttext sets the address of the .text section and -Ttext-segment sets the address of the text segment (RX).

gold only supports the -Ttext-segment semantic and treats -Ttext as an alias for -Ttext-segment.

lld only supports the -Ttext semantic and treats -Ttext-segment as an
alias for -Ttext.  The text segment will be assigned to an address less
than the specified -Ttext-segment value.

This patch drops the -Ttext-segment alias.

The text segment is traditionally the first segment. Users who specify
-Ttext-segment may actually want to specify --image-base, the lld way to
express this. Unfortunately currently this is supported by GNU ld's
COFF port but not by its ELF port. gold does not support this option.
With -z separate-code, the behavior of GNU ld -Ttext-segment is weird (see https://sourceware.org/bugzilla/show_bug.cgi?id=25207)

rL289827 introduced the alias for linking qemu's non-pie user mode
binaries. As explained previously, this actually assigns the text
segment to an address less than 0x60000000. I feel that a better fix is
on the qemu side:
https://lists.nongnu.org/archive/html/qemu-devel/2019-11/msg02480.html

Reviewed By: grimar, ruiu

Differential Revision: https://reviews.llvm.org/D70468




More information about the All-commits mailing list