* corelow.c (core_open): Assume there was no upper layer left
behind from a previous inferior. * target.c (pop_all_targets): Rename to ... (pop_all_targets_above): ... this. Add a target stratum parameter. Use it instead of hardcoding the dummy_stratum. (pop_all_targets): New, defer to pop_all_targets_above. (target_preopen): Use pop_all_targets_above. * target.h (pop_all_targets_above): Declare.
This commit is contained in:
parent
5231c1fd73
commit
87ab71f0a0
4 changed files with 32 additions and 21 deletions
|
@ -1,3 +1,14 @@
|
||||||
|
2008-08-18 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
|
* corelow.c (core_open): Assume there was no upper layer left
|
||||||
|
behind from a previous inferior.
|
||||||
|
* target.c (pop_all_targets): Rename to ...
|
||||||
|
(pop_all_targets_above): ... this. Add a target stratum
|
||||||
|
parameter. Use it instead of hardcoding the dummy_stratum.
|
||||||
|
(pop_all_targets): New, defer to pop_all_targets_above.
|
||||||
|
(target_preopen): Use pop_all_targets_above.
|
||||||
|
* target.h (pop_all_targets_above): Declare.
|
||||||
|
|
||||||
2008-08-18 Pedro Alves <pedro@codesourcery.com>
|
2008-08-18 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
* gdbthread.h (thread_change_ptid): Declare.
|
* gdbthread.h (thread_change_ptid): Declare.
|
||||||
|
|
|
@ -258,7 +258,6 @@ core_open (char *filename, int from_tty)
|
||||||
struct cleanup *old_chain;
|
struct cleanup *old_chain;
|
||||||
char *temp;
|
char *temp;
|
||||||
bfd *temp_bfd;
|
bfd *temp_bfd;
|
||||||
int ontop;
|
|
||||||
int scratch_chan;
|
int scratch_chan;
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
|
@ -341,7 +340,7 @@ core_open (char *filename, int from_tty)
|
||||||
if (!exec_bfd)
|
if (!exec_bfd)
|
||||||
set_gdbarch_from_file (core_bfd);
|
set_gdbarch_from_file (core_bfd);
|
||||||
|
|
||||||
ontop = !push_target (&core_ops);
|
push_target (&core_ops);
|
||||||
discard_cleanups (old_chain);
|
discard_cleanups (old_chain);
|
||||||
|
|
||||||
/* This is done first, before anything has a chance to query the
|
/* This is done first, before anything has a chance to query the
|
||||||
|
@ -368,21 +367,12 @@ core_open (char *filename, int from_tty)
|
||||||
bfd_map_over_sections (core_bfd, add_to_thread_list,
|
bfd_map_over_sections (core_bfd, add_to_thread_list,
|
||||||
bfd_get_section_by_name (core_bfd, ".reg"));
|
bfd_get_section_by_name (core_bfd, ".reg"));
|
||||||
|
|
||||||
if (ontop)
|
/* Fetch all registers from core file. */
|
||||||
{
|
target_fetch_registers (get_current_regcache (), -1);
|
||||||
/* Fetch all registers from core file. */
|
|
||||||
target_fetch_registers (get_current_regcache (), -1);
|
|
||||||
|
|
||||||
/* Now, set up the frame cache, and print the top of stack. */
|
/* Now, set up the frame cache, and print the top of stack. */
|
||||||
reinit_frame_cache ();
|
reinit_frame_cache ();
|
||||||
print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
|
print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
warning (
|
|
||||||
"you won't be able to access this core file until you terminate\n\
|
|
||||||
your %s; do ``info files''", target_longname);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
16
gdb/target.c
16
gdb/target.c
|
@ -822,9 +822,9 @@ pop_target (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pop_all_targets (int quitting)
|
pop_all_targets_above (enum strata above_stratum, int quitting)
|
||||||
{
|
{
|
||||||
while ((int) (current_target.to_stratum) > (int) dummy_stratum)
|
while ((int) (current_target.to_stratum) > (int) above_stratum)
|
||||||
{
|
{
|
||||||
target_close (¤t_target, quitting);
|
target_close (¤t_target, quitting);
|
||||||
if (!unpush_target (target_stack))
|
if (!unpush_target (target_stack))
|
||||||
|
@ -839,6 +839,12 @@ pop_all_targets (int quitting)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
pop_all_targets (int quitting)
|
||||||
|
{
|
||||||
|
pop_all_targets_above (dummy_stratum, quitting);
|
||||||
|
}
|
||||||
|
|
||||||
/* Using the objfile specified in OBJFILE, find the address for the
|
/* Using the objfile specified in OBJFILE, find the address for the
|
||||||
current thread's thread-local storage with offset OFFSET. */
|
current thread's thread-local storage with offset OFFSET. */
|
||||||
CORE_ADDR
|
CORE_ADDR
|
||||||
|
@ -1778,9 +1784,9 @@ target_preopen (int from_tty)
|
||||||
|
|
||||||
/* Calling target_kill may remove the target from the stack. But if
|
/* Calling target_kill may remove the target from the stack. But if
|
||||||
it doesn't (which seems like a win for UDI), remove it now. */
|
it doesn't (which seems like a win for UDI), remove it now. */
|
||||||
|
/* Leave the exec target, though. The user may be switching from a
|
||||||
if (target_has_execution)
|
live process to a core of the same program. */
|
||||||
pop_target ();
|
pop_all_targets_above (file_stratum, 0);
|
||||||
|
|
||||||
target_pre_inferior (from_tty);
|
target_pre_inferior (from_tty);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1179,6 +1179,10 @@ extern void pop_target (void);
|
||||||
while). */
|
while). */
|
||||||
extern void pop_all_targets (int quitting);
|
extern void pop_all_targets (int quitting);
|
||||||
|
|
||||||
|
/* Like pop_all_targets, but pops only targets whose stratum is
|
||||||
|
strictly above ABOVE_STRATUM. */
|
||||||
|
extern void pop_all_targets_above (enum strata above_stratum, int quitting);
|
||||||
|
|
||||||
extern CORE_ADDR target_translate_tls_address (struct objfile *objfile,
|
extern CORE_ADDR target_translate_tls_address (struct objfile *objfile,
|
||||||
CORE_ADDR offset);
|
CORE_ADDR offset);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue