forked from Imagelibrary/binutils-gdb
gdb/
Make core files the process_stratum. * corefile.c (core_target): New variable. (core_file_command): Remove variable t, use core_target. * corelow.c (core_ops): Make it static. (init_core_ops): Change to process_stratum. Initialize CORE_TARGET. * defs.h (make_cleanup_unpush_target): New prototype. * gdbarch.h: Regenerate. * gdbarch.sh (core_pid_to_str): Remove core_stratum from its comment. * gdbcore.h (core_target): New declaration. * inf-ptrace.c (inf_ptrace_create_inferior, inf_ptrace_attach): New variables ops_already_pushed and back_to. Use push_target, make_cleanup_unpush_target and discard_cleanups calls. * record.c (record_open): Replace core_stratum by a core_bfd check. * target.c (target_is_pushed): New function. (find_core_target): Remove. * target.h (enum strata) <core_stratum>: Remove. (target_is_pushed): New declaration. (find_core_target): Remove declaration. * tracepoint.c (init_tfile_ops) <to_stratum>: Remove comment. * utils.c (do_unpush_target, make_cleanup_unpush_target): New functions. gdb/doc/ Make core files the process_stratum. * gdb.texinfo (Active Targets): Remove core_stratum. Include record_stratum example. gdb/testsuite/ Make core files the process_stratum. * gdb.base/corefile.exp (run: load core again) (run: sanity check we see the core file, run: with core) (run: core file is cleared, attach: load core again) (attach: sanity check we see the core file, attach: with core) (attach: core file is cleared): New tests. * gdb.base/coremaker.c (main): New parameters. Implement "sleep" argv.
This commit is contained in:
49
gdb/target.c
49
gdb/target.c
@@ -1037,6 +1037,30 @@ pop_all_targets (int quitting)
|
||||
pop_all_targets_above (dummy_stratum, quitting);
|
||||
}
|
||||
|
||||
/* Return 1 if T is now pushed in the target stack. Return 0 otherwise. */
|
||||
|
||||
int
|
||||
target_is_pushed (struct target_ops *t)
|
||||
{
|
||||
struct target_ops **cur;
|
||||
|
||||
/* Check magic number. If wrong, it probably means someone changed
|
||||
the struct definition, but not all the places that initialize one. */
|
||||
if (t->to_magic != OPS_MAGIC)
|
||||
{
|
||||
fprintf_unfiltered (gdb_stderr,
|
||||
"Magic number of %s target struct wrong\n",
|
||||
t->to_shortname);
|
||||
internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
|
||||
}
|
||||
|
||||
for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
|
||||
if (*cur == t)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Using the objfile specified in OBJFILE, find the address for the
|
||||
current thread's thread-local storage with offset OFFSET. */
|
||||
CORE_ADDR
|
||||
@@ -2770,31 +2794,6 @@ find_run_target (void)
|
||||
return (count == 1 ? runable : NULL);
|
||||
}
|
||||
|
||||
/* Find a single core_stratum target in the list of targets and return it.
|
||||
If for some reason there is more than one, return NULL. */
|
||||
|
||||
struct target_ops *
|
||||
find_core_target (void)
|
||||
{
|
||||
struct target_ops **t;
|
||||
struct target_ops *runable = NULL;
|
||||
int count;
|
||||
|
||||
count = 0;
|
||||
|
||||
for (t = target_structs; t < target_structs + target_struct_size;
|
||||
++t)
|
||||
{
|
||||
if ((*t)->to_stratum == core_stratum)
|
||||
{
|
||||
runable = *t;
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
return (count == 1 ? runable : NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Find the next target down the stack from the specified target.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user