| Index: gdb/linux-fork.c
|
| diff --git a/gdb/linux-fork.c b/gdb/linux-fork.c
|
| index 028fcbc09d0feb35c27be4eee90f3acf19118302..1c325ef7a9495bb6df1e6790e35f63f159e93ef4 100644
|
| --- a/gdb/linux-fork.c
|
| +++ b/gdb/linux-fork.c
|
| @@ -1,6 +1,6 @@
|
| /* GNU/Linux native-dependent code for debugging multiple forks.
|
|
|
| - Copyright (C) 2005-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 2005-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -25,15 +25,15 @@
|
| #include "infcall.h"
|
| #include "objfiles.h"
|
| #include "gdb_assert.h"
|
| -#include "gdb_string.h"
|
| +#include <string.h>
|
| #include "linux-fork.h"
|
| #include "linux-nat.h"
|
| #include "gdbthread.h"
|
| +#include "source.h"
|
|
|
| #include <sys/ptrace.h>
|
| #include "gdb_wait.h"
|
| -#include <sys/param.h>
|
| -#include "gdb_dirent.h"
|
| +#include <dirent.h>
|
| #include <ctype.h>
|
|
|
| struct fork_info *fork_list;
|
| @@ -71,14 +71,14 @@ add_fork (pid_t pid)
|
| {
|
| struct fork_info *fp;
|
|
|
| - if (fork_list == NULL && pid != PIDGET (inferior_ptid))
|
| + if (fork_list == NULL && pid != ptid_get_pid (inferior_ptid))
|
| {
|
| /* Special case -- if this is the first fork in the list
|
| (the list is hitherto empty), and if this new fork is
|
| NOT the current inferior_ptid, then add inferior_ptid
|
| first, as a special zeroeth fork id. */
|
| highest_fork_num = -1;
|
| - add_fork (PIDGET (inferior_ptid)); /* safe recursion */
|
| + add_fork (ptid_get_pid (inferior_ptid)); /* safe recursion */
|
| }
|
|
|
| fp = XZALLOC (struct fork_info);
|
| @@ -121,6 +121,8 @@ delete_fork (ptid_t ptid)
|
|
|
| fpprev = NULL;
|
|
|
| + linux_nat_forget_process (ptid_get_pid (ptid));
|
| +
|
| for (fp = fork_list; fp; fpprev = fp, fp = fp->next)
|
| if (ptid_equal (fp->ptid, ptid))
|
| break;
|
| @@ -266,7 +268,7 @@ fork_load_infrun_state (struct fork_info *fp)
|
| static void
|
| fork_save_infrun_state (struct fork_info *fp, int clobber_regs)
|
| {
|
| - char path[MAXPATHLEN];
|
| + char path[PATH_MAX];
|
| struct dirent *de;
|
| DIR *d;
|
|
|
| @@ -280,7 +282,8 @@ fork_save_infrun_state (struct fork_info *fp, int clobber_regs)
|
| {
|
| /* Now save the 'state' (file position) of all open file descriptors.
|
| Unfortunately fork does not take care of that for us... */
|
| - snprintf (path, MAXPATHLEN, "/proc/%ld/fd", (long) PIDGET (fp->ptid));
|
| + snprintf (path, PATH_MAX, "/proc/%ld/fd",
|
| + (long) ptid_get_pid (fp->ptid));
|
| if ((d = opendir (path)) != NULL)
|
| {
|
| long tmp;
|
| @@ -331,7 +334,7 @@ linux_fork_killall (void)
|
|
|
| for (fp = fork_list; fp; fp = fp->next)
|
| {
|
| - pid = PIDGET (fp->ptid);
|
| + pid = ptid_get_pid (fp->ptid);
|
| do {
|
| /* Use SIGKILL instead of PTRACE_KILL because the former works even
|
| if the thread is running, while the later doesn't. */
|
| @@ -384,13 +387,13 @@ linux_fork_mourn_inferior (void)
|
| the first available. */
|
|
|
| void
|
| -linux_fork_detach (char *args, int from_tty)
|
| +linux_fork_detach (const char *args, int from_tty)
|
| {
|
| /* OK, inferior_ptid is the one we are detaching from. We need to
|
| delete it from the fork_list, and switch to the next available
|
| fork. */
|
|
|
| - if (ptrace (PTRACE_DETACH, PIDGET (inferior_ptid), 0, 0))
|
| + if (ptrace (PTRACE_DETACH, ptid_get_pid (inferior_ptid), 0, 0))
|
| error (_("Unable to detach %s"), target_pid_to_str (inferior_ptid));
|
|
|
| delete_fork (inferior_ptid);
|
| @@ -495,7 +498,7 @@ delete_checkpoint_command (char *args, int from_tty)
|
| error (_("\
|
| Please switch to another checkpoint before deleting the current one"));
|
|
|
| - if (ptrace (PTRACE_KILL, PIDGET (ptid), 0, 0))
|
| + if (ptrace (PTRACE_KILL, ptid_get_pid (ptid), 0, 0))
|
| error (_("Unable to kill pid %s"), target_pid_to_str (ptid));
|
|
|
| fi = find_fork_ptid (ptid);
|
| @@ -514,7 +517,7 @@ Please switch to another checkpoint before deleting the current one"));
|
| if ((!find_thread_ptid (pptid) && find_fork_ptid (pptid))
|
| || (find_thread_ptid (pptid) && is_stopped (pptid)))
|
| {
|
| - if (inferior_call_waitpid (pptid, PIDGET (ptid)))
|
| + if (inferior_call_waitpid (pptid, ptid_get_pid (ptid)))
|
| warning (_("Unable to wait pid %s"), target_pid_to_str (ptid));
|
| }
|
| }
|
| @@ -535,7 +538,7 @@ detach_checkpoint_command (char *args, int from_tty)
|
| error (_("\
|
| Please switch to another checkpoint before detaching the current one"));
|
|
|
| - if (ptrace (PTRACE_DETACH, PIDGET (ptid), 0, 0))
|
| + if (ptrace (PTRACE_DETACH, ptid_get_pid (ptid), 0, 0))
|
| error (_("Unable to detach %s"), target_pid_to_str (ptid));
|
|
|
| if (from_tty)
|
| @@ -583,16 +586,17 @@ info_checkpoints_command (char *arg, int from_tty)
|
|
|
| sal = find_pc_line (pc, 0);
|
| if (sal.symtab)
|
| - printf_filtered (_(", file %s"), lbasename (sal.symtab->filename));
|
| + printf_filtered (_(", file %s"),
|
| + symtab_to_filename_for_display (sal.symtab));
|
| if (sal.line)
|
| printf_filtered (_(", line %d"), sal.line);
|
| if (!sal.symtab && !sal.line)
|
| {
|
| - struct minimal_symbol *msym;
|
| + struct bound_minimal_symbol msym;
|
|
|
| msym = lookup_minimal_symbol_by_pc (pc);
|
| - if (msym)
|
| - printf_filtered (", <%s>", SYMBOL_LINKAGE_NAME (msym));
|
| + if (msym.minsym)
|
| + printf_filtered (", <%s>", SYMBOL_LINKAGE_NAME (msym.minsym));
|
| }
|
|
|
| putchar_filtered ('\n');
|
| @@ -677,7 +681,7 @@ checkpoint_command (char *args, int from_tty)
|
|
|
| /* Tell linux-nat.c that we're checkpointing this inferior. */
|
| old_chain = make_cleanup_restore_integer (&checkpointing_pid);
|
| - checkpointing_pid = PIDGET (inferior_ptid);
|
| + checkpointing_pid = ptid_get_pid (inferior_ptid);
|
|
|
| ret = call_function_by_hand (fork_fn, 0, &ret);
|
| do_cleanups (old_chain);
|
| @@ -728,7 +732,7 @@ linux_fork_context (struct fork_info *newfp, int from_tty)
|
| printf_filtered (_("Switching to %s\n"),
|
| target_pid_to_str (inferior_ptid));
|
|
|
| - print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
|
| + print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
|
| }
|
|
|
| /* Switch inferior process (checkpoint) context, by checkpoint id. */
|
|
|