* ARM, registers, "frame 0", where's the PC?
@ 2003-01-08 3:49 Torsten Mohr
2003-01-08 19:39 ` Torsten Mohr
0 siblings, 1 reply; 12+ messages in thread
From: Torsten Mohr @ 2003-01-08 3:49 UTC (permalink / raw)
To: gdb
Hi,
i received a hint by mail to send ALL registers from the
GDB remote protocol server back to arm-unknown-elf-insight.
I now do that but it i still get this unwanted behaviour:
I can download a program, start it, stop it, read registers
(the correct values are shown, as i see in the debug output
of my debug server). The values make sense, R15 is exactly
where i expect it to be.
But when i stop the program, "insight" tells me that it
stopped at 0x01002048. That's nowhere in my program
and not what's shown in R15.
In the GDB console, "info registers" shows the same values
as in "insight". Especially "p/x $pc" says 0x02020070
what makes sense and is correct.
In "info gdb" i read:
Normally, register values are relative to the selected stack frame
(*note Selecting a frame: Selection.). This means that you get the
value that the register would contain if all stack frames farther in
were exited and their saved registers restored. In order to see the
true contents of hardware registers, you must select the innermost
frame (with `frame 0').
When i type "frame 0", gdb says:
gdb) frame 0
#0 0x01002048 in ?? ()
This seems to be related to the problem. I have to admit i don't
understand that. Why can't GDB say where it stopped, it has the
correct value for R15. Also, inbetween the stop ("\x03") and the
reading of the registers ("g") there is no other request from
GDB. What info is missing?
Thanks for any hints,
Torsten.
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: ARM, registers, "frame 0", where's the PC? 2003-01-08 3:49 ARM, registers, "frame 0", where's the PC? Torsten Mohr @ 2003-01-08 19:39 ` Torsten Mohr 2003-01-09 3:31 ` Daniel Jacobowitz 2003-01-09 12:20 ` Richard Earnshaw 0 siblings, 2 replies; 12+ messages in thread From: Torsten Mohr @ 2003-01-08 19:39 UTC (permalink / raw) To: gdb [-- Attachment #1: Type: text/plain, Size: 2513 bytes --] Hi, i found out by testing that the first time i stop the target and read out its registers, the value of R15 is used in the message "Program stopped at 0x12345678". When i type in GDB: (gdb) info frame Stack level 0, frame at 0x1000: pc = 0x12345678; saved pc 0x20203a8 (FRAMELESS), called by frame at 0x1000 Arglist at 0x1000, args: Locals at 0x1000, Previous frame's sp in sp Could these problems be related to the structures on the stack? When i set R15 to 0x0000 the first time i read out the registers, i get the message "Program stopped at 0x00000000". What can i do to tell GDB to use the real value in R15? I appended a log file of a session, all requests and answers are in there. Is any of the answers not correct? Could this be related to the startup code of the test program? I attached it to this mail. It would be great if anybody had a hint for me. Best regards, Torsten. > Hi, > > i received a hint by mail to send ALL registers from the > GDB remote protocol server back to arm-unknown-elf-insight. > > I now do that but it i still get this unwanted behaviour: > > I can download a program, start it, stop it, read registers > (the correct values are shown, as i see in the debug output > of my debug server). The values make sense, R15 is exactly > where i expect it to be. > > But when i stop the program, "insight" tells me that it > stopped at 0x01002048. That's nowhere in my program > and not what's shown in R15. > > In the GDB console, "info registers" shows the same values > as in "insight". Especially "p/x $pc" says 0x02020070 > what makes sense and is correct. > > In "info gdb" i read: > > Normally, register values are relative to the selected stack frame > (*note Selecting a frame: Selection.). This means that you get the > value that the register would contain if all stack frames farther in > were exited and their saved registers restored. In order to see the > true contents of hardware registers, you must select the innermost > frame (with `frame 0'). > > When i type "frame 0", gdb says: > gdb) frame 0 > #0 0x01002048 in ?? () > > This seems to be related to the problem. I have to admit i don't > understand that. Why can't GDB say where it stopped, it has the > correct value for R15. Also, inbetween the stop ("\x03") and the > reading of the registers ("g") there is no other request from > GDB. What info is missing? > > > Thanks for any hints, > Torsten. [-- Attachment #2: log.txt --] [-- Type: text/plain, Size: 6203 bytes --] accepting ... log: request from '127.0.0.1' log: discarded '+' log: received valid packet 'Hc-1', len 4 [stopping the core] REG USR FIQ SVC ABT IRQ UND SYS CPSR 200000d3 200000d0 200000d1 200000d3 200000d7 200000d2 200000db 200000df R0 02008e58 02008e58 R1 02015448 02015448 R2 02001000 02001000 R3 02007818 02007818 R4 01002000 01002000 R5 0000d448 0000d448 R6 00006818 00006818 R7 00012e08 00012e08 R8 01015c60 01015c60 00000000 R9 01002e58 01002e58 00000000 R10 e92d000f e92d000f 00000000 R11 ffe00028 ffe00028 00000000 R12 01000038 01000038 00000000 R13 00001000 02000cf8 02000400 00001000 00000000 02000500 02000e00 02000cf8 R14 400000d3 02014c9c 00000000 400000d3 01002204 020144c4 00000000 02014c9c R15 01002048 01002048 log: wpacket 'OK' log: received valid packet 'qC', len 2 log: wpacket '' log: received valid packet 'qOffsets', len 8 log: wpacket '' log: received valid packet '?', len 1 log: wpacket 'S00' log: received valid packet 'Hg0', len 3 log: wpacket 'OK' log: received valid packet 'g', len 1 log: wpacket '588e00024854010200100002187800020020000148d4000018680000082e0100605c0101582e00010f002ce92800dfff3800000100100000d30000407856341200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000d3' [what's here returned in R15 is always shown as "Program stopped at ADDRESS", no matter what's in R15] [why does GDB read out these addresses ?] log: received valid packet 'm12e08,4', len 8 log: wpacket '000a0201' log: received valid packet 'm10209f8,4', len 10 log: wpacket 'ff04ffff' log: received valid packet 'X2020000,0:', len 11 log: wpacket '' [download of program] log: received valid packet 'M2020000,9f:0dc0a0e100d82de904b04ce204d04de210000be500a81be90dc0a0e100d82de904b04ce200a81be90dc0a0e100d82de904b04ce200a81be90dc0a0e100d82de904b04ce20000a0e1cc209fe50030a0e3003082e5c0309fe5002093e5273ca0e30f3083e2030052e1000000da050000eaa4209fe5a0309fe5003093e5013083e2003082e5f2ffffea90209fe58c309fe5003093e5013083e2003082e57c309f', len 330 log: wpacket 'OK' log: received valid packet 'M202009f,9f:e5003093e5013003e2000053e30400000aff3ce0e3cf3043e20220a0e3002083e5030000eaff3ce0e3cb3043e20220a0e3002083e5cfffffeb40309fe5003093e5023003e2000053e30400000aff3ce0e3cf3043e20420a0e3002083e5030000eaff3ce0e3cb3043e20420a0e3002083e5bd0000ebc3ffffebcaffffea1c040202200402020dc0a0e100d82de904b04ce2ff3ce0e3ef3043e20620a0e30020', len 330 log: wpacket 'OK' log: received valid packet 'M202013e,9f:83e5ff3ce0e3cf3043e20620a0e3002083e5e0219fe50030a0e3003082e5d8219fe50030a0e3003082e5d0219fe50030a0e3003082e5afffffeb950000ebc0019fe59e0000ebbc219fe50030a0e3003082e5b0319fe5002093e5273ca0e30f3083e2030052e1000000da050000ea94219fe590319fe5003093e5013083e2003082e5f2ffffea70219fe56c319fe5003093e5013083e2003082e5780000eb00', len 330 log: wpacket 'OK' log: received valid packet 'M20201dd,9f:30a0e1000053e31400000a790000eb0020a0e154319fe5002083e538219fe534319fe5003093e5013083e2003082e52c319fe5003093e5000053e30700001a1c219fe50130a0e3003082e520219fe518319fe5003093e5043083e2003082e5680000ebff3ce0e3c33043e2003093e5203003e2000053e30600000ae4009fe5670000ebd0209fe5cc309fe5003093e5013083e2003082e5ff3ce0e3c33043e2', len 330 log: wpacket 'OK' log: received valid packet 'M202027c,9f:003093e5023c03e2000053e30d00000a500000eb0020a0e1b0309fe5002083e5a8309fe5003093e5610053e30000001a61ffffeb80209fe57c309fe5003093e5013083e2003082e56c309fe5003093e5013003e2000053e30400000aff3ce0e3cf3043e20220a0e3002083e5030000eaff3ce0e3cb3043e20220a0e3002083e534309fe5003093e5023003e2000053e30400000aff3ce0e3cf3043e20420a0', len 330 log: wpacket 'OK' log: received valid packet 'M202031b,9f:e3002083e597ffffeaff3ce0e3cb3043e20420a0e3002083e592ffffea20040202240402022c040202785634121c040202280402023004020200000fe100400fe1fcffffea54009fe500d0a0e100b0a0e10700a0e30810a0e30920a0e30a30a0e30b40a0e30c50a0e30d60a0e30e70a0e30f80a0e31090a0e311a0a0e312b0a0e313c0a0e314d0a0e35effffeb0000a0e10000a0e1fdffffea0ef0a0e12401', len 330 log: wpacket 'OK' log: received valid packet 'M20203ba,62:020200e00202100e10ee010000e20030a0e10770a0e10ef0a0e1100e11ee0030a0e10990a0e10ef0a0e10c00a0e3100e10ee020000e2020020e20030a0e10aa0a0e10ef0a0e1100e01ee0ef0a0e133cc55aa0dc0a0e100d82de904b04ce200a81be9', len 208 log: wpacket 'OK' log: received valid packet 'Pf=60030202', len 11 log: wpacket 'OK' log: received valid packet 'Z0,2020130,4', len 12 log: wpacket 'OK' log: received valid packet 'Hc0', len 3 log: wpacket 'OK' log: received valid packet 'c', len 1 log: starting due to 'c' START, 0x02020360 setting HW breakpoint at 0x02020130 REG USR FIQ SVC ABT IRQ UND SYS CPSR 00000053 00000050 00000051 00000053 00000057 00000052 0000005b 0000005f R0 00000007 00000007 R1 00000008 00000008 R2 00000009 00000009 R3 0000000a 0000000a R4 0000000b 0000000b R5 0000000c 0000000c R6 0000000d 0000000d R7 0000000e 0000000e R8 0000000f 0000000f 00000000 R9 00000010 00000010 00000000 R10 00000011 00000011 00000000 R11 00000010 00000010 00000000 R12 00000014 00000014 00000000 R13 00000004 02000cf8 02000400 00000004 00000000 02000500 02000e00 02000cf8 R14 020203a8 02014c9c 00000000 020203a8 01002204 020144c4 00000000 02014c9c R15 02020134 02020134 log: wpacket 'S0' log: received valid packet 'g', len 1 log: wpacket '0700000008000000090000000a0000000b0000000c0000000d0000000e0000000f0000001000000011000000100000001400000004000000a8030202340102020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053' log: received valid packet 'm0,4', len 4 log: wpacket '060000ff' log: received valid packet 'm2020360,4', len 10 log: wpacket '5400ffff' log: received valid packet 'm0,4', len 4 log: wpacket '060000ff' [-- Attachment #3: start.s --] [-- Type: text/plain, Size: 518 bytes --] .section .text .global _start .global stackTop .global __gccmain here: mrs r0, cpsr mrs r4, cpsr b here _start: ldr r0,_stackTop mov sp,r0 mov fp,r0 mov r0, #0x07 mov r1, #0x08 mov r2, #0x09 mov r3, #0x0a mov r4, #0x0b mov r5, #0x0c mov r6, #0x0d mov r7, #0x0e mov r8, #0x0f mov r9, #0x10 mov r10, #0x11 mov r11, #0x12 mov r12, #0x13 mov r13, #0x14 # b here bl main nop end: nop b end __gccmain: mov pc,lr _main: .word main _stackTop: .word stackTop ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-08 19:39 ` Torsten Mohr @ 2003-01-09 3:31 ` Daniel Jacobowitz 2003-01-09 17:12 ` Torsten Mohr 2003-01-09 12:20 ` Richard Earnshaw 1 sibling, 1 reply; 12+ messages in thread From: Daniel Jacobowitz @ 2003-01-09 3:31 UTC (permalink / raw) To: gdb On Wed, Jan 08, 2003 at 08:02:37PM +0100, Torsten Mohr wrote: > Hi, > > i found out by testing that the first time i stop the target > and read out its registers, the value of R15 is used in the > message "Program stopped at 0x12345678". > > When i type in GDB: > (gdb) info frame > Stack level 0, frame at 0x1000: > pc = 0x12345678; saved pc 0x20203a8 > (FRAMELESS), called by frame at 0x1000 > Arglist at 0x1000, args: > Locals at 0x1000, Previous frame's sp in sp > > Could these problems be related to the structures on the > stack? When i set R15 to 0x0000 the first time i > read out the registers, i get the message "Program stopped > at 0x00000000". What can i do to tell GDB to use the > real value in R15? > > I appended a log file of a session, all requests and answers > are in there. Is any of the answers not correct? > > Could this be related to the startup code of the test program? > I attached it to this mail. Could you show me the log via 'set debug remote 1' instead? -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-09 3:31 ` Daniel Jacobowitz @ 2003-01-09 17:12 ` Torsten Mohr 2003-01-09 17:24 ` Daniel Jacobowitz 0 siblings, 1 reply; 12+ messages in thread From: Torsten Mohr @ 2003-01-09 17:12 UTC (permalink / raw) To: Daniel Jacobowitz, gdb [-- Attachment #1: Type: text/plain, Size: 222 bytes --] Hi, > Could you show me the log via 'set debug remote 1' instead? i've attached the output to this mail, so the lines are not broken. Would it make sense to send some more files/infos? Best regards, Torsten. [-- Attachment #2: arm --] [-- Type: text/plain, Size: 5687 bytes --] (gdb) set debug remote 1 [I hit RUN] Sending packet: $Hc-1#09...Ack Packet received: OK Sending packet: $qC#b4...Ack Packet received: Sending packet: $qOffsets#4b...Ack Packet received: Text=00;Data=00;Bss=00 Sending packet: $?#3f...Ack Packet received: S00 Sending packet: $Hg0#df...Ack Packet received: OK Sending packet: $g#67...Ack Packet received: 348d00024854010200100002187800020020000148d40000186800002c2f0100605c0101342d000170a81ae92800dfff3800000100100000d30000407856341200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000d3 Sending packet: $m12f2c,4#2b...Ack Packet received: 00040200 Sending packet: $m203f8,4#00...Ack Packet received: 00200000 0x12345678 in ?? () Loading section .text, size 0x3e4 lma 0x2020000 Sending packet: $X2020000,0:#42...Ack Packet received: binary downloading NOT suppported by target Sending packet: $M2020000,9f:0dc0a0e100d82de904b04ce204d04de210000be500a81be90dc0a0e100d82de904b04ce200a81be90dc0a0e100d82de904b04ce200a81be90dc0a0e100d82de904b04ce20000a0e1cc209fe50030a0e3003082e5c0309fe5002093e5273ca0e30f3083e2030052e1000000da050000eaa4209fe5a0309fe5003093e5013083e2003082e5f2ffffea90209fe58c309fe5003093e5013083e2003082e57c309f#3b...Ack Packet received: OK Sending packet: $M202009f,9f:e5003093e5013003e2000053e30400000aff3ce0e3cf3043e20220a0e3002083e5030000eaff3ce0e3cb3043e20220a0e3002083e5cfffffeb40309fe5003093e5023003e2000053e30400000aff3ce0e3cf3043e20420a0e3002083e5030000eaff3ce0e3cb3043e20420a0e3002083e5af0000ebc3ffffebcaffffeae4030202e80302020dc0a0e100d82de904b04ce2ff3ce0e3ef3043e20620a0e30020#1b...Ack Packet received: OK Sending packet: $M202013e,9f:83e5ff3ce0e3cf3043e20620a0e3002083e5e0219fe50030a0e3003082e5d8219fe50030a0e3003082e5d0219fe50030a0e3003082e5afffffeb870000ebc0019fe5900000ebbc219fe50030a0e3003082e5b0319fe5002093e5273ca0e30f3083e2030052e1000000da050000ea94219fe590319fe5003093e5013083e2003082e5f2ffffea70219fe56c319fe5003093e5013083e2003082e56a0000eb00#66...Ack Packet received: OK Sending packet: $M20201dd,9f:30a0e1000053e31400000a6b0000eb0020a0e154319fe5002083e538219fe534319fe5003093e5013083e2003082e52c319fe5003093e5000053e30700001a1c219fe50130a0e3003082e520219fe518319fe5003093e5043083e2003082e55a0000ebff3ce0e3c33043e2003093e5203003e2000053e30600000ae4009fe5590000ebd0209fe5cc309fe5003093e5013083e2003082e5ff3ce0e3c33043e2#30...Ack Packet received: OK Sending packet: $M202027c,9f:003093e5023c03e2000053e30d00000a420000eb0020a0e1b0309fe5002083e5a8309fe5003093e5610053e30000001a61ffffeb80209fe57c309fe5003093e5013083e2003082e56c309fe5003093e5013003e2000053e30400000aff3ce0e3cf3043e20220a0e3002083e5030000eaff3ce0e3cb3043e20220a0e3002083e534309fe5003093e5023003e2000053e30400000aff3ce0e3cf3043e20420a0#d9...Ack Packet received: OK Sending packet: $M202031b,a0:e3002083e597ffffeaff3ce0e3cb3043e20420a0e3002083e592ffffeae8030202ec030202f403020278563412e4030202f0030202f803020228009fe500d0a0e100b0a0e10dc0a0e100d82de904b04ce26cffffeb0000a0e10000a0e1fdffffea0ef0a0e12401020200e00202100e10ee010000e20030a0e10770a0e10ef0a0e1100e11ee0030a0e10990a0e10ef0a0e10c00a0e3100e10ee020000e2020020#61...Ack Packet received: OK Sending packet: $M20203bb,29:e20030a0e10aa0a0e10ef0a0e1100e01ee0ef0a0e133cc55aa0dc0a0e100d82de904b04ce200a81be9#8c...Ack Packet received: OK Start address 0x2020354, load size 996 Sending packet: $Pf=54030202#83...Ack Packet received: OK Transfer rate: 1593 bits/sec, 142 bytes/write. Sending packet: $Z0,2020130,4#6e...Ack Packet received: OK Packet Z0 (software-breakpoint) is supported Sending packet: $Hc0#db...Ack Packet received: OK Sending packet: $c#63...Ack Packet received: S0 Sending packet: $g#67...Ack Packet received: 00e002024854010200100002187800020020000148d40000186800002c2f0100605c0101342d000170a81ae9ecdf0202f0df0202e0df020270030202340102020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013 Sending packet: $m0,4#fd...Ack Packet received: 060000ff Sending packet: $m2020354,4#2d...Ack Packet received: 2800ffff Sending packet: $c#63...Ack (gdb) info registers Error: The debugger is busy. [I hit STOP in INSIGHT] remote_stop called Packet received: S0 Sending packet: $g#67...Ack Packet received: 00e0020248540102e4030202651a00000020000148d40000186800002c2f0100605c0101342d000170a81ae9dcdf0202d0df0202d0df020218010202540002020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000013 Sending packet: $m2020038,4#2c...Ack Packet received: 0dffffff (gdb) info registers r0 0x202e000 33742848 r1 0x2015448 33641544 r2 0x20203e4 33686500 r3 0x1a65 6757 r4 0x1002000 16785408 r5 0xd448 54344 r6 0x6818 26648 r7 0x12f2c 77612 r8 0x1015c60 16866400 r9 0x1002d34 16788788 r10 0xe91aa870 -384128912 r11 0x202dfdc 33742812 r12 0x202dfd0 33742800 sp 0x202dfd0 33742800 lr 0x2020118 33685784 pc 0x2020054 33685588 fps 0x0 0 cpsr 0x13000080 318767232 (gdb) info frame Stack level 0, frame at 0x1000: pc = 0x12345678; saved pc 0x2020118 Sending packet: $m0,4#fd...Ack Packet received: 060000ff (FRAMELESS), called by frame at 0x1000 Arglist at 0x1000, args: Locals at 0x1000, Previous frame's sp in sp (gdb) ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-09 17:12 ` Torsten Mohr @ 2003-01-09 17:24 ` Daniel Jacobowitz 2003-01-09 23:23 ` Torsten Mohr 2003-01-09 23:23 ` Torsten Mohr 0 siblings, 2 replies; 12+ messages in thread From: Daniel Jacobowitz @ 2003-01-09 17:24 UTC (permalink / raw) To: gdb On Thu, Jan 09, 2003 at 05:36:01PM +0100, Torsten Mohr wrote: > Hi, > > > Could you show me the log via 'set debug remote 1' instead? > > i've attached the output to this mail, so the lines are not broken. > Would it make sense to send some more files/infos? Have you tried this without using Insight? It looks to me like something's not flushing the frame cache that ought to be. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-09 17:24 ` Daniel Jacobowitz @ 2003-01-09 23:23 ` Torsten Mohr 2003-01-09 23:23 ` Torsten Mohr 1 sibling, 0 replies; 12+ messages in thread From: Torsten Mohr @ 2003-01-09 23:23 UTC (permalink / raw) To: gdb Hi, > Have you tried this without using Insight? It looks to me like > something's not flushing the frame cache that ought to be. No, not yet. I'm not an experienced gdb user. I think i have to find out the commands i have to use before... But this is the next thing i'll do, i even thought it would be safer to use insight, as it would choose the right commands. Should i post the log file on the insight mailing list too? Best regards, Torsten. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-09 17:24 ` Daniel Jacobowitz 2003-01-09 23:23 ` Torsten Mohr @ 2003-01-09 23:23 ` Torsten Mohr 2003-01-09 23:27 ` Daniel Jacobowitz 1 sibling, 1 reply; 12+ messages in thread From: Torsten Mohr @ 2003-01-09 23:23 UTC (permalink / raw) To: gdb Hi, > Have you tried this without using Insight? It looks to me like > something's not flushing the frame cache that ought to be. i just did some more testing, it seems it disturbed GDB and INSIGHT that it is not ok to answer a "continue" with a "S0" after the target stopped again. I now use a "S00", which improves things a lot. Yes, i just doublechecked that, when the target stops after a "continue" and i send "S0", it tells me it stopped at 0x12345678, when i answer "S00", insight shows me where it stopped in the window. Looking at "info gdb" this is specified, so it is my mistake. I took that information from a file i found in the web where it didn't state that S<signal> has to be S<%02-Signal>. Maybe gdb/insight throws the answer "S0" away and just ignores it and uses its last informations? But anyway, when i answer "S00" there's a popup window every time i stop. Looking at "info gdb", i'd say an answer with "S" is preferred before "W", "X" or "T". Looking at "man -S 7 signal" i'm confused and don't know what signal number to use. "W00": program exited normally "X00": program exited with signal 0, Signal 0 "T00": program received signal 0, Signal 0 "S": doesn't work, same problem as before. So i guess there has to be a certain number that doesn't bring up that window/message. "S01": SIGHUP "S11": SIGSTOP "OK": doesn't work, insight hangs. Hmm, don't know, what could the preferred answer be? Best regards, Torsten. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-09 23:23 ` Torsten Mohr @ 2003-01-09 23:27 ` Daniel Jacobowitz 2003-01-10 6:52 ` Jan Van Belle 0 siblings, 1 reply; 12+ messages in thread From: Daniel Jacobowitz @ 2003-01-09 23:27 UTC (permalink / raw) To: Torsten Mohr; +Cc: gdb On Thu, Jan 09, 2003 at 11:46:45PM +0100, Torsten Mohr wrote: > Hi, > > > Have you tried this without using Insight? It looks to me like > > something's not flushing the frame cache that ought to be. > > i just did some more testing, it seems it disturbed GDB and INSIGHT > that it is not ok to answer a "continue" with a "S0" after the > target stopped again. I now use a "S00", which improves things > a lot. Yes, i just doublechecked that, when the target stops > after a "continue" and i send "S0", it tells me it stopped at > 0x12345678, when i answer "S00", insight shows me where it stopped > in the window. Looking at "info gdb" this is specified, so > it is my mistake. I took that information from a file i found > in the web where it didn't state that S<signal> has to be > S<%02-Signal>. Maybe gdb/insight throws the answer "S0" away > and just ignores it and uses its last informations? > > > But anyway, when i answer "S00" there's a popup window every > time i stop. Looking at "info gdb", i'd say an answer with > "S" is preferred before "W", "X" or "T". > Looking at "man -S 7 signal" i'm confused and don't know > what signal number to use. > > "W00": program exited normally > "X00": program exited with signal 0, Signal 0 > "T00": program received signal 0, Signal 0 > > "S": doesn't work, same problem as before. > > So i guess there has to be a certain number that doesn't bring > up that window/message. > > "S01": SIGHUP > "S11": SIGSTOP > "OK": doesn't work, insight hangs. > > > Hmm, don't know, what could the preferred answer be? 05, SIGTRAP. You should really look at existing stubs. You probably want to be using T anyway. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-09 23:27 ` Daniel Jacobowitz @ 2003-01-10 6:52 ` Jan Van Belle 2003-01-10 14:24 ` Daniel Jacobowitz 0 siblings, 1 reply; 12+ messages in thread From: Jan Van Belle @ 2003-01-10 6:52 UTC (permalink / raw) To: gdb Daniel Jacobowitz wrote: > > 05, SIGTRAP. You should really look at existing stubs. You probably > want to be using T anyway. I've been struggling with this too. Anyway, I only use the S command. I think it's the simplest way to do something when first implementing an interface. T implies you support threads, thus supporting most of the 'thread-related' commands. Kind regards, Jan ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-10 6:52 ` Jan Van Belle @ 2003-01-10 14:24 ` Daniel Jacobowitz 0 siblings, 0 replies; 12+ messages in thread From: Daniel Jacobowitz @ 2003-01-10 14:24 UTC (permalink / raw) To: Jan Van Belle; +Cc: gdb On Fri, Jan 10, 2003 at 07:52:21AM +0100, Jan Van Belle wrote: > Daniel Jacobowitz wrote: > > > > > 05, SIGTRAP. You should really look at existing stubs. You probably > > want to be using T anyway. > > I've been struggling with this too. Anyway, I only use the S > command. I think it's > the simplest way to do something when first implementing an > interface. T implies you > support threads, thus supporting most of the > 'thread-related' commands. No, it doesn't; it only provides a way to reply with registers efficiently at the stop. GDB won't assume threads support. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-08 19:39 ` Torsten Mohr 2003-01-09 3:31 ` Daniel Jacobowitz @ 2003-01-09 12:20 ` Richard Earnshaw 2003-01-09 17:12 ` Torsten Mohr 1 sibling, 1 reply; 12+ messages in thread From: Richard Earnshaw @ 2003-01-09 12:20 UTC (permalink / raw) To: Torsten Mohr; +Cc: gdb, Richard.Earnshaw tmohr@s.netic.de said: > log: received valid packet 'g', len 1 > log: wpacket > '588e00024854010200100002187800020020000148d4000018680000082e0100605c01 > 01582e00010f002ce92800dfff3800000100100000d3000040785634120000000000000 > 00000000000000000000000000000000000000000000000000000000000000000000000 > 00000000000000000000000000000000000000000000000000000000000000000000000 > 000000000000000000000000000000000000000000000200000d3' > [what's here returned in R15 is always shown as "Program stopped at > ADDRESS", no matter what's in R15] Your remote target seems to be lying to you. This packet is the registers that the target is sending back to gdb. It's interpreted as: r0 588e0002 r1 48540102 r2 00100002 r3 18780002 r4 00200001 r5 48d40000 r6 18680000 r7 082e0100 r8 605c0101 r9 582e0001 r10 0f002ce9 r11 2800dfff r12 38000001 r13 00100000 r14 d3000040 r15 78563412 f0 000000000000000000000000 f1 000000000000000000000000 f2 000000000000000000000000 f3 000000000000000000000000 f4 000000000000000000000000 f5 000000000000000000000000 f6 000000000000000000000000 f7 000000000000000000000000 fpsr 00000000 cpsr 200000d3 So the value returned to gdb for r15 is (after twidling for endianness) 0x12345678 as gdb is reporting. You need to find out why your remote debug agent is sending a bogus r15 value. R. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ARM, registers, "frame 0", where's the PC? 2003-01-09 12:20 ` Richard Earnshaw @ 2003-01-09 17:12 ` Torsten Mohr 0 siblings, 0 replies; 12+ messages in thread From: Torsten Mohr @ 2003-01-09 17:12 UTC (permalink / raw) To: Richard.Earnshaw, Richard Earnshaw; +Cc: gdb, Richard.Earnshaw Hi, shame on me, i missed to write some informations. I thought i've written it that mail, but obviously i've missed it. My target is an Atmel EB01 evaluation board (very old one) with an ARM7TDMI core on it. I wrote that debugger myself. It sends out the correct values, i've set R15 to a debug value 0x12345678 ONCE to do some testing. When i connect to the target, i stop the core, read out the registers and set R15 to 0x12345678. After that, GDB asks me for the register values, so i send it the debug value for R15. R15 can be ANY value at that time, as no program is yet downloaded into the target. GDB then sends me the download data, i program them into the targets RAM. GDB then sets R15 to the startup address and says "continue". That all works fine, the first breakpoint in the beginning of "main" is caught and the target stops. GDB asks me for the registers and i send back THE REAL VALUE for R15, NO DEBUG VALUE, the value is shown in the registers value and makes sense. But still GDB says it stopped at 0x12345678. I can then continue in GDB, a "c" is sent to the target and it continues (this works fine). When i hit the stop button, a "\x03" is sent and the target stops. GDB then reads out the registers, the real value for R15 is sent, is shown in the registers value and really makes sense. But it still says "stopped at 0x12345678". At the same time, in the registers window (and in the console output for "info registers") the real value for R15 is shown. So R15 is sent to GDB as 0x12345678 only ONCE. At that time i think R15 doesn't make any sense, as there's not yet a program in the target. Sorry for not writing that before. Best regards, Torsten. > tmohr@s.netic.de said: > > log: received valid packet 'g', len 1 > > log: wpacket > > '588e00024854010200100002187800020020000148d4000018680000082e0100605c01 > > 01582e00010f002ce92800dfff3800000100100000d3000040785634120000000000000 > > 00000000000000000000000000000000000000000000000000000000000000000000000 > > 00000000000000000000000000000000000000000000000000000000000000000000000 > > 000000000000000000000000000000000000000000000200000d3' > > [what's here returned in R15 is always shown as "Program stopped at > > ADDRESS", no matter what's in R15] > > Your remote target seems to be lying to you. This packet is the registers > that the target is sending back to gdb. It's interpreted as: > > r0 588e0002 > r1 48540102 > r2 00100002 > r3 18780002 > r4 00200001 > r5 48d40000 > r6 18680000 > r7 082e0100 > r8 605c0101 > r9 582e0001 > r10 0f002ce9 > r11 2800dfff > r12 38000001 > r13 00100000 > r14 d3000040 > r15 78563412 > f0 000000000000000000000000 > f1 000000000000000000000000 > f2 000000000000000000000000 > f3 000000000000000000000000 > f4 000000000000000000000000 > f5 000000000000000000000000 > f6 000000000000000000000000 > f7 000000000000000000000000 > fpsr 00000000 > cpsr 200000d3 > > So the value returned to gdb for r15 is (after twidling for endianness) > 0x12345678 as gdb is reporting. > > You need to find out why your remote debug agent is sending a bogus r15 > value. > > R. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2003-01-10 14:24 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-01-08 3:49 ARM, registers, "frame 0", where's the PC? Torsten Mohr 2003-01-08 19:39 ` Torsten Mohr 2003-01-09 3:31 ` Daniel Jacobowitz 2003-01-09 17:12 ` Torsten Mohr 2003-01-09 17:24 ` Daniel Jacobowitz 2003-01-09 23:23 ` Torsten Mohr 2003-01-09 23:23 ` Torsten Mohr 2003-01-09 23:27 ` Daniel Jacobowitz 2003-01-10 6:52 ` Jan Van Belle 2003-01-10 14:24 ` Daniel Jacobowitz 2003-01-09 12:20 ` Richard Earnshaw 2003-01-09 17:12 ` Torsten Mohr
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox