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.