[Crash-utility] dis command not correct in crash [ ARM only ]
Mika Westerberg
mika.westerberg at iki.fi
Tue Mar 5 08:11:04 UTC 2013
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.
More information about the Crash-utility
mailing list