Checkpoint/Restart for Linux.
* linux-nat.c: Add support for debugging multiple forks.
Add #include for linux-fork.h (interface spec).
(super_mourn_inferior): New function pointer.
(child_mourn_inferior): New function / target method.
(linux_target): Claim to_mourn_inferior method pointer.
(child_follow_fork): Call interface to linux-fork, conditionally
add new fork processes to list of debugged processes.
(kill_inferior): Use interface to linux-fork to kill
multiple processes.
* linux-fork.h: New file.
* linux-fork.c: New file. Support for debugging multiple forks
of the same program. Support for checkpoint and restart commands.
* infrun.c (nullify_last_target_wait_ptid): New function.
* Makefile.in: Add linux-fork.
* config/*/linux.mh: Add linux-fork.
* NEWS: Mention new functionality.
(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.
fetch_inferior_registers. Make static.
(m68kbsd_store_inferior_registers): Rename from
store_inferior_registers. Make static.
(_initialize_m68kbsd_nat): Construct and add target vector.
* config/m68k/nbsdaout.mh (NATDEPFILES): Remove infptrace.o and
inftarg.o. Add inf-ptrace.o.
(NAT_FILE): Set to tm-solib.h.
(LOADLIBES): New variable.
* config/m68k/nbsdelf.mh (NATDEPFILES): Remove infptrace.o and
inftarg.o. Add inf-ptrace.o.
(NAT_FILE): Delete variable.
* config/m68k/obsd.mh (NATDEPFILES): Remove infptrace.o and
inftarg.o. Add inf-ptrace.o.
(NAT_FILE): Set to tm-solib.h.
* config/m68k/nm-nbsdaout.h: Remove file.
* config/vax/nm-obsd.h: Delete file.
* config/vax/obsd.mh (NAT_FILE): Set to config/nm-bsd.h.
* config/vax/nm-nbsd.h: Delete file.
* config/vax/nm-nbsdaout.h: Include config/nm-nbsd.h.
* config/vax/nbsdelf.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/sh/nm-nbsd.h: Delete file.
* config/sh/nbsd.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/rs6000/nm-rs6000ly.h: Delete file.
* config/djgpp/fnchange.lst: Do not rename nm-rs6000ly.h.
* config/rs6000/rs6000lynx.mh (NAT_FILE): Set to config/nm-lynx.h.
* config/powerpc/nm-obsd.h: Delete file.
* config/powerpc/obsd.mh (NAT_FILE): Set to config/nm-bsd.h.
* config/powerpc/nm-nbsd.h: Delete file.
* config/powerpc/nbsd.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/pa/nm-obsd.h: Delete file.
* config/pa/obsd.mh (NAT_FILE): Set to config/nm-bsd.h.
* config/mips/nm-nbsd.h: Delete file.
* config/mips/nbsd.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/m88k/nm-obsd.h: Delete file.
* config/m88k/obsd.mh (NAT_FILE): Set to config/nm-bsd.h.
* config/m68k/nm-nbsd.h: Delete file.
* config/m68k/nm-nbsdaout.h: Include config/nm-nbsd.h.
* config/m68k/nbsdelf.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/i386/nm-nbsd.h: Delete file.
* config/i386/nm-nbsdaout.h: Include config/nm-nbsd.h.
* config/i386/obsd64.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/i386/nbsd64.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/i386/nbsdelf.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/i386/nm-i386lynx.h: Delete file.
* config/i386/i386lynx.mh (NAT_FILE): Set to config/nm-lynx.h.
* config/arm/nm-nbsd.h: Delete file.
* config/arm/nm-nbsdaout.h: Include config/nm-nbsd.h.
* config/arm/nbsdelf.mh (NAT_FILE): Set to config/nm-nbsd.h.
* config/rs6000/tm-rs6000-aix4.h: Delete file.
* config/djgpp/fnchange.lst: Do not rename tm-rs6000-aix4.h.
* config/rs6000/aix4.mt (TM_FILE): Set to
config/rs6000/tm-rs6000.h.
* config/powerpc/tm-ppc-aix.h: Delete file.
* config/powerpc/aix.mt (TM_FILE): Set to
config/rs6000/tm-rs6000.h.
* config/m68k/tm-linux.h: Delete file.
* config/m68k/linux.mt (TM_FILE): Set to solib.h
* config/i386/tm-linux64.h: Delete file.
* config/i386/linux64.mt (TM_FILE): Set to solib.h.
* config/djgpp/fnchange.lst: Do not rename tm-linux.h.
* config/vax/nbsd.mt (TM_FILE): Set to solib.h.
* config/vax/tm-nbsd.h: Delete file.
* config/sparc/vxworks.mt (TM_FILE): Set to config/tm-vxworks.h.
* config/sparc/tm-vxworks.h: Delete file.
* config/sparc/nbsd.mt (TM_FILE): Set to solib.h.
* config/sparc/tm-nbsd.h: Delete file.
* config/sparc/linux64.mt (TM_FILE): Set to solib.h.
* config/sparc/linux.mt (TM_FILE): Set to solib.h.
* config/sparc/tm-linux.h: Delete file.
* config/s390/s390.mt (TM_FILE): Set to config/tm-linux.h
* config/s390/tm-linux.h: Delete file.
* config/pa/obsd.mt (TM_FILE): Set to solib.h.
* config/pa/tm-bsd.h: Delete file.
* config/m68k/obsd.mt (TM_FILE): Set to solib.h.
* config/m68k/tm-obsd.h: Delete file.
* config/m68k/nbsd.mt (TM_FILE): Set to solib.h.
* config/m68k/tm-nbsd.h: Delete file.
* config/i386/vxworks.mt (TM_FILE): Set to config/tm-vxworks.h.
* config/i386/tm-vxworks.h: Delete file.
* config/i386/obsd64.mt (TM_FILE): Set to solib.h.
* config/i386/obsd.mt (TM_FILE): Set to solib.h.
* config/i386/nbsd64.mt (TM_FILE): Set to solib.h.
* config/i386/nbsd.mt (TM_FILE): Set to solib.h.
* config/i386/tm-nbsd.h: Delete file.
* config/i386/i386lynx.mt (TM_FILE): Set to config/tm-lynx.h.
* config/i386/tm-i386lynx.h: Delete file.
* config/cris/cris.mt (TM_FILE): Set to solib.h.
* config/cris/tm-cris.h: Delete file.
* config/powerpc/xm-linux.h (KERNEL_U_ADDR): Move from here ...
* config/powerpc/nm-linux.h (KERNEL_U_ADDR): ... to here.
* config/m68k/xm-linux.h (KERNEL_U_ADDR): Move from here ...
* config/m68k/nm-linux.h (KERNEL_U_ADDR): ... to here.
* config/ia64/xm-linux.h (KERNEL_U_ADDR): Move from here ...
* config/ia64/nm-linux.h (KERNEL_U_ADDR): ... to here.
* config/arm/xm-linux.h (KERNEL_U_ADDR): Move from here ...
* config/arm/nm-linux.h (KERNEL_U_ADDR): ... to here.
<machine/pcb.h> and "bsd-kvm.h".
(PCB_REGS_FP, PCB_REGS_SP): Define if not already defined.
(m68kbsd_supply_pcb): New function.
(_initialize_m68kbsd_nat): New prototype and function.
* Makefile.in (m68kbsd-nat.o): Update dependencies.
* config/m68k/nbsdelf.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
* config/m68k/obsd.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
Obsolete old m68k systems.
* configure.host: Mark m68*-sun-*, m68*-sun-sunos4*,
m68*-sun-sunos3*, m68*-motorola-*, m68*-*-sysv4*, m68*-*-lynxos*,
m68*-bull*-sysv*, m68*-att-*, m680[01]0-sun-sunos4*, and
m680[01]0-sun-sunos3* as obsolete.
* configure.tgt: Mark m68*-*-lynxos*, m68*-*-sunos3*,
m68*-*-sunos4*, m68*-*-sysv4*, m68000-*-sunos3*, m68000-*-sunos4*,
m68*-bull-sysv*, m68*-att-*, and m68*-motorola-*, as obsolete.
* config/m68k/sun3os4.mh: Mark file obsolete.
* config/m68k/xm-sun3os4.h: Mark file obsolete.
* config/m68k/sun3os3.mh: Mark file obsolete.
* config/m68k/nm-sun3.h: Mark file obsolete.
* config/m68k/xm-sun3.h: Mark file obsolete.
* config/m68k/sun2os4.mh: Mark file obsolete.
* config/m68k/sun2os3.mh: Mark file obsolete.
* config/m68k/nm-sun2.h: Mark file obsolete.
* config/m68k/xm-sun2.h: Mark file obsolete.
* config/m68k/m68kv4.mh: Mark file obsolete.
* config/m68k/nm-sysv4.h: Mark file obsolete.
* config/m68k/xm-m68kv4.h: Mark file obsolete.
* config/m68k/m68klynx.mh: Mark file obsolete.
* config/m68k/nm-m68klynx.h: Mark file obsolete.
* config/m68k/dpx2.mh: Mark file obsolete.
* config/m68k/xm-dpx2.h: Mark file obsolete.
* config/m68k/nm-dpx2.h: Mark file obsolete.
* config/m68k/delta68.mh: Mark file obsolete.
* config/m68k/xm-delta68.h: Mark file obsolete.
* config/m68k/nm-delta68.h: Mark file obsolete.
* config/m68k/3b1.mh: Mark file obsolete.
* config/m68k/xm-3b1.h: Mark file obsolete.
* config/m68k/sun3os4.mt: Mark file obsolete.
* config/m68k/tm-sun3os4.h: Mark file obsolete.
* config/m68k/sun3os3.mt: Mark file obsolete.
* config/m68k/tm-sun3.h: Mark file obsolete.
* config/m68k/sun2os4.mt: Mark file obsolete.
* config/m68k/tm-sun2os4.h: Mark file obsolete.
* config/m68k/sun2os3.mt: Mark file obsolete.
* config/m68k/tm-sun2.h: Mark file obsolete.
* config/m68k/m68kv4.mt: Mark file obsolete.
* config/m68k/tm-m68kv4.h: Mark file obsolete.
* config/m68k/m68klynx.mt: Mark file obsolete.
* config/m68k/tm-m68klynx.h: Mark file obsolete.
* config/m68k/dpx2.mt: Mark file obsolete.
* config/m68k/tm-dpx2.h: Mark file obsolete.
* config/m68k/delta68.mt: Mark file obsolete.
* config/m68k/tm-delta68.h: Mark file obsolete.
* config/m68k/3b1.mt: Mark file obsolete.
* config/m68k/tm-3b1.h: Mark file obsolete.
dependencies.
* config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE): Define
as m68k_linux_extract_return_value.
(DEPRECATED_STORE_RETURN_VALUE): Define as
m68k_linux_store_return_value.
(DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Define as
m68k_linux_extract_struct_value_address.
* m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc): Use
get_next_frame, get_frame_base, get_frame_pc.
(m68k_linux_frame_saved_pc): Use get_frame_base.
(m68k_linux_extract_return_value): New function.
(m68k_linux_store_return_value): New function.
(m68k_linux_extract_struct_value_address): New function.
* config/m68k/tm-m68k.h: Declare m68k_get_longjmp_target.