gdb/ChangeLog:

* stack.c (get_selected_block): Add new argument `addr_in_block',
used to return the exact code address we used to select the block,
not just the block.
* blockframe.c (get_frame_block, get_current_block): Same.
* frame.h (get_frame_block, get_current_block,
get_selected_block): Update declarations.
* linespec.c, stack.c, blockframe.c, breakpoint.c, findvar.c,
linespec.c, varobj.c, printcmd.c, symtab.c: Callers changed.

gdb/mi/ChangeLog:
* mi-cmd-stack.c (list_args_or_locals): Pass new arg to
get_frame_block.  (See entry in gdb/ChangeLog.)
This commit is contained in:
Jim Blandy
2002-04-05 22:04:43 +00:00
parent 84d2ac95e4
commit ae767bfb78
13 changed files with 68 additions and 25 deletions

View File

@ -1238,7 +1238,7 @@ static void
print_frame_local_vars (register struct frame_info *fi, register int num_tabs,
register struct ui_file *stream)
{
register struct block *block = get_frame_block (fi);
register struct block *block = get_frame_block (fi, 0);
register int values_printed = 0;
if (block == 0)
@ -1272,7 +1272,7 @@ print_frame_label_vars (register struct frame_info *fi, int this_level_only,
register struct ui_file *stream)
{
register struct blockvector *bl;
register struct block *block = get_frame_block (fi);
register struct block *block = get_frame_block (fi, 0);
register int values_printed = 0;
int index, have_default = 0;
char *blocks_printed;
@ -1501,17 +1501,21 @@ record_selected_frame (CORE_ADDR *frameaddrp, int *levelp)
}
/* Return the symbol-block in which the selected frame is executing.
Can return zero under various legitimate circumstances. */
Can return zero under various legitimate circumstances.
If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
code address within the block returned. We use this to decide
which macros are in scope. */
struct block *
get_selected_block (void)
get_selected_block (CORE_ADDR *addr_in_block)
{
if (!target_has_stack)
return 0;
if (!selected_frame)
return get_current_block ();
return get_frame_block (selected_frame);
return get_current_block (addr_in_block);
return get_frame_block (selected_frame, addr_in_block);
}
/* Find a frame a certain number of levels away from FRAME.