mips gdbserver reports R0 != 0

Atsushi Nemoto
2004-01-27T10:35:37Z

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.

--- 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;
}