diff options
author | Daniel Jacobowitz <drow@false.org> | 2002-02-14 06:21:24 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2002-02-14 06:21:24 +0000 |
commit | 0a30fbc4cfd38f7966ea783b292031986645c6ce (patch) | |
tree | d4bc0d4810c3e91c3f12e9db9af9e81c099b38ea /gdb/gdbserver/linux-i386-low.c | |
parent | 4cc841d043e50739f0f98baaec7ed806984805be (diff) | |
download | gdb-0a30fbc4cfd38f7966ea783b292031986645c6ce.zip gdb-0a30fbc4cfd38f7966ea783b292031986645c6ce.tar.gz gdb-0a30fbc4cfd38f7966ea783b292031986645c6ce.tar.bz2 |
2002-02-14 Daniel Jacobowitz <drow@mvista.com>
* gdbserver/Makefile.in: Add regformats directory to INCLUDE_CFLAGS,
and remove unused $(INCLUDE_DIR).
Add regcache.c to OBS.
Add generated register protocol files to clean target.
Update dependencies for new objects, obsolete old target code.
* gdbserver/linux-low.c: Remove all platform-specific code to
new files. Remove various dead code. Update to use regcache
functionality.
* gdbserver/remote-utils.c (fromhex): Add return statement
to quiet warning.
(putpkt): Dynamically allocate buf2 because PBUFSIZ is no longer
constant.
(input_interrupt): Add integer parameter to match prototype
of a signal handler.
(outreg): Use register_data ().
(prepare_resume_reply): Use gdbserver_expedite_regs.
* gdbserver/server.c (main): Dynamically allocate own_buf because
PBUFSIZ is no longer constant. Use registers_to_string () and
registers_from_string ().
* gdbserver/server.h: No longer include "defs.h". Add prototypes
for error (), fatal (), and warning (). Update definition of
PBUFSIZ to use regcache functionality. Add include guard.
* gdbserver/utils.c (fatal): Add missing ``const''.
(warning): New function.
* regformats/regdat.sh: Include "regcache.h" in generated files.
Provide init_registers () function.
* regformats/regdef.h: Add prototype for set_register_cache ().
Add include guard.
* gdbserver/linux-arm-low.c: New file.
* gdbserver/linux-i386-low.c: New file.
* gdbserver/linux-ia64-low.c: New file.
* gdbserver/linux-m68k-low.c: New file.
* gdbserver/linux-mips-low.c: New file.
* gdbserver/linux-ppc-low.c: New file.
* gdbserver/linux-sh-low.c: New file.
* gdbserver/regcache.c: New file.
* gdbserver/regcache.h: New file.
* gdbserver/low-linux.c: Removed obsolete file.
Diffstat (limited to 'gdb/gdbserver/linux-i386-low.c')
-rw-r--r-- | gdb/gdbserver/linux-i386-low.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gdb/gdbserver/linux-i386-low.c b/gdb/gdbserver/linux-i386-low.c new file mode 100644 index 0000000..cb7b55f --- /dev/null +++ b/gdb/gdbserver/linux-i386-low.c @@ -0,0 +1,59 @@ +/* GNU/Linux/i386 specific low level interface, for the remote server for GDB. + Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002 + 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 "server.h" + +#ifdef HAVE_SYS_REG_H +#include <sys/reg.h> +#endif + +/* This module only supports access to the general purpose registers. + Adjust the relevant constants accordingly. + + FIXME: kettenis/2001-03-28: We should really use PTRACE_GETREGS to + get at the registers. Better yet, we should try to share code with + i386-linux-nat.c. */ + +int num_regs = 16; + +/* This stuff comes from i386-linux-nat.c. */ + +/* Mapping between the general-purpose registers in `struct user' + format and GDB's register array layout. */ +int regmap[] = +{ + EAX * 4, ECX * 4, EDX * 4, EBX * 4, + UESP * 4, EBP * 4, ESI * 4, EDI * 4, + EIP * 4, EFL * 4, CS * 4, SS * 4, + DS * 4, ES * 4, FS * 4, GS * 4 +}; + +int +cannot_store_register (int regno) +{ + return (regno >= num_regs); +} + +int +cannot_fetch_register (int regno) +{ + return (regno >= num_regs); +} |