components/gdb/patches/gdb.bfd.elf.c.patch
author April Chin <april.chin@oracle.com>
Fri, 15 Jul 2016 07:22:25 -0700
changeset 6420 65948e9e205b
parent 1511 4d3b0b480760
child 6522 aa2a5fa92400
permissions -rw-r--r--
22928258 update gdb to 7.11 20745970 need to investigate if gdb tests can be added to Makefile test target
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
     1
--- gdb-7.11-orig/bfd/elf.c	Tue Feb  9 19:19:39 2016
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
     2
+++ gdb-7.11/bfd/elf.c	Tue Jun  7 14:34:18 2016
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
     3
@@ -8654,7 +8654,10 @@
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     4
 static bfd_boolean
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     5
 elfcore_grok_prfpreg (bfd *abfd, Elf_Internal_Note *note)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     6
 {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
+  asection *sect = bfd_get_section_by_name (abfd, ".reg2");
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     8
+  if (sect == NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     9
   return elfcore_make_note_pseudosection (abfd, ".reg2", note);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    10
+  return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
 }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    12
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    13
 /* Linux dumps the Intel SSE regs in a note named "LINUX" with a note
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    14
@@ -8919,7 +8922,6 @@
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
 }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
 #endif /* defined (HAVE_PSTATUS_T) */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    18
-#if defined (HAVE_LWPSTATUS_T)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
 static bfd_boolean
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
 elfcore_grok_lwpstatus (bfd *abfd, Elf_Internal_Note *note)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    21
 {
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    22
@@ -9001,7 +9003,6 @@
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
   return elfcore_maybe_make_sect (abfd, ".reg2", sect);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    25
 }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    26
-#endif /* defined (HAVE_LWPSTATUS_T) */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    27
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    28
 static bfd_boolean
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    29
 elfcore_grok_win32pstatus (bfd *abfd, Elf_Internal_Note *note)
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    30
@@ -9112,14 +9113,17 @@
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    31
       return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    32
 #endif
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    33
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    34
-#if defined (HAVE_PSTATUS_T)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    35
     case NT_PSTATUS:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    36
       return elfcore_grok_pstatus (abfd, note);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    37
-#endif
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    38
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    39
-#if defined (HAVE_LWPSTATUS_T)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    40
     case NT_LWPSTATUS:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    41
+      if (bed->elf_backend_grok_lwpstatus)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    42
+	if ((*bed->elf_backend_grok_lwpstatus) (abfd, note))
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    43
+	  return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    44
+#if defined (HAVE_LWPSTATUS_T)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    45
       return elfcore_grok_lwpstatus (abfd, note);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    46
+#else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    47
+      return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    48
 #endif
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    49
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    50
     case NT_FPREGSET:		/* FIXME: rename to NT_PRFPREG */
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    51
@@ -9483,7 +9487,298 @@
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    52
   return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    53
 }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    54
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    55
+#include <sys/types.h>
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    56
+#include <sys/elf.h>
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    57
+#include <sys/procfs.h>
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    58
+#include <sys/regset.h>
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    59
+#include <sys/auxv.h>
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    60
+
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    61
 static bfd_boolean
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    62
+elfcore_grok_solaris_note (bfd *abfd, Elf_Internal_Note *note)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    63
+{
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    64
+  asection *sect;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    65
+  size_t gregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    66
+  size_t fpregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    67
+  size_t prgregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    68
+  size_t prgregset_offset;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    69
+  char reg2_section_name[16];
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    70
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    71
+#ifdef DEBUG
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    72
+  static const char* note_type[] = { "NONE (0)", "NT_PRSTATUS", "NT_PRFPREG",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    73
+    "NT_PRPSINFO", "NT_PRXREG", "NT_PLATFORM", "NT_AUXV", "NT_GWINDOWS",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    74
+    "NT_ASRS", "NT_LDT", "NT_PSTATUS", "INVALID (11)", "INVALID (12)",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    75
+    "NT_PSINFO", "NT_PRCRED", "NT_UTSNAME", "NT_LWPSTATUS", "NT_LWPSINFO",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    76
+    "NT_PRPRIV", "NT_PRPRIVINFO", "NT_CONTENT", "NT_ZONENAME",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    77
+    "NT_PRCPUXREG", NULL };
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    78
+#endif
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    79
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    80
+  if (note == NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    81
+    return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    82
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    83
+  sect = bfd_get_section_by_name (abfd, reg2_section_name);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    84
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    85
+  switch ((int) note->type)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    86
+  {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    87
+    case SOLARIS_NT_PRSTATUS:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    88
+      if (note->descsz == 508) /* sizeof(prstatus_t) SPARC 32-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    89
+      {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    90
+        gregset_size = 152;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    91
+        fpregset_size = 144;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    92
+        prgregset_size = 152; /* sizeof(prgregset_t) SPARC 32-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    93
+        prgregset_offset = 356; /* offsetof(prstatus_t, pr_reg */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    94
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    95
+        elf_tdata (abfd)->core->signal =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    96
+          bfd_get_16 (abfd, note->descdata + 136);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    97
+        elf_tdata (abfd)->core->pid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    98
+          bfd_get_32 (abfd, note->descdata + 216);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    99
+        elf_tdata (abfd)->core->lwpid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   100
+          bfd_get_32 (abfd, note->descdata + 308);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   101
+        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   102
+            *(int*)(note->descdata + 308));
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   103
+      }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   104
+      else if (note->descsz == 904) /* sizeof(prstatus_t) SPARC 64-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   105
+      {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   106
+        gregset_size = 168;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   107
+        fpregset_size = 288;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   108
+        prgregset_size = 304; /* sizeof(prgregset_t) SPARC 64-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   109
+        prgregset_offset = 600; /* offsetof(prstatus_t, pr_reg */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   110
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   111
+        elf_tdata (abfd)->core->signal =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   112
+          bfd_get_16 (abfd, note->descdata + 264);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   113
+        elf_tdata (abfd)->core->pid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   114
+          bfd_get_32 (abfd, note->descdata + 360);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   115
+        elf_tdata (abfd)->core->lwpid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   116
+          bfd_get_32 (abfd, note->descdata + 520);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   117
+        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   118
+            *(int*)(note->descdata + 520));
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   119
+      }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   120
+      else if (note->descsz == 432) /* sizeof(prstatus_t) Intel 32-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   121
+      {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   122
+        gregset_size = 76;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   123
+        fpregset_size = 380;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   124
+        prgregset_size = 76;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   125
+        prgregset_offset = 356; /* offsetof(prstatus_t, pr_reg */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   126
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   127
+        elf_tdata (abfd)->core->signal =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   128
+          bfd_get_16 (abfd, note->descdata + 136);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   129
+        elf_tdata (abfd)->core->pid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   130
+          bfd_get_32 (abfd, note->descdata + 216);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   131
+        elf_tdata (abfd)->core->lwpid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   132
+          bfd_get_32 (abfd, note->descdata + 308);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   133
+        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   134
+            *(int*)(note->descdata + 308));
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   135
+      }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   136
+      else if (note->descsz == 824) /* sizeof(prstatus_t) Intel 64-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   137
+      {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   138
+        gregset_size = 224;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   139
+        fpregset_size = 528;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   140
+        prgregset_size = 224;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   141
+        prgregset_offset = 600; /* offsetof(prstatus_t, pr_reg */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   142
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   143
+        elf_tdata (abfd)->core->signal =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   144
+          bfd_get_16 (abfd, note->descdata + 264);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   145
+        elf_tdata (abfd)->core->pid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   146
+          bfd_get_32 (abfd, note->descdata + 360);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   147
+        elf_tdata (abfd)->core->lwpid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   148
+          bfd_get_32 (abfd, note->descdata + 520);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   149
+        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   150
+            *(int*)(note->descdata + 520));
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   151
+      }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   152
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   153
+      sect = bfd_get_section_by_name (abfd, ".reg");
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   154
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   155
+      if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   156
+        sect->size = prgregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   157
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   158
+      return _bfd_elfcore_make_pseudosection (abfd, ".reg",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   159
+          prgregset_size, note->descpos + prgregset_offset);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   160
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   161
+    case SOLARIS_NT_PRFPREG:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   162
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   163
+    case SOLARIS_NT_PRPSINFO:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   164
+      if (note->descsz == 260) /* sizeof(prpsinfo_t) */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   165
+      {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   166
+        elf_tdata (abfd)->core->program
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   167
+          = _bfd_elfcore_strndup (abfd, note->descdata + 84, 16);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   168
+        elf_tdata (abfd)->core->command
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   169
+          = _bfd_elfcore_strndup (abfd, note->descdata + 100, 80);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   170
+      }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   171
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   172
+    case SOLARIS_NT_PRXREG:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   173
+    case SOLARIS_NT_PLATFORM:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   174
+    case SOLARIS_NT_GWINDOWS:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   175
+    case SOLARIS_NT_ASRS:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   176
+    case SOLARIS_NT_LDT:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   177
+    case SOLARIS_NT_PSTATUS:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   178
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   179
+    case SOLARIS_NT_PSINFO:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   180
+      if (note->descsz == 336) /* sizeof(psinfo_t) SPARC */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   181
+      {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   182
+        elf_tdata (abfd)->core->program
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   183
+          = _bfd_elfcore_strndup (abfd, note->descdata + 88, 16);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   184
+        elf_tdata (abfd)->core->command
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   185
+          = _bfd_elfcore_strndup (abfd, note->descdata + 104, 80);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   186
+      }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   187
+      else if (note->descsz == 360) /* sizeof(psinfo_t) Intel */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   188
+      {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   189
+        elf_tdata (abfd)->core->program
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   190
+          = _bfd_elfcore_strndup (abfd, note->descdata + 88, 16);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   191
+        elf_tdata (abfd)->core->command
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   192
+          = _bfd_elfcore_strndup (abfd, note->descdata + 104, 80);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   193
+      }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   194
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   195
+    case SOLARIS_NT_PRCRED:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   196
+    case SOLARIS_NT_UTSNAME:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   197
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   198
+    case SOLARIS_NT_LWPSTATUS:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   199
+        elf_tdata (abfd)->core->lwpid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   200
+          bfd_get_32 (abfd, note->descdata + 4);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   201
+        elf_tdata (abfd)->core->signal =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   202
+          bfd_get_16 (abfd, note->descdata + 12);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   203
+        (void) snprintf (reg2_section_name, 16, "%s/%i", ".reg2",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   204
+            *(int*)(note->descdata + 4));
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   205
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   206
+        if (note->descsz == 896) /* sizeof(lwpstatus_t) SPARC 32-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   207
+        {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   208
+          gregset_size = 152;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   209
+          fpregset_size = 400;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   210
+          prgregset_size = 152; /* sizeof(prgregset_t) SPARC 32-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   211
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   212
+          sect = bfd_get_section_by_name (abfd, ".reg");
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   213
+          if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   214
+            sect->size = sizeof(prgregset_t);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   215
+          else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   216
+          {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   217
+            if ((_bfd_elfcore_make_pseudosection (abfd, ".reg",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   218
+                    prgregset_size,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   219
+                    note->descpos + 356)) != TRUE)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   220
+              return FALSE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   221
+          }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   222
+          sect = bfd_get_section_by_name (abfd, reg2_section_name);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   223
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   224
+          if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   225
+          {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   226
+            sect->size = fpregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   227
+            sect->filepos = note->descpos + 496;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   228
+            sect->alignment_power = 2;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   229
+            return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   230
+          }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   231
+          else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   232
+            return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   233
+                fpregset_size, note->descpos + 496);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   234
+        }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   235
+        else if (note->descsz == 1392) /* sizeof(lwpstatus_t) SPARC 64-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   236
+        {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   237
+          gregset_size = 304;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   238
+          fpregset_size = 544;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   239
+          prgregset_size = 304; /* sizeof(prgregset_t) SPARC 64-bit */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   240
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   241
+          sect = bfd_get_section_by_name (abfd, ".reg");
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   242
+          if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   243
+            sect->size = sizeof(prgregset_t);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   244
+          else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   245
+          {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   246
+            if ((_bfd_elfcore_make_pseudosection (abfd, ".reg",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   247
+                    prgregset_size,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   248
+                    note->descpos + 544)) != TRUE)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   249
+              return FALSE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   250
+          }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   251
+          sect = bfd_get_section_by_name (abfd, reg2_section_name);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   252
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   253
+          if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   254
+          {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   255
+            sect->size = fpregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   256
+            sect->filepos = note->descpos + 848;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   257
+            sect->alignment_power = 2;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   258
+            return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   259
+          }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   260
+          else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   261
+            return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   262
+                fpregset_size, note->descpos + 848);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   263
+        }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   264
+        else if (note->descsz == 800) /* sizeof(lwpstatus_t) Intel 32 */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   265
+        {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   266
+          gregset_size = 76;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   267
+          fpregset_size = 380;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   268
+          prgregset_size = 76;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   269
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   270
+          sect = bfd_get_section_by_name (abfd, ".reg");
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   271
+          if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   272
+            sect->size = prgregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   273
+          else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   274
+          {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   275
+            if ((_bfd_elfcore_make_pseudosection (abfd, ".reg",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   276
+                    prgregset_size,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   277
+                    note->descpos + 356)) != TRUE)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   278
+              return FALSE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   279
+          }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   280
+          sect = bfd_get_section_by_name (abfd, reg2_section_name);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   281
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   282
+          if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   283
+          {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   284
+            sect->size = fpregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   285
+            sect->filepos = note->descpos + 420;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   286
+            sect->alignment_power = 2;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   287
+            return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   288
+          }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   289
+          else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   290
+            return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   291
+                fpregset_size, note->descpos + 420);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   292
+        }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   293
+        else if (note->descsz == 1296) /* sizeof(lwpstatus_t) Intel 64 */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   294
+        {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   295
+          gregset_size = 224;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   296
+          fpregset_size = 528;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   297
+          prgregset_size = 224;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   298
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   299
+          sect = bfd_get_section_by_name (abfd, ".reg");
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   300
+          if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   301
+            sect->size = prgregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   302
+          else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   303
+          {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   304
+            if ((_bfd_elfcore_make_pseudosection (abfd, ".reg",
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   305
+                    prgregset_size,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   306
+                    note->descpos + 544)) != TRUE)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   307
+              return FALSE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   308
+          }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   309
+          sect = bfd_get_section_by_name (abfd, reg2_section_name);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   310
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   311
+          if (sect != NULL)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   312
+          {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   313
+            sect->size = fpregset_size;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   314
+            sect->filepos = note->descpos + 768;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   315
+            sect->alignment_power = 2;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   316
+            return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   317
+          }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   318
+          else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   319
+            return _bfd_elfcore_make_pseudosection (abfd, reg2_section_name,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   320
+                fpregset_size, note->descpos + 768);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   321
+        }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   322
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   323
+    case SOLARIS_NT_LWPSINFO:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   324
+        if (note->descsz == 128) /* sizeof(lwpsinfo_t) Intel and SPARC */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   325
+        {
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   326
+          elf_tdata (abfd)->core->lwpid =
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   327
+            bfd_get_32 (abfd, note->descdata + 4);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   328
+        }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   329
+        break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   330
+    case SOLARIS_NT_PRPRIV:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   331
+    case SOLARIS_NT_PRPRIVINFO:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   332
+    case SOLARIS_NT_CONTENT:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   333
+    case SOLARIS_NT_ZONENAME:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   334
+    case SOLARIS_NT_PRCPUXREG:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   335
+    case SOLARIS_NT_AUXV:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   336
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   337
+    default:
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   338
+      break;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   339
+  }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   340
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   341
+  /* add support for .auxv sections */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   342
+  sect = bfd_get_section_by_name (abfd, ".auxv");
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   343
+  return TRUE;
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   344
+}
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   345
+
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   346
+static bfd_boolean
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   347
 elfcore_grok_openbsd_note (bfd *abfd, Elf_Internal_Note *note)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   348
 {
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   349
   if (note->type == NT_OPENBSD_PROCINFO)
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   350
@@ -10282,7 +10577,12 @@
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   351
 	      GROKER_ELEMENT ("NetBSD-CORE", elfcore_grok_netbsd_note),
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   352
 	      GROKER_ELEMENT ( "OpenBSD", elfcore_grok_openbsd_note),
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   353
 	      GROKER_ELEMENT ("QNX", elfcore_grok_nto_note),
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   354
-	      GROKER_ELEMENT ("SPU/", elfcore_grok_spu_note)
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   355
+	      GROKER_ELEMENT ("SPU/", elfcore_grok_spu_note),
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   356
+#ifdef SOLARIS
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   357
+	      GROKER_ELEMENT ("CORE", elfcore_grok_solaris_note),
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   358
+#else
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   359
+	      GROKER_ELEMENT ("CORE", elfcore_grok_note)
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   360
+#endif
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   361
 	    };
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   362
 #undef GROKER_ELEMENT
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   363
 	    int i;