| 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.  */
 | 
| 
 |