mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
scripts/faddr2line: Use LLVM addr2line and readelf if LLVM=1
GNU utilities cannot necessarily parse objects built by LLVM, which can result in confusing errors when using 'faddr2line': $ CROSS_COMPILE=aarch64-linux-gnu- ./scripts/faddr2line vmlinux do_one_initcall+0xf4/0x260 aarch64-linux-gnu-addr2line: vmlinux: unknown type [0x13] section `.relr.dyn' aarch64-linux-gnu-addr2line: DWARF error: invalid or unhandled FORM value: 0x25 do_one_initcall+0xf4/0x260: aarch64-linux-gnu-addr2line: vmlinux: unknown type [0x13] section `.relr.dyn' aarch64-linux-gnu-addr2line: DWARF error: invalid or unhandled FORM value: 0x25 $x.73 at main.c:? Although this can be worked around by setting CROSS_COMPILE to "llvm=-", it's cleaner to follow the same syntax as the top-level Makefile and accept LLVM= as an indication to use the llvm- tools, optionally specifying their location or specific version number. Suggested-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Will Deacon <will@kernel.org> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Link: https://lore.kernel.org/r/20231002165750.1661-3-will@kernel.org Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
This commit is contained in:
parent
180af1a5bd
commit
86bf86e19d
@ -58,8 +58,21 @@ die() {
|
||||
exit 1
|
||||
}
|
||||
|
||||
READELF="${CROSS_COMPILE:-}readelf"
|
||||
ADDR2LINE="${CROSS_COMPILE:-}addr2line"
|
||||
UTIL_SUFFIX=""
|
||||
if [[ "${LLVM:-}" == "" ]]; then
|
||||
UTIL_PREFIX=${CROSS_COMPILE:-}
|
||||
else
|
||||
UTIL_PREFIX=llvm-
|
||||
|
||||
if [[ "${LLVM}" == *"/" ]]; then
|
||||
UTIL_PREFIX=${LLVM}${UTIL_PREFIX}
|
||||
elif [[ "${LLVM}" == "-"* ]]; then
|
||||
UTIL_SUFFIX=${LLVM}
|
||||
fi
|
||||
fi
|
||||
|
||||
READELF="${UTIL_PREFIX}readelf${UTIL_SUFFIX}"
|
||||
ADDR2LINE="${UTIL_PREFIX}addr2line${UTIL_SUFFIX}"
|
||||
AWK="awk"
|
||||
GREP="grep"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user