OSDN Git Service

bfd/
authorjkratoch <jkratoch>
Thu, 5 Jan 2012 07:50:43 +0000 (07:50 +0000)
committerjkratoch <jkratoch>
Thu, 5 Jan 2012 07:50:43 +0000 (07:50 +0000)
Fix zero registers core files when built by gcc-4.7.
* elf64-x86-64.c (elf_x86_64_write_core_note): Remove variables p and
size.  Call elfcore_write_note for the local variables.  Remove the
final elfcore_write_note call.  Add NOTREACHED comments.

bfd/ChangeLog
bfd/elf64-x86-64.c

index 5dac115..eeef5a6 100644 (file)
@@ -1,3 +1,10 @@
+2012-01-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Fix zero registers core files when built by gcc-4.7.
+       * elf64-x86-64.c (elf_x86_64_write_core_note): Remove variables p and
+       size.  Call elfcore_write_note for the local variables.  Remove the
+       final elfcore_write_note call.  Add NOTREACHED comments.
+
 2012-01-04  Tristan Gingold  <gingold@adacore.com>
 
        * mach-o.c (bfd_mach_o_fat_stat_arch_elt): New function.
index a4dfd48..25c14a8 100644 (file)
@@ -420,8 +420,6 @@ elf_x86_64_write_core_note (bfd *abfd, char *buf, int *bufsiz,
                            int note_type, ...)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-  const void *p;
-  int size;
   va_list ap;
   const char *fname, *psargs;
   long pid;
@@ -445,8 +443,8 @@ elf_x86_64_write_core_note (bfd *abfd, char *buf, int *bufsiz,
          memset (&data, 0, sizeof (data));
          strncpy (data.pr_fname, fname, sizeof (data.pr_fname));
          strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs));
-         p = (const void *) &data;
-         size = sizeof (data);
+         return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
+                                    &data, sizeof (data));
        }
       else
        {
@@ -454,10 +452,10 @@ elf_x86_64_write_core_note (bfd *abfd, char *buf, int *bufsiz,
          memset (&data, 0, sizeof (data));
          strncpy (data.pr_fname, fname, sizeof (data.pr_fname));
          strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs));
-         p = (const void *) &data;
-         size = sizeof (data);
+         return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
+                                    &data, sizeof (data));
        }
-      break;
+      /* NOTREACHED */
 
     case NT_PRSTATUS:
       va_start (ap, note_type);
@@ -475,8 +473,8 @@ elf_x86_64_write_core_note (bfd *abfd, char *buf, int *bufsiz,
              prstat.pr_pid = pid;
              prstat.pr_cursig = cursig;
              memcpy (&prstat.pr_reg, gregs, sizeof (prstat.pr_reg));
-             p = (const void *) &prstat;
-             size = sizeof (prstat);
+             return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
+                                        &prstat, sizeof (prstat));
            }
          else
            {
@@ -485,8 +483,8 @@ elf_x86_64_write_core_note (bfd *abfd, char *buf, int *bufsiz,
              prstat.pr_pid = pid;
              prstat.pr_cursig = cursig;
              memcpy (&prstat.pr_reg, gregs, sizeof (prstat.pr_reg));
-             p = (const void *) &prstat;
-             size = sizeof (prstat);
+             return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
+                                        &prstat, sizeof (prstat));
            }
        }
       else
@@ -496,14 +494,11 @@ elf_x86_64_write_core_note (bfd *abfd, char *buf, int *bufsiz,
          prstat.pr_pid = pid;
          prstat.pr_cursig = cursig;
          memcpy (&prstat.pr_reg, gregs, sizeof (prstat.pr_reg));
-         p = (const void *) &prstat;
-         size = sizeof (prstat);
+         return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
+                                    &prstat, sizeof (prstat));
        }
-      break;
     }
-
-  return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, p,
-                            size);
+  /* NOTREACHED */
 }
 #endif
 \f