----- Original Message ----- > On Mon, Mar 04, 2013 at 10:17:26AM -0500, Dave Anderson wrote: > > But in 3.1.1, the "task_rq_lock" function is renamed to > > "task_rq_lock.isra.123": > > > > crash> dis task_rq_lock > > symbol not found: task_rq_lock > > possible alternatives: > > c0015c60 (t) task_rq_lock.isra.123 > > crash> > > > > which is also reflected in the vmlinux file: > > > > crash> !nm -Bn vmlinux | grep task_rq_lock > > c0015c60 t task_rq_lock.isra.123 > > crash> > > > > I don't know what "isra" means, but it disassembles OK when used > > like this: > > > > crash> dis task_rq_lock.isra.123 > > 0xc0015c60 <task_rq_lock.isra.123>: push {r11, lr} > > 0xc0015c64 <task_rq_lock.isra.123+4>: add r11, sp, #4 > > 0xc0015c68 <task_rq_lock.isra.123+8>: mrs r3, CPSR > > 0xc0015c6c <task_rq_lock.isra.123+12>: orr r2, r3, #128 ; > > 0x80 > > 0xc0015c70 <task_rq_lock.isra.123+16>: msr CPSR_c, r2 > > 0xc0015c74 <task_rq_lock.isra.123+20>: str r3, [r0] > > 0xc0015c78 <task_rq_lock.isra.123+24>: mov r0, #1 > > 0xc0015c7c <task_rq_lock.isra.123+28>: bl 0xc0015ba4 > > <add_preempt_count> > > 0xc0015c80 <task_rq_lock.isra.123+32>: mov r0, #1 > > 0xc0015c84 <task_rq_lock.isra.123+36>: bl 0xc0015ba4 > > <add_preempt_count> > > 0xc0015c88 <task_rq_lock.isra.123+40>: ldr r0, [pc, #0] ; > > 0xc0015c90 <task_rq_lock.isra.123+48> > > 0xc0015c8c <task_rq_lock.isra.123+44>: pop {r11, pc} > > 0xc0015c90 <task_rq_lock.isra.123+48>: eorsgt lr, r12, r0, asr > > r2 > > crash> > > > > And interestingly enough, gdb accepts the symbol without the > > "isra.123", > > strips it from the text symbol, and it looks like this: > > > > crash> disass task_rq_lock > > Dump of assembler code for function task_rq_lock: > > 0xc0015c60 <+0>: push {r11, lr} > > 0xc0015c64 <+4>: add r11, sp, #4 > > 0xc0015c68 <+8>: mrs r3, CPSR > > 0xc0015c6c <+12>: orr r2, r3, #128 ; 0x80 > > 0xc0015c70 <+16>: msr CPSR_c, r2 > > 0xc0015c74 <+20>: str r3, [r0] > > 0xc0015c78 <+24>: mov r0, #1 > > 0xc0015c7c <+28>: bl 0xc0015ba4 <add_preempt_count> > > 0xc0015c80 <+32>: mov r0, #1 > > 0xc0015c84 <+36>: bl 0xc0015ba4 <add_preempt_count> > > 0xc0015c88 <+40>: ldr r0, [pc, #0] ; 0xc0015c90 > > <task_rq_lock+48> > > 0xc0015c8c <+44>: pop {r11, pc} > > 0xc0015c90 <+48>: eorsgt lr, r12, r0, asr r2 > > End of assembler dump. > > crash> > > Dave, it looks like those symbols exist in x86_64 kernel images as well. Are > you able to run 'dis' over some of those symbols on x86_64? I wonder if we > have more generic problem at hand. Sure enough -- I never noticed them before. I'll have to check when that started happening. Anyway, thanks for checking and catching that. I'm thinking that it's probably best that the ".isra..." should be stripped during the symbol storage phase so that the crash sources have no idea that they ever existed with those names. The module symbol storage code has always done a similar thing in strip_module_symbol_end(). And the gdb module must be doing the same kind of thing, because you can pass the "stripped" symbol name to gdb, and it knows what it is: crash> dis get_sigframe symbol not found: get_sigframe possible alternatives: ffffffff81058090 (t) get_sigframe.isra.1 crash> crash> disass get_sigframe Dump of assembler code for function get_sigframe: 0xffffffff81058090 <+0>: nopl 0x0(%rax,%rax,1) 0xffffffff81058095 <+5>: push %rbp 0xffffffff81058096 <+6>: mov %rsp,%rbp 0xffffffff81058099 <+9>: push %rbx 0xffffffff8105809a <+10>: mov %rdx,%rbx 0xffffffff8105809d <+13>: sub $0x18,%rsp ... Anyway, I'll take care of that. Thanks again, Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility