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.
This commit is contained in:
Fred Fish 1996-01-04 21:09:59 +00:00
parent 5c5e420c9b
commit 7531f36e8e
8 changed files with 158 additions and 21 deletions

View 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

View 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>

View 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));

View 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

View 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)
}
int
kernel_u_size ()
{
return (sizeof (struct user));
}
#ifdef TARGET_HAS_HARDWARE_WATCHPOINTS
#if !defined (offsetof)

View 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;
}
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). */

View 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));
}

View 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));
}