diff options
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/Makefile.in | 3 | ||||
-rw-r--r-- | gdb/config/i386/i386sol2.mh | 2 | ||||
-rw-r--r-- | gdb/i386-sol2-nat.c | 78 |
4 files changed, 91 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cc5ca75..97801ca 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2004-10-30 Mark Kettenis <kettenis@gnu.org> + + * i386-sol2-nat.c: New file. + * Makefile.in (ALLDEPFILES): Add i386-sol2-nat.c and + i386-sol2-tdep.c. + (i386-sol2-nat.o): Update dependencies. + * config/i386/i386sol2.mh (NATDEPFILES): Remove i386v4.o, add + i386-sol2-nat.o. + 2004-10-30 Andrew Cagney <cagney@gnu.org> Total breakage identified by Joel Brobecker. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index c368da2..18296d5 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1379,6 +1379,7 @@ ALLDEPFILES = \ i386nbsd-nat.c i386nbsd-tdep.c i386obsd-nat.c i386obsd-tdep.c \ i387-tdep.c \ i386-linux-tdep.c i386-nat.c \ + i386-sol2-nat.c i386-sol2-tdep.c \ i386gnu-nat.c i386gnu-tdep.c \ ia64-linux-nat.c ia64-linux-tdep.c ia64-tdep.c \ infptrace.c inftarg.c irix4-nat.c irix5-nat.c \ @@ -2033,6 +2034,8 @@ i386obsd-tdep.o: i386obsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \ $(gdbcore_h) $(regcache_h) $(regset_h) $(symtab_h) $(objfiles_h) \ $(osabi_h) $(target_h) $(gdb_assert_h) $(gdb_string_h) \ $(i386_tdep_h) $(i387_tdep_h) $(solib_svr4_h) +i386-sol2-nat.o: i386-sol2-nat.c $(defs_h) $(regcache_h) $(gregset_h) \ + i386v4-nat.c i386-sol2-tdep.o: i386-sol2-tdep.c $(defs_h) $(value_h) $(osabi_h) \ $(gdb_string_h) $(i386_tdep_h) $(solib_svr4_h) i386-stub.o: i386-stub.c diff --git a/gdb/config/i386/i386sol2.mh b/gdb/config/i386/i386sol2.mh index c0477cf..f63a751 100644 --- a/gdb/config/i386/i386sol2.mh +++ b/gdb/config/i386/i386sol2.mh @@ -1,4 +1,4 @@ # Host: Solaris x86 -NATDEPFILES= fork-child.o i386v4-nat.o \ +NATDEPFILES= fork-child.o i386-sol2-nat.o \ procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o gcore.o NAT_FILE= nm-i386sol2.h diff --git a/gdb/i386-sol2-nat.c b/gdb/i386-sol2-nat.c new file mode 100644 index 0000000..60cd8e9 --- /dev/null +++ b/gdb/i386-sol2-nat.c @@ -0,0 +1,78 @@ +/* Native-dependent code for Solaris x86. + + Copyright 2004 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "regcache.h" + +#include <sys/procfs.h> +#include "gregset.h" + +/* This file provids the (temporary) glue between the Solaris x86 + target dependent code and the machine independent SVR4 /proc + support. */ + +/* Solaris 10 (Solaris 2.10, SunOS 5.10) and up support two process + data models, the traditional 32-bit data model (ILP32) and the + 64-bit data model (LP64). The format of /proc depends on the data + model of the observer (the controlling process, GDB in our case). + The Solaris header files conveniently define PR_MODEL_NATIVE to the + data model of the controlling process. If its value is + PR_MODEL_LP64, we know that GDB is being compiled as a 64-bit + program. + + Note that a 32-bit GDB won't be able to debug a 64-bit target + process using /proc on Solaris. */ + +#if defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64) + +#include "amd64-nat.h" +#include "amd64-tdep.h" + +void +supply_gregset (prgregset_t *gregs) +{ + amd64_supply_native_gregset (current_regcache, -1, gregs); +} + +void +supply_fpregset (prfpregset_t *fpregs) +{ + amd64_supply_fxsave (current_regcache, -1, fpregs); +} + +void +fill_gregset (prgregset_t *gregs, int regnum) +{ + amd64_collect_native_gregset (current_regcache, regnum, gregs); +} + +void +fill_fpregset (prfpregset_t *fpregs, int regnum) +{ + amd64_collect_fxsave (current_regcache, regnum, fpregs); +} + +#else + +/* 32-bit Solaris x86 is very similar to SVR4. */ +#include "i386v4-nat.c" + +#endif |