* infrun.c (handle_inferior_event): Allow for breakpoint
instructions to generate a SIGSEGV in addition to SIGTRAP, SIGILL and SIGEMT. Update comments. * NEWS (Revised SPARC target): Mention support for non-executable stack.
This commit is contained in:
parent
290281b1cb
commit
03cebad224
|
@ -1,3 +1,11 @@
|
||||||
|
2004-02-05 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
|
* infrun.c (handle_inferior_event): Allow for breakpoint
|
||||||
|
instructions to generate a SIGSEGV in addition to SIGTRAP, SIGILL
|
||||||
|
and SIGEMT. Update comments.
|
||||||
|
* NEWS (Revised SPARC target): Mention support for non-executable
|
||||||
|
stack.
|
||||||
|
|
||||||
2004-02-04 Mark Kettenis <kettenis@gnu.org>
|
2004-02-04 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
* target.h (target_object): Add TARGET_OBJECT_WCOOKIE.
|
* target.h (target_object): Add TARGET_OBJECT_WCOOKIE.
|
||||||
|
|
4
gdb/NEWS
4
gdb/NEWS
|
@ -19,7 +19,9 @@ you should upgrade gdbserver on the remote side.
|
||||||
|
|
||||||
The SPARC target has been completely revised, incorporating the
|
The SPARC target has been completely revised, incorporating the
|
||||||
FreeBSD/sparc64 support that was added for GDB 6.0. As a result
|
FreeBSD/sparc64 support that was added for GDB 6.0. As a result
|
||||||
support for LynxOS and SunOS 4 has been dropped.
|
support for LynxOS and SunOS 4 has been dropped. Calling functions
|
||||||
|
from within GDB on operating systems with a non-executable stack
|
||||||
|
(Solaris, OpenBSD) now works.
|
||||||
|
|
||||||
* New C++ demangler
|
* New C++ demangler
|
||||||
|
|
||||||
|
|
25
gdb/infrun.c
25
gdb/infrun.c
|
@ -1975,15 +1975,20 @@ handle_inferior_event (struct execution_control_state *ecs)
|
||||||
will be made according to the signal handling tables. */
|
will be made according to the signal handling tables. */
|
||||||
|
|
||||||
/* First, distinguish signals caused by the debugger from signals
|
/* First, distinguish signals caused by the debugger from signals
|
||||||
that have to do with the program's own actions.
|
that have to do with the program's own actions. Note that
|
||||||
Note that breakpoint insns may cause SIGTRAP or SIGILL
|
breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending
|
||||||
or SIGEMT, depending on the operating system version.
|
on the operating system version. Here we detect when a SIGILL or
|
||||||
Here we detect when a SIGILL or SIGEMT is really a breakpoint
|
SIGEMT is really a breakpoint and change it to SIGTRAP. We do
|
||||||
and change it to SIGTRAP. */
|
something similar for SIGSEGV, since a SIGSEGV will be generated
|
||||||
|
when we're trying to execute a breakpoint instruction on a
|
||||||
|
non-executable stack. This happens for call dummy breakpoints
|
||||||
|
for architectures like SPARC that place call dummies on the
|
||||||
|
stack. */
|
||||||
|
|
||||||
if (stop_signal == TARGET_SIGNAL_TRAP
|
if (stop_signal == TARGET_SIGNAL_TRAP
|
||||||
|| (breakpoints_inserted &&
|
|| (breakpoints_inserted &&
|
||||||
(stop_signal == TARGET_SIGNAL_ILL
|
(stop_signal == TARGET_SIGNAL_ILL
|
||||||
|
|| stop_signal == TARGET_SIGNAL_SEGV
|
||||||
|| stop_signal == TARGET_SIGNAL_EMT))
|
|| stop_signal == TARGET_SIGNAL_EMT))
|
||||||
|| stop_soon == STOP_QUIETLY
|
|| stop_soon == STOP_QUIETLY
|
||||||
|| stop_soon == STOP_QUIETLY_NO_SIGSTOP)
|
|| stop_soon == STOP_QUIETLY_NO_SIGSTOP)
|
||||||
|
@ -2046,10 +2051,14 @@ handle_inferior_event (struct execution_control_state *ecs)
|
||||||
|
|
||||||
If someone ever tries to get get call dummys on a
|
If someone ever tries to get get call dummys on a
|
||||||
non-executable stack to work (where the target would stop
|
non-executable stack to work (where the target would stop
|
||||||
with something like a SIGSEG), then those tests might need to
|
with something like a SIGSEGV), then those tests might need
|
||||||
be re-instated. Given, however, that the tests were only
|
to be re-instated. Given, however, that the tests were only
|
||||||
enabled when momentary breakpoints were not being used, I
|
enabled when momentary breakpoints were not being used, I
|
||||||
suspect that it won't be the case. */
|
suspect that it won't be the case.
|
||||||
|
|
||||||
|
NOTE: kettenis/2004-02-05: Indeed such checks don't seem to
|
||||||
|
be necessary for call dummies on a non-executable stack on
|
||||||
|
SPARC. */
|
||||||
|
|
||||||
if (stop_signal == TARGET_SIGNAL_TRAP)
|
if (stop_signal == TARGET_SIGNAL_TRAP)
|
||||||
ecs->random_signal
|
ecs->random_signal
|
||||||
|
|
Loading…
Reference in New Issue