On Tue, Mar 05, 2013 at 08:26:15AM +0800, Lei Wen wrote:
Hi Mike,
On Tue, Mar 5, 2013 at 3:49 AM, Mika Westerberg <mika.westerberg(a)iki.fi>wrote:
> On Mon, Mar 04, 2013 at 10:20:42AM +0800, Lei Wen wrote:
> > I met "dis" command not correct issue when use the crash, any idea?
> > For built-in "dis" command in crash:
> > crash> dis task_rq_lock
> > 0xc015a2d8 <task_rq_lock>: rscsgt r0, sp, r3, lsl #14
> > 0xc015a2dc <task_rq_lock+4>: mrcgt 8, 7, r0, cr2, cr13, {5}
> > 0xc015a2e0 <task_rq_lock+8>: mcrvc 8, 4, r3, cr13, cr3, {6}
> > 0xc015a2e4 <task_rq_lock+12>: lslsvc r3, r10, r8
> > 0xc015a2e8 <task_rq_lock+16>: bl 0xc049fe34
> > <__ip_route_output_key+220>
>
> Looks weird.
>
> What is the kernel version? Does the 'dis' command work for other
> functions?
>
Seems other functions is not working either...
Is the page table being corrupted? But I still could parse out the dump
image and check the kernel dmesg for it, which is also weird.
If crash is able to show you backtraces etc. I believe it has nothing to do
with page table corruption. And the symbols are in vmlinux file anyway.
crash> dis sched_rt_handler
0xc0160ed8 <sched_rt_handler>: cdppl 13, 5, cr2, cr6, cr13, {4}
0xc0160edc <sched_rt_handler+4>: stcle 9, cr7, [r7], #132 ;
0x84
0xc0160ee0 <sched_rt_handler+8>: ; <UNDEFINED>
instruction: 0x167256bb
(gdb) disas sched_rt_handler
Dump of assembler code for function sched_rt_handler:
0xc0160ed8 <+0>: push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
0xc0160edc <+4>: add r11, sp, #32
0xc0160ee0 <+8>: ldr r4, [pc, #384] ; 0xc0161068
<sched_rt_handler+400>
What does 'nm vmlinux|grep sched_rt_handler' say?
Since the dis command does nothing ARM specific, I wonder if we have GDB
version in crash that misses some newer GCC features? What GDB version are you
using?