Changes to hexdump "struct user" for child process on some configurations
authorFred Fish <fnf@specifix.com>
Thu, 4 Jan 1996 21:09:59 +0000 (21:09 +0000)
committerFred Fish <fnf@specifix.com>
Thu, 4 Jan 1996 21:09:59 +0000 (21:09 +0000)
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.

gdb/ChangeLog
gdb/alpha-nat.c
gdb/config/sparc/nm-sun4os4.h
gdb/i386b-nat.c
gdb/i386v-nat.c
gdb/infptrace.c
gdb/rs6000-nat.c
gdb/sparc-nat.c

index 97b776977a2e1fc4ac8319cb6bcb8a996e576b82..dc2ab8f1be49af6dce6e9a89cfc431250c158e19 100644 (file)
@@ -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
index 874a43e4c3e79afbd2a4a77dbb9b04cebdbb12c9..6e05781f8d21226339ac59a36a9eb7dd8c2b13a4 100644 (file)
@@ -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>
 
index d34b733c8f7ec22d2f4fad88b364c5fac89f71c7..1b7fabb60c4015051cc4926cee737c57913dc951 100644 (file)
@@ -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));
index da82f07fff45a2976a253e483ef93ef585805443..2e235aa9a50fcf8e7dbf6eb9273012f5c7209673 100644 (file)
@@ -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
index e2ca8326c86b0ea2aa14b5e25408fcc3e65d9ef5..38468a90277e8c73dd0451b9bc52f5e589b3b859 100644 (file)
@@ -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)
   
 }
 \f
+int
+kernel_u_size ()
+{
+  return (sizeof (struct user));
+}
+\f
 #ifdef TARGET_HAS_HARDWARE_WATCHPOINTS
 
 #if !defined (offsetof)
index 0013e91b97ce0292ed490cf3aaeb0c32523d2ec7..9f6e7fb2d78b99bcee56c7e39234d9ca42a8d62c 100644 (file)
@@ -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;
 }
+
+\f
+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
+}
+\f
+void
+_initialize_infptrace ()
+{
+  add_info ("udot", udot_info,
+           "Print contents of kernel ``struct user'' for current child.");
+
+}
 #endif /* !defined (CHILD_XFER_MEMORY).  */
index 51ddf44e2dc3dc8965df67badd22766e5b25e293..436fa04793c7183e0c91b9abba1fe753f0caad0e 100644 (file)
@@ -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));
+}
+
index 981cb9ea3c1652f15350b0addae8c3c1a8c603ce..7b072cf8f46f0569edcd808440d8619f182c6bcf 100644 (file)
@@ -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));
+}