aboutsummaryrefslogtreecommitdiff
path: root/gdb/target.c
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2002-01-09 00:37:02 +0000
committerMichael Snyder <msnyder@vmware.com>2002-01-09 00:37:02 +0000
commitbe4d1333163c056f725fbbb96b400ce3d22802a7 (patch)
treeb20c9b67c29126bd6eb838a22fa55c87a8eaf629 /gdb/target.c
parent30070dac97fea15a420b3f3930b5a20535279ea7 (diff)
downloadgdb-be4d1333163c056f725fbbb96b400ce3d22802a7.zip
gdb-be4d1333163c056f725fbbb96b400ce3d22802a7.tar.gz
gdb-be4d1333163c056f725fbbb96b400ce3d22802a7.tar.bz2
2002-01-03 Michael Snyder <msnyder@redhat.com>
Implement a "generate-core-file" command in gdb, save target state. * gcore.c: New file. Implement new command 'generate-core-file'. Save a corefile image of the current state of the inferior. * linux-proc.c: Add linux-specific code for saving corefiles. * target.h (struct target_ops): Add new target vectors for saving corefiles; to_find_memory_regions and to_make_corefile_notes. (target_find_memory_regions): New macro. (target_make_corefile_notes): New macro. * target.c (update_current_target): Inherit new target methods. (dummy_find_memory_regions): New place-holder method. (dummy_make_corefile_notes): New place-holder method. (init_dummy_target): Initialize new dummy target vectors. * exec.c (exec_set_find_memory_regions): New function. Allow the exec_ops vector for memory regions to be taken over. (exec_make_note_section): New function, target vector method. * defs.h (exec_set_find_memory_regions): Export prototype. * procfs.c (proc_find_memory_regions): New function, corefile method. (procfs_make_note_section): New function, corefile method. (init_procfs_ops): Set new target vector pointers. (find_memory_regions_callback): New function. (procfs_do_thread_registers): New function. (procfs_corefile_thread_callback): New function. * sol-thread.c (sol_find_memory_regions): New function. (sol_make_note_section): New function. (init_sol_thread_ops): Initialize new target vectors. * inftarg.c (inftarg_set_find_memory_regions): New function. Allow to_find_memory_regions vector to be taken over. (inftarg_set_make_corefile_notes): New function. Allow to_make_corefile_notes vector to be taken over. * thread-db.c (thread_db_new_objfile): Don't activate thread-db interface layer if not target_has_execution (may be a corefile). * config/i386/linux.mh: Add gcore.o to NATDEPFILES. * config/sparc/sun4sol2.mh: Ditto. * config/alpha/alpha-linux.mh: Ditto. * config/arm/linux.mh: Ditto. * config/i386/x86-64linux.mh: Ditto. * config/ia64/linux.mh: Ditto. * config/m68k/linux.mh: Ditto. * config/mips/linux.mh: Ditto. * config/powerpc/linux.mh: Ditto. * config/sparc/linux.mh: Ditto.
Diffstat (limited to 'gdb/target.c')
-rw-r--r--gdb/target.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/gdb/target.c b/gdb/target.c
index 1a8723c..1af8883 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -1,6 +1,7 @@
/* Select target systems and architectures at runtime for GDB.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001 Free Software Foundation, Inc.
+ 2000, 2001, 2002
+ Free Software Foundation, Inc.
Contributed by Cygnus Support.
This file is part of GDB.
@@ -607,6 +608,8 @@ update_current_target (void)
INHERIT (to_is_async_p, t);
INHERIT (to_async, t);
INHERIT (to_async_mask_value, t);
+ INHERIT (to_find_memory_regions, t);
+ INHERIT (to_make_corefile_notes, t);
INHERIT (to_magic, t);
#undef INHERIT
@@ -1461,6 +1464,22 @@ normal_target_post_startup_inferior (ptid_t ptid)
/* This space intentionally left blank. */
}
+/* Error-catcher for target_find_memory_regions */
+/* ARGSUSED */
+static int dummy_find_memory_regions (int (*ignore1) (), void *ignore2)
+{
+ error ("No target.");
+ return 0;
+}
+
+/* Error-catcher for target_make_corefile_notes */
+/* ARGSUSED */
+static char * dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
+{
+ error ("No target.");
+ return NULL;
+}
+
/* Set up the handful of non-empty slots needed by the dummy target
vector. */
@@ -1477,6 +1496,8 @@ init_dummy_target (void)
dummy_target.to_clone_and_follow_inferior = find_default_clone_and_follow_inferior;
dummy_target.to_pid_to_str = normal_pid_to_str;
dummy_target.to_stratum = dummy_stratum;
+ dummy_target.to_find_memory_regions = dummy_find_memory_regions;
+ dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
dummy_target.to_magic = OPS_MAGIC;
}