* 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 (amd64_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(amd64_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(amd64_linux_child_post_start_inferior): Renamed from
	child_post_startup_inferior and made static.  Call
	super_post_startup_inferior.
	(super_post_startup_inferior): New.
	(_initialize_amd64_linux_nat): Set it.  Call linux_target and
	add_target.
	* arm-linux-nat.c (arm_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(arm_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_arm_linux_nat): Add a prototype.  Use linux_target and
	add_target.
	* hppa-linux-nat.c (hppa_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(hppa_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_hppa_linux_nat): New function.
	* i386-linux-nat.c (i386_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(i386_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(i386_linux_resume): Renamed from child_resume and made static.
	(i386_linux_child_post_start_inferior): Renamed from
	child_post_startup_inferior and made static.  Call
	super_post_startup_inferior.
	(super_post_startup_inferior): New.
	(_initialize_i386_linux_nat): New function.
	* i386-nat.c: Remove LINUX_CHILD_POST_STARTUP_INFERIOR #ifndef.
	* ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove.
	(super_xfer_partial): New.
	(ia64_linux_xfer_partial): New function.  Use it.
	(_initialize_ia64_linux_nat): New function.
	* ia64-tdep.c (getunwind_table): Revert 2005-06-08 change; use
	target_read_partial and document the problem.
	* inf-ptrace.c (inf_ptrace_fetch_register): Use
	CANNOT_FETCH_REGISTER.  Fix some comments.
	(inf_ptrace_store_register): Use CANNOT_STORE_REGISTER.  Fix some
	comments.
	* linux-nat.c: Include "inf-ptrace.h" and "auxv.h".
	(linux_ops, super_xfer_partial): New variables.
	(linux_child_post_startup_inferior): Make static.
	(child_post_startup_inferior): Delete.
	(linux_nat_attach, linux_nat_detach, resume_callback)
	(linux_nat_resume, linux_nat_wait, linux_nat_create_inferior)
	(linux_nat_mourn_inferior): Use linux_ops instead of
	deprecated_child_ops.
	(child_wait): Do not depend on CHILD_WAIT.
	(linux_nat_xfer_memory): Remove, replace by ...
	(linux_nat_xfer_partial): ... this.  Use linux_ops->to_xfer_partial
	instead of linux_proc_xfer_memory and child_xfer_memory.
	(linux_nat_fetch_registers, linux_nat_store_registers)
	(linux_nat_child_post_startup_inferior): New functions.
	(init_linux_nat_ops): Use the new functions.
	(linux_proc_xfer_memory): Remove, replace by ...
	(linux_proc_xfer_partial): ... this.  Make static.
	(linux_xfer_partial, linux_register_u_offset, linux_target): New
	functions.
	(_initialize_linux_nat): Do not modify deprecated_child_ops.
	* linux-nat.h (linux_proc_xfer_memory): Remove prototype.
	(struct mem_attrib, struct target_ops): Remove forward declarations.
	(linux_child_post_startup_inferior): Remove prototype.
	(linux_target): Add prototype.
	* linux-thread-db.c (thread_db_xfer_memory): Remove, replace by ...
	(thread_db_xfer_partial): ... this.
	(init_thread_db_ops): Set to_xfer_partial instead of
	deprecated_xfer_memory.
	* m32r-linux-nat.c (m32r_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(m32r_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_m32r_linux_nat): New function.
	* m68klinux-nat.c (m68k_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(m68k_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(old_fetch_inferior_registers, old_store_inferior_registers): Made
	static.
	(_initialize_m68k_linux_nat): Use linux_target and add_target.
	* mips-linux-nat.c (_initialize_mips_linux_nat): New function.
	* ppc-linux-nat.c (ppc_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(ppc_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_ppc_linux_nat): New function.
	* s390-nat.c (s390_linux_fetch_inferior_registers): Renamed
	from fetch_inferior_registers and made static.
	(s390_linux_store_inferior_registers): Renamed from
	store_inferior_registers and made static.
	(_initialize_s390_nat): New function.
	* sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Use
	linux_target and add_target.
	* config/nm-linux.h: Don't include "auxv.h".
	(struct target_waitstatus, child_wait, CHILD_WAIT)
	(CHILD_PID_TO_EXEC_FILE, CHILD_INSERT_FORK_CATCHPOINT)
	(CHILD_INSERT_VFORK_CATCHPOINT, CHILD_INSERT_EXEC_CATCHPOINT)
	(CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH, CHILD_FOLLOW_FORK)
	(DEPRECATED_KILL_INFERIOR, NATIVE_XFER_AUXV): Delete.
	* 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): Don't define.
	* config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR):
	Don't define.
	* config/ia64/nm-linux.h: Don't include "target.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.
This commit is contained in:
Daniel Jacobowitz 2005-09-10 18:11:14 +00:00
parent a6cd0eb35d
commit 10d6c8cd3f
40 changed files with 710 additions and 224 deletions

View File

@ -1,3 +1,141 @@
2005-09-10 Daniel Jacobowitz <dan@codesourcery.com>
Ulrich Weigand <uweigand@de.ibm.com>
* 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 (amd64_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(amd64_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(amd64_linux_child_post_start_inferior): Renamed from
child_post_startup_inferior and made static. Call
super_post_startup_inferior.
(super_post_startup_inferior): New.
(_initialize_amd64_linux_nat): Set it. Call linux_target and
add_target.
* arm-linux-nat.c (arm_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(arm_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_arm_linux_nat): Add a prototype. Use linux_target and
add_target.
* hppa-linux-nat.c (hppa_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(hppa_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_hppa_linux_nat): New function.
* i386-linux-nat.c (i386_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(i386_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(i386_linux_resume): Renamed from child_resume and made static.
(i386_linux_child_post_start_inferior): Renamed from
child_post_startup_inferior and made static. Call
super_post_startup_inferior.
(super_post_startup_inferior): New.
(_initialize_i386_linux_nat): New function.
* i386-nat.c: Remove LINUX_CHILD_POST_STARTUP_INFERIOR #ifndef.
* ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove.
(super_xfer_partial): New.
(ia64_linux_xfer_partial): New function. Use it.
(_initialize_ia64_linux_nat): New function.
* ia64-tdep.c (getunwind_table): Revert 2005-06-08 change; use
target_read_partial and document the problem.
* inf-ptrace.c (inf_ptrace_fetch_register): Use
CANNOT_FETCH_REGISTER. Fix some comments.
(inf_ptrace_store_register): Use CANNOT_STORE_REGISTER. Fix some
comments.
* linux-nat.c: Include "inf-ptrace.h" and "auxv.h".
(linux_ops, super_xfer_partial): New variables.
(linux_child_post_startup_inferior): Make static.
(child_post_startup_inferior): Delete.
(linux_nat_attach, linux_nat_detach, resume_callback)
(linux_nat_resume, linux_nat_wait, linux_nat_create_inferior)
(linux_nat_mourn_inferior): Use linux_ops instead of
deprecated_child_ops.
(child_wait): Do not depend on CHILD_WAIT.
(linux_nat_xfer_memory): Remove, replace by ...
(linux_nat_xfer_partial): ... this. Use linux_ops->to_xfer_partial
instead of linux_proc_xfer_memory and child_xfer_memory.
(linux_nat_fetch_registers, linux_nat_store_registers)
(linux_nat_child_post_startup_inferior): New functions.
(init_linux_nat_ops): Use the new functions.
(linux_proc_xfer_memory): Remove, replace by ...
(linux_proc_xfer_partial): ... this. Make static.
(linux_xfer_partial, linux_register_u_offset, linux_target): New
functions.
(_initialize_linux_nat): Do not modify deprecated_child_ops.
* linux-nat.h (linux_proc_xfer_memory): Remove prototype.
(struct mem_attrib, struct target_ops): Remove forward declarations.
(linux_child_post_startup_inferior): Remove prototype.
(linux_target): Add prototype.
* linux-thread-db.c (thread_db_xfer_memory): Remove, replace by ...
(thread_db_xfer_partial): ... this.
(init_thread_db_ops): Set to_xfer_partial instead of
deprecated_xfer_memory.
* m32r-linux-nat.c (m32r_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(m32r_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_m32r_linux_nat): New function.
* m68klinux-nat.c (m68k_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(m68k_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(old_fetch_inferior_registers, old_store_inferior_registers): Made
static.
(_initialize_m68k_linux_nat): Use linux_target and add_target.
* mips-linux-nat.c (_initialize_mips_linux_nat): New function.
* ppc-linux-nat.c (ppc_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(ppc_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_ppc_linux_nat): New function.
* s390-nat.c (s390_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(s390_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_s390_nat): New function.
* sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Use
linux_target and add_target.
* config/nm-linux.h: Don't include "auxv.h".
(struct target_waitstatus, child_wait, CHILD_WAIT)
(CHILD_PID_TO_EXEC_FILE, CHILD_INSERT_FORK_CATCHPOINT)
(CHILD_INSERT_VFORK_CATCHPOINT, CHILD_INSERT_EXEC_CATCHPOINT)
(CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH, CHILD_FOLLOW_FORK)
(DEPRECATED_KILL_INFERIOR, NATIVE_XFER_AUXV): Delete.
* 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): Don't define.
* config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR):
Don't define.
* config/ia64/nm-linux.h: Don't include "target.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.
2005-09-08 Kevin Buettner <kevinb@redhat.com>
From Kevin Buettner, Andrew Cagney, Jackie Smith Cashion, and

View File

@ -1374,7 +1374,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 \
@ -1416,6 +1416,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 \
@ -1439,6 +1440,7 @@ ALLDEPFILES = \
ser-go32.c ser-pipe.c ser-tcp.c \
sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.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 \
@ -1669,6 +1671,7 @@ 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)
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) $(solib_svr4_h) $(alpha_tdep_h)
alpha-mdebug-tdep.o: alpha-mdebug-tdep.c $(defs_h) $(frame_h) \
@ -1699,7 +1702,7 @@ amd64fbsd-tdep.o: amd64fbsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \
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)
@ -1732,7 +1735,8 @@ arch-utils.o: arch-utils.c $(defs_h) $(arch_utils_h) $(buildsym_h) \
$(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) \
@ -2013,7 +2017,8 @@ hppa-hpux-tdep.o: hppa-hpux-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h) \
$(hppa_tdep_h) $(solib_som_h) $(solib_pa64_h) $(regset_h) \
$(exceptions_h) $(gdb_string_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) \
@ -2050,7 +2055,7 @@ i386gnu-tdep.o: i386gnu-tdep.c $(defs_h) $(osabi_h) $(i386_tdep_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) $(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) \
@ -2092,7 +2097,7 @@ i387-tdep.o: i387-tdep.c $(defs_h) $(doublest_h) $(floatformat_h) $(frame_h) \
$(gdb_assert_h) $(gdb_string_h) $(i386_tdep_h) $(i387_tdep_h)
ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \
$(target_h) $(gdbcore_h) $(regcache_h) $(ia64_tdep_h) $(gdb_wait_h) \
$(gregset_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) $(osabi_h) $(solib_svr4_h)
ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \
@ -2174,8 +2179,8 @@ linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \
$(objc_lang_h) $(linespec_h) $(exceptions_h)
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)
$(gdbcmd_h) $(regcache_h) $(inf_ptrace.h) $(auxv.h) $(elf_bfd_h) \
$(gregset_h) $(gdbcore_h) $(gdbthread_h) $(gdb_stat_h)
linux-thread-db.o: linux-thread-db.c $(defs_h) $(gdb_assert_h) \
$(gdb_proc_service_h) $(gdb_thread_db_h) $(bfd_h) $(exceptions_h) \
$(gdbthread_h) $(inferior_h) $(symfile_h) $(objfiles_h) $(target_h) \
@ -2194,7 +2199,7 @@ m2-valprint.o: m2-valprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \
$(m2_lang_h) $(c_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) \
$(regset_h) $(gdb_string_h) $(glibc_tdep_h) $(solib_svr4_h) \
@ -2225,7 +2230,7 @@ m68kbsd-tdep.o: m68kbsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_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) \
@ -2276,7 +2281,8 @@ mips64obsd-tdep.o: mips64obsd-tdep.c $(defs_h) $(osabi_h) $(regcache_h) \
$(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) \
@ -2369,7 +2375,8 @@ ppcbug-rom.o: ppcbug-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
$(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) \
@ -2480,7 +2487,7 @@ rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
$(ppc_tdep_h) $(gdb_assert_h) $(dis_asm_h) $(trad_frame_h) \
$(frame_unwind_h) $(frame_base_h) $(reggroups_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) \
@ -2580,7 +2587,7 @@ sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $(defs_h) $(frame_h) \
$(target_h) $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) \
$(sparc64_tdep_h) $(solib_svr4_h)
sparc64-linux-nat.o: sparc64-linux-nat.c $(defs_h) $(sparc64_tdep_h) \
$(sparc_nat_h)
$(sparc_nat_h) $(inferior_h) $(target_h) $(linux_nat_h)
sparc64-linux-tdep.o: sparc64-linux-tdep.c $(defs_h) $(frame_h) \
$(frame_unwind_h) $(gdbarch_h) $(osabi_h) $(solib_svr4_h) \
$(symtab_h) $(trad_frame_h) $(tramp_frame_h) $(sparc64_tdep_h)
@ -2603,6 +2610,8 @@ sparc64-tdep.o: sparc64-tdep.c $(defs_h) $(arch_utils_h) $(dwarf2_frame_h) \
$(gdbcore_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) $(inferior_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) $(tramp_frame_h) \

32
gdb/alpha-linux-nat.c Normal file
View File

@ -0,0 +1,32 @@
/* Low level Alpha GNU/Linux interface, for GDB when running native.
Copyright 2005
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 ());
}

View File

@ -1,6 +1,6 @@
/* Native-dependent code for GNU/Linux x86-64.
Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@ -147,8 +147,8 @@ fill_fpregset (elf_fpregset_t *fpregsetp, int regnum)
this for all registers (including the floating point and SSE
registers). */
void
fetch_inferior_registers (int regnum)
static void
amd64_linux_fetch_inferior_registers (int regnum)
{
int tid;
@ -184,8 +184,8 @@ fetch_inferior_registers (int regnum)
-1, do this for all registers (including the floating-point and SSE
registers). */
void
store_inferior_registers (int regnum)
static void
amd64_linux_store_inferior_registers (int regnum)
{
int tid;
@ -360,11 +360,13 @@ ps_get_thread_area (const struct ps_prochandle *ph,
}
void
child_post_startup_inferior (ptid_t ptid)
static void (*super_post_startup_inferior) (ptid_t ptid);
static void
amd64_linux_child_post_startup_inferior (ptid_t ptid)
{
i386_cleanup_dregs ();
linux_child_post_startup_inferior (ptid);
super_post_startup_inferior (ptid);
}
@ -374,6 +376,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 +386,18 @@ _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 ();
/* Override the GNU/Linux inferior startup hook. */
super_post_startup_inferior = t->to_post_startup_inferior;
t->to_post_startup_inferior = amd64_linux_child_post_startup_inferior;
/* Add our register access methods. */
t->to_fetch_registers = amd64_linux_fetch_inferior_registers;
t->to_store_registers = amd64_linux_store_inferior_registers;
/* Register the target. */
add_target (t);
}

View File

@ -1,5 +1,6 @@
/* GNU/Linux on ARM native support.
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright 1999, 2000, 2001, 2002, 2004, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -23,6 +24,8 @@
#include "gdbcore.h"
#include "gdb_string.h"
#include "regcache.h"
#include "target.h"
#include "linux-nat.h"
#include "arm-tdep.h"
@ -547,8 +550,8 @@ store_regs (void)
regno == -1, otherwise fetch all general registers or all floating
point registers depending upon the value of regno. */
void
fetch_inferior_registers (int regno)
static void
arm_linux_fetch_inferior_registers (int regno)
{
if (-1 == regno)
{
@ -569,8 +572,8 @@ fetch_inferior_registers (int regno)
regno == -1, otherwise store all general registers or all floating
point registers depending upon the value of regno. */
void
store_inferior_registers (int regno)
static void
arm_linux_store_inferior_registers (int regno)
{
if (-1 == regno)
{
@ -716,8 +719,22 @@ get_linux_version (unsigned int *vmajor,
return ((*vmajor << 16) | (*vminor << 8) | *vrelease);
}
void _initialize_arm_linux_nat (void);
void
_initialize_arm_linux_nat (void)
{
struct target_ops *t;
os_version = get_linux_version (&os_major, &os_minor, &os_release);
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Add our register access methods. */
t->to_fetch_registers = arm_linux_fetch_inferior_registers;
t->to_store_registers = arm_linux_store_inferior_registers;
/* Register the target. */
add_target (t);
}

View File

@ -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

View File

@ -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

View File

@ -83,6 +83,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
@ -201,6 +203,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

View File

@ -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

View File

@ -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

View File

@ -1,7 +1,8 @@
/* Native support for GNU/Linux x86.
Copyright 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
1998, 1999, 2000, 2001, 2002, 2003, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -79,16 +80,4 @@ extern int cannot_store_register (int regno);
#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. */
#define LINUX_CHILD_POST_STARTUP_INFERIOR
#endif /* nm-linux.h */

View File

@ -1,6 +1,6 @@
/* Native support for GNU/Linux x86-64.
Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
@ -55,9 +55,4 @@ extern unsigned long amd64_linux_dr_get_status (void);
/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
#define FETCH_INFERIOR_REGISTERS
/* `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. */
#define LINUX_CHILD_POST_STARTUP_INFERIOR
#endif /* nm-linux64.h */

View File

@ -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

View File

@ -1,6 +1,6 @@
/* Native support for GNU/Linux, for GDB, the GNU debugger.
Copyright 1999, 2000, 2001, 2004
Copyright 1999, 2000, 2001, 2004, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -75,15 +75,4 @@ extern int ia64_linux_insert_watchpoint (ptid_t ptid, CORE_ADDR addr,
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 */

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,6 +1,7 @@
/* Native support for GNU/Linux.
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -42,11 +43,6 @@ struct target_ops;
#endif
/* Override child_wait in `inftarg.c'. */
struct target_waitstatus;
extern ptid_t child_wait (ptid_t ptid, struct target_waitstatus *ourstatus);
#define CHILD_WAIT
extern void lin_lwp_attach_lwp (ptid_t ptid, int verbose);
#define ATTACH_LWP(ptid, verbose) lin_lwp_attach_lwp ((ptid), (verbose))
@ -58,17 +54,3 @@ extern void lin_thread_get_thread_signals (sigset_t *mask);
#define GDB_GREGSET_T elf_gregset_t
#define GDB_FPREGSET_T elf_fpregset_t
/* Override child_pid_to_exec_file in 'inftarg.c'. */
#define CHILD_PID_TO_EXEC_FILE
#define CHILD_INSERT_FORK_CATCHPOINT
#define CHILD_INSERT_VFORK_CATCHPOINT
#define CHILD_INSERT_EXEC_CATCHPOINT
#define CHILD_POST_STARTUP_INFERIOR
#define CHILD_POST_ATTACH
#define CHILD_FOLLOW_FORK
#define DEPRECATED_KILL_INFERIOR
#define NATIVE_XFER_AUXV procfs_xfer_auxv
#include "auxv.h" /* Declares it. */

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,6 +1,6 @@
/* Functions specific to running GDB native on HPPA running GNU/Linux.
Copyright 2004 Free Software Foundation, Inc.
Copyright 2004, 2005 Free Software Foundation, Inc.
This file is part of GDB.
@ -24,6 +24,8 @@
#include "regcache.h"
#include "gdb_string.h"
#include "inferior.h"
#include "target.h"
#include "linux-nat.h"
#include <sys/procfs.h>
#include <sys/ptrace.h>
@ -267,8 +269,8 @@ store_register (int regno)
regno == -1, otherwise fetch all general registers or all floating
point registers depending upon the value of regno. */
void
fetch_inferior_registers (int regno)
static void
hppa_linux_fetch_inferior_registers (int regno)
{
if (-1 == regno)
{
@ -285,8 +287,8 @@ fetch_inferior_registers (int regno)
regno == -1, otherwise store all general registers or all floating
point registers depending upon the value of regno. */
void
store_inferior_registers (int regno)
static void
hppa_linux_store_inferior_registers (int regno)
{
if (-1 == regno)
{
@ -374,3 +376,21 @@ fill_fpregset (gdb_fpregset_t *fpregsetp, int regno)
regcache_raw_collect (current_regcache, i, to);
}
}
void _initialize_hppa_linux_nat (void);
void
_initialize_hppa_linux_nat (void)
{
struct target_ops *t;
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Add our register access methods. */
t->to_fetch_registers = arm_linux_fetch_inferior_registers;
t->to_store_registers = arm_linux_store_inferior_registers;
/* Register the target. */
add_target (t);
}

View File

@ -24,6 +24,7 @@
#include "inferior.h"
#include "gdbcore.h"
#include "regcache.h"
#include "target.h"
#include "linux-nat.h"
#include "gdb_assert.h"
@ -480,8 +481,8 @@ cannot_store_register (int regno)
this for all registers (including the floating point and SSE
registers). */
void
fetch_inferior_registers (int regno)
static void
i386_linux_fetch_inferior_registers (int regno)
{
int tid;
@ -514,7 +515,7 @@ fetch_inferior_registers (int regno)
/* The call above might reset `have_ptrace_getregs'. */
if (!have_ptrace_getregs)
{
fetch_inferior_registers (regno);
i386_linux_fetch_inferior_registers (regno);
return;
}
@ -552,8 +553,8 @@ fetch_inferior_registers (int regno)
/* Store register REGNO back into the child process. If REGNO is -1,
do this for all registers (including the floating point and SSE
registers). */
void
store_inferior_registers (int regno)
static void
i386_linux_store_inferior_registers (int regno)
{
int tid;
@ -755,8 +756,8 @@ static const unsigned char linux_syscall[] = { 0xcd, 0x80 };
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);
@ -814,9 +815,34 @@ child_resume (ptid_t ptid, int step, enum target_signal signal)
perror_with_name (("ptrace"));
}
void
child_post_startup_inferior (ptid_t ptid)
static void (*super_post_startup_inferior) (ptid_t ptid);
static void
i386_linux_child_post_startup_inferior (ptid_t ptid)
{
i386_cleanup_dregs ();
linux_child_post_startup_inferior (ptid);
super_post_startup_inferior (ptid);
}
void
_initialize_i386_linux_nat (void)
{
struct target_ops *t;
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Override the default ptrace resume method. */
t->to_resume = i386_linux_resume;
/* Override the GNU/Linux inferior startup hook. */
super_post_startup_inferior = t->to_post_startup_inferior;
t->to_post_startup_inferior = i386_linux_child_post_startup_inferior;
/* Add our register access methods. */
t->to_fetch_registers = i386_linux_fetch_inferior_registers;
t->to_store_registers = i386_linux_store_inferior_registers;
/* Register the target. */
add_target (t);
}

View File

@ -1,6 +1,6 @@
/* Native-dependent code for the i386.
Copyright 2001, 2004 Free Software Foundation, Inc.
Copyright 2001, 2004, 2005 Free Software Foundation, Inc.
This file is part of GDB.
@ -231,8 +231,6 @@ i386_cleanup_dregs (void)
dr_status_mirror = 0;
}
#ifndef LINUX_CHILD_POST_STARTUP_INFERIOR
/* Reset all debug registers at each new startup to avoid missing
watchpoints after restart. */
@ -242,8 +240,6 @@ child_post_startup_inferior (ptid_t ptid)
i386_cleanup_dregs ();
}
#endif /* LINUX_CHILD_POST_STARTUP_INFERIOR */
/* Print the values of the mirrored debug registers. This is called
when maint_show_dr is non-zero. To set that up, type "maint
show-debug-regs" at GDB's prompt. */

View File

@ -28,6 +28,7 @@
#include "gdbcore.h"
#include "regcache.h"
#include "ia64-tdep.h"
#include "linux-nat.h"
#include <signal.h>
#include <sys/ptrace.h>
@ -666,12 +667,38 @@ 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)
static LONGEST (*super_xfer_partial) (struct target_ops *, enum target_object,
const char *, gdb_byte *, const gdb_byte *,
ULONGEST, LONGEST);
static LONGEST
ia64_linux_xfer_partial (struct target_ops *ops,
enum target_object object,
const char *annex,
gdb_byte *readbuf, const gdb_byte *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 super_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 ();
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Override the default to_xfer_partial. */
super_xfer_partial = t->to_xfer_partial;
t->to_xfer_partial = ia64_linux_xfer_partial;
/* Register the target. */
add_target (t);
}

View File

@ -2460,17 +2460,19 @@ getunwind_table (void *buf, size_t len)
{
LONGEST x;
/* FIXME: This is a temporary solution to backtracing syscalls in corefiles.
To do this properly, the AUXV section should be used. This
fix will work as long as the kernel used to generate the corefile
is equivalent to the kernel used to debug the corefile. */
x = ia64_linux_xfer_unwind_table (&current_target,
TARGET_OBJECT_UNWIND_TABLE, NULL,
buf, NULL, 0, len);
/* FIXME drow/2005-09-10: This code used to call
ia64_linux_xfer_unwind_table directly to fetch the unwind table
for the currently running ia64-linux kernel. That data should
come from the core file and be accessed via the auxv vector; if
we want to preserve fall back to the running kernel's table, then
we should find a way to override the corefile layer's
xfer_partial method. */
x = target_read_partial (&current_target, TARGET_OBJECT_UNWIND_TABLE, NULL,
buf, 0, len);
return (int)x;
}
/* Get the kernel unwind table. */
static int
get_kernel_table (unw_word_t ip, unw_dyn_info_t *di)

View File

@ -626,8 +626,14 @@ inf_ptrace_fetch_register (int regnum)
PTRACE_TYPE_RET *buf;
int pid, i;
if (CANNOT_FETCH_REGISTER (regnum))
{
regcache_raw_supply (current_regcache, regnum, NULL);
return;
}
/* Cater for systems like GNU/Linux, that implement threads as
seperate processes. */
separate processes. */
pid = ptid_get_lwp (inferior_ptid);
if (pid == 0)
pid = ptid_get_pid (inferior_ptid);
@ -639,7 +645,7 @@ inf_ptrace_fetch_register (int regnum)
gdb_assert ((size % sizeof (PTRACE_TYPE_RET)) == 0);
buf = alloca (size);
/* Read the register contents from the inferior a chuck at the time. */
/* Read the register contents from the inferior a chunk at a time. */
for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++)
{
errno = 0;
@ -676,8 +682,11 @@ inf_ptrace_store_register (int regnum)
PTRACE_TYPE_RET *buf;
int pid, i;
if (CANNOT_STORE_REGISTER (regnum))
return;
/* Cater for systems like GNU/Linux, that implement threads as
seperate processes. */
separate processes. */
pid = ptid_get_lwp (inferior_ptid);
if (pid == 0)
pid = ptid_get_pid (inferior_ptid);
@ -689,7 +698,7 @@ inf_ptrace_store_register (int regnum)
gdb_assert ((size % sizeof (PTRACE_TYPE_RET)) == 0);
buf = alloca (size);
/* Write the register contents into the inferior a chunk at the time. */
/* Write the register contents into the inferior a chunk at a time. */
regcache_raw_collect (current_regcache, regnum, buf);
for (i = 0; i < size / sizeof (PTRACE_TYPE_RET); i++)
{

View File

@ -34,6 +34,8 @@
#include "gdbthread.h"
#include "gdbcmd.h"
#include "regcache.h"
#include "inf-ptrace.h"
#include "auxv.h"
#include <sys/param.h> /* for MAXPATHLEN */
#include <sys/procfs.h> /* for elf_gregset etc. */
#include "elf-bfd.h" /* for elfcore_write_* */
@ -81,6 +83,16 @@
#define __WALL 0x40000000 /* Wait for any child. */
#endif
/* The single-threaded native GNU/Linux target_ops. We save a pointer for
the use of the multi-threaded target. */
static struct target_ops *linux_ops;
/* The saved to_xfer_partial method, inherited from inf-ptrace.c. Called
by our to_xfer_partial. */
static LONGEST (*super_xfer_partial) (struct target_ops *, enum target_object,
const char *, gdb_byte *, const gdb_byte *,
ULONGEST, LONGEST);
static int debug_linux_nat;
static void
show_debug_linux_nat (struct ui_file *file, int from_tty,
@ -319,20 +331,12 @@ child_post_attach (int pid)
linux_enable_event_reporting (pid_to_ptid (pid));
}
void
static void
linux_child_post_startup_inferior (ptid_t ptid)
{
linux_enable_event_reporting (ptid);
}
#ifndef LINUX_CHILD_POST_STARTUP_INFERIOR
void
child_post_startup_inferior (ptid_t ptid)
{
linux_child_post_startup_inferior (ptid);
}
#endif
int
child_follow_fork (struct target_ops *ops, int follow_child)
{
@ -913,7 +917,7 @@ linux_nat_attach (char *args, int from_tty)
/* FIXME: We should probably accept a list of process id's, and
attach all of them. */
deprecated_child_ops.to_attach (args, from_tty);
linux_ops->to_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)));
@ -1023,7 +1027,7 @@ linux_nat_detach (char *args, int from_tty)
sigemptyset (&blocked_mask);
inferior_ptid = pid_to_ptid (GET_PID (inferior_ptid));
deprecated_child_ops.to_detach (args, from_tty);
linux_ops->to_detach (args, from_tty);
}
/* Resume LP. */
@ -1035,7 +1039,8 @@ resume_callback (struct lwp_info *lp, void *data)
{
struct thread_info *tp;
child_resume (pid_to_ptid (GET_LWP (lp->ptid)), 0, TARGET_SIGNAL_0);
linux_ops->to_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",
@ -1109,7 +1114,7 @@ linux_nat_resume (ptid_t ptid, int step, enum target_signal signo)
if (resume_all)
iterate_over_lwps (resume_callback, NULL);
child_resume (ptid, step, signo);
linux_ops->to_resume (ptid, step, signo);
if (debug_linux_nat)
fprintf_unfiltered (gdb_stdlog,
"LLR: %s %s, %s (resume event thread)\n",
@ -1683,8 +1688,6 @@ resumed_callback (struct lwp_info *lp, void *data)
return lp->resumed;
}
#ifdef CHILD_WAIT
/* We need to override child_wait to support attaching to cloned
processes, since a normal wait (as done by the default version)
ignores those processes. */
@ -1789,8 +1792,6 @@ child_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
return pid_to_ptid (pid);
}
#endif
/* Stop an active thread, verify it still exists, then resume it. */
static int
@ -1899,8 +1900,8 @@ 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,
TARGET_SIGNAL_0);
linux_ops->to_resume (pid_to_ptid (GET_LWP (lp->ptid)),
lp->step, TARGET_SIGNAL_0);
if (debug_linux_nat)
fprintf_unfiltered (gdb_stdlog,
"LLW: %s %s, 0, 0 (expect SIGSTOP)\n",
@ -2101,8 +2102,8 @@ retry:
lp->signalled = 0;
registers_changed ();
child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step,
TARGET_SIGNAL_0);
linux_ops->to_resume (pid_to_ptid (GET_LWP (lp->ptid)),
lp->step, TARGET_SIGNAL_0);
if (debug_linux_nat)
fprintf_unfiltered (gdb_stdlog,
"LLW: %s %s, 0, 0 (discard SIGSTOP)\n",
@ -2161,7 +2162,8 @@ 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);
linux_ops->to_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",
@ -2310,7 +2312,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);
linux_ops->to_create_inferior (exec_file, allargs, env, from_tty);
}
static void
@ -2325,23 +2327,23 @@ linux_nat_mourn_inferior (void)
sigprocmask (SIG_SETMASK, &normal_mask, NULL);
sigemptyset (&blocked_mask);
deprecated_child_ops.to_mourn_inferior ();
linux_ops->to_mourn_inferior ();
}
static int
linux_nat_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
int write, struct mem_attrib *attrib,
struct target_ops *target)
static LONGEST
linux_nat_xfer_partial (struct target_ops *ops, enum target_object object,
const char *annex, gdb_byte *readbuf,
const gdb_byte *writebuf,
ULONGEST offset, LONGEST len)
{
struct cleanup *old_chain = save_inferior_ptid ();
int xfer;
LONGEST 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);
xfer = linux_ops->to_xfer_partial (ops, object, annex, readbuf, writebuf,
offset, len);
do_cleanups (old_chain);
return xfer;
@ -2379,6 +2381,26 @@ linux_nat_pid_to_str (ptid_t ptid)
return normal_pid_to_str (ptid);
}
static void
linux_nat_fetch_registers (int regnum)
{
/* to_fetch_registers will honor the LWP ID, so we can use it directly. */
linux_ops->to_fetch_registers (regnum);
}
static void
linux_nat_store_registers (int regnum)
{
/* to_store_registers will honor the LWP ID, so we can use it directly. */
linux_ops->to_store_registers (regnum);
}
static void
linux_nat_child_post_startup_inferior (ptid_t ptid)
{
linux_ops->to_post_startup_inferior (ptid);
}
static void
init_linux_nat_ops (void)
{
@ -2392,17 +2414,16 @@ init_linux_nat_ops (void)
linux_nat_ops.to_detach = linux_nat_detach;
linux_nat_ops.to_resume = linux_nat_resume;
linux_nat_ops.to_wait = linux_nat_wait;
/* fetch_inferior_registers and store_inferior_registers will
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_fetch_registers = linux_nat_fetch_registers;
linux_nat_ops.to_store_registers = linux_nat_store_registers;
linux_nat_ops.to_xfer_partial = linux_nat_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;
linux_nat_ops.to_thread_alive = linux_nat_thread_alive;
linux_nat_ops.to_pid_to_str = linux_nat_pid_to_str;
linux_nat_ops.to_post_startup_inferior = child_post_startup_inferior;
linux_nat_ops.to_post_startup_inferior
= linux_nat_child_post_startup_inferior;
linux_nat_ops.to_post_attach = child_post_attach;
linux_nat_ops.to_insert_fork_catchpoint = child_insert_fork_catchpoint;
linux_nat_ops.to_insert_vfork_catchpoint = child_insert_vfork_catchpoint;
@ -2948,14 +2969,22 @@ linux_nat_info_proc_cmd (char *args, int from_tty)
}
}
int
linux_proc_xfer_memory (CORE_ADDR addr, gdb_byte *myaddr, int len, int write,
struct mem_attrib *attrib, struct target_ops *target)
/* Implement the to_xfer_partial interface for memory reads using the /proc
filesystem. Because we can use a single read() call for /proc, this
can be much more efficient than banging away at PTRACE_PEEKTEXT,
but it doesn't support writes. */
static LONGEST
linux_proc_xfer_partial (struct target_ops *ops, enum target_object object,
const char *annex, gdb_byte *readbuf,
const gdb_byte *writebuf,
ULONGEST offset, LONGEST len)
{
int fd, ret;
LONGEST ret;
int fd;
char filename[64];
if (write)
if (object != TARGET_OBJECT_MEMORY || !readbuf)
return 0;
/* Don't bother for one word. */
@ -2974,9 +3003,9 @@ linux_proc_xfer_memory (CORE_ADDR addr, gdb_byte *myaddr, int len, int write,
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
@ -3067,15 +3096,80 @@ linux_proc_pending_signals (int pid, sigset_t *pending, sigset_t *blocked, sigse
fclose (procfile);
}
static LONGEST
linux_xfer_partial (struct target_ops *ops, enum target_object object,
const char *annex, gdb_byte *readbuf,
const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
{
LONGEST xfer;
if (object == TARGET_OBJECT_AUXV)
return procfs_xfer_auxv (ops, object, annex, readbuf, writebuf,
offset, len);
xfer = linux_proc_xfer_partial (ops, object, annex, readbuf, writebuf,
offset, len);
if (xfer != 0)
return xfer;
return super_xfer_partial (ops, object, annex, readbuf, writebuf,
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)
{
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_wait = child_wait;
t->to_kill = kill_inferior;
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_pid_to_exec_file = child_pid_to_exec_file;
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_find_memory_regions = linux_nat_find_memory_regions;
t->to_make_corefile_notes = linux_nat_make_corefile_notes;
super_xfer_partial = t->to_xfer_partial;
t->to_xfer_partial = linux_xfer_partial;
linux_ops = t;
return t;
}
void
_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\

View File

@ -1,5 +1,7 @@
/* Native debugging support for GNU/Linux (LWP layer).
Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Copyright 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -63,14 +65,6 @@ struct lwp_info
struct lwp_info *next;
};
/* Read/write to target memory via the Linux kernel's "proc file
system". */
struct mem_attrib;
struct target_ops;
extern int linux_proc_xfer_memory (CORE_ADDR addr, gdb_byte *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);
@ -80,9 +74,12 @@ extern void linux_record_stopped_pid (int pid);
extern void linux_enable_event_reporting (ptid_t ptid);
extern ptid_t linux_handle_extended_wait (int pid, int status,
struct target_waitstatus *ourstatus);
extern void linux_child_post_startup_inferior (ptid_t ptid);
/* Iterator function for lin-lwp's lwp list. */
struct lwp_info *iterate_over_lwps (int (*callback) (struct lwp_info *,
void *),
void *data);
/* Create a prototype generic Linux target. The client can override
it with local methods. */
struct target_ops * linux_target (void);

View File

@ -1,6 +1,7 @@
/* libthread_db assisted debugging support, generic parts.
Copyright 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
Copyright 1999, 2000, 2001, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GDB.
@ -961,12 +962,13 @@ thread_db_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
return ptid;
}
static int
thread_db_xfer_memory (CORE_ADDR memaddr, gdb_byte *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, gdb_byte *readbuf,
const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
{
struct cleanup *old_chain = save_inferior_ptid ();
int xfer;
LONGEST xfer;
if (is_thread (inferior_ptid))
{
@ -978,9 +980,8 @@ thread_db_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
inferior_ptid = lwp_from_thread (inferior_ptid);
}
xfer =
target_beneath->deprecated_xfer_memory (memaddr, myaddr, len, write,
attrib, target);
xfer = target_beneath->to_xfer_partial (ops, object, annex,
readbuf, writebuf, offset, len);
do_cleanups (old_chain);
return xfer;
@ -1298,7 +1299,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;

View File

@ -1,6 +1,6 @@
/* Native-dependent code for GNU/Linux m32r.
Copyright 2004 Free Software Foundation, Inc.
Copyright 2004, 2005 Free Software Foundation, Inc.
This file is part of GDB.
@ -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"
@ -187,8 +188,8 @@ fill_fpregset (gdb_fpregset_t *fpregs, int regno)
this for all registers (including the floating point and SSE
registers). */
void
fetch_inferior_registers (int regno)
static void
m32r_linux_fetch_inferior_registers (int regno)
{
int tid;
@ -213,8 +214,8 @@ fetch_inferior_registers (int regno)
/* Store register REGNO back into the child process. If REGNO is -1,
do this for all registers (including the floating point and SSE
registers). */
void
store_inferior_registers (int regno)
static void
m32r_linux_store_inferior_registers (int regno)
{
int tid;
@ -233,3 +234,21 @@ 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)
{
struct target_ops *t;
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Add our register access methods. */
t->to_fetch_registers = m32r_linux_fetch_inferior_registers;
t->to_store_registers = m32r_linux_store_inferior_registers;
/* Register the target. */
add_target (t);
}

View File

@ -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, 2005
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"
@ -170,7 +172,7 @@ fetch_register (int regno)
If REGNO is negative, do this for all registers.
Otherwise, REGNO specifies which register (so we can save time). */
void
static void
old_fetch_inferior_registers (int regno)
{
if (regno >= 0)
@ -237,7 +239,7 @@ store_register (int regno)
If REGNO is negative, do this for all registers.
Otherwise, REGNO specifies which register (so we can save time). */
void
static void
old_store_inferior_registers (int regno)
{
if (regno >= 0)
@ -442,8 +444,8 @@ static void store_fpregs (int tid, int regno) {}
this for all registers (including the floating point and SSE
registers). */
void
fetch_inferior_registers (int regno)
static void
m68k_linux_fetch_inferior_registers (int regno)
{
int tid;
@ -498,8 +500,8 @@ fetch_inferior_registers (int regno)
/* Store register REGNO back into the child process. If REGNO is -1,
do this for all registers (including the floating point and SSE
registers). */
void
store_inferior_registers (int regno)
static void
m68k_linux_store_inferior_registers (int regno)
{
int tid;
@ -616,8 +618,22 @@ static struct core_fns linux_elf_core_fns =
NULL /* next */
};
void _initialize_m68k_linux_nat (void);
void
_initialize_m68k_linux_nat (void)
{
struct target_ops *t;
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Add our register access methods. */
t->to_fetch_registers = m68k_linux_fetch_inferior_registers;
t->to_store_registers = m68k_linux_store_inferior_registers;
/* Register the target. */
add_target (t);
deprecated_add_core_fns (&linux_elf_core_fns);
}

View File

@ -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, 2005 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 regno)
else
return 1;
}
void _initialize_mips_linux_nat (void);
void
_initialize_mips_linux_nat (void)
{
add_target (linux_target ());
}

View File

@ -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, 2005 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 <sys/types.h>
#include <sys/param.h>
@ -494,8 +496,8 @@ fetch_ppc_registers (int tid)
/* Fetch registers from the child process. Fetch all registers if
regno == -1, otherwise fetch all general registers or all floating
point registers depending upon the value of regno. */
void
fetch_inferior_registers (int regno)
static void
ppc_linux_fetch_inferior_registers (int regno)
{
/* Overload thread id onto process id */
int tid = TIDGET (inferior_ptid);
@ -775,8 +777,8 @@ store_ppc_registers (int tid)
store_spe_register (tid, -1);
}
void
store_inferior_registers (int regno)
static void
ppc_linux_store_inferior_registers (int regno)
{
/* Overload thread id onto process id */
int tid = TIDGET (inferior_ptid);
@ -883,3 +885,21 @@ fill_fpregset (gdb_fpregset_t *fpregsetp, int regno)
right_fill_reg (tdep->ppc_fpscr_regnum, (fpp + 8 * 32));
}
}
void _initialize_ppc_linux_nat (void);
void
_initialize_ppc_linux_nat (void)
{
struct target_ops *t;
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Add our register access methods. */
t->to_fetch_registers = ppc_linux_fetch_inferior_registers;
t->to_store_registers = ppc_linux_store_inferior_registers;
/* Register the target. */
add_target (t);
}

View File

@ -1,5 +1,5 @@
/* S390 native-dependent code for GDB, the GNU debugger.
Copyright 2001, 2003 Free Software Foundation, Inc
Copyright 2001, 2003, 2004, 2005 Free Software Foundation, Inc
Contributed by D.J. Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
for IBM Deutschland Entwicklung GmbH, IBM Corporation.
@ -25,6 +25,8 @@
#include "tm.h"
#include "regcache.h"
#include "inferior.h"
#include "target.h"
#include "linux-nat.h"
#include "s390-tdep.h"
@ -200,8 +202,8 @@ store_fpregs (int tid, int regnum)
/* Fetch register REGNUM from the child process. If REGNUM is -1, do
this for all registers. */
void
fetch_inferior_registers (int regnum)
static void
s390_linux_fetch_inferior_registers (int regnum)
{
int tid = s390_inferior_tid ();
@ -216,8 +218,8 @@ fetch_inferior_registers (int regnum)
/* Store register REGNUM back into the child process. If REGNUM is
-1, do this for all registers. */
void
store_inferior_registers (int regnum)
static void
s390_linux_store_inferior_registers (int regnum)
{
int tid = s390_inferior_tid ();
@ -357,3 +359,20 @@ kernel_u_size (void)
return sizeof (struct user);
}
void _initialize_s390_nat (void);
void
_initialize_s390_nat (void)
{
struct target_ops *t;
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Add our register access methods. */
t->to_fetch_registers = s390_linux_fetch_inferior_registers;
t->to_store_registers = s390_linux_store_inferior_registers;
/* Register the target. */
add_target (t);
}

43
gdb/sparc-linux-nat.c Normal file
View File

@ -0,0 +1,43 @@
/* Native-dependent code for GNU/Linux SPARC.
Copyright 2005
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 "inferior.h"
#include "target.h"
#include "linux-nat.h"
void _initialialize_sparc_linux_nat (void);
void
_initialize_sparc_linux_nat (void)
{
struct target_ops *t;
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Add our register access methods. */
t->to_fetch_registers = fetch_inferior_registers;
t->to_store_registers = store_inferior_registers;
/* Register the target. */
add_target (t);
}

View File

@ -1,6 +1,6 @@
/* Native-dependent code for GNU/Linux UltraSPARC.
Copyright 2003 Free Software Foundation, Inc.
Copyright 2003, 2005 Free Software Foundation, Inc.
This file is part of GDB.
@ -23,6 +23,9 @@
#include "sparc64-tdep.h"
#include "sparc-nat.h"
#include "inferior.h"
#include "target.h"
#include "linux-nat.h"
static const struct sparc_gregset sparc64_linux_ptrace_gregset =
{
@ -44,5 +47,17 @@ void _initialize_sparc64_linux_nat (void);
void
_initialize_sparc64_linux_nat (void)
{
struct target_ops *t;
/* Fill in the generic GNU/Linux methods. */
t = linux_target ();
/* Add our register access methods. */
t->to_fetch_registers = fetch_inferior_registers;
t->to_store_registers = store_inferior_registers;
/* Register the target. */
add_target (t);
sparc_gregset = &sparc64_linux_ptrace_gregset;
}