[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