2012-01-26 Pedro Alves <palves@redhat.com>
authorPedro Alves <palves@redhat.com>
Thu, 26 Jan 2012 16:44:29 +0000 (16:44 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 26 Jan 2012 16:44:29 +0000 (16:44 +0000)
* corelow.c (core_has_fake_pid): Delete.
(core_close): Delete references to `core_has_fake_pid'.
(add_to_thread_list): Adjust to mark the inferior's pid as fake.
(core_open): Delete references to `core_has_fake_pid'.
(core_pid_to_str): Adjust to check inferior->fake_pid_p instead of
the removed global.

gdb/ChangeLog
gdb/corelow.c

index bf53d7bff439bb160d40cf4664b9107d13e96bae..b918a442f6eeff819b724ee0f619a6d9c68c434c 100644 (file)
@@ -1,3 +1,12 @@
+2012-01-26  Pedro Alves  <palves@redhat.com>
+
+       * corelow.c (core_has_fake_pid): Delete.
+       (core_close): Delete references to `core_has_fake_pid'.
+       (add_to_thread_list): Adjust to mark the inferior's pid as fake.
+       (core_open): Delete references to `core_has_fake_pid'.
+       (core_pid_to_str): Adjust to check inferior->fake_pid_p instead of
+       the removed global.
+
 2012-01-26  Joel Brobecker  <brobecker@adacore.com>
 
        * symfile.h (struct quick_symbol_functions) [expand_symtabs_matching]:
index 3e0c7cd0f7da2f9696b62ae59b4ca1b62458873d..aa344c67d9d26d39f6677270f1374ca86a2319c0 100644 (file)
@@ -75,9 +75,6 @@ struct gdbarch *core_gdbarch = NULL;
    unix child targets.  */
 static struct target_section_table *core_data;
 
-/* True if we needed to fake the pid of the loaded core inferior.  */
-static int core_has_fake_pid = 0;
-
 static void core_files_info (struct target_ops *);
 
 static struct core_fns *sniff_core_bfd (bfd *);
@@ -217,7 +214,6 @@ core_close (int quitting)
          xfree (core_data);
          core_data = NULL;
        }
-      core_has_fake_pid = 0;
 
       name = bfd_get_filename (core_bfd);
       gdb_bfd_close_or_warn (core_bfd);
@@ -244,6 +240,8 @@ add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg)
   int core_tid;
   int pid, lwpid;
   asection *reg_sect = (asection *) reg_sect_arg;
+  int fake_pid_p = 0;
+  struct inferior *inf;
 
   if (strncmp (bfd_section_name (abfd, asect), ".reg/", 5) != 0)
     return;
@@ -253,14 +251,18 @@ add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg)
   pid = bfd_core_file_pid (core_bfd);
   if (pid == 0)
     {
-      core_has_fake_pid = 1;
+      fake_pid_p = 1;
       pid = CORELOW_PID;
     }
 
   lwpid = core_tid;
 
-  if (current_inferior ()->pid == 0)
-    inferior_appeared (current_inferior (), pid);
+  inf = current_inferior ();
+  if (inf->pid == 0)
+    {
+      inferior_appeared (inf, pid);
+      inf->fake_pid_p = fake_pid_p;
+    }
 
   ptid = ptid_build (pid, lwpid, 0);
 
@@ -382,7 +384,6 @@ core_open (char *filename, int from_tty)
   init_thread_list ();
 
   inferior_ptid = null_ptid;
-  core_has_fake_pid = 0;
 
   /* Need to flush the register cache (and the frame cache) from a
      previous debug session.  If inferior_ptid ends up the same as the
@@ -849,6 +850,7 @@ static char *
 core_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
+  struct inferior *inf;
   int pid;
 
   /* The preferred way is to have a gdbarch/OS specific
@@ -867,7 +869,8 @@ core_pid_to_str (struct target_ops *ops, ptid_t ptid)
 
   /* Otherwise, this isn't a "threaded" core -- use the PID field, but
      only if it isn't a fake PID.  */
-  if (!core_has_fake_pid)
+  inf = find_inferior_pid (ptid_get_pid (ptid));
+  if (inf != NULL && !inf->fake_pid_p)
     return normal_pid_to_str (ptid);
 
   /* No luck.  We simply don't have a valid PID to print.  */