aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorRyan Prichard <rprichard@google.com>2018-03-27 22:15:45 -0700
committerRyan Prichard <rprichard@google.com>2018-03-29 01:39:13 +0000
commitafefacf196dbe9a178e6b0607bb01d3c088fa59d (patch)
tree0c059cc45c057c97f15d0363e4e0c77353851a59 /scripts
parent055fa016935a6b291109e12e184f2c108120a613 (diff)
downloadbuild_soong-afefacf196dbe9a178e6b0607bb01d3c088fa59d.tar.gz
build_soong-afefacf196dbe9a178e6b0607bb01d3c088fa59d.tar.bz2
build_soong-afefacf196dbe9a178e6b0607bb01d3c088fa59d.zip
Fix mini_debug_info stripping when no symbols should be kept.
If there are no symbols to keep (i.e. all function symbols are also in the dynsym table), then the "${outfile}.keep_symbols" file has size 0. When objcopy parses a --keep-symbols file, it has a special case for 0-sized files where it silently fails (exits with status 1, no error message). On the other hand, objcopy is happy with a file containing no symbols, as long as there is some whitespace or a comment. Avoid the special case by appending a newline to keep_symbols. Bug: b/62815515 Bug: b/77242617 Test: manual Change-Id: I90fd3258426176dc18aa5a8c19389c55fe6329c7
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/strip.sh1
1 files changed, 1 insertions, 0 deletions
diff --git a/scripts/strip.sh b/scripts/strip.sh
index ff8aaa03..318c7ad5 100755
--- a/scripts/strip.sh
+++ b/scripts/strip.sh
@@ -56,6 +56,7 @@ do_strip_keep_mini_debug_info() {
"${CROSS_COMPILE}nm" -D "${infile}" --format=posix --defined-only | awk '{ print $$1 }' | sort >"${outfile}.dynsyms"
"${CROSS_COMPILE}nm" "${infile}" --format=posix --defined-only | awk '{ if ($$2 == "T" || $$2 == "t" || $$2 == "D") print $$1 }' | sort > "${outfile}.funcsyms"
comm -13 "${outfile}.dynsyms" "${outfile}.funcsyms" > "${outfile}.keep_symbols"
+ echo >> "${outfile}.keep_symbols" # Ensure that the keep_symbols file is not empty.
"${CROSS_COMPILE}objcopy" --rename-section .debug_frame=saved_debug_frame "${outfile}.debug" "${outfile}.mini_debuginfo"
"${CROSS_COMPILE}objcopy" -S --remove-section .gdb_index --remove-section .comment --keep-symbols="${outfile}.keep_symbols" "${outfile}.mini_debuginfo"
"${CROSS_COMPILE}objcopy" --rename-section saved_debug_frame=.debug_frame "${outfile}.mini_debuginfo"