components/gdb/patches/gdb.gdb.sparc-sol2-nat.c.patch
author April Chin <april.chin@oracle.com>
Fri, 15 Jul 2016 07:22:25 -0700
changeset 6420 65948e9e205b
parent 1511 4d3b0b480760
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
# Patch required for Solaris.
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
     2
# Will contribute upstream if possible.
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
     3
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
     4
--- gdb-7.11-orig/gdb/sparc-sol2-nat.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
     5
+++ gdb-7.11/gdb/sparc-sol2-nat.c	Fri Mar 25 14:22:51 2016
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
     6
@@ -24,13 +24,11 @@
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
 #include "gregset.h"
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     8
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     9
 #include "sparc-tdep.h"
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    10
+#include "sparc64-tdep.h"
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
 #include "target.h"
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    12
+
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    13
 #include "procfs.h"
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    14
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
-/* This file provids the (temporary) glue between the Solaris SPARC
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
-   target dependent code and the machine independent SVR4 /proc
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
-   support.  */
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    18
-
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
 /* Solaris 7 (Solaris 2.7, SunOS 5.7) and up support two process data
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
    models, the traditional 32-bit data model (ILP32) and the 64-bit
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    21
    data model (LP64).  The format of /proc depends on the data model
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    22
@@ -48,47 +46,51 @@
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
    Note that a 32-bit GDB won't be able to debug a 64-bit target
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
    process using /proc on Solaris.  */
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
-#if (defined (__arch64__) || \
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    27
-     (defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64)))
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    28
+static int from_corefile = -1;
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    29
 
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    30
-#include "sparc64-tdep.h"
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    31
-
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    32
-#define sparc_supply_gregset sparc64_supply_gregset
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    33
-#define sparc_supply_fpregset sparc64_supply_fpregset
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    34
-#define sparc_collect_gregset sparc64_collect_gregset
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    35
-#define sparc_collect_fpregset sparc64_collect_fpregset
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    36
-
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    37
-#define sparc_sol2_gregmap sparc64_sol2_gregmap
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    38
-#define sparc_sol2_fpregmap sparc64_sol2_fpregmap
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    39
-
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    40
-#else
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    41
-
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    42
-#define sparc_supply_gregset sparc32_supply_gregset
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    43
-#define sparc_supply_fpregset sparc32_supply_fpregset
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    44
-#define sparc_collect_gregset sparc32_collect_gregset
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    45
-#define sparc_collect_fpregset sparc32_collect_fpregset
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    46
-
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    47
-#define sparc_sol2_gregmap sparc32_sol2_gregmap
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    48
-#define sparc_sol2_fpregmap sparc32_sol2_fpregmap
1511
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
-#endif
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    51
-
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    52
 void
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    53
 supply_gregset (struct regcache *regcache, const prgregset_t *gregs)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    54
 {
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    55
-  sparc_supply_gregset (&sparc_sol2_gregmap, regcache, -1, gregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    56
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    57
+  int pointer_size = gdbarch_ptr_bit (gdbarch);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    58
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    59
+  if (from_corefile == -1)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    60
+    from_corefile = regcache_from_corefile (regcache);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    61
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    62
+  if ((pointer_size == 32) && (from_corefile == 1))
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    63
+    sparc32_supply_gregset (&sparc32_sol2_gregmap, regcache, -1, gregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    64
+  else
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    65
+    sparc64_supply_gregset (&sparc64_sol2_gregmap, regcache, -1, gregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    66
 }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    67
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    68
 void
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    69
 supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    70
 {
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    71
-  sparc_supply_fpregset (&sparc_sol2_fpregmap, regcache, -1, fpregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    72
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    73
+  int pointer_size = gdbarch_ptr_bit (gdbarch);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    74
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    75
+  if (from_corefile == -1)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    76
+    from_corefile = regcache_from_corefile (regcache);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    77
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    78
+  if ((pointer_size == 32) && (from_corefile == 1))
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    79
+    sparc32_supply_fpregset (&sparc32_sol2_fpregmap, regcache, -1, fpregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    80
+  else
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    81
+    sparc64_supply_fpregset (&sparc64_sol2_fpregmap, regcache, -1, fpregs);
1511
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
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    84
 void
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    85
 fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    86
 {
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    87
-  sparc_collect_gregset (&sparc_sol2_gregmap, regcache, regnum, gregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    88
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    89
+  int pointer_size = gdbarch_ptr_bit (gdbarch);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    90
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    91
+  if (from_corefile == -1)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    92
+    from_corefile = regcache_from_corefile (regcache);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    93
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    94
+  if ((pointer_size == 32) && (from_corefile == 1))
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    95
+    sparc32_collect_gregset (&sparc32_sol2_gregmap, regcache, regnum, gregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    96
+  else
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
    97
+    sparc64_collect_gregset (&sparc64_sol2_gregmap, regcache, regnum, gregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    98
 }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    99
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   100
 void
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   101
@@ -95,7 +97,16 @@
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   102
 fill_fpregset (const struct regcache *regcache,
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   103
 	       prfpregset_t *fpregs, int regnum)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   104
 {
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   105
-  sparc_collect_fpregset (&sparc_sol2_fpregmap, regcache, regnum, fpregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   106
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   107
+  int pointer_size = gdbarch_ptr_bit (gdbarch);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   108
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   109
+  if (from_corefile == -1)
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   110
+    from_corefile = regcache_from_corefile (regcache);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   111
+
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   112
+  if ((pointer_size == 32) && (from_corefile == 1))
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   113
+    sparc32_collect_fpregset (&sparc32_sol2_fpregmap, regcache, regnum, fpregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   114
+  else
6420
65948e9e205b 22928258 update gdb to 7.11
April Chin <april.chin@oracle.com>
parents: 1511
diff changeset
   115
+    sparc64_collect_fpregset (&sparc64_sol2_fpregmap, regcache, regnum, fpregs);
1511
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   116
 }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   117
 
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   118
 /* Provide a prototype to silence -Wmissing-prototypes.  */
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   119
@@ -112,3 +123,4 @@
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   120
 #endif
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   121
   add_target (t);
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   122
 }
4d3b0b480760 17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   123
+