This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Cleanup op some i386 System V stuff


Checked in.

Mark

Index: ChangeLog
from  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/nm-i386v.h: Add protection against
	multiple-inclusion.
	(i386_register_u_addr): Remove prototype.
	(register_u_addr): New prototype.
	(REGISTER_U_ADDR): Redefine accordingly.
	* i386v-nat.c: Improve several comments.
	(i386_register_u_addr): Change signature and rename to
	register_u_addr.  Use FP_REGNUM_P.  Rewrite slightly to get rid of
	ubase variable.

Index: i386v-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/i386v-nat.c,v
retrieving revision 1.10
diff -u -p -r1.10 i386v-nat.c
--- i386v-nat.c 15 Jun 2002 13:47:20 -0000 1.10
+++ i386v-nat.c 18 Aug 2002 21:53:11 -0000
@@ -1,4 +1,4 @@
-/* Intel 386 native support for SYSV systems (pre-SVR4).
+/* Intel 386 native support for System V systems (pre-SVR4).
 
    Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
    1999, 2000, 2002 Free Software Foundation, Inc.
@@ -62,8 +62,8 @@
 #include "target.h"
 
 
-/* this table must line up with REGISTER_NAMES in tm-i386v.h */
-/* symbols like 'EAX' come from <sys/reg.h> */
+/* Mapping between the general-purpose registers in `struct user'
+   format and GDB's register array layout.  */
 static int regmap[] =
 {
   EAX, ECX, EDX, EBX,
@@ -72,37 +72,34 @@ static int regmap[] =
   DS, ES, FS, GS,
 };
 
-/* blockend is the value of u.u_ar0, and points to the
- * place where GS is stored
- */
+/* Support for the user struct.  */
 
-int
-i386_register_u_addr (int blockend, int regnum)
+/* Return the address of register REGNUM.  BLOCKEND is the value of
+   u.u_ar0, and points to the place where GS is stored.  */
+
+CORE_ADDR
+register_u_addr (CORE_ADDR blockend, int regnum)
 {
   struct user u;
-  int fpstate;
-  int ubase;
+  CORE_ADDR fpstate;
 
-  ubase = blockend;
-  /* FIXME:  Should have better way to test floating point range */
-  if (regnum >= FP0_REGNUM && regnum <= (FP0_REGNUM + 7))
+  if (FP_REGNUM_P (regnum))
     {
-#ifdef KSTKSZ			/* SCO, and others? */
-      ubase += 4 * (SS + 1) - KSTKSZ;
-      fpstate = ubase + ((char *) &u.u_fps.u_fpstate - (char *) &u);
+#ifdef KSTKSZ			/* SCO, and others?  */
+      blockend += 4 * (SS + 1) - KSTKSZ;
+      fpstate = blockend + ((char *) &u.u_fps.u_fpstate - (char *) &u);
       return (fpstate + 0x1c + 10 * (regnum - FP0_REGNUM));
 #else
-      fpstate = ubase + ((char *) &u.i387.st_space - (char *) &u);
+      fpstate = blockend + ((char *) &u.i387.st_space - (char *) &u);
       return (fpstate + 10 * (regnum - FP0_REGNUM));
 #endif
     }
-  else
-    {
-      return (ubase + 4 * regmap[regnum]);
-    }
 
+  return (blockend + 4 * regmap[regnum]);
 }
-
+
+/* Return the size of the user struct.  */
+
 int
 kernel_u_size (void)
 {
Index: config/i386/nm-i386v.h
===================================================================
RCS file: /cvs/src/src/gdb/config/i386/nm-i386v.h,v
retrieving revision 1.4
diff -u -p -r1.4 nm-i386v.h
--- config/i386/nm-i386v.h 15 Aug 2002 23:21:34 -0000 1.4
+++ config/i386/nm-i386v.h 18 Aug 2002 21:53:11 -0000
@@ -1,5 +1,6 @@
-/* Native support for i386.
-   Copyright 1986, 1987, 1989, 1992, 1993, 1998, 2000
+/* Native support for i386 running System V (pre-SVR4).
+
+   Copyright 1986, 1987, 1989, 1992, 1993, 1998, 2000, 2002
    Free Software Foundation, Inc.
    Changes for 80386 by Pace Willisson (pace@prep.ai.mit.edu), July 1988.
 
@@ -20,7 +21,16 @@
    Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#define REGISTER_U_ADDR(addr, blockend, regno) \
-	(addr) = i386_register_u_addr ((blockend),(regno));
+#ifndef NM_I386V_H
+#define NM_I386V_H
+
+/* Support for the user struct.  */
+
+/* This is the amount to subtract from u.u_ar0
+   to get the offset in the core file of the register values.  */
+
+#define REGISTER_U_ADDR(addr, blockend, regnum) \
+  (addr) = register_u_addr ((blockend), (regnum))
+extern CORE_ADDR register_u_addr (CORE_ADDR blockend, int regnum);
 
-extern int i386_register_u_addr (int, int);
+#endif /* nm-i386v.h */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]