author | Mike Sullivan <Mike.Sullivan@Oracle.COM> |
Mon, 11 Mar 2013 10:38:09 -0700 | |
branch | s11-update |
changeset 2520 | ceec631e74d1 |
parent 243 | 34b34302cac9 |
permissions | -rw-r--r-- |
243
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
1 |
--- gdb-6.8.orig/gdb/auxv.c Wed Jan 16 08:27:37 2008 |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
2 |
+++ gdb-6.8-64/gdb/auxv.c Tue Aug 31 14:41:16 2010 |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
3 |
@@ -82,7 +82,15 @@ |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
4 |
target_auxv_parse (struct target_ops *ops, gdb_byte **readptr, |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
5 |
gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp) |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
6 |
{ |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
7 |
- const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr); |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
8 |
+ |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
9 |
+ /* |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
10 |
+ * Solaris pads out the auxv for 32 bit process to 64 bits when |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
11 |
+ * being read by a 64 bit process. Use the native pointer size |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
12 |
+ * in gdb itself to determine the auxv field size. |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
13 |
+ * |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
14 |
+ * const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr); |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
15 |
+ */ |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
16 |
+ const int sizeof_auxv_field = sizeof (void *); |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
17 |
gdb_byte *ptr = *readptr; |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
18 |
|
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
19 |
if (endptr == ptr) |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
20 |
@@ -91,7 +99,20 @@ |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
21 |
if (endptr - ptr < sizeof_auxv_field * 2) |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
22 |
return -1; |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
23 |
|
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
24 |
- *typep = extract_unsigned_integer (ptr, sizeof_auxv_field); |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
25 |
+ if (sizeof_auxv_field == 8 && gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG) { |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
26 |
+ /* |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
27 |
+ * On 64 bit Solaris SPARC, i.e. big endian, the type will be in |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
28 |
+ * the left 4 bytes for 32 bit processes and the right 4 bytes |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
29 |
+ * for 64 bit processes. The padding is 0. |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
30 |
+ */ |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
31 |
+ *typep = extract_unsigned_integer (ptr, 4); |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
32 |
+ if (*typep == 0) *typep = extract_unsigned_integer (ptr + 4, 4); |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
33 |
+ } else { |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
34 |
+ /* |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
35 |
+ * Nothing special needs to be done on 32 bit or little endian systems. |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
36 |
+ */ |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
37 |
+ *typep = extract_unsigned_integer (ptr, sizeof_auxv_field); |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
38 |
+ } |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
39 |
ptr += sizeof_auxv_field; |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
40 |
*valp = extract_unsigned_integer (ptr, sizeof_auxv_field); |
34b34302cac9
7039303 Move gdb 6.8 from SFW to Userland.
George Vasick <george.vasick@oracle.com>
parents:
diff
changeset
|
41 |
ptr += sizeof_auxv_field; |