mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-05 21:35:46 +02:00

Commit1d1a0e7c51
("scripts/faddr2line: Fix overlapping text section failures") can cause faddr2line to fail on ppc64le on some distributions, while it works fine on other distributions. The failure can be attributed to differences in the readelf output. $ ./scripts/faddr2line vmlinux find_busiest_group+0x00 no match for find_busiest_group+0x00 On ppc64le, readelf adds the localentry tag before the symbol name on some distributions, and adds the localentry tag after the symbol name on other distributions. This problem has been discussed previously: https://lore.kernel.org/bpf/20191211160133.GB4580@calabresa/ This problem can be overcome by filtering out the localentry tags in the readelf output. Similar fixes are already present in the kernel by way of the following commits:1fd6cee127
("libbpf: Fix VERSIONED_SYM_COUNT number parsing")aa915931ac
("libbpf: Fix readelf output parsing for Fedora") [jpoimboe: rework commit log] Fixes:1d1a0e7c51
("scripts/faddr2line: Fix overlapping text section failures") Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Reviewed-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com> Link: https://lore.kernel.org/r/20220927075211.897152-1-srikar@linux.vnet.ibm.com Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Peter Zijlstra <peterz@infradead.org>
8.3 KiB
Executable File
8.3 KiB
Executable File
#!/bin/bash
SPDX-License-Identifier: GPL-2.0
Translate stack dump function offsets.
addr2line doesn't work with KASLR addresses. This works similarly to
addr2line, but instead takes the 'func+0x123' format as input:
$ ./scripts/faddr2line ~/k/vmlinux meminfo_proc_show+0x5/0x568
meminfo_proc_show+0x5/0x568:
meminfo_proc_show at fs/proc/meminfo.c:27
If the address is part of an inlined function, the full inline call chain is
printed:
$ ./scripts/faddr2line ~/k/vmlinux native_write_msr+0x6/0x27
native_write_msr+0x6/0x27:
arch_static_branch at arch/x86/include/asm/msr.h:121
(inlined by) static_key_false at include/linux/jump_label.h:125
(inlined by) native_write_msr at arch/x86/include/asm/msr.h:125
The function size after the '/' in the input is optional, but recommended.
It's used to help disambiguate any duplicate symbol names, which can occur
rarely. If the size is omitted for a duplicate symbol then it's possible for
multiple code sites to be printed:
$ ./scripts/faddr2line ~/k/vmlinux raw_ioctl+0x5
raw_ioctl+0x5/0x20:
raw_ioctl at drivers/char/raw.c:122
raw_ioctl+0x5/0xb1:
raw_ioctl at net/ipv4/raw.c:876
Multiple addresses can be specified on a single command line:
$ ./scripts/faddr2line ~/k/vmlinux type_show+0x10/45 free_reserved_area+0x90
type_show+0x10/0x2d:
type_show at drivers/video/backlight/backlight.c:213
free_reserved_area+0x90/0x123:
free_reserved_area at mm/page_alloc.c:6429 (discriminator 2)
set -o errexit set -o nounset
usage() { echo "usage: faddr2line [--list]