aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog48
-rw-r--r--gdb/Makefile.in5
-rw-r--r--gdb/alpha-linux-nat.c12
-rw-r--r--gdb/config/arm/linux.mh2
-rw-r--r--gdb/config/arm/nm-linux.h29
-rw-r--r--gdb/config/i386/nm-linux.h3
-rw-r--r--gdb/config/i386/nm-linux64.h4
-rw-r--r--gdb/config/ia64/linux.mh2
-rw-r--r--gdb/config/ia64/nm-linux.h29
-rw-r--r--gdb/config/m32r/linux.mh2
-rw-r--r--gdb/config/m32r/nm-linux.h29
-rw-r--r--gdb/config/m68k/linux.mh2
-rw-r--r--gdb/config/m68k/nm-linux.h29
-rw-r--r--gdb/config/pa/linux.mh2
-rw-r--r--gdb/config/pa/nm-linux.h30
-rw-r--r--gdb/config/powerpc/linux.mh2
-rw-r--r--gdb/config/powerpc/nm-linux.h28
-rw-r--r--gdb/config/powerpc/ppc64-linux.mh2
-rw-r--r--gdb/config/s390/nm-linux.h36
-rw-r--r--gdb/config/s390/s390.mh2
-rw-r--r--gdb/config/sparc/linux.mh2
-rw-r--r--gdb/config/sparc/linux64.mh2
-rw-r--r--gdb/config/sparc/nm-linux.h31
-rw-r--r--gdb/linux-nat.c47
-rw-r--r--gdb/linux-nat.h5
-rw-r--r--gdb/mips-linux-nat.c15
26 files changed, 113 insertions, 287 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6299fed..50add55 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,53 @@
2007-04-25 Ulrich Weigand <uweigand@de.ibm.com>
+ * linux-nat.c (linux_register_u_offset): Remove.
+ (linux_target_install_ops): New function.
+ (linux_target): Use it.
+ (linux_trad_target): New function.
+ * linux-nat.h (linux_trad_target): Declare.
+
+ * alpha-linux-nat.c: Include "gdbcore.h".
+ (alpha_linux_register_u_offset): New function.
+ (_initialize_alpha_linux_nat): Use linux_trad_target.
+
+ * mips-linux-nat.c: Include "gdbcore.h".
+ (mips_linux_register_u_offset): New function.
+ (_initialize_mips_linux_nat): Use linux_trad_target.
+
+ * config/arm/linux.mh (NAT_FILE): Set to config/nm-linux.h.
+ * config/arm/nm-linux.h: Delete file.
+
+ * config/i386/nm-linux64.h (FETCH_INFERIOR_REGISTERS): Remove.
+ * config/i386/nm-linux.h (FETCH_INFERIOR_REGISTERS): Remove.
+
+ * config/ia64/linux.mh (NAT_FILE): Set to config/nm-linux.h.
+ * config/ia64/nm-linux.h: Delete file.
+
+ * config/m32r/linux.mh (NAT_FILE): Set to config/nm-linux.h.
+ * config/m32r/nm-linux.h: Delete file.
+
+ * config/m68k/linux.mh (NAT_FILE): Set to config/nm-linux.h.
+ * config/m68k/nm-linux.h: Delete file.
+
+ * config/pa/linux.mh (NAT_FILE): Set to config/nm-linux.h.
+ * config/pa/nm-linux.h: Delete file.
+
+ * config/powerpc/linux.mh (NAT_FILE): Set to config/nm-linux.h.
+ * config/powerpc/ppc64-linux.mh (NAT_FILE): Likewise.
+ * config/powerpc/nm-linux.h: Delete file.
+
+ * config/s390/s390.mh (NAT_FILE): Set to config/nm-linux.h.
+ * config/s390/nm-linux.h: Delete file.
+
+ * config/sparc/linux.mh (NAT_FILE): Set to config/nm-linux.h.
+ * config/sparc/linux64.mh (NAT_FILE): Likewise.
+ * config/sparc/nm-linux.h: Delete file.
+
+ * Makefile.in (alpha-linux-nat.o): Update dependencies.
+ (mips-linux-nat.o): Likewise.
+
+2007-04-25 Ulrich Weigand <uweigand@de.ibm.com>
+
* core-aout.c: Delete file.
* Makefile.in (ALLDEPFILES): Remove core-aout.c.
(core-aout.o): Delete rule.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 775c255..7885934 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1716,7 +1716,8 @@ alphabsd-tdep.o: alphabsd-tdep.c $(defs_h) $(alpha_tdep_h) \
$(alphabsd_tdep_h)
alphafbsd-tdep.o: alphafbsd-tdep.c $(defs_h) $(value_h) $(osabi_h) \
$(alpha_tdep_h) $(solib_svr4_h)
-alpha-linux-nat.o: alpha-linux-nat.c $(defs_h) $(target_h) $(linux_nat_h)
+alpha-linux-nat.o: alpha-linux-nat.c $(defs_h) $(target_h) $(linux_nat_h) \
+ $(gdbcore_h)
alpha-linux-tdep.o: alpha-linux-tdep.c $(defs_h) $(frame_h) $(gdb_assert_h) \
$(osabi_h) $(solib_svr4_h) $(symtab_h) $(alpha_tdep_h)
alpha-mdebug-tdep.o: alpha-mdebug-tdep.c $(defs_h) $(frame_h) \
@@ -2340,7 +2341,7 @@ mips64obsd-tdep.o: mips64obsd-tdep.c $(defs_h) $(osabi_h) $(regcache_h) \
mips-irix-tdep.o: mips-irix-tdep.c $(defs_h) $(osabi_h) $(elf_bfd_h)
mips-linux-nat.o: mips-linux-nat.c $(defs_h) $(mips_tdep_h) $(target_h) \
$(linux_nat_h) $(gdb_proc_service_h) $(mips_linux_tdep_h) \
- $(inferior_h)
+ $(gdbcore_h) $(inferior_h)
mips-linux-tdep.o: mips-linux-tdep.c $(defs_h) $(gdbcore_h) $(target_h) \
$(solib_svr4_h) $(osabi_h) $(mips_tdep_h) $(gdb_string_h) \
$(gdb_assert_h) $(frame_h) $(regcache_h) $(trad_frame_h) \
diff --git a/gdb/alpha-linux-nat.c b/gdb/alpha-linux-nat.c
index d93494d..0186a94 100644
--- a/gdb/alpha-linux-nat.c
+++ b/gdb/alpha-linux-nat.c
@@ -21,11 +21,21 @@
#include "defs.h"
#include "target.h"
#include "linux-nat.h"
+#include "gdbcore.h"
+
+static CORE_ADDR
+alpha_linux_register_u_offset (int regno)
+{
+ /* FIXME drow/2005-09-04: The hardcoded use of register_addr should go
+ away. This requires disentangling the various definitions of it
+ (particularly alpha-nat.c's). */
+ return register_addr (regno, 0);
+}
void _initialialize_alpha_linux_nat (void);
void
_initialize_alpha_linux_nat (void)
{
- linux_nat_add_target (linux_target ());
+ linux_nat_add_target (linux_trad_target (alpha_linux_register_u_offset));
}
diff --git a/gdb/config/arm/linux.mh b/gdb/config/arm/linux.mh
index 0085826..adca462 100644
--- a/gdb/config/arm/linux.mh
+++ b/gdb/config/arm/linux.mh
@@ -1,6 +1,6 @@
# Host: ARM based machine running GNU/Linux
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o arm-linux-nat.o gcore.o \
proc-service.o linux-thread-db.o linux-nat.o linux-fork.o
diff --git a/gdb/config/arm/nm-linux.h b/gdb/config/arm/nm-linux.h
deleted file mode 100644
index 97371d2..0000000
--- a/gdb/config/arm/nm-linux.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Definitions to make GDB run on an ARM based machine under GNU/Linux.
- Copyright 1999, 2000, 2001, 2007 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. */
-
-#ifndef NM_ARMLINUX_H
-#define NM_ARMLINUX_H
-
-#include "config/nm-linux.h"
-
-/* Override copies of {fetch,store}_inferior_registers in infptrace.c. */
-#define FETCH_INFERIOR_REGISTERS
-
-#endif /* NM_ARMLINUX_H */
diff --git a/gdb/config/i386/nm-linux.h b/gdb/config/i386/nm-linux.h
index 8ee5696..7bc069c 100644
--- a/gdb/config/i386/nm-linux.h
+++ b/gdb/config/i386/nm-linux.h
@@ -48,9 +48,6 @@ extern unsigned long i386_linux_dr_get_status (void);
i386_linux_dr_get_status ()
-/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
-#define FETCH_INFERIOR_REGISTERS
-
#ifdef HAVE_PTRACE_GETFPXREGS
/* Include register set support for the SSE registers. */
#define FILL_FPXREGSET
diff --git a/gdb/config/i386/nm-linux64.h b/gdb/config/i386/nm-linux64.h
index 92b220e..b620dcf 100644
--- a/gdb/config/i386/nm-linux64.h
+++ b/gdb/config/i386/nm-linux64.h
@@ -50,9 +50,5 @@ extern void amd64_linux_dr_reset_addr (int regnum);
extern unsigned long amd64_linux_dr_get_status (void);
#define I386_DR_LOW_GET_STATUS() \
amd64_linux_dr_get_status ()
-
-
-/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
-#define FETCH_INFERIOR_REGISTERS
#endif /* nm-linux64.h */
diff --git a/gdb/config/ia64/linux.mh b/gdb/config/ia64/linux.mh
index 44bf8d3..e620d04 100644
--- a/gdb/config/ia64/linux.mh
+++ b/gdb/config/ia64/linux.mh
@@ -1,6 +1,6 @@
# Host: Intel IA-64 running GNU/Linux
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o corelow.o gcore.o \
core-regset.o ia64-linux-nat.o \
proc-service.o linux-thread-db.o linux-nat.o linux-fork.o
diff --git a/gdb/config/ia64/nm-linux.h b/gdb/config/ia64/nm-linux.h
deleted file mode 100644
index 7f60064..0000000
--- a/gdb/config/ia64/nm-linux.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Native support for GNU/Linux, for GDB, the GNU debugger.
-
- Copyright 1999, 2000, 2001, 2004, 2005, 2007 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. */
-
-#ifndef NM_LINUX_H
-#define NM_LINUX_H
-
-#include "config/nm-linux.h"
-
-#define FETCH_INFERIOR_REGISTERS
-
-#endif /* #ifndef NM_LINUX_H */
diff --git a/gdb/config/m32r/linux.mh b/gdb/config/m32r/linux.mh
index 0f94bd8..e781b4d 100644
--- a/gdb/config/m32r/linux.mh
+++ b/gdb/config/m32r/linux.mh
@@ -1,6 +1,6 @@
# Host: M32R based machine running GNU/Linux
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o corelow.o \
m32r-linux-nat.o gcore.o proc-service.o linux-thread-db.o \
linux-nat.o linux-fork.o
diff --git a/gdb/config/m32r/nm-linux.h b/gdb/config/m32r/nm-linux.h
deleted file mode 100644
index 27b596e..0000000
--- a/gdb/config/m32r/nm-linux.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Definitions to make GDB run on an M32R based machine under GNU/Linux.
- Copyright 2004, 2007 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. */
-
-#ifndef NM_M32R_LINUX_H
-#define NM_M32R_LINUX_H
-
-#include "config/nm-linux.h"
-
-/* Override copies of {fetch,store}_inferior_registers in infptrace.c. */
-#define FETCH_INFERIOR_REGISTERS
-
-#endif /* NM_M32R_LINUX_H */
diff --git a/gdb/config/m68k/linux.mh b/gdb/config/m68k/linux.mh
index e77a6c5..ebac49f 100644
--- a/gdb/config/m68k/linux.mh
+++ b/gdb/config/m68k/linux.mh
@@ -1,6 +1,6 @@
# Host: Motorola m68k running GNU/Linux.
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o \
corelow.o m68klinux-nat.o gcore.o \
proc-service.o linux-thread-db.o linux-nat.o linux-fork.o
diff --git a/gdb/config/m68k/nm-linux.h b/gdb/config/m68k/nm-linux.h
deleted file mode 100644
index 7f5a427..0000000
--- a/gdb/config/m68k/nm-linux.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Native support for linux, for GDB, the GNU debugger.
- Copyright 1996, 1998, 2000, 2007 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. */
-
-#ifndef NM_LINUX_H
-#define NM_LINUX_H
-
-#include "config/nm-linux.h"
-
-/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
-#define FETCH_INFERIOR_REGISTERS
-
-#endif /* #ifndef NM_LINUX_H */
diff --git a/gdb/config/pa/linux.mh b/gdb/config/pa/linux.mh
index 8066fff..ea45f69 100644
--- a/gdb/config/pa/linux.mh
+++ b/gdb/config/pa/linux.mh
@@ -1,6 +1,6 @@
# Host: Hewlett-Packard PA-RISC machine, running Linux
XDEPFILES=
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o corelow.o gcore.o \
hppa-linux-nat.o proc-service.o linux-thread-db.o linux-nat.o \
linux-fork.o
diff --git a/gdb/config/pa/nm-linux.h b/gdb/config/pa/nm-linux.h
deleted file mode 100644
index b6023b4..0000000
--- a/gdb/config/pa/nm-linux.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Native support for GNU/Linux, for GDB, the GNU debugger.
- Copyright (C) 2004, 2007 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. */
-
-#ifndef PA_NM_LINUX_H
-#define PA_NM_LINUX_H
-
-#include "config/nm-linux.h"
-
-/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
-#define FETCH_INFERIOR_REGISTERS
-
-#endif
-
diff --git a/gdb/config/powerpc/linux.mh b/gdb/config/powerpc/linux.mh
index 9a6a2a4..482223d 100644
--- a/gdb/config/powerpc/linux.mh
+++ b/gdb/config/powerpc/linux.mh
@@ -2,7 +2,7 @@
XM_CLIBS=
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o \
ppc-linux-nat.o proc-service.o linux-thread-db.o \
gcore.o linux-nat.o linux-fork.o
diff --git a/gdb/config/powerpc/nm-linux.h b/gdb/config/powerpc/nm-linux.h
deleted file mode 100644
index 5d367f6..0000000
--- a/gdb/config/powerpc/nm-linux.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* IBM PowerPC native-dependent macros for GDB, the GNU debugger.
- Copyright 1995, 2000, 2007 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#ifndef NM_LINUX_H
-
-#include "config/nm-linux.h"
-
-#define NM_LINUX_H
-
-#define FETCH_INFERIOR_REGISTERS
-
-#endif /* #ifndef NM_LINUX_H */
diff --git a/gdb/config/powerpc/ppc64-linux.mh b/gdb/config/powerpc/ppc64-linux.mh
index 4e06c7b..6fc51b8 100644
--- a/gdb/config/powerpc/ppc64-linux.mh
+++ b/gdb/config/powerpc/ppc64-linux.mh
@@ -2,7 +2,7 @@
XM_CLIBS=
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o \
ppc-linux-nat.o proc-service.o linux-thread-db.o \
gcore.o linux-nat.o linux-fork.o
diff --git a/gdb/config/s390/nm-linux.h b/gdb/config/s390/nm-linux.h
deleted file mode 100644
index 81ba493..0000000
--- a/gdb/config/s390/nm-linux.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Native support for GNU/Linux on S390.
-
- Copyright 2001, 2002, 2003, 2007 Free Software Foundation, Inc.
-
- Ported by D.J. Barrow for IBM Deutschland Entwicklung GmbH, IBM
- Corporation. derived from i390-nmlinux.h
-
- 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. */
-
-#ifndef NM_LINUX_H
-#define NM_LINUX_H
-
-#include "config/nm-linux.h"
-
-
-/* ptrace access. */
-
-#define FETCH_INFERIOR_REGISTERS
-
-
-#endif /* nm_linux.h */
diff --git a/gdb/config/s390/s390.mh b/gdb/config/s390/s390.mh
index d81fb77..7161bfb 100644
--- a/gdb/config/s390/s390.mh
+++ b/gdb/config/s390/s390.mh
@@ -1,5 +1,5 @@
# Host: S390, running Linux
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= inf-ptrace.o fork-child.o corelow.o s390-nat.o \
gcore.o linux-thread-db.o proc-service.o linux-nat.o linux-fork.o
LOADLIBES = -ldl -rdynamic
diff --git a/gdb/config/sparc/linux.mh b/gdb/config/sparc/linux.mh
index b640a92..0296a33 100644
--- a/gdb/config/sparc/linux.mh
+++ b/gdb/config/sparc/linux.mh
@@ -1,5 +1,5 @@
# Host: GNU/Linux SPARC
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= sparc-nat.o sparc-linux-nat.o \
corelow.o core-regset.o fork-child.o inf-ptrace.o \
proc-service.o linux-thread-db.o \
diff --git a/gdb/config/sparc/linux64.mh b/gdb/config/sparc/linux64.mh
index 195940c..f2d8bc8 100644
--- a/gdb/config/sparc/linux64.mh
+++ b/gdb/config/sparc/linux64.mh
@@ -1,5 +1,5 @@
# Host: GNU/Linux UltraSPARC
-NAT_FILE= nm-linux.h
+NAT_FILE= config/nm-linux.h
NATDEPFILES= sparc-nat.o sparc64-nat.o sparc64-linux-nat.o \
corelow.o core-regset.o \
fork-child.o inf-ptrace.o \
diff --git a/gdb/config/sparc/nm-linux.h b/gdb/config/sparc/nm-linux.h
deleted file mode 100644
index abdeb52..0000000
--- a/gdb/config/sparc/nm-linux.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Native-dependent definitions for GNU/Linux SPARC.
-
- Copyright 1989, 1992, 1996, 1998, 1999, 2000, 2002, 2003, 2007
- 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. */
-
-#ifndef NM_LINUX_H
-#define NM_LINUX_H
-
-#include "config/nm-linux.h"
-
-/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
-#define FETCH_INFERIOR_REGISTERS
-
-#endif /* nm-linux.h */
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 80771a7..8430eb7 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -3164,35 +3164,12 @@ linux_xfer_partial (struct target_ops *ops, enum target_object object,
offset, len);
}
-#ifndef FETCH_INFERIOR_REGISTERS
-
-/* Return the address in the core dump or inferior of register
- REGNO. */
-
-static CORE_ADDR
-linux_register_u_offset (int regno)
-{
- /* FIXME drow/2005-09-04: The hardcoded use of register_addr should go
- away. This requires disentangling the various definitions of it
- (particularly alpha-nat.c's). */
- return register_addr (regno, 0);
-}
-
-#endif
-
/* Create a prototype generic Linux target. The client can override
it with local methods. */
-struct target_ops *
-linux_target (void)
+static void
+linux_target_install_ops (struct target_ops *t)
{
- struct target_ops *t;
-
-#ifdef FETCH_INFERIOR_REGISTERS
- t = inf_ptrace_target ();
-#else
- t = inf_ptrace_trad_target (linux_register_u_offset);
-#endif
t->to_insert_fork_catchpoint = child_insert_fork_catchpoint;
t->to_insert_vfork_catchpoint = child_insert_vfork_catchpoint;
t->to_insert_exec_catchpoint = child_insert_exec_catchpoint;
@@ -3205,6 +3182,26 @@ linux_target (void)
super_xfer_partial = t->to_xfer_partial;
t->to_xfer_partial = linux_xfer_partial;
+}
+
+struct target_ops *
+linux_target (void)
+{
+ struct target_ops *t;
+
+ t = inf_ptrace_target ();
+ linux_target_install_ops (t);
+
+ return t;
+}
+
+struct target_ops *
+linux_trad_target (CORE_ADDR (*register_u_offset)(int))
+{
+ struct target_ops *t;
+
+ t = inf_ptrace_trad_target (register_u_offset);
+ linux_target_install_ops (t);
return t;
}
diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h
index 744a392..997a0f4 100644
--- a/gdb/linux-nat.h
+++ b/gdb/linux-nat.h
@@ -88,6 +88,11 @@ struct lwp_info *iterate_over_lwps (int (*callback) (struct lwp_info *,
override it with local methods. */
struct target_ops * linux_target (void);
+/* Create a generic GNU/Linux target using traditional
+ ptrace register access. */
+struct target_ops *
+linux_trad_target (CORE_ADDR (*register_u_offset)(int));
+
/* Register the customized GNU/Linux target. This should be used
instead of calling add_target directly. */
void linux_nat_add_target (struct target_ops *);
diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
index 15b23a2..d5a1202 100644
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
@@ -26,6 +26,7 @@
#include "target.h"
#include "linux-nat.h"
#include "mips-linux-tdep.h"
+#include "gdbcore.h"
#include "gdb_proc_service.h"
@@ -246,12 +247,24 @@ mips64_linux_store_registers (int regnum)
super_store_registers (regnum);
}
+/* Return the address in the core dump or inferior of register
+ REGNO. */
+
+static CORE_ADDR
+mips_linux_register_u_offset (int regno)
+{
+ /* FIXME drow/2005-09-04: The hardcoded use of register_addr should go
+ away. This requires disentangling the various definitions of it
+ (particularly alpha-nat.c's). */
+ return register_addr (regno, 0);
+}
+
void _initialize_mips_linux_nat (void);
void
_initialize_mips_linux_nat (void)
{
- struct target_ops *t = linux_target ();
+ struct target_ops *t = linux_trad_target (mips_linux_register_u_offset);
super_fetch_registers = t->to_fetch_registers;
super_store_registers = t->to_store_registers;