2003-07-11 Andrew Cagney <cagney@redhat.com>
* frame.h (frame_address_in_block): Delete declaration. * blockframe.c (frame_address_in_block): Delete function. (get_frame_block): Use get_frame_address_in_block. (block_innermost_frame): Ditto. * stack.c (print_frame, backtrace_command_1): Ditto.
This commit is contained in:
parent
7a9823f1a9
commit
c4a095243b
4 changed files with 12 additions and 35 deletions
|
@ -1,5 +1,11 @@
|
||||||
2003-07-11 Andrew Cagney <cagney@redhat.com>
|
2003-07-11 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
|
* frame.h (frame_address_in_block): Delete declaration.
|
||||||
|
* blockframe.c (frame_address_in_block): Delete function.
|
||||||
|
(get_frame_block): Use get_frame_address_in_block.
|
||||||
|
(block_innermost_frame): Ditto.
|
||||||
|
* stack.c (print_frame, backtrace_command_1): Ditto.
|
||||||
|
|
||||||
* frame.h (get_frame_address_in_block): Declare.
|
* frame.h (get_frame_address_in_block): Declare.
|
||||||
(frame_unwind_address_in_block): Declare.
|
(frame_unwind_address_in_block): Declare.
|
||||||
* frame.c (frame_unwind_address_in_block): New function.
|
* frame.c (frame_unwind_address_in_block): New function.
|
||||||
|
|
|
@ -168,31 +168,6 @@ frameless_look_for_prologue (struct frame_info *frame)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return the address of the PC for the given FRAME, ie the current PC value
|
|
||||||
if FRAME is the innermost frame, or the address adjusted to point to the
|
|
||||||
call instruction if not. */
|
|
||||||
|
|
||||||
CORE_ADDR
|
|
||||||
frame_address_in_block (struct frame_info *frame)
|
|
||||||
{
|
|
||||||
CORE_ADDR pc = get_frame_pc (frame);
|
|
||||||
|
|
||||||
/* If we are not in the innermost frame, and we are not interrupted
|
|
||||||
by a signal, frame->pc points to the instruction following the
|
|
||||||
call. As a consequence, we need to get the address of the previous
|
|
||||||
instruction. Unfortunately, this is not straightforward to do, so
|
|
||||||
we just use the address minus one, which is a good enough
|
|
||||||
approximation. */
|
|
||||||
/* FIXME: cagney/2002-11-10: Should this instead test for
|
|
||||||
NORMAL_FRAME? A dummy frame (in fact all the abnormal frames)
|
|
||||||
save the PC value in the block. */
|
|
||||||
if (get_next_frame (frame) != 0
|
|
||||||
&& get_frame_type (get_next_frame (frame)) != SIGTRAMP_FRAME)
|
|
||||||
--pc;
|
|
||||||
|
|
||||||
return pc;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Return the innermost lexical block in execution
|
/* Return the innermost lexical block in execution
|
||||||
in a specified stack frame. The frame address is assumed valid.
|
in a specified stack frame. The frame address is assumed valid.
|
||||||
|
|
||||||
|
@ -212,7 +187,7 @@ frame_address_in_block (struct frame_info *frame)
|
||||||
struct block *
|
struct block *
|
||||||
get_frame_block (struct frame_info *frame, CORE_ADDR *addr_in_block)
|
get_frame_block (struct frame_info *frame, CORE_ADDR *addr_in_block)
|
||||||
{
|
{
|
||||||
const CORE_ADDR pc = frame_address_in_block (frame);
|
const CORE_ADDR pc = get_frame_address_in_block (frame);
|
||||||
|
|
||||||
if (addr_in_block)
|
if (addr_in_block)
|
||||||
*addr_in_block = pc;
|
*addr_in_block = pc;
|
||||||
|
@ -512,7 +487,7 @@ block_innermost_frame (struct block *block)
|
||||||
frame = get_prev_frame (frame);
|
frame = get_prev_frame (frame);
|
||||||
if (frame == NULL)
|
if (frame == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
calling_pc = frame_address_in_block (frame);
|
calling_pc = get_frame_address_in_block (frame);
|
||||||
if (calling_pc >= start && calling_pc < end)
|
if (calling_pc >= start && calling_pc < end)
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
|
@ -542,10 +542,6 @@ extern struct block *get_selected_block (CORE_ADDR *addr_in_block);
|
||||||
|
|
||||||
extern struct symbol *get_frame_function (struct frame_info *);
|
extern struct symbol *get_frame_function (struct frame_info *);
|
||||||
|
|
||||||
/* DEPRECATED: Replaced by tye pair get_frame_address_in_block and
|
|
||||||
frame_unwind_address_in_block. */
|
|
||||||
extern CORE_ADDR frame_address_in_block (struct frame_info *);
|
|
||||||
|
|
||||||
extern CORE_ADDR get_pc_function_start (CORE_ADDR);
|
extern CORE_ADDR get_pc_function_start (CORE_ADDR);
|
||||||
|
|
||||||
extern int frameless_look_for_prologue (struct frame_info *);
|
extern int frameless_look_for_prologue (struct frame_info *);
|
||||||
|
|
|
@ -547,7 +547,7 @@ print_frame (struct frame_info *fi,
|
||||||
stb = ui_out_stream_new (uiout);
|
stb = ui_out_stream_new (uiout);
|
||||||
old_chain = make_cleanup_ui_out_stream_delete (stb);
|
old_chain = make_cleanup_ui_out_stream_delete (stb);
|
||||||
|
|
||||||
func = find_pc_function (frame_address_in_block (fi));
|
func = find_pc_function (get_frame_address_in_block (fi));
|
||||||
if (func)
|
if (func)
|
||||||
{
|
{
|
||||||
/* In certain pathological cases, the symtabs give the wrong
|
/* In certain pathological cases, the symtabs give the wrong
|
||||||
|
@ -566,7 +566,7 @@ print_frame (struct frame_info *fi,
|
||||||
ever changed many parts of GDB will need to be changed (and we'll
|
ever changed many parts of GDB will need to be changed (and we'll
|
||||||
create a find_pc_minimal_function or some such). */
|
create a find_pc_minimal_function or some such). */
|
||||||
|
|
||||||
struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (frame_address_in_block (fi));
|
struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (get_frame_address_in_block (fi));
|
||||||
if (msymbol != NULL
|
if (msymbol != NULL
|
||||||
&& (SYMBOL_VALUE_ADDRESS (msymbol)
|
&& (SYMBOL_VALUE_ADDRESS (msymbol)
|
||||||
> BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
|
> BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
|
||||||
|
@ -614,7 +614,7 @@ print_frame (struct frame_info *fi,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (frame_address_in_block (fi));
|
struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (get_frame_address_in_block (fi));
|
||||||
if (msymbol != NULL)
|
if (msymbol != NULL)
|
||||||
{
|
{
|
||||||
funname = DEPRECATED_SYMBOL_NAME (msymbol);
|
funname = DEPRECATED_SYMBOL_NAME (msymbol);
|
||||||
|
@ -1206,7 +1206,7 @@ backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
|
||||||
fi = get_prev_frame (fi))
|
fi = get_prev_frame (fi))
|
||||||
{
|
{
|
||||||
QUIT;
|
QUIT;
|
||||||
ps = find_pc_psymtab (frame_address_in_block (fi));
|
ps = find_pc_psymtab (get_frame_address_in_block (fi));
|
||||||
if (ps)
|
if (ps)
|
||||||
PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in */
|
PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue