aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2020-05-01 09:50:37 -0700
committerFangrui Song <maskray@google.com>2020-05-04 08:07:34 -0700
commitc49f83b6e9e383ac9df02ab4d95974d7bb1e5ddc (patch)
tree2e861fc228439aea740f0e7213735ca1464b9e05 /llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
parentdb015fdd2061714224f0ba46a10db28e90df8f7d (diff)
downloadllvm-c49f83b6e9e383ac9df02ab4d95974d7bb1e5ddc.zip
llvm-c49f83b6e9e383ac9df02ab4d95974d7bb1e5ddc.tar.gz
llvm-c49f83b6e9e383ac9df02ab4d95974d7bb1e5ddc.tar.bz2
[ELF] Don't advance sh_offset for an empty section whose PT_LOAD is removed (due to p_memsz=0)
removeEmptyPTLoad() removes empty (p_memsz=0) PT_LOAD segments. In assignFileOffsets(), setFileOffset() unnecessarily advances file offsets for containing empty sections. This is exposed by arm Linux kernel's multi_v5_defconfig (see https://bugs.llvm.org/show_bug.cgi?id=45632) ``` ld.lld (max-page-size=65536): [34] .init.data PROGBITS c0c24000 c34000 0128ac 00 WA 0 0 4096 [35] .text_itcm PROGBITS fffe0000 c50000 000000 00 WA 0 0 1 [36] .data_dtcm PROGBITS fffe8000 c58000 000000 00 WA 0 0 1 [37] .data PROGBITS c0c38000 c58000 0647a0 00 WA 0 0 32 arm-linux-gnueabi-ld (max-page-size=65536): [23] .init.data PROGBITS c0c12000 c22000 0128ac 00 WA 0 0 4096 [24] .text_itcm PROGBITS fffe0000 ca2558 000000 00 W 0 0 1 [25] .data_dtcm PROGBITS fffe8000 ca2558 000000 00 W 0 0 1 [26] .data PROGBITS c0c26000 c36000 0647a0 00 WA 0 0 32 ``` This patch clears OutputSection::ptLoad if ptLoad is removed by removeEmptyPTLoad(). Conceptually this removes "dangling" references. Reviewed By: psmith Differential Revision: https://reviews.llvm.org/D79254
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp')
0 files changed, 0 insertions, 0 deletions