This is the mail archive of the
insight@sources.redhat.com
mailing list for the Insight project.
Re: Debugging with ANGEL
- To: crossgcc at sources dot redhat dot com, gdb at sources dot redhat dot com, insight at sources dot redhat dot com, newlib at sources dot redhat dot com
- Subject: Re: Debugging with ANGEL
- From: Jens-Christian Lache <lache at tu-harburg dot de>
- Date: Wed, 15 Nov 2000 14:25:51 +0100
- References: <Pine.HPX.4.21.0011151426430.8611-100000@erasmus.rz.tu-harburg.de>
Hi! I still havenīt fixed the problem yet, but I can avoid the deadlock now.
It appears on the second swi instruction in
"initialise_monitor_handles" @ 0xZZZZ8fd0 (where 0xZZZZ0000) is the
adress, where my program is linked to) in
newlib-1.8.2/newlib/libc/sys/arm/syscalls.c
After the swi, the pc jumps back to the beginning of the instruction. This
would happen forever, if I wouldīt set the pc to the next instruction.
The variable monitor_stdin is set to 3, monitor_stout and monitor_stderr
are set to 33558724 a few instr. later. If I set them to 0 by hand, I can use
->{} (Continue) to get to the breakpoint at main.
What can I do to make stdin, stdout and stderr make work correctly?
(To which mailing list does this message belong?)
Am Mit, 14 Nov 2000 schrieben Sie:
> I'm trying to debug an arm-elf program on a ARM7TDMI based
> testboard with insight-5.0. I can download my own program,
> but when debugging, I can not reach the breakpoint at main.
>
> I receive the following message:
>
> ! Program received signal SIGTRAP, Trace/breakpoint trap
>
> -> syscalls.c Line 65
> 59 #ifdef ARM_RDI_MONITOR
> 60
> 61 static inline int
> 62 do_AngelSWI (int reason, void * arg)
> 63 {
> 64 int value;
> 65 asm volatile ("mov r0, %1; mov r1, %2; swi %a3; mov %0, r0"
> 66 : "=r" (value) /* Outputs */
> 67 : "r" (reason), "r" (arg), "i" (AngelSWI) /* Inputs */
> 68 : "r0", "r1", "lr"
> 69 /* Clobbers r0 and r1, and lr if in supervisor mode
> 70 */); return value;
> 71 }
> 72 #endif /* ARM_RDI_MONITOR */
>
>
> Stack: initialise_monitor_handles
> PC: 0x02018cb0
>
> (newlib-1.8.2/newlib/libc/sys/arm/syscalls.c)
>
> I can set breakpoints before the error occurs and step next. It looks like
> after every instruction there occurs a SWI (to do the communication with me I
> guess). The line 65 in syscalls.c is executed quite often, but finally I loose
> the connection and the board is deadlocked.
>
> When I set a breakpoint at
> void initialise_monitor_handles(void)
> the debugger shows an other strange behavior: It exectutes line 103-105:
> block[0] = (int) ":tt";
> block[2] = 3; /* length of filename */
> block[1] = 0; /* mode "r" */
> and than it jumps back to line 103. It executes the lines one more
> time, than executes line 108-110:
> block[0] = (int) ":tt";
> block[2] = 3; /* length of filename */
> block[1] = 4; /* mode "w" */
> and jumps back to line 106:
> monitor_stdin = do_AngelSWI (AngelSWI_Reason_Open, block);
> then it jumps to line 111:
> monitor_stdout = monitor_stderr = do_AngelSWI (AngelSWI_Reason_Open, block);
> back to 106, line 65 and ciao bella...
>
> Any hints?
>
> Jens-Christian
>
>
> Jens-Christian Lache
> Technische Universitaet Hamburg-Harburg
> www.tu-harburg.de/~sejl1601
> Mail:
> lache@tu-harburg.de
> lache@ngi.de
> Tel.:
> +0491759610756
>