diff options
author | Josh Poimboeuf <jpoimboe@kernel.org> | 2022-07-21 11:01:23 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-08-25 11:18:08 +0200 |
commit | 26d2d13d9fc35abcc1157e17a85eee2dd4ec1872 (patch) | |
tree | 7d09d6c075ea6992ceee8fb7bcc51f67b70da5ce /scripts | |
parent | 563ffb782da7a7ed5acc69d059e21ad2ecf4d8e2 (diff) | |
download | linux-stable-26d2d13d9fc35abcc1157e17a85eee2dd4ec1872.tar.gz linux-stable-26d2d13d9fc35abcc1157e17a85eee2dd4ec1872.tar.bz2 linux-stable-26d2d13d9fc35abcc1157e17a85eee2dd4ec1872.zip |
scripts/faddr2line: Fix vmlinux detection on arm64
[ Upstream commit b6a5068854cfe372da7dee3224dcf023ed5b00cb ]
Since commit dcea997beed6 ("faddr2line: Fix overlapping text section
failures, the sequel"), faddr2line is completely broken on arm64.
For some reason, on arm64, the vmlinux ELF object file type is ET_DYN
rather than ET_EXEC. Check for both when determining whether the object
is vmlinux.
Modules and vmlinux.o have type ET_REL on all arches.
Fixes: dcea997beed6 ("faddr2line: Fix overlapping text section failures, the sequel")
Reported-by: John Garry <john.garry@huawei.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: John Garry <john.garry@huawei.com>
Link: https://lore.kernel.org/r/dad1999737471b06d6188ce4cdb11329aa41682c.1658426357.git.jpoimboe@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/faddr2line | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/scripts/faddr2line b/scripts/faddr2line index 94ed98dd899f..57099687e5e1 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -112,7 +112,9 @@ __faddr2line() { # section offsets. local file_type=$(${READELF} --file-header $objfile | ${AWK} '$1 == "Type:" { print $2; exit }') - [[ $file_type = "EXEC" ]] && is_vmlinux=1 + if [[ $file_type = "EXEC" ]] || [[ $file_type == "DYN" ]]; then + is_vmlinux=1 + fi # Go through each of the object's symbols which match the func name. # In rare cases there might be duplicates, in which case we print all |