Re: mips gdbserver reports R0 != 0

Daniel Jacobowitz
2004-01-27T17:12:07Z

On Wed, Jan 28, 2004 at 12:07:17AM +0900, Atsushi Nemoto wrote:
> >>>>> On Tue, 27 Jan 2004 09:17:18 -0500, Daniel Jacobowitz <drow@mvista.com> said:
>
> >> I could not see the reason (maybe regcache?), but this patch fixed
> >> my problem.
>
> drow> Did it fix the stepping problem, or did it fix the value
> drow> displayed for $zero?
>
> Both. My stepping problem is triggered by wrong $zero value. I tried
> with 'set debug remote 1' and found gdb inserted breakpoint at wrong
> place when stepping 'beqz' instruction.

Oh, I see how this happens now. Thanks for the explanation; in that
case something definitely needs to be done.

> drow> The register at that address is actually a saved flag used for
> drow> syscall restarting. I have some local patches to support it
> drow> properly, but I haven't had time to do anything with them :(
> drow> Partly because of the number of gross hacks involved.
>
> The 'that address' means &pt_regs->regs[0] in kernel, right?
>
> I had not noticed that. Thank you. So my patch is not correct.
>
> Maybe the correct fix is clearing register cache in
> new_register_cache(). I will try later.

Explicitly zeroing the register cache should fix this, so I'd be
happier with that solution.

[Do you have a copyright assignment on file for GDB, btw? If not, I'll
make the patch myself for you to test, to spare us the legal dance.]

--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer