Move toc.sh to use LLVM binutils

Test: build
Change-Id: Ib965b6ea3fba6ae007135ac7e167cc50f0f6e3de
This commit is contained in:
Yi Kong 2021-04-01 17:45:42 +08:00
parent f8c9713fb8
commit 4ad44e713b
2 changed files with 19 additions and 23 deletions

View File

@ -182,11 +182,11 @@ var (
blueprint.RuleParams{
Depfile: "${out}.d",
Deps: blueprint.DepsGCC,
Command: "CROSS_COMPILE=$crossCompile $tocPath $format -i ${in} -o ${out} -d ${out}.d",
Command: "CLANG_BIN=$clangBin $tocPath $format -i ${in} -o ${out} -d ${out}.d",
CommandDeps: []string{"$tocPath"},
Restat: true,
},
"crossCompile", "format")
"clangBin", "format")
// Rule for invoking clang-tidy (a clang-based linter).
clangTidy, clangTidyRE = pctx.RemoteStaticRules("clangTidy",
@ -918,16 +918,12 @@ func transformSharedObjectToToc(ctx android.ModuleContext, inputFile android.Pat
outputFile android.WritablePath, flags builderFlags) {
var format string
var crossCompile string
if ctx.Darwin() {
format = "--macho"
crossCompile = "${config.MacToolPath}"
} else if ctx.Windows() {
format = "--pe"
crossCompile = gccCmd(flags.toolchain, "")
} else {
format = "--elf"
crossCompile = gccCmd(flags.toolchain, "")
}
ctx.Build(pctx, android.BuildParams{
@ -936,8 +932,8 @@ func transformSharedObjectToToc(ctx android.ModuleContext, inputFile android.Pat
Output: outputFile,
Input: inputFile,
Args: map[string]string{
"crossCompile": crossCompile,
"format": format,
"clangBin": "${config.ClangBin}",
"format": format,
},
})
}

View File

@ -17,7 +17,7 @@
# Script to handle generating a .toc file from a .so file
# Inputs:
# Environment:
# CROSS_COMPILE: prefix added to readelf tool
# CLANG_BIN: path to the clang bin directory
# Arguments:
# -i ${file}: input file (required)
# -o ${file}: output file (required)
@ -35,34 +35,34 @@ EOF
}
do_elf() {
("${CROSS_COMPILE}readelf" -d "${infile}" | grep SONAME || echo "No SONAME for ${infile}") > "${outfile}.tmp"
"${CROSS_COMPILE}readelf" --dyn-syms "${infile}" | awk '{$2=""; $3=""; print}' >> "${outfile}.tmp"
("${CLANG_BIN}/llvm-readelf" -d "${infile}" | grep SONAME || echo "No SONAME for ${infile}") > "${outfile}.tmp"
"${CLANG_BIN}/llvm-readelf" --dyn-syms "${infile}" | awk '{$2=""; $3=""; print}' >> "${outfile}.tmp"
cat <<EOF > "${depsfile}"
${outfile}: \\
${CROSS_COMPILE}readelf \\
${CLANG_BIN}/llvm-readelf \\
EOF
}
do_macho() {
"${CROSS_COMPILE}/otool" -l "${infile}" | grep LC_ID_DYLIB -A 5 > "${outfile}.tmp"
"${CROSS_COMPILE}/nm" -gP "${infile}" | cut -f1-2 -d" " | (grep -v 'U$' >> "${outfile}.tmp" || true)
"${CLANG_BIN}/llvm-objdump" -p "${infile}" | grep LC_ID_DYLIB -A 5 > "${outfile}.tmp"
"${CLANG_BIN}/llvm-nm" -gP "${infile}" | cut -f1-2 -d" " | (grep -v 'U$' >> "${outfile}.tmp" || true)
cat <<EOF > "${depsfile}"
${outfile}: \\
${CROSS_COMPILE}/otool \\
${CROSS_COMPILE}/nm \\
${CLANG_BIN}/llvm-objdump \\
${CLANG_BIN}/llvm-nm \\
EOF
}
do_pe() {
"${CROSS_COMPILE}objdump" -x "${infile}" | grep "^Name" | cut -f3 -d" " > "${outfile}.tmp"
"${CROSS_COMPILE}nm" -g -f p "${infile}" | cut -f1-2 -d" " >> "${outfile}.tmp"
"${CLANG_BIN}/llvm-objdump" -x "${infile}" | grep "^Name" | cut -f3 -d" " > "${outfile}.tmp"
"${CLANG_BIN}/llvm-nm" -g -f p "${infile}" | cut -f1-2 -d" " >> "${outfile}.tmp"
cat <<EOF > "${depsfile}"
${outfile}: \\
${CROSS_COMPILE}objdump \\
${CROSS_COMPILE}nm \\
${CLANG_BIN}/llvm-objdump \\
${CLANG_BIN}/llvm-nm \\
EOF
}
@ -98,8 +98,8 @@ if [ -z "${depsfile:-}" ]; then
usage
fi
if [ -z "${CROSS_COMPILE:-}" ]; then
echo "CROSS_COMPILE environment variable must be set"
if [ -z "${CLANG_BIN:-}" ]; then
echo "CLANG_BIN environment variable must be set"
usage
fi
@ -107,7 +107,7 @@ rm -f "${outfile}.tmp"
cat <<EOF > "${depsfile}"
${outfile}: \\
${CROSS_COMPILE}readelf \\
${CLANG_BIN}/llvm-readelf \\
EOF
if [ -n "${elf:-}" ]; then