From 6a9756ed2961b048fc06bc0acefa326958039dc3 Mon Sep 17 00:00:00 2001
From: Mark Kettenis <kettenis@gnu.org>
Date: Mon, 15 Dec 2003 21:54:30 +0000
Subject: [PATCH] * i386-sol2-tdep.c (i386_sol2_gregset_reg_offset): New
 variable. (i386_sol2_init_abi): Initialize TDEP->gregset_reg_offset,
 TDEP->gregset_num_regs, TDEP->sizeof_gregset and TDEP->sizeof_fpregset. *
 config/i386/i386sol2.mh (XM_FILE): Set to xm-i386.h. (XM_CLIBS): Remove.
 (NATDEPFILES): Remove core-regset.o and corelow.o. * config/i386/i386sol2.mt
 (TDEPFILES): Add corelow.o.

---
 gdb/ChangeLog               | 11 +++++++++++
 gdb/config/i386/i386sol2.mh |  5 ++---
 gdb/config/i386/i386sol2.mt |  2 +-
 gdb/i386-sol2-tdep.c        | 29 +++++++++++++++++++++++++++++
 4 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e5bd30828db..a71495df5b6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,14 @@
+2003-12-15  Mark Kettenis  <kettenis@gnu.org>
+
+	* i386-sol2-tdep.c (i386_sol2_gregset_reg_offset): New variable.
+	(i386_sol2_init_abi): Initialize TDEP->gregset_reg_offset,
+	TDEP->gregset_num_regs, TDEP->sizeof_gregset and
+	TDEP->sizeof_fpregset.
+	* config/i386/i386sol2.mh (XM_FILE): Set to xm-i386.h.
+	(XM_CLIBS): Remove.
+	(NATDEPFILES): Remove core-regset.o and corelow.o.
+	* config/i386/i386sol2.mt (TDEPFILES): Add corelow.o.
+
 2003-12-14  Mark Kettenis  <kettenis@gnu.org>
 
 	* proc-api.c (procfs_note): Add format string to fprintf call.
diff --git a/gdb/config/i386/i386sol2.mh b/gdb/config/i386/i386sol2.mh
index 931cc132bbb..1245ca7a4bd 100644
--- a/gdb/config/i386/i386sol2.mh
+++ b/gdb/config/i386/i386sol2.mh
@@ -1,9 +1,8 @@
 # Host: Intel 386 running Solaris 2 (SVR4)
 
-XM_FILE= xm-i386v4.h
-XM_CLIBS= -lsocket -lnsl
+XM_FILE= xm-i386.h
 
 NAT_FILE= nm-i386sol2.h
-NATDEPFILES= core-regset.o fork-child.o i386v4-nat.o corelow.o \
+NATDEPFILES= fork-child.o i386v4-nat.o \
 	procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o gcore.o \
         solib.o solib-svr4.o solib-legacy.o
diff --git a/gdb/config/i386/i386sol2.mt b/gdb/config/i386/i386sol2.mt
index 93c2d783538..863f61500d7 100644
--- a/gdb/config/i386/i386sol2.mt
+++ b/gdb/config/i386/i386sol2.mt
@@ -1,3 +1,3 @@
 # Target: Intel 386 running Solaris 2 (SVR4)
-TDEPFILES= i386-tdep.o i387-tdep.o i386-sol2-tdep.o
+TDEPFILES= i386-tdep.o i387-tdep.o i386-sol2-tdep.o corelow.o
 TM_FILE= tm-i386sol2.h
diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c
index 78487af4658..2aa964e8acf 100644
--- a/gdb/i386-sol2-tdep.c
+++ b/gdb/i386-sol2-tdep.c
@@ -24,6 +24,27 @@
 
 #include "i386-tdep.h"
 
+/* From <ia32/sys/reg.h>.  */
+static int i386_sol2_gregset_reg_offset[] =
+{
+  11 * 4,			/* %eax */
+  10 * 4,			/* %ecx */
+  9 * 4,			/* %edx */
+  8 * 4,			/* %ebx */
+  17 * 4,			/* %esp */
+  6 * 4,			/* %ebp */
+  5 * 4,			/* %esi */
+  4 * 4,			/* %edi */
+  14 * 4,			/* %eip */
+  16 * 4,			/* %eflags */
+  15 * 4,			/* %cs */
+  18 * 4,			/* %ss */
+  3 * 4,			/* %ds */
+  2 * 4,			/* %es */
+  1 * 4,			/* %fs */
+  0 * 4				/* %gs */
+};
+
 static int
 i386_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name)
 {
@@ -42,6 +63,14 @@ i386_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
   /* Solaris is SVR4-based.  */
   i386_svr4_init_abi (info, gdbarch);
 
+  /* Solaris reserves space for its FPU emulator in `fpregset_t'.
+     There is also some space reserved for the registers of a Weitek
+     math coprocessor.  */
+  tdep->gregset_reg_offset = i386_sol2_gregset_reg_offset;
+  tdep->gregset_num_regs = ARRAY_SIZE (i386_sol2_gregset_reg_offset);
+  tdep->sizeof_gregset = 19 * 4;
+  tdep->sizeof_fpregset = 380;
+
   /* Signal trampolines are slightly different from SVR4.  */
   set_gdbarch_pc_in_sigtramp (gdbarch, i386_sol2_pc_in_sigtramp);
 }