summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>1996-01-04 21:09:59 +0000
committerFred Fish <fnf@specifix.com>1996-01-04 21:09:59 +0000
commit7531f36e8e7f241cdf8d03ceb99af99f1a784ec0 (patch)
tree910bf1c43111e1082245bba5a47babcf481729c5
parent5c5e420c9be3e395a456cec696af4aa27178c717 (diff)
downloadbinutils-gdb-7531f36e8e7f241cdf8d03ceb99af99f1a784ec0.tar.gz
Changes to hexdump "struct user" for child process on some configurations
that use ptrace(). This is not as useful as doing a full dump in a human readable format, but is better than nothing when you are trying to verify what is actually in the user struct. * infptrace.c (udot_info): New function. (PT_*): Define each individually if that one is not defined. Update copyright to 1996. * rs6000-nat.c (kernel_u_size): New function Include <sys/user.h> for "struct user" Update copyright to 1996. * alpha-nat.c (kernel_u_size): New function. Include <sys/user.h> for "struct user" Update copyright to 1996. * sparc-nat.c (kernel_u_size): New function. Include <sys/user.h> for "struct user" Update copyright to 1996. * i386b-nat.c (kernel_u_size): New function. Update copyright to 1996. * i386v-nat.c (kernel_u_size): New function. Update copyright to 1996. * config/i386/nm-fbsd.h (KERNEL_U_SIZE): Define. (kernel_u_size): Declare. Update copyright to 1996. * config/i386/nm-linux.h (KERNEL_U_SIZE): Define. (kernel_u_size): Declare. Update copyright to 1996. * config/sparc/nm-sun4os4.h (KERNEL_U_SIZE): Define. (kernel_u_size): Declare. Update copyright to 1996. * config/alpha/nm-osf2.h (KERNEL_U_SIZE): Define. (kernel_u_size): Declare. Update copyright to 1996. * config/rs6000/nm-rs6000.h (KERNEL_U_SIZE): Define. (kernel_u_size): Declare. Update copyright to 1996.
-rw-r--r--gdb/ChangeLog34
-rw-r--r--gdb/alpha-nat.c9
-rw-r--r--gdb/config/sparc/nm-sun4os4.h6
-rw-r--r--gdb/i386b-nat.c8
-rw-r--r--gdb/i386v-nat.c8
-rw-r--r--gdb/infptrace.c97
-rw-r--r--gdb/rs6000-nat.c9
-rw-r--r--gdb/sparc-nat.c8
8 files changed, 158 insertions, 21 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 97b776977a2..dc2ab8f1be4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,37 @@
+Thu Jan 4 10:44:17 1996 Fred Fish <fnf@cirdan.cygnus.com>
+
+ * infptrace.c (udot_info): New function.
+ (PT_*): Define each individually if that one is not defined.
+ Update copyright to 1996.
+ * rs6000-nat.c (kernel_u_size): New function
+ Include <sys/user.h> for "struct user"
+ Update copyright to 1996.
+ * alpha-nat.c (kernel_u_size): New function.
+ Include <sys/user.h> for "struct user"
+ Update copyright to 1996.
+ * sparc-nat.c (kernel_u_size): New function.
+ Include <sys/user.h> for "struct user"
+ Update copyright to 1996.
+ * i386b-nat.c (kernel_u_size): New function.
+ Update copyright to 1996.
+ * i386v-nat.c (kernel_u_size): New function.
+ Update copyright to 1996.
+ * config/i386/nm-fbsd.h (KERNEL_U_SIZE): Define.
+ (kernel_u_size): Declare.
+ Update copyright to 1996.
+ * config/i386/nm-linux.h (KERNEL_U_SIZE): Define.
+ (kernel_u_size): Declare.
+ Update copyright to 1996.
+ * config/sparc/nm-sun4os4.h (KERNEL_U_SIZE): Define.
+ (kernel_u_size): Declare.
+ Update copyright to 1996.
+ * config/alpha/nm-osf2.h (KERNEL_U_SIZE): Define.
+ (kernel_u_size): Declare.
+ Update copyright to 1996.
+ * config/rs6000/nm-rs6000.h (KERNEL_U_SIZE): Define.
+ (kernel_u_size): Declare.
+ Update copyright to 1996.
+
Thu Jan 4 11:00:01 1996 steve chamberlain <sac@slash.cygnus.com>
* mdebugread.c (mylookup_symbol): enum namespace becomes
diff --git a/gdb/alpha-nat.c b/gdb/alpha-nat.c
index 874a43e4c3e..6e05781f8d2 100644
--- a/gdb/alpha-nat.c
+++ b/gdb/alpha-nat.c
@@ -1,5 +1,5 @@
/* Low level Alpha interface, for GDB when running native.
- Copyright 1993, 1995 Free Software Foundation, Inc.
+ Copyright 1993, 1995, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "target.h"
#include <sys/ptrace.h>
#include <machine/reg.h>
+#include <sys/user.h>
/* Size of elements in jmpbuf */
@@ -143,6 +144,12 @@ register_addr (regno, blockend)
return REGISTER_PTRACE_ADDR (regno);
}
+int
+kernel_u_size ()
+{
+ return (sizeof (struct user));
+}
+
#ifdef USE_PROC_FS
#include <sys/procfs.h>
diff --git a/gdb/config/sparc/nm-sun4os4.h b/gdb/config/sparc/nm-sun4os4.h
index d34b733c8f7..1b7fabb60c4 100644
--- a/gdb/config/sparc/nm-sun4os4.h
+++ b/gdb/config/sparc/nm-sun4os4.h
@@ -1,5 +1,5 @@
/* Macro definitions for running gdb on a Sun 4 running sunos 4.
- Copyright (C) 1989, 1992, Free Software Foundation, Inc.
+ Copyright (C) 1989, 1992, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@@ -25,3 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define FETCH_INFERIOR_REGISTERS
+/* Return sizeof user struct to callers in less machine dependent routines */
+
+#define KERNEL_U_SIZE kernel_u_size()
+extern int kernel_u_size PARAMS ((void));
diff --git a/gdb/i386b-nat.c b/gdb/i386b-nat.c
index da82f07fff4..2e235aa9a50 100644
--- a/gdb/i386b-nat.c
+++ b/gdb/i386b-nat.c
@@ -1,5 +1,5 @@
/* Native-dependent code for BSD Unix running on i386's, for GDB.
- Copyright 1988, 1989, 1991, 1992, 1994 Free Software Foundation, Inc.
+ Copyright 1988, 1989, 1991, 1992, 1994, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@@ -222,4 +222,10 @@ i386_float_info ()
print_387_status (0, (struct env387 *)buf);
}
+int
+kernel_u_size ()
+{
+ return (sizeof (struct user));
+}
+
#endif
diff --git a/gdb/i386v-nat.c b/gdb/i386v-nat.c
index e2ca8326c86..38468a90277 100644
--- a/gdb/i386v-nat.c
+++ b/gdb/i386v-nat.c
@@ -1,5 +1,5 @@
/* Intel 386 native support for SYSV systems (pre-SVR4).
- Copyright (C) 1988, 1989, 1991, 1992, 1994 Free Software Foundation, Inc.
+ Copyright (C) 1988, 1989, 1991, 1992, 1994, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@@ -93,6 +93,12 @@ i386_register_u_addr (blockend, regnum)
}
+int
+kernel_u_size ()
+{
+ return (sizeof (struct user));
+}
+
#ifdef TARGET_HAS_HARDWARE_WATCHPOINTS
#if !defined (offsetof)
diff --git a/gdb/infptrace.c b/gdb/infptrace.c
index 0013e91b97c..9f6e7fb2d78 100644
--- a/gdb/infptrace.c
+++ b/gdb/infptrace.c
@@ -1,6 +1,5 @@
/* Low level Unix child interface to ptrace, for GDB when running under Unix.
- Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995
- Free Software Foundation, Inc.
+ Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@@ -16,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "defs.h"
#include "frame.h"
@@ -41,20 +40,33 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#endif
#endif /* NO_PTRACE_H */
-#if !defined (PT_KILL)
-#define PT_KILL 8
+#if !defined (PT_READ_I)
+#define PT_READ_I 1 /* Read word from text space */
+#endif
+#if !defined (PT_READ_D)
+#define PT_READ_D 2 /* Read word from data space */
+#endif
+#if !defined (PT_READ_U)
+#define PT_READ_U 3 /* Read word from kernel user struct */
+#endif
+#if !defined (PT_WRITE_I)
+#define PT_WRITE_I 4 /* Write word to text space */
+#endif
+#if !defined (PT_WRITE_D)
+#define PT_WRITE_D 5 /* Write word to data space */
+#endif
+#if !defined (PT_WRITE_U)
+#define PT_WRITE_U 6 /* Write word to kernel user struct */
+#endif
+#if !defined (PT_CONTINUE)
+#define PT_CONTINUE 7 /* Continue after signal */
#endif
-
#if !defined (PT_STEP)
-#define PT_STEP 9
-#define PT_CONTINUE 7
-#define PT_READ_U 3
-#define PT_WRITE_U 6
-#define PT_READ_I 1
-#define PT_READ_D 2
-#define PT_WRITE_I 4
-#define PT_WRITE_D 5
-#endif /* No PT_STEP. */
+#define PT_STEP 9 /* Set flag for single stepping */
+#endif
+#if !defined (PT_KILL)
+#define PT_KILL 8 /* Send child a SIGKILL signal */
+#endif
#ifndef PT_ATTACH
#define PT_ATTACH PTRACE_ATTACH
@@ -460,4 +472,59 @@ child_xfer_memory (memaddr, myaddr, len, write, target)
}
return len;
}
+
+
+static void
+udot_info ()
+{
+ int udot_off; /* Offset into user struct */
+ int udot_val; /* Value from user struct at udot_off */
+ char mess[128]; /* For messages */
+
+ if (!target_has_execution)
+ {
+ error ("The program is not being run.");
+ }
+
+#if !defined (KERNEL_U_SIZE)
+
+ /* Adding support for this command is easy. Typically you just add a
+ routine, called "kernel_u_size" that returns the size of the user
+ struct, to the appropriate *-nat.c file and then add to the native
+ config file "#define KERNEL_U_SIZE kernel_u_size()" */
+ error ("Don't know how large ``struct user'' is in this version of gdb.");
+
+#else
+
+ for (udot_off = 0; udot_off < KERNEL_U_SIZE; udot_off += sizeof (udot_val))
+ {
+ if ((udot_off % 24) == 0)
+ {
+ if (udot_off > 0)
+ {
+ printf_filtered ("\n");
+ }
+ printf_filtered ("%04x:", udot_off);
+ }
+ udot_val = ptrace (PT_READ_U, inferior_pid, (PTRACE_ARG3_TYPE) udot_off, 0);
+ if (errno != 0)
+ {
+ sprintf (mess, "\nreading user struct at offset 0x%x", udot_off);
+ perror_with_name (mess);
+ }
+ /* Avoid using nonportable (?) "*" in print specs */
+ printf_filtered (sizeof (int) == 4 ? " 0x%08x" : " 0x%16x", udot_val);
+ }
+ printf_filtered ("\n");
+
+#endif
+}
+
+void
+_initialize_infptrace ()
+{
+ add_info ("udot", udot_info,
+ "Print contents of kernel ``struct user'' for current child.");
+
+}
#endif /* !defined (CHILD_XFER_MEMORY). */
diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c
index 51ddf44e2dc..436fa04793c 100644
--- a/gdb/rs6000-nat.c
+++ b/gdb/rs6000-nat.c
@@ -1,5 +1,5 @@
/* IBM RS/6000 native-dependent code for GDB, the GNU debugger.
- Copyright 1986, 1987, 1989, 1991, 1992, 1994, 1995
+ Copyright 1986, 1987, 1989, 1991, 1992, 1994, 1995, 1996
Free Software Foundation, Inc.
This file is part of GDB.
@@ -787,3 +787,10 @@ xcoff_relocate_core (target)
breakpoint_re_set ();
do_cleanups (old);
}
+
+int
+kernel_u_size ()
+{
+ return (sizeof (struct user));
+}
+
diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c
index 981cb9ea3c1..7b072cf8f46 100644
--- a/gdb/sparc-nat.c
+++ b/gdb/sparc-nat.c
@@ -1,5 +1,5 @@
/* Functions specific to running gdb native on a SPARC running SunOS4.
- Copyright 1989, 1992, 1993, 1994 Free Software Foundation, Inc.
+ Copyright 1989, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@@ -25,6 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <sys/ptrace.h>
#include <sys/wait.h>
#include <machine/reg.h>
+#include <sys/user.h>
/* We don't store all registers immediately when requested, since they
get sent over in large chunks anyway. Instead, we accumulate most
@@ -295,3 +296,8 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, ignore)
}
}
+int
+kernel_u_size ()
+{
+ return (sizeof (struct user));
+}