* linux-proc.c (struct linux_corefile_thread_data): Add num_notes
authorMark Kettenis <kettenis@gnu.org>
Fri, 23 Aug 2002 19:06:05 +0000 (19:06 +0000)
committerMark Kettenis <kettenis@gnu.org>
Fri, 23 Aug 2002 19:06:05 +0000 (19:06 +0000)
member.
(linux_corefile_thread_callback): Increase args->num_notes.
(linux_make_note_section): Initialize thread_args.num_notes, and
use it to determine whether notes for any threads were created.

gdb/ChangeLog
gdb/linux-proc.c

index 7b55f3e1dbf5ee810cdc3af10649ffee43885205..953261401e5592384ab47f6e8197b3117c364d5f 100644 (file)
@@ -1,3 +1,11 @@
+2002-08-23  Mark Kettenis  <kettenis@gnu.org>
+
+       * linux-proc.c (struct linux_corefile_thread_data): Add num_notes
+       member.
+       (linux_corefile_thread_callback): Increase args->num_notes.
+       (linux_make_note_section): Initialize thread_args.num_notes, and
+       use it to determine whether notes for any threads were created.
+
 2002-08-23  Donn Terry  <dterry@microsoft.com>
 
        * proc-api.c (rw_table): Do not include a row for PCDSTOP if the
index c66df986689da7d60013c489829724a441f2cac2..f76def3a3a2c7f9f3373b7d09f6e7341452b1c85 100644 (file)
@@ -198,10 +198,12 @@ linux_do_thread_registers (bfd *obfd, ptid_t ptid,
   return note_data;
 }
 
-struct linux_corefile_thread_data {
-  bfd  *obfd;
+struct linux_corefile_thread_data
+{
+  bfd *obfd;
   char *note_data;
-  int  *note_size;
+  int *note_size;
+  int num_notes;
 };
 
 /* Function: linux_corefile_thread_callback
@@ -224,6 +226,7 @@ linux_corefile_thread_callback (struct thread_info *ti, void *data)
                                               ti->ptid, 
                                               args->note_data, 
                                               args->note_size);
+  args->num_notes++;
   inferior_ptid = saved_ptid;
   registers_changed ();
   target_fetch_registers (-1); /* FIXME should not be necessary; 
@@ -271,11 +274,12 @@ linux_make_note_section (bfd *obfd, int *note_size)
   thread_args.obfd = obfd;
   thread_args.note_data = note_data;
   thread_args.note_size = note_size;
+  thread_args.num_notes = 0;
   iterate_over_threads (linux_corefile_thread_callback, &thread_args);
-  if (thread_args.note_data == note_data)
+  if (thread_args.num_notes == 0)
     {
       /* iterate_over_threads didn't come up with any threads;
-        just use inferior_ptid. */
+        just use inferior_ptid.  */
       note_data = linux_do_thread_registers (obfd, inferior_ptid, 
                                             note_data, note_size);
     }