Files
clang-p2996/lldb/test/Shell/SymbolFile/DWARF/Inputs/debug-line-basic.script
Fangrui Song a6db64ef4a [ELF] Allow sections after a non-SHF_ALLOC section to be covered by PT_LOAD
GNU ld allows sections after a non-SHF_ALLOC section to be covered by PT_LOAD
(PR37607) and assigns addresses to non-SHF_ALLOC output sections (similar to
SHF_ALLOC NOBITS sections. The location counter is not advanced).

This patch tries to fix PR37607 (remove a special case in
`Writer<ELFT>::createPhdrs`). To make the created PT_LOAD meaningful, we cannot
reset dot to 0 for a middle non-SHF_ALLOC output section. This results in
removal of two special cases in LinkerScript::assignOffsets. Non-SHF_ALLOC
non-orphan sections can have non-zero addresses like in GNU ld.

The zero address rule for non-SHF_ALLOC sections is weakened to apply to orphan
only. This results in a special case in createSection and findOrphanPos, respectively.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D85100
2020-08-06 08:27:15 -07:00

15 lines
321 B
Plaintext

PHDRS {
text PT_LOAD;
}
SECTIONS {
.shstrtab 0 : { *(.shstrtab ) }
.debug_info 0 : { *(.debug_info ) }
.debug_line 0 : { *(.debug_line ) }
.debug_str 0 : { *(.debug_str ) }
.debug_abbrev 0 : { *(.debug_abbrev) }
. = 0x201000;
.text : { *(.text .text.f) } :text
/DISCARD/ : { *(*) }
}