From 27087a3dc244dbfddc1f712723c2b771f68f4e44 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Sat, 9 Jan 2010 04:44:02 +0000 Subject: [PATCH] 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. --- gdb/ChangeLog | 10 ++++++++++ gdb/procfs.c | 19 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c633f9b55f..8f4b86b7a7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2010-01-09 Joel Brobecker + + 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. + 2010-01-09 Joel Brobecker Wrong return convention for arrays (mips-irix). diff --git a/gdb/procfs.c b/gdb/procfs.c index 5791ee7427..9278bcb5ab 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 (¤t_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\ -- 2.34.1