From 6f4c50ea9d73d1f8b854e2b55f11fea12e2a282b Mon Sep 17 00:00:00 2001 From: Eric Rahm Date: Tue, 17 Oct 2023 18:47:24 +0000 Subject: [PATCH] Decompress debug sections when creating debug info `create_minidebuginfo` can fail when processing objects with compressed debuginfo. To work around this we can use `llvm-objcopy` to decompress the debug sections prior to processing. Test: m Bug: 305277519 Change-Id: I0b3c1f08dfbcb7f8ebea2607ed3e22d901e63ecd --- scripts/strip.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/strip.sh b/scripts/strip.sh index d09c187b1..7b360bf5f 100755 --- a/scripts/strip.sh +++ b/scripts/strip.sh @@ -98,9 +98,17 @@ do_strip_keep_mini_debug_info_linux() { "${CLANG_BIN}/llvm-strip" --strip-all --keep-section=.ARM.attributes --remove-section=.comment "${infile}" -o "${outfile}.tmp" || fail=true if [ -z $fail ]; then - "${CREATE_MINIDEBUGINFO}" "${infile}" "${outfile}.mini_debuginfo.xz" + # create_minidebuginfo has issues with compressed debug sections. Just + # decompress them for now using objcopy which understands compressed + # debug sections. + # b/306150780 tracks supporting this directly in create_minidebuginfo + decompressed="${infile}.decompressed" + "${CLANG_BIN}/llvm-objcopy" --decompress-debug-sections \ + "${infile}" "${decompressed}" + + "${CREATE_MINIDEBUGINFO}" "${decompressed}" "${outfile}.mini_debuginfo.xz" "${CLANG_BIN}/llvm-objcopy" --add-section .gnu_debugdata="${outfile}.mini_debuginfo.xz" "${outfile}.tmp" - rm -f "${outfile}.mini_debuginfo.xz" + rm -f "${outfile}.mini_debuginfo.xz" "${decompressed}" else cp -f "${infile}" "${outfile}.tmp" fi