* Tracing into area without source
@ 2009-11-15 19:04 Jon Smirl
2009-11-15 19:13 ` Daniel Jacobowitz
0 siblings, 1 reply; 2+ messages in thread
From: Jon Smirl @ 2009-11-15 19:04 UTC (permalink / raw)
To: gdb
Setup is qemu emulating an ARM7TDMI running on my x86. The ARM cpu
has a ROM starting at zero which I don't have the source for. I've
made a copy of the ROM and inserted it into qemu. I can dump and
disassemble it without problem.
RAM is at 0x400000. I can load and run my app there using gdb.
But when the app jumps into the ROM gdb refuses to follow.
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:120
120 bl _rom_data_init+.-base
(gdb) stepi
0x000108d0 in ?? ()
(gdb) stepi
^C
How do I convince gdb to allow me to trace into the ROM image I made in qemu?
(gdb) mem 0 128000 ro 8
(gdb) mem 0x00400000 0x00500000 rw 8
(gdb) file example-udp-sender.elf
Load new symbol table from
"/home/apps/contiki-mc1322x/examples/udp-sender-ipv6/example-udp-sender.elf"?
(y or n) y
Reading symbols from
/home/apps/contiki-mc1322x/examples/udp-sender-ipv6/example-udp-sender.elf...done.
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
base () at ../../cpu/mc1322x/./startup.S:62
62 _start: b _begin
Current language: auto; currently asm
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:97
97 msr CPSR_c, #(FIQ_MODE | IRQ_DISABLE | FIQ_DISABLE)
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:98
98 ldr sp, =__fiq_stack_top__ /* set the FIQ stack pointer */
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:101
101 msr CPSR_c, #(IRQ_MODE | IRQ_DISABLE | FIQ_DISABLE)
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:102
102 ldr sp, =__irq_stack_top__ /* set the IRQ stack pointer */
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:105
105 msr CPSR_c, #(SVC_MODE | IRQ_DISABLE | FIQ_DISABLE)
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:106
106 ldr sp, =__svc_stack_top__ /* set the SVC stack pointer */
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:109
109 msr CPSR_c, #(UND_MODE | IRQ_DISABLE | FIQ_DISABLE)
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:110
110 ldr sp, =__und_stack_top__ /* set the UND stack pointer */
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:113
113 msr CPSR_c, #(ABT_MODE | IRQ_DISABLE | FIQ_DISABLE)
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:114
114 ldr sp, =__abt_stack_top__ /* set the ABT stack pointer */
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:117
117 msr CPSR_c, #(SYS_MODE | IRQ_DISABLE | FIQ_DISABLE)
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:118
118 ldr sp, =__sys_stack_top__ /* set the SYS stack pointer */
(gdb) stepi
_begin () at ../../cpu/mc1322x/./startup.S:120
120 bl _rom_data_init+.-base
(gdb) stepi
0x000108d0 in ?? ()
(gdb) stepi
^C
Program received signal SIGINT, Interrupt.
0x000108d0 in ?? ()
(gdb) disassemble 0x000108d0 0x00010900
Dump of assembler code from 0x108d0 to 0x10900:
0x000108d0: b 0x10a5c
0x000108d4: stmdavs r0, {r0, r1, r3, r4, r11, lr}
0x000108d8: andeq r4, r0, r0, ror r7
0x000108dc: strdlt r11, [r5], r0
0x000108e0: andeq r0, sp, r7
0x000108e4: ldrbcs r11, [r5, -r0, lsl #9]!
0x000108e8: blx 0xfeecd8ae
0x000108ec: adcmi r11, pc, #32768 ; 0x8000
0x000108f0: eorseq sp, r8, r1, lsl #6
0x000108f4: strcs lr, [r1], #-34
0x000108f8: ldclne 11, cr1, [r6], #-952
0x000108fc: ldmdami r1, {r1, r3, r5, r6, r9, r10, lr}
End of assembler dump.
(gdb) disassemble 0x10a5c 0x10b00
Dump of assembler code from 0x10a5c to 0x10b00:
0x00010a5c: push {r0, r4, r5, lr}
0x00010a60: ldr r4, [pc, #44] ; 0x10a94
0x00010a64: ldr r5, [pc, #44] ; 0x10a98
0x00010a68: cmp r4, r5
0x00010a6c: beq 0x10a8c
0x00010a70: ldm r4, {r0, r1, r2}
0x00010a74: ldr r3, [r4, #12]
0x00010a78: add r4, r4, #16 ; 0x10
0x00010a7c: mov lr, pc
0x00010a80: bx r3
0x00010a84: cmp r4, r5
0x00010a88: bne 0x10a70
0x00010a8c: pop {r3, r4, r5, lr}
0x00010a90: bx lr
0x00010a94: andeq r1, r1, r8, lsl #15
0x00010a98: andeq r1, r1, r8, lsr #15
0x00010a9c: add r2, r2, r1
0x00010aa0: cmp r1, r2
0x00010aa4: bne 0x10ab4
0x00010aa8: bx lr
0x00010aac: cmp r1, r2
0x00010ab0: bxeq lr
0x00010ab4: ldrsb r3, [r1], #1
0x00010ab8: mov r12, #0 ; 0x0
0x00010abc: b 0x10ac4
0x00010ac0: strb r12, [r0], #1
0x00010ac4: cmp r3, #0 ; 0x0
0x00010ac8: beq 0x10aac
0x00010acc: ldrbmi r12, [r1], #1
0x00010ad0: addmi r3, r3, #1 ; 0x1
0x00010ad4: subpl r3, r3, #1 ; 0x1
0x00010ad8: b 0x10ac0
0x00010adc: undefined
0x00010ae0: mov r12, r0
0x00010ae4: tst r1, #1 ; 0x1
0x00010ae8: strbne r0, [r1], #1
0x00010aec: lsrne r0, r0, #8
0x00010af0: strh r0, [r1]
0x00010af4: lsr r0, r0, #16
0x00010af8: strbne r0, [r1, #2]
---Type <return> to continue, or q <return> to quit---
--
Jon Smirl
jonsmirl@gmail.com
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Tracing into area without source
2009-11-15 19:04 Tracing into area without source Jon Smirl
@ 2009-11-15 19:13 ` Daniel Jacobowitz
0 siblings, 0 replies; 2+ messages in thread
From: Daniel Jacobowitz @ 2009-11-15 19:13 UTC (permalink / raw)
To: Jon Smirl; +Cc: gdb
On Sun, Nov 15, 2009 at 12:28:58PM -0500, Jon Smirl wrote:
> Setup is qemu emulating an ARM7TDMI running on my x86. The ARM cpu
> has a ROM starting at zero which I don't have the source for. I've
> made a copy of the ROM and inserted it into qemu. I can dump and
> disassemble it without problem.
>
> RAM is at 0x400000. I can load and run my app there using gdb.
> But when the app jumps into the ROM gdb refuses to follow.
GDB does not care if there is source or not.
It looks more like you're having some trouble with debugging
interrupts, since you've ended up back at the same address:
> (gdb) stepi
> 0x000108d0 in ?? ()
> (gdb) stepi
> ^C
> Program received signal SIGINT, Interrupt.
> 0x000108d0 in ?? ()
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-11-15 17:39 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-15 19:04 Tracing into area without source Jon Smirl
2009-11-15 19:13 ` Daniel Jacobowitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox