Merge "Use create_minidebuginfo tool instead of bash script."
This commit is contained in:
commit
67f8051a86
3 changed files with 40 additions and 6 deletions
|
@ -126,15 +126,22 @@ var (
|
|||
|
||||
_ = pctx.SourcePathVariable("stripPath", "build/soong/scripts/strip.sh")
|
||||
_ = pctx.SourcePathVariable("xzCmd", "prebuilts/build-tools/${config.HostPrebuiltTag}/bin/xz")
|
||||
_ = pctx.SourcePathVariable("createMiniDebugInfo", "prebuilts/build-tools/${config.HostPrebuiltTag}/bin/create_minidebuginfo")
|
||||
|
||||
// Rule to invoke `strip` (to discard symbols and data from object files).
|
||||
strip = pctx.AndroidStaticRule("strip",
|
||||
blueprint.RuleParams{
|
||||
Depfile: "${out}.d",
|
||||
Deps: blueprint.DepsGCC,
|
||||
Command: "XZ=$xzCmd CLANG_BIN=${config.ClangBin} $stripPath ${args} -i ${in} -o ${out} -d ${out}.d",
|
||||
CommandDeps: []string{"$stripPath", "$xzCmd"},
|
||||
Pool: darwinStripPool,
|
||||
Depfile: "${out}.d",
|
||||
Deps: blueprint.DepsGCC,
|
||||
Command: "XZ=$xzCmd CREATE_MINIDEBUGINFO=$createMiniDebugInfo CLANG_BIN=${config.ClangBin} $stripPath ${args} -i ${in} -o ${out} -d ${out}.d",
|
||||
CommandDeps: func() []string {
|
||||
if runtime.GOOS != "darwin" {
|
||||
return []string{"$stripPath", "$xzCmd", "$createMiniDebugInfo"}
|
||||
} else {
|
||||
return []string{"$stripPath", "$xzCmd"}
|
||||
}
|
||||
}(),
|
||||
Pool: darwinStripPool,
|
||||
},
|
||||
"args", "crossCompile")
|
||||
|
||||
|
|
|
@ -151,6 +151,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
|
|||
|
||||
ctx.Strict("SOONG_STRIP_PATH", "${stripPath}")
|
||||
ctx.Strict("XZ", "${xzCmd}")
|
||||
ctx.Strict("CREATE_MINIDEBUGINFO", "${createMiniDebugInfo}")
|
||||
|
||||
includeFlags, err := ctx.Eval("${config.CommonGlobalIncludes}")
|
||||
if err != nil {
|
||||
|
|
|
@ -71,7 +71,7 @@ do_strip_keep_symbol_list() {
|
|||
"${CLANG_BIN}/llvm-objcopy" -w "${infile}" "${outfile}.tmp" ${KEEP_SYMBOLS}
|
||||
}
|
||||
|
||||
do_strip_keep_mini_debug_info() {
|
||||
do_strip_keep_mini_debug_info_darwin() {
|
||||
rm -f "${outfile}.dynsyms" "${outfile}.funcsyms" "${outfile}.keep_symbols" "${outfile}.debug" "${outfile}.mini_debuginfo" "${outfile}.mini_debuginfo.xz"
|
||||
local fail=
|
||||
"${CLANG_BIN}/llvm-strip" --strip-all --keep-section=.ARM.attributes --remove-section=.comment "${infile}" -o "${outfile}.tmp" || fail=true
|
||||
|
@ -92,6 +92,32 @@ do_strip_keep_mini_debug_info() {
|
|||
fi
|
||||
}
|
||||
|
||||
do_strip_keep_mini_debug_info_linux() {
|
||||
rm -f "${outfile}.mini_debuginfo.xz"
|
||||
local fail=
|
||||
"${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"
|
||||
"${CLANG_BIN}/llvm-objcopy" --add-section .gnu_debugdata="${outfile}.mini_debuginfo.xz" "${outfile}.tmp"
|
||||
rm -f "${outfile}.mini_debuginfo.xz"
|
||||
else
|
||||
cp -f "${infile}" "${outfile}.tmp"
|
||||
fi
|
||||
}
|
||||
|
||||
do_strip_keep_mini_debug_info() {
|
||||
case $(uname) in
|
||||
Linux)
|
||||
do_strip_keep_mini_debug_info_linux
|
||||
;;
|
||||
Darwin)
|
||||
do_strip_keep_mini_debug_info_darwin
|
||||
;;
|
||||
*) echo "unknown OS:" $(uname) >&2 && exit 1;;
|
||||
esac
|
||||
}
|
||||
|
||||
do_add_gnu_debuglink() {
|
||||
"${CLANG_BIN}/llvm-objcopy" --add-gnu-debuglink="${infile}" "${outfile}.tmp"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue