aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r--gdb/infrun.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 9bd4d3e..98e7227 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -158,6 +158,9 @@ resume_cleanups PARAMS ((int));
extern char **environ;
+extern int sys_nerr;
+extern char *sys_errlist[];
+
extern struct target_ops child_ops; /* In inftarg.c */
/* Sigtramp is a routine that the kernel calls (which then calls the
@@ -198,6 +201,12 @@ extern struct target_ops child_ops; /* In inftarg.c */
#define IN_SOLIB_TRAMPOLINE(pc,name) 0
#endif
+/* Notify other parts of gdb that might care that signal handling may
+ have changed for one or more signals. */
+#ifndef NOTICE_SIGNAL_HANDLING_CHANGE
+#define NOTICE_SIGNAL_HANDLING_CHANGE /* No actions */
+#endif
+
#ifdef TDESC
#include "tdesc.h"
int safe_to_init_tdesc_context = 0;
@@ -466,8 +475,6 @@ child_create_inferior (exec_file, allargs, env)
{
int pid;
char *shell_command;
- extern int sys_nerr;
- extern char *sys_errlist[];
char *shell_file;
static char default_shell_file[] = SHELL_FILE;
int len;
@@ -1128,7 +1135,7 @@ wait_for_inferior ()
#if 0
if (* step_frame_address == 0
|| (step_frame_address == stop_frame_address))
-#endif 0
+#endif
{
remove_step_breakpoint ();
step_resume_break_address = 0;
@@ -1579,6 +1586,24 @@ remove_step_breakpoint ()
step_resume_break_shadow);
}
+int signal_stop_state (signo)
+ int signo;
+{
+ return ((signo >= 0 && signo < NSIG) ? signal_stop[signo] : 0);
+}
+
+int signal_print_state (signo)
+ int signo;
+{
+ return ((signo >= 0 && signo < NSIG) ? signal_print[signo] : 0);
+}
+
+int signal_pass_state (signo)
+ int signo;
+{
+ return ((signo >= 0 && signo < NSIG) ? signal_program[signo] : 0);
+}
+
static void
sig_print_header ()
{
@@ -1688,7 +1713,7 @@ handle_command (args, from_tty)
/* Not a number and not a recognized flag word => complain. */
else
{
- error ("Unrecognized flag word: \"%s\".", p);
+ error ("Unrecognized or ambiguous flag word: \"%s\".", p);
}
/* Find start of next word. */
@@ -1696,6 +1721,8 @@ handle_command (args, from_tty)
while (*p == ' ' || *p == '\t') p++;
}
+ NOTICE_SIGNAL_HANDLING_CHANGE;
+
if (from_tty)
{
/* Show the results. */