author | Tomas Klacko <tomas.klacko@oracle.com> |
Tue, 07 Jan 2014 05:15:45 -0800 | |
changeset 1622 | 72f10d7bcda6 |
parent 1511 | 4d3b0b480760 |
child 6420 | 65948e9e205b |
permissions | -rw-r--r-- |
1511
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
1 |
--- gdb-7.6/gdb/procfs.c 2012-12-31 22:32:49.000000000 -0800 |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
2 |
+++ gdb-7.6/gdb/procfs.c 2013-08-15 00:05:56.550245791 -0700 |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
3 |
@@ -159,20 +159,33 @@ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
4 |
gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp) |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
5 |
{ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
6 |
enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ()); |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
7 |
+ const int sizeof_auxv_field = sizeof (void *); |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
8 |
gdb_byte *ptr = *readptr; |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
9 |
|
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
10 |
if (endptr == ptr) |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
11 |
return 0; |
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 |
- if (endptr - ptr < 8 * 2) |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
14 |
+ if (endptr - ptr < sizeof_auxv_field * 2) |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
15 |
return -1; |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
16 |
|
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
17 |
- *typep = extract_unsigned_integer (ptr, 4, byte_order); |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
18 |
- ptr += 8; |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
19 |
+ /* |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
20 |
+ * On 64 bit Solaris SPARC, i.e. big endian, the type will be in |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
21 |
+ * the left 4 bytes for 32 bit processes and the right 4 bytes |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
22 |
+ * for 64 bit processes. The padding is 0. |
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 |
+ if ((sizeof_auxv_field == 8) && (byte_order == BFD_ENDIAN_BIG)) { |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
25 |
+ if (*typep == 0) |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
26 |
+ *typep = extract_unsigned_integer (ptr + 4, 4, byte_order); |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
27 |
+ } else |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
28 |
+ *typep = extract_unsigned_integer (ptr, sizeof_auxv_field , byte_order); |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
29 |
+ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
30 |
+ ptr += sizeof_auxv_field; |
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 |
/* The size of data is always 64-bit. If the application is 32-bit, |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
33 |
it will be zero extended, as expected. */ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
34 |
- *valp = extract_unsigned_integer (ptr, 8, byte_order); |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
35 |
- ptr += 8; |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
36 |
+ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
37 |
+ *valp = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order); |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
38 |
+ ptr += sizeof_auxv_field; |
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 |
*readptr = ptr; |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
41 |
return 1; |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
42 |
@@ -347,7 +360,7 @@ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
43 |
# define AS_PROC_NAME_FMT "/proc/%d/as" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
44 |
# define MAP_PROC_NAME_FMT "/proc/%d/map" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
45 |
# define STATUS_PROC_NAME_FMT "/proc/%d/status" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
46 |
-# define MAX_PROC_NAME_SIZE sizeof("/proc/99999/lwp/8096/lstatus") |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
47 |
+# define MAX_PROC_NAME_SIZE sizeof("/proc/012345679/lwp/0123456789/lstatus") |
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 |
/* the name of the proc status struct depends on the implementation */ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
50 |
typedef pstatus_t gdb_prstatus_t; |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
51 |
@@ -355,11 +368,11 @@ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
52 |
#else /* ! NEW_PROC_API */ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
53 |
/* format strings for /proc paths */ |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
54 |
# ifndef CTL_PROC_NAME_FMT |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
55 |
-# define MAIN_PROC_NAME_FMT "/proc/%05d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
56 |
-# define CTL_PROC_NAME_FMT "/proc/%05d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
57 |
-# define AS_PROC_NAME_FMT "/proc/%05d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
58 |
-# define MAP_PROC_NAME_FMT "/proc/%05d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
59 |
-# define STATUS_PROC_NAME_FMT "/proc/%05d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
60 |
+# define MAIN_PROC_NAME_FMT "/proc/%06d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
61 |
+# define CTL_PROC_NAME_FMT "/proc/%06d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
62 |
+# define AS_PROC_NAME_FMT "/proc/%06d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
63 |
+# define MAP_PROC_NAME_FMT "/proc/%06d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
64 |
+# define STATUS_PROC_NAME_FMT "/proc/%06d" |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
65 |
# define MAX_PROC_NAME_SIZE sizeof("/proc/ttttppppp") |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
66 |
# endif |
4d3b0b480760
17086418 upgrade gdb to 7.6
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
67 |
/* The name of the proc status struct depends on the implementation. */ |