[strip.sh] Move remaining GNU binutils usage to llvm binutils

With clang r377782, llvm binutils implements all the necessary
funtionaility for strip.sh. We can finally get rid of all the fallback
GNU binutils usage.

Test: m
Bug: 141010852
Bug: 135627985
Change-Id: I110f6028dab7f599decf59a5cb1b927b35e11857
This commit is contained in:
Yi Kong 2021-03-19 12:28:44 +08:00
parent fc8e9c7f00
commit ad50ce8349
2 changed files with 6 additions and 8 deletions

View File

@ -132,7 +132,7 @@ var (
blueprint.RuleParams{ blueprint.RuleParams{
Depfile: "${out}.d", Depfile: "${out}.d",
Deps: blueprint.DepsGCC, Deps: blueprint.DepsGCC,
Command: "CROSS_COMPILE=$crossCompile XZ=$xzCmd CLANG_BIN=${config.ClangBin} $stripPath ${args} -i ${in} -o ${out} -d ${out}.d", Command: "XZ=$xzCmd CLANG_BIN=${config.ClangBin} $stripPath ${args} -i ${in} -o ${out} -d ${out}.d",
CommandDeps: []string{"$stripPath", "$xzCmd"}, CommandDeps: []string{"$stripPath", "$xzCmd"},
Pool: darwinStripPool, Pool: darwinStripPool,
}, },

View File

@ -18,7 +18,6 @@
# Inputs: # Inputs:
# Environment: # Environment:
# CLANG_BIN: path to the clang bin directory # CLANG_BIN: path to the clang bin directory
# CROSS_COMPILE: prefix added to readelf, objcopy tools
# XZ: path to the xz binary # XZ: path to the xz binary
# Arguments: # Arguments:
# -i ${file}: input file (required) # -i ${file}: input file (required)
@ -69,7 +68,7 @@ do_strip_keep_symbol_list() {
KEEP_SYMBOLS="--strip-unneeded-symbol=* --keep-symbols=" KEEP_SYMBOLS="--strip-unneeded-symbol=* --keep-symbols="
KEEP_SYMBOLS+="${outfile}.symbolList" KEEP_SYMBOLS+="${outfile}.symbolList"
"${CROSS_COMPILE}objcopy" -w "${infile}" "${outfile}.tmp" ${KEEP_SYMBOLS} "${CLANG_BIN}/llvm-objcopy" -w "${infile}" "${outfile}.tmp" ${KEEP_SYMBOLS}
} }
do_strip_keep_mini_debug_info() { do_strip_keep_mini_debug_info() {
@ -81,14 +80,14 @@ do_strip_keep_mini_debug_info() {
# Current prebult llvm-objcopy does not support --only-keep-debug flag, # Current prebult llvm-objcopy does not support --only-keep-debug flag,
# and cannot process object files that are produced with the flag. Use # and cannot process object files that are produced with the flag. Use
# GNU objcopy instead for now. (b/141010852) # GNU objcopy instead for now. (b/141010852)
"${CROSS_COMPILE}objcopy" --only-keep-debug "${infile}" "${outfile}.debug" "${CLANG_BIN}/llvm-objcopy" --only-keep-debug "${infile}" "${outfile}.debug"
"${CLANG_BIN}/llvm-nm" -D "${infile}" --format=posix --defined-only 2> /dev/null | awk '{ print $1 }' | sort >"${outfile}.dynsyms" "${CLANG_BIN}/llvm-nm" -D "${infile}" --format=posix --defined-only 2> /dev/null | awk '{ print $1 }' | sort >"${outfile}.dynsyms"
"${CLANG_BIN}/llvm-nm" "${infile}" --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t" || $2 == "D") print $1 }' | sort > "${outfile}.funcsyms" "${CLANG_BIN}/llvm-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" comm -13 "${outfile}.dynsyms" "${outfile}.funcsyms" > "${outfile}.keep_symbols"
echo >> "${outfile}.keep_symbols" # Ensure that the keep_symbols file is not empty. 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" "${CLANG_BIN}/llvm-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" "${CLANG_BIN}/llvm-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" "${CLANG_BIN}/llvm-objcopy" --rename-section saved_debug_frame=.debug_frame "${outfile}.mini_debuginfo"
"${XZ}" --block-size=64k --threads=0 "${outfile}.mini_debuginfo" "${XZ}" --block-size=64k --threads=0 "${outfile}.mini_debuginfo"
"${CLANG_BIN}/llvm-objcopy" --add-section .gnu_debugdata="${outfile}.mini_debuginfo.xz" "${outfile}.tmp" "${CLANG_BIN}/llvm-objcopy" --add-section .gnu_debugdata="${outfile}.mini_debuginfo.xz" "${outfile}.tmp"
@ -196,7 +195,6 @@ mv "${outfile}.tmp" "${outfile}"
cat <<EOF > "${depsfile}" cat <<EOF > "${depsfile}"
${outfile}: \ ${outfile}: \
${infile} \ ${infile} \
${CROSS_COMPILE}objcopy \
${CLANG_BIN}/llvm-nm \ ${CLANG_BIN}/llvm-nm \
${CLANG_BIN}/llvm-objcopy \ ${CLANG_BIN}/llvm-objcopy \
${CLANG_BIN}/llvm-readelf \ ${CLANG_BIN}/llvm-readelf \