diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2010-07-19 17:51:25 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2010-07-19 17:51:25 +0000 |
commit | c0edd9edadfe292d00ea18c410f73cafa2657beb (patch) | |
tree | 65c0dbd9e554f8e9aeb3af8151980d28802167ef /gdb/target.c | |
parent | 3437afb19942280b83663ffbd0ff5e283d4744fb (diff) | |
download | gdb-c0edd9edadfe292d00ea18c410f73cafa2657beb.zip gdb-c0edd9edadfe292d00ea18c410f73cafa2657beb.tar.gz gdb-c0edd9edadfe292d00ea18c410f73cafa2657beb.tar.bz2 |
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.
Diffstat (limited to 'gdb/target.c')
-rw-r--r-- | gdb/target.c | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/gdb/target.c b/gdb/target.c index 4cabcbd..2c65a88 100644 --- a/gdb/target.c +++ b/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. */ |