[llvm] [llvm-objcopy] Add --compress-sections (PR #85036)

Mitch Phillips via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 5 02:42:45 PDT 2024


hctim wrote:

Hi Ray,

Looks like this broke the UBSan bot (https://lab.llvm.org/buildbot/#/builders/5/builds/42341/steps/9/logs/stdio).

```
FAIL: LLVM :: tools/llvm-objcopy/ELF/compress-sections.s (81669 of 81716)
******************** TEST 'LLVM :: tools/llvm-objcopy/ELF/compress-sections.s' FAILED ********************
Exit Code: 1
Command Output (stderr):
--
RUN: at line 3: rm -rf /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/tools/llvm-objcopy/ELF/Output/compress-sections.s.tmp && mkdir /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/tools/llvm-objcopy/ELF/Output/compress-sections.s.tmp && cd /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/tools/llvm-objcopy/ELF/Output/compress-sections.s.tmp
+ rm -rf /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/tools/llvm-objcopy/ELF/Output/compress-sections.s.tmp
+ mkdir /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/tools/llvm-objcopy/ELF/Output/compress-sections.s.tmp
+ cd /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/tools/llvm-objcopy/ELF/Output/compress-sections.s.tmp
RUN: at line 4: /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-mc -filetype=obj -triple=x86_64 /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/tools/llvm-objcopy/ELF/compress-sections.s -o a.o
+ /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-mc -filetype=obj -triple=x86_64 /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/tools/llvm-objcopy/ELF/compress-sections.s -o a.o
RUN: at line 7: /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-objcopy a.o out --compress-sections='*0=zlib' --compress-sections '*0=none' --compress-sections 'nomatch=none' 2>&1 | /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/count 0
+ /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-objcopy a.o out '--compress-sections=*0=zlib' --compress-sections '*0=none' --compress-sections nomatch=none
+ /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/count 0
RUN: at line 8: /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-readelf -S out | /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/FileCheck /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/tools/llvm-objcopy/ELF/compress-sections.s --check-prefix=CHECK1
+ /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-readelf -S out
+ /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/FileCheck /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/tools/llvm-objcopy/ELF/compress-sections.s --check-prefix=CHECK1
RUN: at line 22: /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-objcopy a.o out2 --compress-sections '*c0=zlib' --compress-sections .debug_str=zstd
+ /b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-objcopy a.o out2 --compress-sections '*c0=zlib' --compress-sections .debug_str=zstd
/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/ObjCopy/ELF/ELFObject.cpp:2166:30: runtime error: reference binding to misaligned address 0x000000000001 for type 'const SectionBase', which requires 8 byte alignment
0x000000000001: note: pointer points here
<memory cannot be printed>
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/ObjCopy/ELF/ELFObject.cpp:2166:30 
```

Quickest commands to repro (some parts can probably be elided):

```
$ cmake \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_USE_LINKER=lld \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS="-fsanitize=undefined" \
-DCMAKE_CXX_FLAGS="-fsanitize=undefined" \
-DLLVM_ENABLE_PROJECTS="'clang;lld'" \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
-DLLVM_LIBC_ENABLE_LINTING=OFF \
-DLLVM_USE_SANITIZER=Undefined \
-DLLVM_ENABLE_ASSERTIONS=ON \
/usr/local/google/home/mitchp/llvm/llvm
$ LIT_OPTS='--filter compress-sections' ninja check-llvm
```

https://github.com/llvm/llvm-project/pull/85036


More information about the llvm-commits mailing list