From ad50ce83497c7d25a5167ea6bdef1f0290b99f58 Mon Sep 17 00:00:00 2001 From: Yi Kong Date: Fri, 19 Mar 2021 12:28:44 +0800 Subject: [PATCH] [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 --- cc/builder.go | 2 +- scripts/strip.sh | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/cc/builder.go b/cc/builder.go index 9cd78d59a..c70cd9b92 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -132,7 +132,7 @@ var ( blueprint.RuleParams{ Depfile: "${out}.d", 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"}, Pool: darwinStripPool, }, diff --git a/scripts/strip.sh b/scripts/strip.sh index 5b7a6da7e..b3606195f 100755 --- a/scripts/strip.sh +++ b/scripts/strip.sh @@ -18,7 +18,6 @@ # Inputs: # Environment: # CLANG_BIN: path to the clang bin directory -# CROSS_COMPILE: prefix added to readelf, objcopy tools # XZ: path to the xz binary # Arguments: # -i ${file}: input file (required) @@ -69,7 +68,7 @@ do_strip_keep_symbol_list() { KEEP_SYMBOLS="--strip-unneeded-symbol=* --keep-symbols=" 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() { @@ -81,14 +80,14 @@ do_strip_keep_mini_debug_info() { # Current prebult llvm-objcopy does not support --only-keep-debug flag, # and cannot process object files that are produced with the flag. Use # 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" "${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" + "${CLANG_BIN}/llvm-objcopy" --rename-section .debug_frame=saved_debug_frame "${outfile}.debug" "${outfile}.mini_debuginfo" + "${CLANG_BIN}/llvm-objcopy" -S --remove-section .gdb_index --remove-section .comment --keep-symbols="${outfile}.keep_symbols" "${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" "${CLANG_BIN}/llvm-objcopy" --add-section .gnu_debugdata="${outfile}.mini_debuginfo.xz" "${outfile}.tmp" @@ -196,7 +195,6 @@ mv "${outfile}.tmp" "${outfile}" cat < "${depsfile}" ${outfile}: \ ${infile} \ - ${CROSS_COMPILE}objcopy \ ${CLANG_BIN}/llvm-nm \ ${CLANG_BIN}/llvm-objcopy \ ${CLANG_BIN}/llvm-readelf \