* corelow.c (core_xfer_partial): Fix coding standards violation.
authorMark Kettenis <kettenis@gnu.org>
Sat, 10 Apr 2004 09:49:21 +0000 (09:49 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sat, 10 Apr 2004 09:49:21 +0000 (09:49 +0000)
Add support for TARGET_OBJECT_WCOOKIE.

gdb/ChangeLog
gdb/corelow.c

index c75a7eda03d08fd87af46a28412214ad06ffd424..e1b0432cd29bafb38d83cea950c58746fe0279d1 100644 (file)
@@ -1,5 +1,8 @@
 2004-04-10  Mark Kettenis  <kettenis@gnu.org>
 
+       * corelow.c (core_xfer_partial): Fix coding standards violation.
+       Add support for TARGET_OBJECT_WCOOKIE.
+
        * sparc-linux-tdep.c (sparc32_linux_init_abi): Don't set
        deprecated_pc_in_sigtramp.
        * sparc-sol2-tdep.c (sparc32_sol2_init_abi): Likewise.
index 403cfa31338d2d3b7ae0c7595cbca16965b64332..c0b782dfd2216fd16e311075a996fd8dbb8f8378 100644 (file)
@@ -552,9 +552,9 @@ core_xfer_partial (struct target_ops *ops, enum target_object object,
          size -= offset;
          if (size > len)
            size = len;
-         if (size > 0 &&
-             bfd_get_section_contents (core_bfd, section, readbuf,
-                                         (file_ptr) offset, size))
+         if (size > 0
+             && !bfd_get_section_contents (core_bfd, section, readbuf,
+                                           (file_ptr) offset, size))
            {
              warning ("Couldn't read NT_AUXV note in core file.");
              return -1;
@@ -564,6 +564,38 @@ core_xfer_partial (struct target_ops *ops, enum target_object object,
        }
       return -1;
 
+    case TARGET_OBJECT_WCOOKIE:
+      if (readbuf)
+       {
+         /* When the StackGhost cookie is stored in core file, BFD
+            represents this with a fake section called ".wcookie".  */
+
+         struct bfd_section *section;
+         bfd_size_type size;
+         char *contents;
+
+         section = bfd_get_section_by_name (core_bfd, ".wcookie");
+         if (section == NULL)
+           return -1;
+
+         size = bfd_section_size (core_bfd, section);
+         if (offset >= size)
+           return 0;
+         size -= offset;
+         if (size > len)
+           size = len;
+         if (size > 0
+             && !bfd_get_section_contents (core_bfd, section, readbuf,
+                                           (file_ptr) offset, size))
+           {
+             warning ("Couldn't read StackGhost cookie in core file.");
+             return -1;
+           }
+
+         return size;
+       }
+      return -1;
+
     default:
       if (ops->beneath != NULL)
        return ops->beneath->to_xfer_partial (ops->beneath, object, annex,