This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mips gdbserver reports R0 != 0


On Tue, Jan 27, 2004 at 07:37:15PM +0900, Atsushi Nemoto wrote:
> When I run gdbserver with multi-thread programs on Linux/MIPS, I
> noticed sometimes 'step' or 'next' do not work correctly.  I found
> that a value of R0 register in 'info reg' output was not 0
> (0x30303030) when this problem happen.
> 
> > (gdb) c
> > Continuing.
> > [New Thread 1026]
> > [Switching to Thread 1026]
> > 
> > Breakpoint 2, function1 (arg=0x0) at next.c:30
> > 30                      if (func1() == 0) {
> > (gdb) info reg
> >           zero       at       v0       v1       a0       a1       a2       a3
> >  R0   30303030 30048401 004009c8 00000001 00000000 00000000 7f7ffd28 00000000 
> 
> I could not see the reason (maybe regcache?), but this patch fixed my
> problem.

Did it fix the stepping problem, or did it fix the value displayed for
$zero?

The register at that address is actually a saved flag used for syscall
restarting.  I have some local patches to support it properly, but I
haven't had time to do anything with them :(  Partly because of the
number of gross hacks involved.

> --- gdb-6.0/gdb/gdbserver/linux-mips-low.c.org	Wed Jun 12 02:32:39 2002
> +++ gdb-6.0/gdb/gdbserver/linux-mips-low.c	Tue Jan 27 19:31:58 2004
> @@ -69,9 +69,6 @@
>    if (mips_regmap[regno] == -1)
>      return 1;
>  
> -  if (find_regno ("zero") == regno)
> -    return 1;
> -
>    return 0;
>  }
>  
> ---
> Atsushi Nemoto
> 

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]