[llvm-dev] LLD bug causing objcopy ELF to binary generation to create large binaries
Kasun Fernando via llvm-dev
llvm-dev at lists.llvm.org
Sun Mar 29 14:50:12 PDT 2020
Hi LLVM devs,
I came across an LLD bug in v 10.x where ELF parser / processor is
setting .PROGBITS attribute for .heap and .stack sections, which leads
to large binaries when we do `llvm-objcopy -o binary` to generate the
binary output for armv6m. (e.g. for a 57Kb elf would yield a ~400Mb
binary).
This in comparison with LLVM 7.x , would produce the correct binary size
of 35Kb and the elf sections have NOBITS for .heap and .stack sections.
I narrowed down the problem to the following commit and the commits
around this....Please see below:
commit ccba42c7eb3cdfe7824cd4b473a9688e5738fa3a
Author: Andrew Ng <anng.sw at gmail.com>
Date: Tue Apr 23 12:38:52 2019 +0000
[ELF] Change default output section type to SHT_PROGBITS
This fixes an issue where a symbol only section at the start of a
PT_LOAD segment, causes incorrect alignment of the file offset for the
start of the segment which results in the output of an invalid ELF.
SHT_PROGBITS was the default output section type in the past.
Differential Revision: https://reviews.llvm.org/D60131
llvm-svn: 358981
commit 5929553868ddfd3f53672253782260c2a0a52c79
Author: Fangrui Song <maskray at google.com>
Date: Wed Apr 24 14:44:07 2019 +0000
[ELF] Delete a redundant SHT_NOBITS -> SHT_PROGBITS after D60131
Differential Revision: https://reviews.llvm.org/D61006
llvm-svn: 359099
What was the intention behind "Andrew Ng"'s commit? was it an oversight
to set PROGBITS attribute unconditionally for sections that are
allocation only?
regards
Kasun
More information about the llvm-dev
mailing list