diff options
author | Joseph Myers <joseph@codesourcery.com> | 2004-11-01 21:05:56 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2004-11-01 21:05:56 +0000 |
commit | 0bbc026efac8de9f64a414302cf4f1530260a703 (patch) | |
tree | d63833851727ed991c4e191ac03da885a3ebb398 /gdb/i386-sol2-nat.c | |
parent | 3d38a0a50c78042b15a3453d07fbd1c5486d2269 (diff) | |
download | gdb-0bbc026efac8de9f64a414302cf4f1530260a703.zip gdb-0bbc026efac8de9f64a414302cf4f1530260a703.tar.gz gdb-0bbc026efac8de9f64a414302cf4f1530260a703.tar.bz2 |
* Makefile.in (ALLDEPFILES): Add amd64-sol2-tdep.c.
(amd64-sol2-tdep.o): Add dependencies.
* amd64-sol2-tdep.c, config/i386/sol2-64.mh,
config/i386/sol2-64.mt: New files.
* i386-sol2-nat.c (amd64_sol2_gregset64_reg_offset,
amd64_sol2_gregset32_reg_offset, _initialize_amd64_sol2_nat): New.
(supply_gregset): Correct order of arguments to
amd64_supply_native_gregset.
(fill_gregset): Correct order of arguments to
amd64_collect_native_gregset.
* configure.host (i[34567]86-*-solaris2.1[0-9]*): Add new case.
* configure.tgt (i[34567]86-*-solaris2.1[0-9]*): Likewise.
* configure.in (*-*-solaris2.[[6789]]): Add *-*-solaris2.1[[0-9]]
for definition of NEW_PROC_API.
* configure: Regenerate.
Diffstat (limited to 'gdb/i386-sol2-nat.c')
-rw-r--r-- | gdb/i386-sol2-nat.c | 72 |
1 files changed, 70 insertions, 2 deletions
diff --git a/gdb/i386-sol2-nat.c b/gdb/i386-sol2-nat.c index cdfb631..d91d2ba 100644 --- a/gdb/i386-sol2-nat.c +++ b/gdb/i386-sol2-nat.c @@ -46,10 +46,62 @@ #include "amd64-nat.h" #include "amd64-tdep.h" +/* Mapping between the general-purpose registers in gregset_t format + and GDB's register cache layout. */ + +/* From <sys/regset.h>. */ +static int amd64_sol2_gregset64_reg_offset[] = { + 14 * 8, /* %rax */ + 11 * 8, /* %rbx */ + 13 * 8, /* %rcx */ + 12 * 8, /* %rdx */ + 9 * 8, /* %rsi */ + 8 * 8, /* %rdi */ + 10 * 8, /* %rbp */ + 20 * 8, /* %rsp */ + 7 * 8, /* %r8 ... */ + 6 * 8, + 5 * 8, + 4 * 8, + 3 * 8, + 2 * 8, + 1 * 8, + 0 * 8, /* ... %r15 */ + 17 * 8, /* %rip */ + 16 * 8, /* %eflags */ + 18 * 8, /* %cs */ + 21 * 8, /* %ss */ + 25 * 8, /* %ds */ + 24 * 8, /* %es */ + 22 * 8, /* %fs */ + 23 * 8 /* %gs */ +}; + +/* 32-bit registers are provided by Solaris in 64-bit format, so just + give a subset of the list above. */ +static int amd64_sol2_gregset32_reg_offset[] = { + 14 * 8, /* %eax */ + 13 * 8, /* %ecx */ + 12 * 8, /* %edx */ + 11 * 8, /* %ebx */ + 20 * 8, /* %esp */ + 10 * 8, /* %ebp */ + 9 * 8, /* %esi */ + 8 * 8, /* %edi */ + 17 * 8, /* %eip */ + 16 * 8, /* %eflags */ + 18 * 8, /* %cs */ + 21 * 8, /* %ss */ + 25 * 8, /* %ds */ + 24 * 8, /* %es */ + 22 * 8, /* %fs */ + 23 * 8 /* %gs */ +}; + void supply_gregset (prgregset_t *gregs) { - amd64_supply_native_gregset (current_regcache, -1, gregs); + amd64_supply_native_gregset (current_regcache, gregs, -1); } void @@ -61,7 +113,7 @@ supply_fpregset (prfpregset_t *fpregs) void fill_gregset (prgregset_t *gregs, int regnum) { - amd64_collect_native_gregset (current_regcache, regnum, gregs); + amd64_collect_native_gregset (current_regcache, gregs, regnum); } void @@ -75,3 +127,19 @@ fill_fpregset (prfpregset_t *fpregs, int regnum) /* For 32-bit Solaris x86, we use the Unix SVR4 code in i386v4-nat.c. */ #endif + +/* Provide a prototype to silence -Wmissing-prototypes. */ +extern void _initialize_amd64_sol2_nat (void); + +void +_initialize_amd64_sol2_nat (void) +{ +#if defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64) + amd64_native_gregset32_reg_offset = amd64_sol2_gregset32_reg_offset; + amd64_native_gregset32_num_regs = + ARRAY_SIZE (amd64_sol2_gregset32_reg_offset); + amd64_native_gregset64_reg_offset = amd64_sol2_gregset64_reg_offset; + amd64_native_gregset64_num_regs = + ARRAY_SIZE (amd64_sol2_gregset64_reg_offset); +#endif +} |