MIPS/Linux: Also recognize TRAP_BRKPT and TRAP_HWBKPT
This makes the MIPS Linux backends recognize TRAP_BRKPT and TRAP_HWBKPT in siginfo.si_code in addition to SI_KERNEL, since Linux 4.6 now reports the finer-grained si_code values too. Refs: https://sourceware.org/ml/gdb-patches/2016-02/msg00756.html https://sourceware.org/ml/gdb-patches/2016-04/msg00090.html On kernels that report SI_KERNEL (<= 4.5), we'll enter the "ambiguous" path of save_stop_reason: if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code) && GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code)) { /* The si_code is ambiguous on this arch -- check debug registers. */ if (!check_stopped_by_watchpoint (lp)) lp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT; } while on kernels that report the finer-grained si_code values (>= 4.6), we'll enter the corresponding branches: else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)) { } else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code)) { ... gdb/ChangeLog: 2016-04-15 Pedro Alves <palves@redhat.com> * nat/linux-ptrace.h [__mips__] (GDB_ARCH_IS_TRAP_BRKPT): Also accept TRAP_BRKPT. [__mips__] (GDB_ARCH_IS_TRAP_HWBKPT): Also accept TRAP_HWBKPT.
This commit is contained in:
parent
415fa61233
commit
77770d8321
@ -1,3 +1,9 @@
|
|||||||
|
2016-04-15 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* nat/linux-ptrace.h [__mips__] (GDB_ARCH_IS_TRAP_BRKPT): Also
|
||||||
|
accept TRAP_BRKPT.
|
||||||
|
[__mips__] (GDB_ARCH_IS_TRAP_HWBKPT): Also accept TRAP_HWBKPT.
|
||||||
|
|
||||||
2016-04-15 Yao Qi <yao.qi@linaro.org>
|
2016-04-15 Yao Qi <yao.qi@linaro.org>
|
||||||
|
|
||||||
* arm-tdep.c (thumb_stack_frame_destroyed_p): Return zero if
|
* arm-tdep.c (thumb_stack_frame_destroyed_p): Return zero if
|
||||||
|
@ -140,8 +140,8 @@ struct buffer;
|
|||||||
in SPU code on a Cell/B.E. However, SI_KERNEL is never seen
|
in SPU code on a Cell/B.E. However, SI_KERNEL is never seen
|
||||||
on a SIGTRAP for any other reason.
|
on a SIGTRAP for any other reason.
|
||||||
|
|
||||||
The MIPS kernel uses SI_KERNEL for all kernel generated traps.
|
The MIPS kernel up until 4.5 used SI_KERNEL for all kernel
|
||||||
Since:
|
generated traps. Since:
|
||||||
|
|
||||||
- MIPS doesn't do hardware single-step.
|
- MIPS doesn't do hardware single-step.
|
||||||
- We don't need to care about exec SIGTRAPs --- we assume
|
- We don't need to care about exec SIGTRAPs --- we assume
|
||||||
@ -152,6 +152,9 @@ struct buffer;
|
|||||||
software breakpoints and hardware watchpoints, which can be done by
|
software breakpoints and hardware watchpoints, which can be done by
|
||||||
peeking the debug registers.
|
peeking the debug registers.
|
||||||
|
|
||||||
|
Beginning with Linux 4.6, the MIPS port reports proper TRAP_BRKPT and
|
||||||
|
TRAP_HWBKPT codes, so we also match them.
|
||||||
|
|
||||||
The generic Linux target code should use GDB_ARCH_IS_TRAP_* instead
|
The generic Linux target code should use GDB_ARCH_IS_TRAP_* instead
|
||||||
of TRAP_* to abstract out these peculiarities. */
|
of TRAP_* to abstract out these peculiarities. */
|
||||||
#if defined __i386__ || defined __x86_64__
|
#if defined __i386__ || defined __x86_64__
|
||||||
@ -161,8 +164,8 @@ struct buffer;
|
|||||||
# define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == SI_KERNEL || (X) == TRAP_BRKPT)
|
# define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == SI_KERNEL || (X) == TRAP_BRKPT)
|
||||||
# define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == TRAP_HWBKPT)
|
# define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == TRAP_HWBKPT)
|
||||||
#elif defined __mips__
|
#elif defined __mips__
|
||||||
# define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == SI_KERNEL)
|
# define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == SI_KERNEL || (X) == TRAP_BRKPT)
|
||||||
# define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == SI_KERNEL)
|
# define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == SI_KERNEL || (X) == TRAP_HWBKPT)
|
||||||
#else
|
#else
|
||||||
# define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == TRAP_BRKPT)
|
# define GDB_ARCH_IS_TRAP_BRKPT(X) ((X) == TRAP_BRKPT)
|
||||||
# define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == TRAP_HWBKPT)
|
# define GDB_ARCH_IS_TRAP_HWBKPT(X) ((X) == TRAP_HWBKPT)
|
||||||
|
Loading…
Reference in New Issue
Block a user