This is the mail archive of the gdb-patches@sourceware.org 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: [PATCH, v3] Expect SI_KERNEL or TRAP_BRKPT si_code values for MIPS breakpoint traps


On 02/22/2016 07:41 PM, Pedro Alves wrote:
On 02/22/2016 10:20 PM, Luis Machado wrote:

diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h
index ba58717..72b32b1 100644
--- a/gdb/nat/linux-ptrace.h
+++ b/gdb/nat/linux-ptrace.h
@@ -140,11 +140,16 @@ struct buffer;
     in SPU code on a Cell/B.E.  However, SI_KERNEL is never seen
     on a SIGTRAP for any other reason.

+   The MIPS kernel uses the default si_code of SI_KERNEL for software
+   breakpoints, hardware watchpoints and SIGTRAP's in general.

If we get this for both software breakpoints and hardware watchpoints,
then it seems to me that this change still leaves watchpoints broken,
as I can't see how check_stopped_by_watchpoint is reached, in either
gdb/linux-nat.c or gdbserver/linux-low.c.

With or without this specific breakpoint fix, hardware watchpoints are already broken for MIPS AFAICS.

MIPS' kernel has never set si_code to anything other than SI_KERNEL. When the change to expect TRAP_HWBKPT was committed, then hardware watchpoints stopped working properly for MIPS.

Now all hardware watchpoints produce are breakpoint-like traps that get silently ignored by GDB as "delayed software breakpoint trap". Neither GDB nor GDBserver can tell when a hardware watchpoint really happened by using si_code information.

But this seems to be a different issue and i think it should be handle separately.


Also, "and SIGTRAP's in general." seems wrong.  I hope that that's
not the case for user-sent SIGTRAPs?


I'll get this updated in the next version.


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