From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 410 invoked by alias); 15 Nov 2009 17:30:08 -0000 Received: (qmail 314 invoked by uid 22791); 15 Nov 2009 17:30:04 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-pw0-f49.google.com (HELO mail-pw0-f49.google.com) (209.85.160.49) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 15 Nov 2009 17:28:59 +0000 Received: by pwj21 with SMTP id 21so3212385pwj.8 for ; Sun, 15 Nov 2009 09:28:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.142.5.29 with SMTP id 29mr720306wfe.75.1258306138116; Sun, 15 Nov 2009 09:28:58 -0800 (PST) Date: Sun, 15 Nov 2009 19:04:00 -0000 Message-ID: <9e4733910911150928u463b4096y4eb0998e026d8b07@mail.gmail.com> Subject: Tracing into area without source From: Jon Smirl To: gdb@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2009-11/txt/msg00146.txt.bz2 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 to continue, or q to quit--- -- Jon Smirl jonsmirl@gmail.com