From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4308 invoked by alias); 5 Dec 2004 18:46:19 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 4182 invoked from network); 5 Dec 2004 18:45:55 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sourceware.org with SMTP; 5 Dec 2004 18:45:55 -0000 Received: from drow by nevyn.them.org with local (Exim 4.34 #1 (Debian)) id 1Cb1OI-0005C6-Ml for ; Sun, 05 Dec 2004 13:45:50 -0500 Date: Sun, 05 Dec 2004 18:48:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com Subject: [RFC] Use target vector inheritance for GNU/Linux Message-ID: <20041205184549.GA19814@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.5.1+cvs20040105i X-SW-Source: 2004-12/txt/msg00130.txt.bz2 This patch converts all GNU/Linux targets to inf-ptrace.c and target vector inheritance. I was going to do them one at a time, but because the common native-specific code is so large for GNU/Linux, it was too awkward. A new function, linux_target, is added to linux-nat.c. Then any GNU/Linux target can call it, and pass the result to add_target - after specializing whatever methods it needs to. Sometimes it's necessary to specialize a method between inf_ptrace_target and linux_target, so it accepts an optional argument. This wouldn't be necessary if all target methods took a target_ops parameter, so they could call the overridden method. One use of deprecated_child_ops was particularly thorny, so I updated the to_follow_fork method to take a struct target_ops and push the correct target. I made to_follow_fork a non-inherited method, like to_xfer_partial. This patch leaves some completely dead macros in config/nm-linux.h, and some mostly-but-not-quite dead macros in various other nm-files. I'll be back. I didn't want to change more than absolutely necessary, once I was committed to doing all targets. My next step will be merging the two target vectors in linux-nat.c. I've tested this patch with the full testsuite on x86_64-linux and i386-linux, partial testsuite on ia64-linux [it gets hung up in an infinite loop in sigaltstack.exp with or without the patch], and smoke testing on s390x [the machine I was using didn't have expect]. Comments? Proofreading? I'm going to let this sit for a couple of days, because (while mechanical) it's very large - I think I got everything, but since I don't have the resources to test on every single GNU/Linux native target, I can't be sure. -- Daniel Jacobowitz 2004-12-05 Daniel Jacobowitz * Makefile.in (ALLDEPFILES): Update. (alpha-linux-nat.o, sparc-linux-nat.o): New rules. (amd64-linux-nat.o, arm-linux-nat.o, hppa-linux-nat.o) (i386-linux-nat.o, ia64-linux-nat.o, linux-nat.o, m32r-linux-nat.o) (m68klinux-nat.o, mips-linux-nat.o, ppc-linux-nat.o, s390-nat.o) (sparc64-linux-nat.o): Update dependencies. * alpha-linux-nat.c, sparc-linux-nat.c: New files. * amd64-linux-nat.c (saved_post_startup_inferior): New. (child_post_startup_inferior): Use it. (_initialize_i386_linux_nat): New function. Call add_target. * arm-linux-nat.c (_initialize_arm_linux_nat): New function. * hppa-linux-nat.c (_initialize_hppa_linux_nat): New function. * hppah-nat.c (child_follow_fork): Add OPS argument. * i386-linux-nat.c (i386_linux_resume): Renamed from child_resume. (saved_post_startup_inferior): New. (child_post_startup_inferior): Use it. (_initialize_amd64_linux_nat): Set it. Call add_target. * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove. (saved_xfer_partial): New. (ia64_linux_xfer_partial): New function. Use it. (_initialize_ia64_linux_nat): New function. * inf-child.c (inf_child_follow_fork): Add OPS argument. * inf-ptrace.c (inf_ptrace_follow_fork): Likewise. * inftarg.c (child_follow_fork): Likewise. * linux-nat.c (saved_attach, saved_create_inferior, saved_detach) (saved_mourn_inferior, saved_resume, saved_xfer_partial): New. (child_follow_fork): Add OPS argument. Don't use deprecated_child_ops. (linux_nat_attach): Use saved_attach. (linux_nat_detach): Use saved_detach. (resume_callback, linux_nat_resume, linux_nat_wait): Use saved_resume. (linux_nat_create_inferior): Use saved_create_inferior. (linux_nat_mourn_inferior): Use saved_mourn_inferior. (linux_nat_xfer_memory): Remove. (init_linux_nat_ops): Set to_xfer_partial instead of deprecated_xfer_memory. (linux_proc_xfer_memory): Change arguments. Make static. (_initialize_linux_nat): Don't touch deprecated_child_ops. (fetch_register, fetch_inferior_registers, store_register) (store_inferior_registers, linux_xfer_partial, linux_target): New functions. * linux-nat.h (linux_proc_xfer_memory): Remove prototype. (linux_target): New prototype. * linux-thread-db.c (thread_db_xfer_partial): Renamed from thread_db_xfer_memory. Update. (init_thread_db_ops): Set to_xfer_partial instead of deprecated_xfer_memory. * m32r-linux-nat.c (_initialize_m32r_linux_nat): New function. * m68klinux-nat.c (_initialize_m68k_linux_nat): Call add_target. * mips-linux-nat.c (_initialize_mips_linux_nat): New function. * ppc-linux-nat.c (_initialize_ppc_linux_nat): New function. * s390-nat.c (_initialize_s390_nat): New function. * sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Call add_target. * target.c (update_current_target): Do not inherit to_follow_fork. (target_follow_fork): New function. (debug_to_follow_fork): Remove. (setup_target_debug): Don't set to_follow_fork. * target.h (struct target_ops): Add struct target_ops * to to_follow_fork. (child_follow_fork): Add struct target_ops * argument. (target_follow_fork): Replace macro with prototype. * config/alpha/alpha-linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o and alpha-linux-nat.o. * config/sparc/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with sparc-linux-nat.o. * config/sparc/linux64.mh (NATDEPFILES): Remove infptrace.o and inftarg.o. * config/arm/linux.mh (NATDEPFILES): Replace infptrace.o and inftarg.o with inf-ptrace.o. * config/i386/linux.mh (NATDEPFILES): Likewise. * config/i386/linux64.mh (NATDEPFILES): Likewise. * config/ia64/linux.mh (NATDEPFILES): Likewise. * config/m32r/linux.mh (NATDEPFILES): Likewise. * config/m68k/linux.mh (NATDEPFILES): Likewise. * config/mips/linux.mh (NATDEPFILES): Likewise. * config/pa/linux.mh (NATDEPFILES): Likewise. * config/powerpc/linux.mh (NATDEPFILES): Likewise. * config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise. * config/s390/s390.mh (NATDEPFILES): Likewise. * config/i386/nm-linux.h (DEPRECATED_CHILD_RESUME): Don't define. (LINUX_CHILD_POST_STARTUP_INFERIOR): Update comments. * config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Likewise. * config/ia64/nm-linux.h (NATIVE_XFER_UNWIND_TABLE) (ia64_linux_xfer_unwind_table): Remove. * config/djgpp/fnchange.lst: Add alpha-linux-tdep.c, alpha-linux-nat.c, sparc-linux-tdep.c, and sparc-linux-nat.c. Index: Makefile.in =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/Makefile.in,v retrieving revision 1.674 diff -u -p -r1.674 Makefile.in --- Makefile.in 23 Nov 2004 21:14:32 -0000 1.674 +++ Makefile.in 5 Dec 2004 17:59:49 -0000 @@ -1351,7 +1351,7 @@ MAKEOVERRIDES= ALLDEPFILES = \ aix-thread.c \ - alpha-nat.c alphabsd-nat.c \ + alpha-nat.c alphabsd-nat.c alpha-linux-nat.c \ alpha-tdep.c alpha-linux-tdep.c alphabsd-tdep.c alphanbsd-tdep.c \ alpha-osf1-tdep.c alphafbsd-tdep.c alpha-mdebug-tdep.c \ amd64-nat.c amd64-tdep.c \ @@ -1393,6 +1393,7 @@ ALLDEPFILES = \ m32r-linux-nat.c m32r-linux-tdep.c \ m68k-tdep.c \ m68kbsd-nat.c m68kbsd-tdep.c \ + m68klinux-nat.c m68klinux-tdep.c \ m88k-tdep.c m88kbsd-nat.c \ mcore-tdep.c \ mips-linux-nat.c mips-linux-tdep.c \ @@ -1416,6 +1417,7 @@ ALLDEPFILES = \ ser-go32.c ser-pipe.c ser-tcp.c \ sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.c \ solib.c solib-irix.c solib-svr4.c solib-sunos.c \ + sparc-linux-nat.c \ sparc-linux-tdep.c sparc-nat.c sparc-sol2-nat.c sparc-sol2-tdep.c \ sparc-tdep.c sparc-sol2-nat.c sparc-sol2-tdep.c sparc64-linux-nat.c \ sparc64-linux-tdep.c sparc64-nat.c sparc64-sol2-tdep.c \ @@ -1645,6 +1647,7 @@ alphabsd-tdep.o: alphabsd-tdep.c $(defs_ $(alphabsd_tdep_h) alphafbsd-tdep.o: alphafbsd-tdep.c $(defs_h) $(value_h) $(osabi_h) \ $(alpha_tdep_h) +alpha-linux-nat.o: alpha-linux-nat.c $(defs_h) $(target_h) $(linux_nat_h) alpha-linux-tdep.o: alpha-linux-tdep.c $(defs_h) $(frame_h) $(gdb_assert_h) \ $(osabi_h) $(alpha_tdep_h) alpha-mdebug-tdep.o: alpha-mdebug-tdep.c $(defs_h) $(frame_h) \ @@ -1675,7 +1678,7 @@ amd64fbsd-tdep.o: amd64fbsd-tdep.c $(def amd64-linux-nat.o: amd64-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ $(regcache_h) $(linux_nat_h) $(gdb_assert_h) $(gdb_string_h) \ $(gdb_proc_service_h) $(gregset_h) $(amd64_tdep_h) \ - $(i386_linux_tdep_h) $(amd64_nat_h) + $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) amd64-linux-tdep.o: amd64-linux-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \ $(regcache_h) $(osabi_h) $(symtab_h) $(gdb_string_h) $(amd64_tdep_h) \ $(solib_svr4_h) @@ -1708,7 +1711,8 @@ arch-utils.o: arch-utils.c $(defs_h) $(a $(gdb_assert_h) $(sim_regno_h) $(gdbcore_h) $(osabi_h) $(version_h) \ $(floatformat_h) arm-linux-nat.o: arm-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ - $(gdb_string_h) $(regcache_h) $(arm_tdep_h) $(gregset_h) + $(gdb_string_h) $(regcache_h) $(arm_tdep_h) $(gregset_h) \ + $(target_h) $(linux_nat_h) arm-linux-tdep.o: arm-linux-tdep.c $(defs_h) $(target_h) $(value_h) \ $(gdbtypes_h) $(floatformat_h) $(gdbcore_h) $(frame_h) $(regcache_h) \ $(doublest_h) $(solib_svr4_h) $(osabi_h) $(arm_tdep_h) \ @@ -1979,7 +1983,8 @@ hppa-hpux-tdep.o: hppa-hpux-tdep.c $(def $(trad_frame_h) $(symtab_h) $(objfiles_h) $(inferior_h) $(infcall_h) \ $(observer_h) $(hppa_tdep_h) hppa-linux-nat.o: hppa-linux-nat.c $(defs_h) $(gdbcore_h) $(regcache_h) \ - $(gdb_string_h) $(inferior_h) $(hppa_tdep_h) $(gregset_h) + $(gdb_string_h) $(inferior_h) $(hppa_tdep_h) $(gregset_h) \ + $(target_h) $(linux_nat_h) hppa-linux-tdep.o: hppa-linux-tdep.c $(defs_h) $(gdbcore_h) $(osabi_h) \ $(target_h) $(objfiles_h) $(solib_svr4_h) $(glibc_tdep_h) \ $(frame_unwind_h) $(trad_frame_h) $(dwarf2_frame_h) $(value_h) \ @@ -2014,7 +2019,7 @@ i386gnu-tdep.o: i386gnu-tdep.c $(defs_h) i386-linux-nat.o: i386-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ $(regcache_h) $(linux_nat_h) $(gdb_assert_h) $(gdb_string_h) \ $(gregset_h) $(i387_tdep_h) $(i386_tdep_h) $(i386_linux_tdep_h) \ - $(gdb_proc_service_h) + $(gdb_proc_service_h) $(inf_ptrace_h) $(target_h) i386-linux-tdep.o: i386-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \ $(value_h) $(regcache_h) $(inferior_h) $(osabi_h) $(reggroups_h) \ $(dwarf2_frame_h) $(gdb_string_h) $(i386_tdep_h) \ @@ -2059,7 +2064,8 @@ ia64-aix-nat.o: ia64-aix-nat.c $(defs_h) $(objfiles_h) $(gdb_stat_h) ia64-aix-tdep.o: ia64-aix-tdep.c $(defs_h) ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \ - $(target_h) $(gdbcore_h) $(regcache_h) $(gdb_wait_h) $(gregset_h) + $(target_h) $(gdbcore_h) $(regcache_h) $(gdb_wait_h) $(gregset_h) \ + $(linux_nat_h) ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(ia64_tdep_h) \ $(arch_utils_h) $(gdbcore_h) $(regcache_h) ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \ @@ -2140,7 +2146,7 @@ linespec.o: linespec.c $(defs_h) $(symta linux-nat.o: linux-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdb_string_h) \ $(gdb_wait_h) $(gdb_assert_h) $(linux_nat_h) $(gdbthread_h) \ $(gdbcmd_h) $(regcache_h) $(elf_bfd_h) $(gregset_h) $(gdbcore_h) \ - $(gdbthread_h) $(gdb_stat_h) + $(gdbthread_h) $(gdb_stat_h) $(inf_ptrace_h) lynx-nat.o: lynx-nat.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \ $(gdbcore_h) $(regcache_h) m2-exp.o: m2-exp.c $(defs_h) $(gdb_string_h) $(expression_h) $(language_h) \ @@ -2155,7 +2161,7 @@ m2-valprint.o: m2-valprint.c $(defs_h) $ $(m2_lang_h) m32r-linux-nat.o: m32r-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ $(regcache_h) $(linux_nat_h) $(gdb_assert_h) $(gdb_string_h) \ - $(gregset_h) $(m32r_tdep_h) + $(gregset_h) $(m32r_tdep_h) $(target_h) m32r-linux-tdep.o: m32r-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \ $(value_h) $(regcache_h) $(inferior_h) $(osabi_h) $(reggroups_h) \ $(gdb_string_h) $(glibc_tdep_h) $(solib_svr4_h) $(trad_frame_h) \ @@ -2184,7 +2190,7 @@ m68kbsd-tdep.o: m68kbsd-tdep.c $(defs_h) m68klinux-nat.o: m68klinux-nat.c $(defs_h) $(frame_h) $(inferior_h) \ $(language_h) $(gdbcore_h) $(gdb_string_h) $(regcache_h) \ $(m68k_tdep_h) $(gdb_stat_h) $(floatformat_h) $(target_h) \ - $(gregset_h) + $(gregset_h) $(target_h) $(linux_nat_h) m68klinux-tdep.o: m68klinux-tdep.c $(defs_h) $(gdbcore_h) $(doublest_h) \ $(floatformat_h) $(frame_h) $(target_h) $(gdb_string_h) \ $(gdbtypes_h) $(osabi_h) $(regcache_h) $(objfiles_h) $(symtab_h) \ @@ -2240,7 +2246,8 @@ mips64obsd-tdep.o: mips64obsd-tdep.c $(d $(regset_h) $(trad_frame_h) $(tramp_frame_h) $(gdb_assert_h) \ $(gdb_string_h) $(mips_tdep_h) $(solib_svr4_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) +mips-linux-nat.o: mips-linux-nat.c $(defs_h) $(mips_tdep_h) $(target_h) \ + $(linux_nat_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) \ @@ -2335,7 +2342,8 @@ ppcbug-rom.o: ppcbug-rom.c $(defs_h) $(g $(serial_h) $(regcache_h) ppc-linux-nat.o: ppc-linux-nat.c $(defs_h) $(gdb_string_h) $(frame_h) \ $(inferior_h) $(gdbcore_h) $(regcache_h) $(gdb_assert_h) \ - $(gdb_wait_h) $(gregset_h) $(ppc_tdep_h) + $(gdb_wait_h) $(gregset_h) $(ppc_tdep_h) $(target_h) \ + $(linux_nat_h) ppc-linux-tdep.o: ppc-linux-tdep.c $(defs_h) $(frame_h) $(inferior_h) \ $(symtab_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(symfile_h) \ $(objfiles_h) $(regcache_h) $(value_h) $(osabi_h) $(regset_h) \ @@ -2440,7 +2448,7 @@ rs6000-tdep.o: rs6000-tdep.c $(defs_h) $ $(ppc_tdep_h) $(gdb_assert_h) $(dis_asm_h) $(trad_frame_h) \ $(frame_unwind_h) $(frame_base_h) s390-nat.o: s390-nat.c $(defs_h) $(tm_h) $(regcache_h) $(inferior_h) \ - $(s390_tdep_h) + $(s390_tdep_h) $(target_h) $(linux_nat_h) s390-tdep.o: s390-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) $(inferior_h) \ $(symtab_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(objfiles_h) \ $(tm_h) $(__bfd_bfd_h) $(floatformat_h) $(regcache_h) \ @@ -2532,7 +2540,7 @@ sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $ $(target_h) $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) \ $(sparc64_tdep_h) sparc64-linux-nat.o: sparc64-linux-nat.c $(defs_h) $(sparc64_tdep_h) \ - $(sparc_nat_h) + $(sparc_nat_h) $(target_h) $(linux_nat_h) sparc64-linux-tdep.o: sparc64-linux-tdep.c $(defs_h) $(gdbarch_h) $(osabi_h) \ $(sparc64_tdep_h) sparc64-nat.o: sparc64-nat.c $(defs_h) $(gdbarch_h) $(sparc64_tdep_h) \ @@ -2554,6 +2562,7 @@ sparc64-tdep.o: sparc64-tdep.c $(defs_h) $(gdbtypes_h) $(inferior_h) $(symtab_h) $(objfiles_h) $(osabi_h) \ $(regcache_h) $(target_h) $(value_h) $(gdb_assert_h) $(gdb_string_h) \ $(sparc64_tdep_h) +sparc-linux-nat.o: sparc-linux-nat.c $(defs_h) $(target_h) $(linux_nat_h) sparc-linux-tdep.o: sparc-linux-tdep.c $(defs_h) $(floatformat_h) $(frame_h) \ $(frame_unwind_h) $(gdbarch_h) $(gdbcore_h) $(osabi_h) $(regcache_h) \ $(solib_svr4_h) $(symtab_h) $(trad_frame_h) $(gdb_assert_h) \ Index: alpha-linux-nat.c =================================================================== RCS file: alpha-linux-nat.c diff -N alpha-linux-nat.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ alpha-linux-nat.c 5 Dec 2004 17:52:07 -0000 @@ -0,0 +1,32 @@ +/* Low level Alpha GNU/Linux interface, for GDB when running native. + 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 "target.h" +#include "linux-nat.h" + +void _initialialize_alpha_linux_nat (void); + +void +_initialize_alpha_linux_nat (void) +{ + add_target (linux_target (NULL)); +} Index: amd64-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/amd64-linux-nat.c,v retrieving revision 1.8 diff -u -p -r1.8 amd64-linux-nat.c --- amd64-linux-nat.c 9 Apr 2004 21:16:05 -0000 1.8 +++ amd64-linux-nat.c 5 Dec 2004 05:41:41 -0000 @@ -360,11 +360,15 @@ ps_get_thread_area (const struct ps_proc } +static void (*saved_post_startup_inferior) (ptid_t ptid); + +/* FIXME drow/2004-12-04: This function can be made static once the single- + and multi-threaded vectors in linux-nat.c are unified. */ void child_post_startup_inferior (ptid_t ptid) { i386_cleanup_dregs (); - linux_child_post_startup_inferior (ptid); + saved_post_startup_inferior (ptid); } @@ -374,6 +378,8 @@ void _initialize_amd64_linux_nat (void); void _initialize_amd64_linux_nat (void) { + struct target_ops *t; + amd64_native_gregset32_reg_offset = amd64_linux_gregset32_reg_offset; amd64_native_gregset32_num_regs = I386_LINUX_NUM_REGS; amd64_native_gregset64_reg_offset = amd64_linux_gregset64_reg_offset; @@ -382,4 +388,14 @@ _initialize_amd64_linux_nat (void) == amd64_native_gregset32_num_regs); gdb_assert (ARRAY_SIZE (amd64_linux_gregset64_reg_offset) == amd64_native_gregset64_num_regs); + + /* Fill in the generic GNU/Linux methods. */ + t = linux_target (NULL); + + /* Override the GNU/Linux inferior startup hook. */ + saved_post_startup_inferior = t->to_post_startup_inferior; + t->to_post_startup_inferior = child_post_startup_inferior; + + /* Register the target. */ + add_target (t); } Index: arm-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/arm-linux-nat.c,v retrieving revision 1.21 diff -u -p -r1.21 arm-linux-nat.c --- arm-linux-nat.c 24 Jul 2004 01:00:19 -0000 1.21 +++ arm-linux-nat.c 5 Dec 2004 06:12:09 -0000 @@ -1,5 +1,5 @@ /* GNU/Linux on ARM native support. - Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -23,6 +23,8 @@ #include "gdbcore.h" #include "gdb_string.h" #include "regcache.h" +#include "target.h" +#include "linux-nat.h" #include "arm-tdep.h" @@ -706,8 +708,12 @@ get_linux_version (unsigned int *vmajor, return ((*vmajor << 16) | (*vminor << 8) | *vrelease); } +void _initialize_arm_linux_nat (void); + void _initialize_arm_linux_nat (void) { os_version = get_linux_version (&os_major, &os_minor, &os_release); + + add_target (linux_target (NULL)); } Index: hppa-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/hppa-linux-nat.c,v retrieving revision 1.8 diff -u -p -r1.8 hppa-linux-nat.c --- hppa-linux-nat.c 24 Jul 2004 01:00:19 -0000 1.8 +++ hppa-linux-nat.c 5 Dec 2004 06:11:08 -0000 @@ -24,6 +24,8 @@ #include "regcache.h" #include "gdb_string.h" #include "inferior.h" +#include "target.h" +#include "linux-nat.h" #include #include @@ -374,3 +376,11 @@ fill_fpregset (gdb_fpregset_t *fpregsetp regcache_raw_collect (current_regcache, i, to); } } + +void _initialize_hppa_linux_nat (void); + +void +_initialize_hppa_linux_nat (void) +{ + add_target (linux_target (NULL)); +} Index: hppah-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/hppah-nat.c,v retrieving revision 1.35 diff -u -p -r1.35 hppah-nat.c --- hppah-nat.c 20 Nov 2004 23:56:18 -0000 1.35 +++ hppah-nat.c 5 Dec 2004 02:20:15 -0000 @@ -422,7 +422,7 @@ enum { } saved_vfork_state = STATE_NONE; int -child_follow_fork (int follow_child) +child_follow_fork (struct target_ops *ops, int follow_child) { ptid_t last_ptid; struct target_waitstatus last_status; Index: i386-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/i386-linux-nat.c,v retrieving revision 1.61 diff -u -p -r1.61 i386-linux-nat.c --- i386-linux-nat.c 8 Sep 2004 14:46:09 -0000 1.61 +++ i386-linux-nat.c 5 Dec 2004 06:09:39 -0000 @@ -23,7 +23,9 @@ #include "inferior.h" #include "gdbcore.h" #include "regcache.h" +#include "target.h" #include "linux-nat.h" +#include "inf-ptrace.h" #include "gdb_assert.h" #include "gdb_string.h" @@ -754,8 +756,8 @@ static const unsigned char linux_syscall If STEP is nonzero, single-step it. If SIGNAL is nonzero, give it that signal. */ -void -child_resume (ptid_t ptid, int step, enum target_signal signal) +static void +i386_linux_resume (ptid_t ptid, int step, enum target_signal signal) { int pid = PIDGET (ptid); @@ -813,9 +815,32 @@ child_resume (ptid_t ptid, int step, enu perror_with_name ("ptrace"); } +static void (*saved_post_startup_inferior) (ptid_t ptid); + +/* FIXME drow/2004-12-04: This function can be made static once the single- + and multi-threaded vectors in linux-nat.c are unified. */ void child_post_startup_inferior (ptid_t ptid) { i386_cleanup_dregs (); - linux_child_post_startup_inferior (ptid); + saved_post_startup_inferior (ptid); +} + +void +_initialize_i386_linux_nat (void) +{ + struct target_ops *t = inf_ptrace_target (); + + /* Override the default ptrace resume method. */ + t->to_resume = i386_linux_resume; + + /* Fill in the generic GNU/Linux methods. */ + t = linux_target (t); + + /* Override the GNU/Linux inferior startup hook. */ + saved_post_startup_inferior = t->to_post_startup_inferior; + t->to_post_startup_inferior = child_post_startup_inferior; + + /* Register the target. */ + add_target (t); } Index: ia64-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/ia64-linux-nat.c,v retrieving revision 1.26 diff -u -p -r1.26 ia64-linux-nat.c --- ia64-linux-nat.c 13 Oct 2004 21:40:41 -0000 1.26 +++ ia64-linux-nat.c 5 Dec 2004 05:49:30 -0000 @@ -27,6 +27,7 @@ #include "target.h" #include "gdbcore.h" #include "regcache.h" +#include "linux-nat.h" #include #include @@ -665,12 +666,33 @@ ia64_linux_stopped_by_watchpoint (void) return ia64_linux_stopped_data_address (&addr); } -LONGEST -ia64_linux_xfer_unwind_table (struct target_ops *ops, - enum target_object object, - const char *annex, - void *readbuf, const void *writebuf, - ULONGEST offset, LONGEST len) +LONGEST (*saved_xfer_partial) (struct target_ops *, enum target_object, + const char *, void *, const void *, + ULONGEST, LONGEST); + +static LONGEST +ia64_linux_xfer_partial (struct target_ops *ops, + enum target_object object, + const char *annex, + void *readbuf, const void *writebuf, + ULONGEST offset, LONGEST len) { - return syscall (__NR_getunwind, readbuf, len); + if (object == TARGET_OBJECT_UNWIND_TABLE && writebuf == NULL && offset == 0) + return syscall (__NR_getunwind, readbuf, len); + + return saved_xfer_partial (ops, object, annex, readbuf, writebuf, + offset, len); +} + +void _initialize_ia64_linux_nat (void); + +void +_initialize_ia64_linux_nat (void) +{ + struct target_ops *t = linux_target (NULL); + + saved_xfer_partial = t->to_xfer_partial; + t->to_xfer_partial = ia64_linux_xfer_partial; + + add_target (t); } Index: inf-child.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/inf-child.c,v retrieving revision 1.4 diff -u -p -r1.4 inf-child.c --- inf-child.c 29 Sep 2004 15:33:02 -0000 1.4 +++ inf-child.c 5 Dec 2004 02:20:42 -0000 @@ -123,7 +123,7 @@ inf_child_remove_vfork_catchpoint (int p } static int -inf_child_follow_fork (int follow_child) +inf_child_follow_fork (struct target_ops *ops, int follow_child) { /* This version of Unix doesn't support following fork or vfork events. */ Index: inf-ptrace.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/inf-ptrace.c,v retrieving revision 1.14 diff -u -p -r1.14 inf-ptrace.c --- inf-ptrace.c 21 Nov 2004 13:51:53 -0000 1.14 +++ inf-ptrace.c 5 Dec 2004 02:44:58 -0000 @@ -394,7 +394,7 @@ inf_ptrace_remove_vfork_catchpoint (int } static int -inf_ptrace_follow_fork (int follow_child) +inf_ptrace_follow_fork (struct target_ops *ops, int follow_child) { /* This version of Unix doesn't support following fork or vfork events. */ return 0; Index: inftarg.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/inftarg.c,v retrieving revision 1.35 diff -u -p -r1.35 inftarg.c --- inftarg.c 7 Nov 2004 21:33:29 -0000 1.35 +++ inftarg.c 5 Dec 2004 02:20:28 -0000 @@ -404,7 +404,7 @@ child_remove_vfork_catchpoint (int pid) #if !defined(CHILD_FOLLOW_FORK) int -child_follow_fork (int follow_child) +child_follow_fork (struct target_ops *ops, int follow_child) { /* This version of Unix doesn't support following fork or vfork events. */ return 0; Index: linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/linux-nat.c,v retrieving revision 1.17 diff -u -p -r1.17 linux-nat.c --- linux-nat.c 21 Nov 2004 20:10:02 -0000 1.17 +++ linux-nat.c 5 Dec 2004 06:01:28 -0000 @@ -22,6 +22,7 @@ #include "defs.h" #include "inferior.h" #include "target.h" +#include "inf-ptrace.h" #include "gdb_string.h" #include "gdb_wait.h" #include "gdb_assert.h" @@ -81,10 +82,31 @@ #define __WALL 0x40000000 /* Wait for any child. */ #endif +/* Saved functions from the target vector. We override these in + linux_target, but we also want to call the originals. */ + +static void (*saved_attach) (char *, int); +static void (*saved_create_inferior) (char *, char *, char **, int); +static void (*saved_detach) (char *, int); +static void (*saved_mourn_inferior) (void); +static void (*saved_resume) (ptid_t, int, enum target_signal); +static LONGEST (*saved_xfer_partial) (struct target_ops *, enum target_object, + const char *, void *, const void *, + ULONGEST, LONGEST); + + static int debug_linux_nat; static int linux_parent_pid; +static LONGEST linux_xfer_partial (struct target_ops *, enum target_object, + const char *, void *, const void *, + ULONGEST, LONGEST); + +static LONGEST linux_proc_xfer_memory (void *, const void *, ULONGEST, + LONGEST); + + struct simple_pid_list { int pid; @@ -324,7 +346,7 @@ child_post_startup_inferior (ptid_t ptid #endif int -child_follow_fork (int follow_child) +child_follow_fork (struct target_ops *ops, int follow_child) { ptid_t last_ptid; struct target_waitstatus last_status; @@ -446,7 +468,10 @@ child_follow_fork (int follow_child) target_detach (NULL, 0); inferior_ptid = pid_to_ptid (child_pid); - push_target (&deprecated_child_ops); + + /* Reinstall ourselves, since we might have been removed in + target_detach (which does other necessary cleanup). */ + push_target (ops); /* Reset breakpoints in the child as appropriate. */ follow_inferior_reset_breakpoints (); @@ -898,7 +923,7 @@ linux_nat_attach (char *args, int from_t /* FIXME: We should probably accept a list of process id's, and attach all of them. */ - deprecated_child_ops.to_attach (args, from_tty); + saved_attach (args, from_tty); /* Add the initial process as the first LWP to the list. */ lp = add_lwp (BUILD_LWP (GET_PID (inferior_ptid), GET_PID (inferior_ptid))); @@ -1008,7 +1033,7 @@ linux_nat_detach (char *args, int from_t sigemptyset (&blocked_mask); inferior_ptid = pid_to_ptid (GET_PID (inferior_ptid)); - deprecated_child_ops.to_detach (args, from_tty); + saved_detach (args, from_tty); } /* Resume LP. */ @@ -1020,7 +1045,7 @@ resume_callback (struct lwp_info *lp, vo { struct thread_info *tp; - child_resume (pid_to_ptid (GET_LWP (lp->ptid)), 0, TARGET_SIGNAL_0); + saved_resume (pid_to_ptid (GET_LWP (lp->ptid)), 0, TARGET_SIGNAL_0); if (debug_linux_nat) fprintf_unfiltered (gdb_stdlog, "RC: PTRACE_CONT %s, 0, 0 (resume sibling)\n", @@ -1094,7 +1119,7 @@ linux_nat_resume (ptid_t ptid, int step, if (resume_all) iterate_over_lwps (resume_callback, NULL); - child_resume (ptid, step, signo); + saved_resume (ptid, step, signo); if (debug_linux_nat) fprintf_unfiltered (gdb_stdlog, "LLR: %s %s, %s (resume event thread)\n", @@ -1884,7 +1909,7 @@ retry: /* Resume the thread. It should halt immediately returning the pending SIGSTOP. */ registers_changed (); - child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, + saved_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, TARGET_SIGNAL_0); if (debug_linux_nat) fprintf_unfiltered (gdb_stdlog, @@ -2086,7 +2111,7 @@ retry: lp->signalled = 0; registers_changed (); - child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, + saved_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, TARGET_SIGNAL_0); if (debug_linux_nat) fprintf_unfiltered (gdb_stdlog, @@ -2146,7 +2171,7 @@ retry: newly attached threads may cause an unwanted delay in getting them running. */ registers_changed (); - child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, signo); + saved_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, signo); if (debug_linux_nat) fprintf_unfiltered (gdb_stdlog, "LLW: %s %s, %s (preempt 'handle')\n", @@ -2295,7 +2320,7 @@ static void linux_nat_create_inferior (char *exec_file, char *allargs, char **env, int from_tty) { - deprecated_child_ops.to_create_inferior (exec_file, allargs, env, from_tty); + saved_create_inferior (exec_file, allargs, env, from_tty); } static void @@ -2310,25 +2335,7 @@ linux_nat_mourn_inferior (void) sigprocmask (SIG_SETMASK, &normal_mask, NULL); sigemptyset (&blocked_mask); - deprecated_child_ops.to_mourn_inferior (); -} - -static int -linux_nat_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write, - struct mem_attrib *attrib, struct target_ops *target) -{ - struct cleanup *old_chain = save_inferior_ptid (); - int xfer; - - if (is_lwp (inferior_ptid)) - inferior_ptid = pid_to_ptid (GET_LWP (inferior_ptid)); - - xfer = linux_proc_xfer_memory (memaddr, myaddr, len, write, attrib, target); - if (xfer == 0) - xfer = child_xfer_memory (memaddr, myaddr, len, write, attrib, target); - - do_cleanups (old_chain); - return xfer; + saved_mourn_inferior (); } static int @@ -2380,7 +2387,7 @@ init_linux_nat_ops (void) honor the LWP id, so we can use them directly. */ linux_nat_ops.to_fetch_registers = fetch_inferior_registers; linux_nat_ops.to_store_registers = store_inferior_registers; - linux_nat_ops.deprecated_xfer_memory = linux_nat_xfer_memory; + linux_nat_ops.to_xfer_partial = linux_xfer_partial; linux_nat_ops.to_kill = linux_nat_kill; linux_nat_ops.to_create_inferior = linux_nat_create_inferior; linux_nat_ops.to_mourn_inferior = linux_nat_mourn_inferior; @@ -2935,14 +2942,16 @@ linux_nat_info_proc_cmd (char *args, int } } -int -linux_proc_xfer_memory (CORE_ADDR addr, char *myaddr, int len, int write, - struct mem_attrib *attrib, struct target_ops *target) +static LONGEST +linux_proc_xfer_memory (void *readbuf, const void *writebuf, + ULONGEST offset, LONGEST len) { - int fd, ret; + int fd; + LONGEST ret; char filename[64]; - if (write) + /* We can't write to memory this way. */ + if (writebuf != NULL) return 0; /* Don't bother for one word. */ @@ -2961,9 +2970,9 @@ linux_proc_xfer_memory (CORE_ADDR addr, 32-bit platforms (for instance, SPARC debugging a SPARC64 application). */ #ifdef HAVE_PREAD64 - if (pread64 (fd, myaddr, len, addr) != len) + if (pread64 (fd, readbuf, len, offset) != len) #else - if (lseek (fd, addr, SEEK_SET) == -1 || read (fd, myaddr, len) != len) + if (lseek (fd, offset, SEEK_SET) == -1 || read (fd, readbuf, len) != len) #endif ret = 0; else @@ -3060,9 +3069,6 @@ _initialize_linux_nat (void) struct sigaction action; extern void thread_db_init (struct target_ops *); - deprecated_child_ops.to_find_memory_regions = linux_nat_find_memory_regions; - deprecated_child_ops.to_make_corefile_notes = linux_nat_make_corefile_notes; - add_info ("proc", linux_nat_info_proc_cmd, "Show /proc process information about any running process.\n\ Specify any process id, or use the program being debugged by default.\n\ @@ -3162,3 +3168,176 @@ lin_thread_get_thread_signals (sigset_t /* ... except during a sigsuspend. */ sigdelset (&suspend_mask, cancel); } + +#ifndef FETCH_INFERIOR_REGISTERS + +/* Fetch register REGNUM from the inferior. */ + +static void +fetch_register (int regnum) +{ + CORE_ADDR addr; + size_t size; + PTRACE_TYPE_RET *buf; + int tid, i; + + if (CANNOT_FETCH_REGISTER (regnum)) + { + regcache_raw_supply (current_regcache, regnum, NULL); + return; + } + + /* GNU/Linux LWP ID's are process ID's. */ + tid = TIDGET (inferior_ptid); + if (tid == 0) + tid = PIDGET (inferior_ptid); /* Not a threaded program. */ + + /* This isn't really an address. But ptrace thinks of it as one. */ + addr = register_addr (regnum, 0); + size = register_size (current_gdbarch, regnum); + + gdb_assert ((size % sizeof (PTRACE_TYPE_RET)) == 0); + buf = alloca (size); + + /* Read the register contents from the inferior a chuck at the time. */ + for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++) + { + errno = 0; + buf[i] = ptrace (PT_READ_U, tid, (PTRACE_TYPE_ARG3) addr, 0); + if (errno != 0) + error ("Couldn't read register %s (#%d): %s.", REGISTER_NAME (regnum), + regnum, safe_strerror (errno)); + + addr += sizeof (PTRACE_TYPE_RET); + } + regcache_raw_supply (current_regcache, regnum, buf); +} + +/* Fetch register REGNUM from the inferior. If REGNUM is -1, do this + for all registers. */ + +void +fetch_inferior_registers (int regnum) +{ + if (regnum == -1) + for (regnum = 0; regnum < NUM_REGS; regnum++) + fetch_register (regnum); + else + fetch_register (regnum); +} + +/* Store register REGNUM into the inferior. */ + +static void +store_register (int regnum) +{ + CORE_ADDR addr; + size_t size; + PTRACE_TYPE_RET *buf; + int tid, i; + + if (CANNOT_STORE_REGISTER (regnum)) + return; + + /* GNU/Linux LWP ID's are process ID's. */ + tid = TIDGET (inferior_ptid); + if (tid == 0) + tid = PIDGET (inferior_ptid); /* Not a threaded program. */ + + /* This isn't really an address. But ptrace thinks of it as one. */ + addr = register_addr (regnum, 0); + size = register_size (current_gdbarch, regnum); + + gdb_assert ((size % sizeof (PTRACE_TYPE_RET)) == 0); + buf = alloca (size); + + /* Write the register contents into the inferior a chunk at the time. */ + regcache_raw_collect (current_regcache, regnum, buf); + for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++) + { + errno = 0; + ptrace (PT_WRITE_U, tid, (PTRACE_TYPE_ARG3) addr, buf[i]); + if (errno != 0) + error ("Couldn't write register %s (#%d): %s.", REGISTER_NAME (regnum), + regnum, safe_strerror (errno)); + + addr += sizeof (PTRACE_TYPE_RET); + } +} + +/* Store register REGNUM back into the inferior. If REGNUM is -1, do + this for all registers (including the floating point registers). */ + +void +store_inferior_registers (int regnum) +{ + if (regnum == -1) + for (regnum = 0; regnum < NUM_REGS; regnum++) + store_register (regnum); + else + store_register (regnum); +} + +#endif /* not FETCH_INFERIOR_REGISTERS. */ + +/* Handle GNU/Linux specific target objects. */ + +static LONGEST +linux_xfer_partial (struct target_ops *ops, enum target_object object, + const char *annex, void *readbuf, const void *writebuf, + ULONGEST offset, LONGEST len) +{ + if (object == TARGET_OBJECT_AUXV) + return procfs_xfer_auxv (ops, object, annex, readbuf, writebuf, + offset, len); + + if (object == TARGET_OBJECT_MEMORY) + { + LONGEST ret; + ret = linux_proc_xfer_memory (readbuf, writebuf, offset, len); + if (ret != 0) + return ret; + } + + return saved_xfer_partial (ops, object, annex, readbuf, writebuf, + offset, len); +} + +/* Create a generic GNU/Linux target vector. If T is non-NULL, base + the new target vector on it. */ + +struct target_ops * +linux_target (struct target_ops *t) +{ + if (t == NULL) + t = inf_ptrace_target (); + + /* Save inf-ptrace methods that we enhance. */ + saved_attach = t->to_attach; + saved_create_inferior = t->to_create_inferior; + saved_detach = t->to_attach; + saved_mourn_inferior = t->to_mourn_inferior; + saved_resume = t->to_resume; + saved_xfer_partial = t->to_xfer_partial; + + /* FIXME drow/2004-12-04: For now, these functions must keep the standard + names because only some GNU/Linux targets use inf-ptrace.o. When all + have been converted, these functions can be renamed and made static. */ + + t->to_wait = child_wait; + t->to_kill = kill_inferior; + t->to_pid_to_exec_file = child_pid_to_exec_file; + 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; + t->to_post_startup_inferior = linux_child_post_startup_inferior; + t->to_post_attach = child_post_attach; + t->to_follow_fork = child_follow_fork; + t->to_fetch_registers = fetch_inferior_registers; + t->to_store_registers = store_inferior_registers; + t->to_xfer_partial = linux_xfer_partial; + t->to_find_memory_regions = linux_nat_find_memory_regions; + t->to_make_corefile_notes = linux_nat_make_corefile_notes; + + return t; +} Index: linux-nat.h =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/linux-nat.h,v retrieving revision 1.6 diff -u -p -r1.6 linux-nat.h --- linux-nat.h 29 Mar 2004 18:07:14 -0000 1.6 +++ linux-nat.h 4 Dec 2004 23:00:31 -0000 @@ -68,10 +68,6 @@ struct lwp_info struct mem_attrib; struct target_ops; -extern int linux_proc_xfer_memory (CORE_ADDR addr, char *myaddr, int len, - int write, struct mem_attrib *attrib, - struct target_ops *target); - /* Find process PID's pending signal set from /proc/pid/status. */ void linux_proc_pending_signals (int pid, sigset_t *pending, sigset_t *blocked, sigset_t *ignored); @@ -86,3 +82,5 @@ extern void linux_child_post_startup_inf struct lwp_info *iterate_over_lwps (int (*callback) (struct lwp_info *, void *), void *data); + +struct target_ops *linux_target (struct target_ops *); Index: linux-thread-db.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/linux-thread-db.c,v retrieving revision 1.1 diff -u -p -r1.1 linux-thread-db.c --- linux-thread-db.c 14 Nov 2004 18:47:50 -0000 1.1 +++ linux-thread-db.c 4 Dec 2004 22:58:10 -0000 @@ -969,9 +969,10 @@ thread_db_wait (ptid_t ptid, struct targ return ptid; } -static int -thread_db_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write, - struct mem_attrib *attrib, struct target_ops *target) +static LONGEST +thread_db_xfer_partial (struct target_ops *ops, enum target_object object, + const char *annex, void *readbuf, const void *writebuf, + ULONGEST offset, LONGEST len) { struct cleanup *old_chain = save_inferior_ptid (); int xfer; @@ -987,8 +988,8 @@ thread_db_xfer_memory (CORE_ADDR memaddr } xfer = - target_beneath->deprecated_xfer_memory (memaddr, myaddr, len, write, - attrib, target); + target_beneath->to_xfer_partial (ops, object, annex, readbuf, writebuf, + offset, len); do_cleanups (old_chain); return xfer; @@ -1339,7 +1340,7 @@ init_thread_db_ops (void) thread_db_ops.to_wait = thread_db_wait; thread_db_ops.to_fetch_registers = thread_db_fetch_registers; thread_db_ops.to_store_registers = thread_db_store_registers; - thread_db_ops.deprecated_xfer_memory = thread_db_xfer_memory; + thread_db_ops.to_xfer_partial = thread_db_xfer_partial; thread_db_ops.to_kill = thread_db_kill; thread_db_ops.to_create_inferior = thread_db_create_inferior; thread_db_ops.to_post_startup_inferior = thread_db_post_startup_inferior; Index: m32r-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/m32r-linux-nat.c,v retrieving revision 1.1 diff -u -p -r1.1 m32r-linux-nat.c --- m32r-linux-nat.c 1 Oct 2004 07:29:34 -0000 1.1 +++ m32r-linux-nat.c 5 Dec 2004 06:12:57 -0000 @@ -24,6 +24,7 @@ #include "gdbcore.h" #include "regcache.h" #include "linux-nat.h" +#include "target.h" #include "gdb_assert.h" #include "gdb_string.h" @@ -233,3 +234,11 @@ store_inferior_registers (int regno) internal_error (__FILE__, __LINE__, "Got request to store bad register number %d.", regno); } + +void _initialize_m32r_linux_nat (void); + +void +_initialize_m32r_linux_nat (void) +{ + add_target (linux_target (NULL)); +} Index: m68klinux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/m68klinux-nat.c,v retrieving revision 1.26 diff -u -p -r1.26 m68klinux-nat.c --- m68klinux-nat.c 7 Sep 2004 21:55:11 -0000 1.26 +++ m68klinux-nat.c 5 Dec 2004 17:54:14 -0000 @@ -1,7 +1,7 @@ /* Motorola m68k native support for GNU/Linux. - Copyright 1996, 1998, 2000, 2001, 2002 Free Software Foundation, - Inc. + Copyright 1996, 1998, 2000, 2001, 2002, 2003, 2004 + Free Software Foundation, Inc. This file is part of GDB. @@ -27,6 +27,8 @@ #include "gdbcore.h" #include "gdb_string.h" #include "regcache.h" +#include "target.h" +#include "linux-nat.h" #include "m68k-tdep.h" @@ -616,8 +618,11 @@ static struct core_fns linux_elf_core_fn NULL /* next */ }; +void _initialize_m68k_linux_nat (void); + void _initialize_m68k_linux_nat (void) { deprecated_add_core_fns (&linux_elf_core_fns); + add_target (linux_target (NULL)); } Index: mips-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/mips-linux-nat.c,v retrieving revision 1.9 diff -u -p -r1.9 mips-linux-nat.c --- mips-linux-nat.c 30 Oct 2004 22:54:40 -0000 1.9 +++ mips-linux-nat.c 5 Dec 2004 06:09:14 -0000 @@ -1,6 +1,6 @@ /* Native-dependent code for GNU/Linux on MIPS processors. - Copyright 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -21,6 +21,8 @@ #include "defs.h" #include "mips-tdep.h" +#include "target.h" +#include "linux-nat.h" /* Pseudo registers can not be read. ptrace does not provide a way to read (or set) MIPS_PS_REGNUM, and there's no point in reading or @@ -62,3 +64,11 @@ mips_linux_cannot_store_register (int re else return 1; } + +void _initialize_mips_linux_nat (void); + +void +_initialize_mips_linux_nat (void) +{ + add_target (linux_target (NULL)); +} Index: ppc-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/ppc-linux-nat.c,v retrieving revision 1.52 diff -u -p -r1.52 ppc-linux-nat.c --- ppc-linux-nat.c 4 Aug 2004 17:45:30 -0000 1.52 +++ ppc-linux-nat.c 5 Dec 2004 06:12:39 -0000 @@ -1,7 +1,7 @@ /* PPC GNU/Linux native support. Copyright 1988, 1989, 1991, 1992, 1994, 1996, 2000, 2001, 2002, - 2003 Free Software Foundation, Inc. + 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -27,6 +27,8 @@ #include "gdbcore.h" #include "regcache.h" #include "gdb_assert.h" +#include "target.h" +#include "linux-nat.h" #include #include @@ -872,3 +874,11 @@ fill_fpregset (gdb_fpregset_t *fpregsetp right_fill_reg (tdep->ppc_fpscr_regnum, (fpp + 8 * 32)); } } + +void _initialize_ppc_linux_nat (void); + +void +_initialize_ppc_linux_nat (void) +{ + add_target (linux_target (NULL)); +} Index: s390-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/s390-nat.c,v retrieving revision 1.12 diff -u -p -r1.12 s390-nat.c --- s390-nat.c 18 Feb 2004 04:17:35 -0000 1.12 +++ s390-nat.c 5 Dec 2004 17:42:29 -0000 @@ -25,6 +25,8 @@ #include "tm.h" #include "regcache.h" #include "inferior.h" +#include "target.h" +#include "linux-nat.h" #include "s390-tdep.h" @@ -357,3 +359,10 @@ kernel_u_size (void) return sizeof (struct user); } +void _initialize_s390_nat (void); + +void +_initialize_s390_nat (void) +{ + add_target (linux_target (NULL)); +} Index: sparc-linux-nat.c =================================================================== RCS file: sparc-linux-nat.c diff -N sparc-linux-nat.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ sparc-linux-nat.c 5 Dec 2004 17:59:03 -0000 @@ -0,0 +1,32 @@ +/* Native-dependent code for GNU/Linux SPARC. + 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 "target.h" +#include "linux-nat.h" + +void _initialialize_sparc_linux_nat (void); + +void +_initialize_sparc_linux_nat (void) +{ + add_target (linux_target (NULL)); +} Index: sparc64-linux-nat.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/sparc64-linux-nat.c,v retrieving revision 1.2 diff -u -p -r1.2 sparc64-linux-nat.c --- sparc64-linux-nat.c 3 Jan 2004 10:08:44 -0000 1.2 +++ sparc64-linux-nat.c 5 Dec 2004 06:08:02 -0000 @@ -1,6 +1,6 @@ /* Native-dependent code for GNU/Linux UltraSPARC. - Copyright 2003 Free Software Foundation, Inc. + Copyright 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -23,6 +23,8 @@ #include "sparc64-tdep.h" #include "sparc-nat.h" +#include "target.h" +#include "linux-nat.h" static const struct sparc_gregset sparc64_linux_ptrace_gregset = { @@ -45,4 +47,6 @@ void _initialize_sparc64_linux_nat (void) { sparc_gregset = &sparc64_linux_ptrace_gregset; + + add_target (linux_target (NULL)); } Index: target.c =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/target.c,v retrieving revision 1.90 diff -u -p -r1.90 target.c --- target.c 8 Oct 2004 20:29:55 -0000 1.90 +++ target.c 5 Dec 2004 02:44:28 -0000 @@ -420,7 +420,7 @@ update_current_target (void) INHERIT (to_remove_fork_catchpoint, t); INHERIT (to_insert_vfork_catchpoint, t); INHERIT (to_remove_vfork_catchpoint, t); - INHERIT (to_follow_fork, t); + /* Do not inherit to_follow_fork. */ INHERIT (to_insert_exec_catchpoint, t); INHERIT (to_remove_exec_catchpoint, t); INHERIT (to_reported_exec_events_per_exec_call, t); @@ -577,9 +577,6 @@ update_current_target (void) de_fault (to_remove_vfork_catchpoint, (int (*) (int)) tcomplain); - de_fault (to_follow_fork, - (int (*) (int)) - target_ignore); de_fault (to_insert_exec_catchpoint, (int (*) (int)) tcomplain); @@ -1466,6 +1463,31 @@ target_async_mask (int mask) } /* Look through the list of possible targets for a target that can + follow forks. */ + +int +target_follow_fork (int follow_child) +{ + struct target_ops *t; + + for (t = current_target.beneath; t != NULL; t = t->beneath) + { + if (t->to_follow_fork != NULL) + { + int retval = t->to_follow_fork (t, follow_child); + if (targetdebug) + fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n", + follow_child, retval); + return retval; + } + } + + /* Some target returned a fork event, but did not know how to follow it. */ + internal_error (__FILE__, __LINE__, + "could not find a target to follow fork"); +} + +/* Look through the list of possible targets for a target that can execute a run or attach command without any other data. This is used to locate the default process stratum. @@ -2310,17 +2332,6 @@ debug_to_remove_vfork_catchpoint (int pi } static int -debug_to_follow_fork (int follow_child) -{ - int retval = debug_target.to_follow_fork (follow_child); - - fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n", - follow_child, retval); - - return retval; -} - -static int debug_to_insert_exec_catchpoint (int pid) { int retval; @@ -2516,7 +2527,6 @@ setup_target_debug (void) current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint; current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint; current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint; - current_target.to_follow_fork = debug_to_follow_fork; current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint; current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint; current_target.to_reported_exec_events_per_exec_call = debug_to_reported_exec_events_per_exec_call; Index: target.h =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/target.h,v retrieving revision 1.65 diff -u -p -r1.65 target.h --- target.h 8 Oct 2004 20:29:55 -0000 1.65 +++ target.h 5 Dec 2004 02:19:54 -0000 @@ -362,7 +362,7 @@ struct target_ops int (*to_remove_fork_catchpoint) (int); int (*to_insert_vfork_catchpoint) (int); int (*to_remove_vfork_catchpoint) (int); - int (*to_follow_fork) (int); + int (*to_follow_fork) (struct target_ops *, int); int (*to_insert_exec_catchpoint) (int); int (*to_remove_exec_catchpoint) (int); int (*to_reported_exec_events_per_exec_call) (void); @@ -581,7 +581,7 @@ extern int child_remove_vfork_catchpoint extern void child_acknowledge_created_inferior (int); -extern int child_follow_fork (int); +extern int child_follow_fork (struct target_ops *, int); extern int child_insert_exec_catchpoint (int); @@ -746,8 +746,7 @@ extern void target_load (char *arg, int This function returns 1 if the inferior should not be resumed (i.e. there is another event pending). */ -#define target_follow_fork(follow_child) \ - (*current_target.to_follow_fork) (follow_child) +int target_follow_fork (int follow_child); /* On some targets, we can catch an inferior exec event when it occurs. These functions insert/remove an already-created Index: config/alpha/alpha-linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/alpha/alpha-linux.mh,v retrieving revision 1.17 diff -u -p -r1.17 alpha-linux.mh --- config/alpha/alpha-linux.mh 14 Nov 2004 18:47:50 -0000 1.17 +++ config/alpha/alpha-linux.mh 5 Dec 2004 18:00:21 -0000 @@ -1,6 +1,6 @@ # Host: Little-endian Alpha running Linux NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o corelow.o alpha-nat.o \ +NATDEPFILES= inf-ptrace.o corelow.o alpha-nat.o alpha-linux-nat.o \ fork-child.o proc-service.o linux-thread-db.o gcore.o \ linux-nat.o Index: config/arm/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/arm/linux.mh,v retrieving revision 1.15 diff -u -p -r1.15 linux.mh --- config/arm/linux.mh 14 Nov 2004 18:47:51 -0000 1.15 +++ config/arm/linux.mh 5 Dec 2004 06:16:27 -0000 @@ -1,7 +1,7 @@ # Host: ARM based machine running GNU/Linux NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ +NATDEPFILES= inf-ptrace.o fork-child.o corelow.o \ core-regset.o arm-linux-nat.o gcore.o \ proc-service.o linux-thread-db.o linux-nat.o Index: config/i386/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/i386/linux.mh,v retrieving revision 1.17 diff -u -p -r1.17 linux.mh --- config/i386/linux.mh 14 Nov 2004 18:47:51 -0000 1.17 +++ config/i386/linux.mh 4 Dec 2004 20:45:08 -0000 @@ -1,7 +1,7 @@ # Host: Intel 386 running GNU/Linux. NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ +NATDEPFILES= inf-ptrace.o fork-child.o corelow.o \ core-aout.o i386-nat.o i386-linux-nat.o \ proc-service.o linux-thread-db.o gcore.o \ linux-nat.o Index: config/i386/linux64.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/i386/linux64.mh,v retrieving revision 1.5 diff -u -p -r1.5 linux64.mh --- config/i386/linux64.mh 14 Nov 2004 18:47:51 -0000 1.5 +++ config/i386/linux64.mh 5 Dec 2004 06:16:34 -0000 @@ -1,5 +1,5 @@ # Host: GNU/Linux x86-64 -NATDEPFILES= infptrace.o inftarg.o fork-child.o \ +NATDEPFILES= inf-ptrace.o fork-child.o \ i386-nat.o amd64-nat.o amd64-linux-nat.o linux-nat.o \ proc-service.o linux-thread-db.o gcore.o NAT_FILE= nm-linux64.h Index: config/i386/nm-linux.h =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/i386/nm-linux.h,v retrieving revision 1.21 diff -u -p -r1.21 nm-linux.h --- config/i386/nm-linux.h 20 Sep 2004 16:39:35 -0000 1.21 +++ config/i386/nm-linux.h 5 Dec 2004 06:03:11 -0000 @@ -79,16 +79,15 @@ extern int cannot_store_register (int re #define FILL_FPXREGSET #endif -/* Override child_resume in `infptrace.c'. */ -#define DEPRECATED_CHILD_RESUME - /* `linux-nat.c' and `i386-nat.c' have their own versions of child_post_startup_inferior. Define this to use the copy in `i386-linux-nat.c' instead, which calls both. - NOTE drow/2003-08-17: This is ugly beyond words, but properly - fixing it will require some serious surgery. Ideally the target - stack could be used for this. */ + NOTE drow/2004-12-05: This can be removed once the GNU/Linux + single-threaded and multi-threaded vectors are unified. Until + then linux-nat.c needs to reference the right function named + 'child_post_startup_inferior'. */ + #define LINUX_CHILD_POST_STARTUP_INFERIOR #endif /* nm-linux.h */ Index: config/i386/nm-linux64.h =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/i386/nm-linux64.h,v retrieving revision 1.2 diff -u -p -r1.2 nm-linux64.h --- config/i386/nm-linux64.h 15 Aug 2004 16:10:23 -0000 1.2 +++ config/i386/nm-linux64.h 5 Dec 2004 06:03:17 -0000 @@ -57,7 +57,13 @@ extern unsigned long amd64_linux_dr_get_ /* `linux-nat.c' and `i386-nat.c' have their own versions of child_post_startup_inferior. Define this to use the copy in - `x86-86-linux-nat.c' instead, which calls both. */ + `amd64-linux-nat.c' instead, which calls both. + + NOTE drow/2004-12-05: This can be removed once the GNU/Linux + single-threaded and multi-threaded vectors are unified. Until + then linux-nat.c needs to reference the right function named + 'child_post_startup_inferior'. */ + #define LINUX_CHILD_POST_STARTUP_INFERIOR #endif /* nm-linux64.h */ Index: config/ia64/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/ia64/linux.mh,v retrieving revision 1.18 diff -u -p -r1.18 linux.mh --- config/ia64/linux.mh 14 Nov 2004 18:47:51 -0000 1.18 +++ config/ia64/linux.mh 5 Dec 2004 06:16:39 -0000 @@ -1,7 +1,7 @@ # Host: Intel IA-64 running GNU/Linux NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o gcore.o \ +NATDEPFILES= inf-ptrace.o fork-child.o corelow.o gcore.o \ core-aout.o core-regset.o ia64-linux-nat.o \ proc-service.o linux-thread-db.o linux-nat.o Index: config/ia64/nm-linux.h =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/ia64/nm-linux.h,v retrieving revision 1.16 diff -u -p -r1.16 nm-linux.h --- config/ia64/nm-linux.h 8 Oct 2004 17:30:48 -0000 1.16 +++ config/ia64/nm-linux.h 5 Dec 2004 05:49:21 -0000 @@ -75,15 +75,4 @@ extern int ia64_linux_insert_watchpoint extern int ia64_linux_remove_watchpoint (ptid_t ptid, CORE_ADDR addr, int len); -#include "target.h" - -#define NATIVE_XFER_UNWIND_TABLE ia64_linux_xfer_unwind_table -extern LONGEST ia64_linux_xfer_unwind_table (struct target_ops *ops, - enum target_object object, - const char *annex, - void *readbuf, - const void *writebuf, - ULONGEST offset, - LONGEST len); - #endif /* #ifndef NM_LINUX_H */ Index: config/m32r/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/m32r/linux.mh,v retrieving revision 1.2 diff -u -p -r1.2 linux.mh --- config/m32r/linux.mh 14 Nov 2004 18:47:51 -0000 1.2 +++ config/m32r/linux.mh 5 Dec 2004 06:16:45 -0000 @@ -1,7 +1,7 @@ # Host: M32R based machine running GNU/Linux NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \ +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 Index: config/m68k/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/m68k/linux.mh,v retrieving revision 1.16 diff -u -p -r1.16 linux.mh --- config/m68k/linux.mh 14 Nov 2004 18:47:51 -0000 1.16 +++ config/m68k/linux.mh 5 Dec 2004 06:16:50 -0000 @@ -1,7 +1,7 @@ # Host: Motorola m68k running GNU/Linux. NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o \ +NATDEPFILES= inf-ptrace.o fork-child.o \ corelow.o core-aout.o m68klinux-nat.o gcore.o \ proc-service.o linux-thread-db.o linux-nat.o Index: config/mips/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/mips/linux.mh,v retrieving revision 1.9 diff -u -p -r1.9 linux.mh --- config/mips/linux.mh 14 Nov 2004 18:47:51 -0000 1.9 +++ config/mips/linux.mh 5 Dec 2004 06:16:57 -0000 @@ -1,6 +1,6 @@ # Host: Linux/MIPS NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o mips-linux-nat.o \ +NATDEPFILES= inf-ptrace.o fork-child.o mips-linux-nat.o \ linux-thread-db.o proc-service.o gcore.o \ linux-nat.o Index: config/pa/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/pa/linux.mh,v retrieving revision 1.5 diff -u -p -r1.5 linux.mh --- config/pa/linux.mh 14 Nov 2004 18:47:51 -0000 1.5 +++ config/pa/linux.mh 5 Dec 2004 06:17:05 -0000 @@ -1,7 +1,7 @@ # Host: Hewlett-Packard PA-RISC machine, running Linux XDEPFILES= NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o gcore.o \ +NATDEPFILES= inf-ptrace.o fork-child.o corelow.o gcore.o \ core-regset.o hppa-linux-nat.o \ proc-service.o linux-thread-db.o linux-nat.o Index: config/powerpc/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/powerpc/linux.mh,v retrieving revision 1.18 diff -u -p -r1.18 linux.mh --- config/powerpc/linux.mh 14 Nov 2004 18:47:51 -0000 1.18 +++ config/powerpc/linux.mh 5 Dec 2004 06:17:11 -0000 @@ -3,7 +3,7 @@ XM_CLIBS= NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o \ +NATDEPFILES= inf-ptrace.o fork-child.o \ ppc-linux-nat.o proc-service.o linux-thread-db.o \ gcore.o linux-nat.o Index: config/powerpc/ppc64-linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/powerpc/ppc64-linux.mh,v retrieving revision 1.7 diff -u -p -r1.7 ppc64-linux.mh --- config/powerpc/ppc64-linux.mh 14 Nov 2004 18:47:51 -0000 1.7 +++ config/powerpc/ppc64-linux.mh 5 Dec 2004 06:17:16 -0000 @@ -3,7 +3,7 @@ XM_CLIBS= NAT_FILE= nm-ppc64-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o \ +NATDEPFILES= inf-ptrace.o fork-child.o \ ppc-linux-nat.o proc-service.o linux-thread-db.o \ gcore.o linux-nat.o Index: config/s390/s390.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/s390/s390.mh,v retrieving revision 1.12 diff -u -p -r1.12 s390.mh --- config/s390/s390.mh 14 Nov 2004 18:47:52 -0000 1.12 +++ config/s390/s390.mh 5 Dec 2004 06:17:28 -0000 @@ -1,5 +1,5 @@ # Host: S390, running Linux NAT_FILE= nm-linux.h -NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o s390-nat.o \ +NATDEPFILES= inf-ptrace.o fork-child.o corelow.o s390-nat.o \ gcore.o linux-thread-db.o proc-service.o linux-nat.o LOADLIBES = -ldl -rdynamic Index: config/sparc/linux.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/sparc/linux.mh,v retrieving revision 1.15 diff -u -p -r1.15 linux.mh --- config/sparc/linux.mh 14 Nov 2004 18:47:52 -0000 1.15 +++ config/sparc/linux.mh 5 Dec 2004 18:00:27 -0000 @@ -1,8 +1,7 @@ # Host: GNU/Linux SPARC NAT_FILE= nm-linux.h -NATDEPFILES= sparc-nat.o sparc-sol2-nat.o \ +NATDEPFILES= sparc-nat.o sparc-sol2-nat.o sparc-linux-nat.o \ corelow.o core-regset.o fork-child.o inf-ptrace.o \ - infptrace.o inftarg.o \ proc-service.o linux-thread-db.o \ gcore.o linux-nat.o Index: config/sparc/linux64.mh =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/sparc/linux64.mh,v retrieving revision 1.6 diff -u -p -r1.6 linux64.mh --- config/sparc/linux64.mh 14 Nov 2004 18:47:52 -0000 1.6 +++ config/sparc/linux64.mh 5 Dec 2004 06:18:38 -0000 @@ -2,7 +2,7 @@ NAT_FILE= nm-linux.h NATDEPFILES= sparc-nat.o sparc64-nat.o sparc-sol2-nat.o sparc64-linux-nat.o \ corelow.o core-regset.o \ - fork-child.o inf-ptrace.o infptrace.o inftarg.o \ + fork-child.o inf-ptrace.o \ proc-service.o linux-thread-db.o \ gcore.o linux-nat.o Index: config/djgpp/fnchange.lst =================================================================== RCS file: /big/fsf/rsync/src-cvs/src/gdb/config/djgpp/fnchange.lst,v retrieving revision 1.85 diff -u -p -r1.85 fnchange.lst --- config/djgpp/fnchange.lst 20 Nov 2004 18:08:32 -0000 1.85 +++ config/djgpp/fnchange.lst 5 Dec 2004 18:15:50 -0000 @@ -79,6 +79,8 @@ @V@/gdb/alphabsd-nat.c @V@/gdb/alphb-nat.c @V@/gdb/alphabsd-tdep.c @V@/gdb/alphb-tdep.c @V@/gdb/alphanbsd-tdep.c @V@/gdb/alphnb-tdep.c +@V@/gdb/alpha-linux-nat.c @V@/gdb/alphl-nat.c +@V@/gdb/alpha-linux-tdep.c @V@/gdb/alphl-tdep.c @V@/gdb/arm-linux-nat.c @V@/gdb/armlin-nat.c @V@/gdb/arm-linux-tdep.c @V@/gdb/armlin-tdep.c @V@/gdb/armnbsd-nat.c @V@/gdb/armnbd-nat.c @@ -186,6 +188,8 @@ @V@/gdb/sparc64-sol2-tdep.c @V@/gdb/sp64s2-tdep.c @V@/gdb/sparcnbsd-nat.c @V@/gdb/spnb-nat.c @V@/gdb/sparcnbsd-tdep.c @V@/gdb/spnb-tdep.c +@V@/gdb/sparc-linux-nat.c @V@/gdb/splx-nat.c +@V@/gdb/sparc-linux-tdep.c @V@/gdb/splx-tdep.c @V@/gdb/sparc-sol2-nat.c @V@/gdb/spsol2-nat.c @V@/gdb/sparc-sol2-tdep.c @V@/gdb/spsol2-tdep.c @V@/gdb/testsuite/.gdbinit @V@/gdb/testsuite/gdb.ini