aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/linux-low.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2005-07-13 15:21:02 +0000
committerDaniel Jacobowitz <drow@false.org>2005-07-13 15:21:02 +0000
commite9d25b9800c6f642ae0fe10a0fa57d079d84ff6e (patch)
treeeff685623f742c5dda706a2ca61b4ebb08a44130 /gdb/gdbserver/linux-low.c
parenta06660f79997c37a351afbce6ce75bd0c3de1276 (diff)
downloadgdb-e9d25b9800c6f642ae0fe10a0fa57d079d84ff6e.zip
gdb-e9d25b9800c6f642ae0fe10a0fa57d079d84ff6e.tar.gz
gdb-e9d25b9800c6f642ae0fe10a0fa57d079d84ff6e.tar.bz2
* configure.ac: Define HAVE_LINUX_REGSETS even if PTRACE_GETREGS
is not available. Define HAVE_PTRACE_GETREGS if it is. * config.in, configure: Regenerated. * configure.srv: Set srv_linux_regsets for PowerPC and PowerPC64. * linux-i386-low.c, linux-m68k-low.c: Update to use HAVE_PTRACE_GETREGS. * linux-low.c (regsets_fetch_inferior_registers) (regsets_store_inferior_registers): Only return 0 if we processed GENERAL_REGS. * linux-ppc-low.c (ppc_fill_gregset, target_regsets): New. * linux-ppc64-low.c (ppc_fill_gregset, target_regsets): New.
Diffstat (limited to 'gdb/gdbserver/linux-low.c')
-rw-r--r--gdb/gdbserver/linux-low.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index aefec5e..70fab4f 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -1213,6 +1213,7 @@ static int
regsets_fetch_inferior_registers ()
{
struct regset_info *regset;
+ int saw_general_regs = 0;
regset = target_regsets;
@@ -1254,16 +1255,22 @@ regsets_fetch_inferior_registers ()
perror (s);
}
}
+ else if (regset->type == GENERAL_REGS)
+ saw_general_regs = 1;
regset->store_function (buf);
regset ++;
}
- return 0;
+ if (saw_general_regs)
+ return 0;
+ else
+ return 1;
}
static int
regsets_store_inferior_registers ()
{
struct regset_info *regset;
+ int saw_general_regs = 0;
regset = target_regsets;
@@ -1303,9 +1310,15 @@ regsets_store_inferior_registers ()
perror ("Warning: ptrace(regsets_store_inferior_registers)");
}
}
+ else if (regset->type == GENERAL_REGS)
+ saw_general_regs = 1;
regset ++;
free (buf);
}
+ if (saw_general_regs)
+ return 0;
+ else
+ return 1;
return 0;
}