[all-commits] [llvm/llvm-project] a6db64: [ELF] Allow sections after a non-SHF_ALLOC section...
Fangrui Song via All-commits
all-commits at lists.llvm.org
Thu Aug 6 08:27:36 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: a6db64ef4a9906c96ef5652739ac15aefaa7827c
https://github.com/llvm/llvm-project/commit/a6db64ef4a9906c96ef5652739ac15aefaa7827c
Author: Fangrui Song <i at maskray.me>
Date: 2020-08-06 (Thu, 06 Aug 2020)
Changed paths:
M lld/ELF/LinkerScript.cpp
M lld/ELF/Writer.cpp
M lld/test/ELF/linkerscript/compress-debug-sections-custom.s
M lld/test/ELF/linkerscript/sections.s
M lld/test/ELF/linkerscript/symbols-non-alloc.test
M lldb/test/Shell/SymbolFile/DWARF/Inputs/debug-line-basic.script
Log Message:
-----------
[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
More information about the All-commits
mailing list