Message ID | 20191123160444.11251-14-yamada.masahiro@socionext.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | scripts/kallsyms: various cleanups and optimizations | expand |
On Sun, 24 Nov 2019, Masahiro Yamada wrote: > Collect the ignored patterns to is_ignored_symbol(). > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> This commit (887df76de67f5) caused a regression in my powerpc builds as it causes symbol names to disappear from backtraces: ------------[ cut here ]------------ WARNING: CPU: 0 PID: 0 at kernel/smp.c:433 _einittext+0x3f9e5120/0x3feb71b8 Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.0-rc7-pmac-00055-g887df76de67f5 #18 NIP: c00aef68 LR: c00af114 CTR: c001272c REGS: c0705c40 TRAP: 0700 Not tainted (5.4.0-rc7-pmac-00055-g887df76de67f5) MSR: 00029032 <EE,ME,IR,DR,RI> CR: 42000044 XER: 00000000 GPR00: 001f0100 c0705cf8 c06dc300 c070af1c c001258c 00000000 00000000 ef7fb5bc GPR08: 08800000 00000100 00000001 00000100 42000044 00000000 c0709040 00000004 GPR16: 00000001 c06022b4 c058297c 00200002 ffff8cb9 00000000 c06d84a0 c0710000 GPR24: c0710000 00000000 00000000 c070af1c c070af1c 00000000 c001258c 00000000 NIP [c00aef68] _einittext+0x3f9e5120/0x3feb71b8 LR [c00af114] _einittext+0x3f9e52cc/0x3feb71b8 Call Trace: [c0705cf8] [ef006320] 0xef006320 (unreliable) [c0705d38] [c00af114] _einittext+0x3f9e52cc/0x3feb71b8 [c0705d48] [c00af158] _einittext+0x3f9e5310/0x3feb71b8 [c0705d68] [c0012768] _einittext+0x3f948920/0x3feb71b8 [c0705d78] [c0092c04] _einittext+0x3f9c8dbc/0x3feb71b8 [c0705d88] [c0092d18] _einittext+0x3f9c8ed0/0x3feb71b8 [c0705da8] [c0093a2c] _einittext+0x3f9c9be4/0x3feb71b8 [c0705de8] [c0580224] _einittext+0x3feb63dc/0x3feb71b8 [c0705e48] [c00382ec] _einittext+0x3f96e4a4/0x3feb71b8 [c0705e58] [c000d2a0] _einittext+0x3f943458/0x3feb71b8 [c0705e88] [c001353c] _einittext+0x3f9496f4/0x3feb71b8 --- interrupt: 901 at _einittext+0x3f941058/0x3feb71b8 LR = _einittext+0x3f941058/0x3feb71b8 [c0705f50] [c06cc214] 0xc06cc214 (unreliable) [c0705f60] [c057fa20] _einittext+0x3feb5bd8/0x3feb71b8 [c0705f70] [c005de48] _einittext+0x3f994000/0x3feb71b8 [c0705f90] [c005e050] _einittext+0x3f994208/0x3feb71b8 [c0705fa0] [c0004cc8] _einittext+0x3f93ae80/0x3feb71b8 [c0705fb0] [c069a36c] _einittext+0x3ffd0524/0x40000000 [c0705ff0] [00003500] 0x3500 Instruction dump: 7c0803a6 7fa5eb78 7d808120 7ea6ab78 baa10014 38210040 4bfffbb0 7f64db78 7f85e378 484b31b1 7c601b78 4bfffdf4 <0fe00000> 4bfffd60 9421ffe0 7c0802a6 ---[ end trace a06fef4788747c72 ]--- Prior to that (e.g. 97261e1e2240f), I get backtraces like this: ------------[ cut here ]------------ WARNING: CPU: 0 PID: 0 at kernel/smp.c:433 smp_call_function_many+0x318/0x320 Modules linked in: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.0-rc7-pmac-00054-g97261e1e2240f #20 NIP: c00aef68 LR: c00af114 CTR: c001272c REGS: c075dc40 TRAP: 0700 Not tainted (5.4.0-rc7-pmac-00054-g97261e1e2240f) MSR: 00029032 <EE,ME,IR,DR,RI> CR: 42000044 XER: 00000000 GPR00: 001f0100 c075dcf8 c0733300 c0762f1c c001258c 00000000 00000000 ef7fb5bc GPR08: 04800000 00000100 00000001 00000100 42000044 00000000 c0761040 00000004 GPR16: 00000001 c0658e58 c058297c 00200002 ffff8cb9 00000000 c072f4a0 c0760000 GPR24: c0760000 00000000 00000000 c0762f1c c0762f1c 00000000 c001258c 00000000 NIP [c00aef68] smp_call_function_many+0x318/0x320 LR [c00af114] smp_call_function+0x34/0x44 Call Trace: [c075dcf8] [ef006320] 0xef006320 (unreliable) [c075dd38] [c00af114] smp_call_function+0x34/0x44 [c075dd48] [c00af158] on_each_cpu+0x1c/0x4c [c075dd68] [c0012768] tau_timeout_smp+0x3c/0x4c [c075dd78] [c0092c04] call_timer_fn.isra.26+0x20/0x84 [c075dd88] [c0092d18] expire_timers+0xb0/0xc0 [c075dda8] [c0093a2c] run_timer_softirq+0xa4/0x1a4 [c075dde8] [c0580224] __do_softirq+0x11c/0x280 [c075de48] [c00382ec] irq_exit+0xc0/0xd4 [c075de58] [c000d2a0] timer_interrupt+0x154/0x260 [c075de88] [c001353c] ret_from_except+0x0/0x14 --- interrupt: 901 at arch_cpu_idle+0x24/0x78 LR = arch_cpu_idle+0x24/0x78 [c075df50] [c0723214] 0xc0723214 (unreliable) [c075df60] [c057fa20] default_idle_call+0x38/0x58 [c075df70] [c005de48] do_idle+0xd4/0x17c [c075df90] [c005e054] cpu_startup_entry+0x24/0x28 [c075dfa0] [c0004cc8] rest_init+0xa8/0xbc [c075dfb0] [c06f136c] start_kernel+0x40c/0x420 [c075dff0] [00003500] 0x3500 Instruction dump: 7c0803a6 7fa5eb78 7d808120 7ea6ab78 baa10014 38210040 4bfffbb0 7f64db78 7f85e378 484b31b1 7c601b78 4bfffdf4 <0fe00000> 4bfffd60 9421ffe0 7c0802a6 ---[ end trace 784c7f15ecd23941 ]--- Has anyone else observed these problems (either the WARNING from smp_call_function_many() or the missing symbol names)? What is the best way to fix this? Should I upgrade binutils?
On Mon, Jul 20, 2020 at 10:46 AM Finn Thain <fthain@telegraphics.com.au> wrote: > > On Sun, 24 Nov 2019, Masahiro Yamada wrote: > > > Collect the ignored patterns to is_ignored_symbol(). > > > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > > This commit (887df76de67f5) caused a regression in my powerpc builds as it > causes symbol names to disappear from backtraces: > > ------------[ cut here ]------------ > WARNING: CPU: 0 PID: 0 at kernel/smp.c:433 _einittext+0x3f9e5120/0x3feb71b8 > Modules linked in: > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.0-rc7-pmac-00055-g887df76de67f5 #18 > NIP: c00aef68 LR: c00af114 CTR: c001272c > REGS: c0705c40 TRAP: 0700 Not tainted (5.4.0-rc7-pmac-00055-g887df76de67f5) > MSR: 00029032 <EE,ME,IR,DR,RI> CR: 42000044 XER: 00000000 > > GPR00: 001f0100 c0705cf8 c06dc300 c070af1c c001258c 00000000 00000000 ef7fb5bc > GPR08: 08800000 00000100 00000001 00000100 42000044 00000000 c0709040 00000004 > GPR16: 00000001 c06022b4 c058297c 00200002 ffff8cb9 00000000 c06d84a0 c0710000 > GPR24: c0710000 00000000 00000000 c070af1c c070af1c 00000000 c001258c 00000000 > NIP [c00aef68] _einittext+0x3f9e5120/0x3feb71b8 > LR [c00af114] _einittext+0x3f9e52cc/0x3feb71b8 > Call Trace: > [c0705cf8] [ef006320] 0xef006320 (unreliable) > [c0705d38] [c00af114] _einittext+0x3f9e52cc/0x3feb71b8 > [c0705d48] [c00af158] _einittext+0x3f9e5310/0x3feb71b8 > [c0705d68] [c0012768] _einittext+0x3f948920/0x3feb71b8 > [c0705d78] [c0092c04] _einittext+0x3f9c8dbc/0x3feb71b8 > [c0705d88] [c0092d18] _einittext+0x3f9c8ed0/0x3feb71b8 > [c0705da8] [c0093a2c] _einittext+0x3f9c9be4/0x3feb71b8 > [c0705de8] [c0580224] _einittext+0x3feb63dc/0x3feb71b8 > [c0705e48] [c00382ec] _einittext+0x3f96e4a4/0x3feb71b8 > [c0705e58] [c000d2a0] _einittext+0x3f943458/0x3feb71b8 > [c0705e88] [c001353c] _einittext+0x3f9496f4/0x3feb71b8 > --- interrupt: 901 at _einittext+0x3f941058/0x3feb71b8 > LR = _einittext+0x3f941058/0x3feb71b8 > [c0705f50] [c06cc214] 0xc06cc214 (unreliable) > [c0705f60] [c057fa20] _einittext+0x3feb5bd8/0x3feb71b8 > [c0705f70] [c005de48] _einittext+0x3f994000/0x3feb71b8 > [c0705f90] [c005e050] _einittext+0x3f994208/0x3feb71b8 > [c0705fa0] [c0004cc8] _einittext+0x3f93ae80/0x3feb71b8 > [c0705fb0] [c069a36c] _einittext+0x3ffd0524/0x40000000 > [c0705ff0] [00003500] 0x3500 > Instruction dump: > 7c0803a6 7fa5eb78 7d808120 7ea6ab78 baa10014 38210040 4bfffbb0 7f64db78 > 7f85e378 484b31b1 7c601b78 4bfffdf4 <0fe00000> 4bfffd60 9421ffe0 7c0802a6 > ---[ end trace a06fef4788747c72 ]--- > > > Prior to that (e.g. 97261e1e2240f), I get backtraces like this: > > ------------[ cut here ]------------ > WARNING: CPU: 0 PID: 0 at kernel/smp.c:433 smp_call_function_many+0x318/0x320 > Modules linked in: > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.0-rc7-pmac-00054-g97261e1e2240f #20 > NIP: c00aef68 LR: c00af114 CTR: c001272c > REGS: c075dc40 TRAP: 0700 Not tainted (5.4.0-rc7-pmac-00054-g97261e1e2240f) > MSR: 00029032 <EE,ME,IR,DR,RI> CR: 42000044 XER: 00000000 > > GPR00: 001f0100 c075dcf8 c0733300 c0762f1c c001258c 00000000 00000000 ef7fb5bc > GPR08: 04800000 00000100 00000001 00000100 42000044 00000000 c0761040 00000004 > GPR16: 00000001 c0658e58 c058297c 00200002 ffff8cb9 00000000 c072f4a0 c0760000 > GPR24: c0760000 00000000 00000000 c0762f1c c0762f1c 00000000 c001258c 00000000 > NIP [c00aef68] smp_call_function_many+0x318/0x320 > LR [c00af114] smp_call_function+0x34/0x44 > Call Trace: > [c075dcf8] [ef006320] 0xef006320 (unreliable) > [c075dd38] [c00af114] smp_call_function+0x34/0x44 > [c075dd48] [c00af158] on_each_cpu+0x1c/0x4c > [c075dd68] [c0012768] tau_timeout_smp+0x3c/0x4c > [c075dd78] [c0092c04] call_timer_fn.isra.26+0x20/0x84 > [c075dd88] [c0092d18] expire_timers+0xb0/0xc0 > [c075dda8] [c0093a2c] run_timer_softirq+0xa4/0x1a4 > [c075dde8] [c0580224] __do_softirq+0x11c/0x280 > [c075de48] [c00382ec] irq_exit+0xc0/0xd4 > [c075de58] [c000d2a0] timer_interrupt+0x154/0x260 > [c075de88] [c001353c] ret_from_except+0x0/0x14 > --- interrupt: 901 at arch_cpu_idle+0x24/0x78 > LR = arch_cpu_idle+0x24/0x78 > [c075df50] [c0723214] 0xc0723214 (unreliable) > [c075df60] [c057fa20] default_idle_call+0x38/0x58 > [c075df70] [c005de48] do_idle+0xd4/0x17c > [c075df90] [c005e054] cpu_startup_entry+0x24/0x28 > [c075dfa0] [c0004cc8] rest_init+0xa8/0xbc > [c075dfb0] [c06f136c] start_kernel+0x40c/0x420 > [c075dff0] [00003500] 0x3500 > Instruction dump: > 7c0803a6 7fa5eb78 7d808120 7ea6ab78 baa10014 38210040 4bfffbb0 7f64db78 > 7f85e378 484b31b1 7c601b78 4bfffdf4 <0fe00000> 4bfffd60 9421ffe0 7c0802a6 > ---[ end trace 784c7f15ecd23941 ]--- > > Has anyone else observed these problems (either the WARNING from > smp_call_function_many() or the missing symbol names)? > > What is the best way to fix this? Should I upgrade binutils? I got a similar report before. I'd like to know whether or not this is the same issue as fixed by 7883a14339299773b2ce08dcfd97c63c199a9289 Does your problem happen on the latest kernel? Which version of binutils are you using?
On Mon, 20 Jul 2020, Masahiro Yamada wrote: > > I got a similar report before. > > I'd like to know whether or not > this is the same issue as fixed by > 7883a14339299773b2ce08dcfd97c63c199a9289 > The problem can be observed with 3d77e6a8804ab ("Linux 5.7"). So it appears that 7883a14339299 ("scripts/kallsyms: fix wrong kallsyms_relative_base") is not sufficient to fix it. > > Does your problem happen on the latest kernel? Unfortunately this cross compiler (gcc 4.6.4) is too old to build v5.8-rc1 or later. I will have to upgrade. > Which version of binutils are you using? > This toolchain uses binutils 2.22. In case it helps, $ powerpc-linux-gnu-nm -n vmlinux |head w mach_chrp 00000005 a LG_CACHELINE_BYTES 00000005 a LG_CACHELINE_BYTES 00000005 a LG_CACHELINE_BYTES 0000000c a Hash_bits 0000001f a CACHELINE_MASK 0000001f a CACHELINE_MASK 0000001f a CACHELINE_MASK 00000020 a CACHELINE_BYTES 00000020 a CACHELINE_BYTES 00000020 a CACHELINE_BYTES 00000020 a reg 0003ffc0 a Hash_msk c0000000 T _start c0000000 A _stext c0000000 A _text c000000c T __start c0000054 t __after_mmu_off c0000090 t turn_on_mmu c00000c4 T __secondary_hold c00000dc T __secondary_hold_spinloop c00000e0 T __secondary_hold_acknowledge c0000100 t Reset
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 04a1dd16edcf..d90a6133d7b8 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -137,6 +137,21 @@ static bool is_ignored_symbol(const char *name, char type) return true; } + if (type == 'U' || type == 'u') + return true; + /* exclude debugging symbols */ + if (type == 'N' || type == 'n') + return true; + + if (toupper(type) == 'A') { + /* Keep these useful absolute symbols */ + if (strcmp(name, "__kernel_syscall_via_break") && + strcmp(name, "__kernel_syscall_via_epc") && + strcmp(name, "__kernel_sigtramp") && + strcmp(name, "__gp")) + return true; + } + return false; } @@ -188,21 +203,6 @@ static int read_symbol(FILE *in, struct sym_entry *s) else if (check_symbol_range(sym, s->addr, text_ranges, ARRAY_SIZE(text_ranges)) == 0) /* nothing to do */; - else if (toupper(stype) == 'A') - { - /* Keep these useful absolute symbols */ - if (strcmp(sym, "__kernel_syscall_via_break") && - strcmp(sym, "__kernel_syscall_via_epc") && - strcmp(sym, "__kernel_sigtramp") && - strcmp(sym, "__gp")) - return -1; - - } - else if (toupper(stype) == 'U') - return -1; - /* exclude debugging symbols */ - else if (stype == 'N' || stype == 'n') - return -1; /* include the type field in the symbol name, so that it gets * compressed together */
Collect the ignored patterns to is_ignored_symbol(). Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- Changes in v2: None scripts/kallsyms.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)