aboutsummaryrefslogtreecommitdiff
path: root/gdb/procfs.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2010-01-09 04:44:02 +0000
committerJoel Brobecker <brobecker@gnat.com>2010-01-09 04:44:02 +0000
commit27087a3dc244dbfddc1f712723c2b771f68f4e44 (patch)
treec42f89d3861c7a28ac2e34b79a69bfbd3e06bc5f /gdb/procfs.c
parentf08877ba090b81d1d4e71202c2e5d970010d7799 (diff)
downloadgdb-27087a3dc244dbfddc1f712723c2b771f68f4e44.zip
gdb-27087a3dc244dbfddc1f712723c2b771f68f4e44.tar.gz
gdb-27087a3dc244dbfddc1f712723c2b771f68f4e44.tar.bz2
Breakpoint in shared library does not work on mips-irix.
* procfs.c: #include "observer.h". (procfs_inferior_created): New function, moving here the code which unsets the syssgi syscall-exit notifications. (procfs_create_inferior): Remove the code which unsets the syssgi syscall-exit notifications. It is too early to do this here. (_initialize_procfs): Attach the procfs_inferior_created observer.
Diffstat (limited to 'gdb/procfs.c')
-rw-r--r--gdb/procfs.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/gdb/procfs.c b/gdb/procfs.c
index 5791ee7..9278bcb 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -51,6 +51,7 @@
#include "inflow.h"
#include "auxv.h"
#include "procfs.h"
+#include "observer.h"
/*
* PROCFS.C
@@ -5146,13 +5147,27 @@ procfs_create_inferior (struct target_ops *ops, char *exec_file,
NULL, NULL, shell_file);
procfs_init_inferior (ops, pid);
+}
+
+/* An observer for the "inferior_created" event. */
+static void
+procfs_inferior_created (struct target_ops *ops, int from_tty)
+{
#ifdef SYS_syssgi
/* Make sure to cancel the syssgi() syscall-exit notifications.
They should normally have been removed by now, but they may still
be activated if the inferior doesn't use shared libraries, or if
we didn't locate __dbx_link, or if we never stopped in __dbx_link.
- See procfs_init_inferior() for more details. */
+ See procfs_init_inferior() for more details.
+
+ Since these notifications are only ever enabled when we spawned
+ the inferior ourselves, there is nothing to do when the inferior
+ was created by attaching to an already running process, or when
+ debugging a core file. */
+ if (current_inferior ()->attach_flag || !target_can_run (&current_target))
+ return;
+
proc_trace_syscalls_1 (find_procinfo_or_die (PIDGET (inferior_ptid), 0),
SYS_syssgi, PR_SYSEXIT, FLAG_RESET, 0);
#endif
@@ -6000,6 +6015,8 @@ proc_untrace_sysexit_cmd (char *args, int from_tty)
void
_initialize_procfs (void)
{
+ observer_attach_inferior_created (procfs_inferior_created);
+
add_info ("proc", info_proc_cmd, _("\
Show /proc process information about any running process.\n\
Specify process id, or use the program being debugged by default.\n\