* mips-tdep.c (find_proc_desc): Inline call to find_proc_desc.
Simplify as NEXT_FRAME is NULL. (find_proc_desc): Simplify as NEXT_FRAME is non-NULL.
This commit is contained in:
parent
177f84a36d
commit
283be8734b
|
@ -1,5 +1,9 @@
|
||||||
2004-09-03 Andrew Cagney <cagney@gnu.org>
|
2004-09-03 Andrew Cagney <cagney@gnu.org>
|
||||||
|
|
||||||
|
* mips-tdep.c (find_proc_desc): Inline call to find_proc_desc.
|
||||||
|
Simplify as NEXT_FRAME is NULL.
|
||||||
|
(find_proc_desc): Simplify as NEXT_FRAME is non-NULL.
|
||||||
|
|
||||||
* mips-tdep.c (after_prologue): Replace proc_desc parameter with
|
* mips-tdep.c (after_prologue): Replace proc_desc parameter with
|
||||||
local variable.
|
local variable.
|
||||||
(mips_skip_prologue): Update.
|
(mips_skip_prologue): Update.
|
||||||
|
|
|
@ -888,13 +888,45 @@ after_prologue (CORE_ADDR pc)
|
||||||
mips_extra_func_info_t proc_desc;
|
mips_extra_func_info_t proc_desc;
|
||||||
struct symtab_and_line sal;
|
struct symtab_and_line sal;
|
||||||
CORE_ADDR func_addr, func_end;
|
CORE_ADDR func_addr, func_end;
|
||||||
|
CORE_ADDR startaddr = 0;
|
||||||
|
|
||||||
/* Pass a NULL next_frame to find_proc_desc. We should not attempt
|
/* Pass a NULL next_frame to heuristic_proc_desc. We should not
|
||||||
to read the stack pointer from the current machine state, because
|
attempt to read the stack pointer from the current machine state,
|
||||||
the current machine state has nothing to do with the information
|
because the current machine state has nothing to do with the
|
||||||
we need from the proc_desc; and the process may or may not exist
|
information we need from the proc_desc; and the process may or
|
||||||
right now. */
|
may not exist right now. */
|
||||||
proc_desc = find_proc_desc (pc, NULL);
|
proc_desc = non_heuristic_proc_desc (pc, &startaddr);
|
||||||
|
if (proc_desc)
|
||||||
|
{
|
||||||
|
/* IF this is the topmost frame AND (this proc does not have
|
||||||
|
debugging information OR the PC is in the procedure prologue)
|
||||||
|
THEN create a "heuristic" proc_desc (by analyzing the actual
|
||||||
|
code) to replace the "official" proc_desc. */
|
||||||
|
struct symtab_and_line val;
|
||||||
|
struct symbol *proc_symbol =
|
||||||
|
PROC_DESC_IS_DUMMY (proc_desc) ? 0 : PROC_SYMBOL (proc_desc);
|
||||||
|
|
||||||
|
if (proc_symbol)
|
||||||
|
{
|
||||||
|
val = find_pc_line (BLOCK_START
|
||||||
|
(SYMBOL_BLOCK_VALUE (proc_symbol)), 0);
|
||||||
|
val.pc = val.end ? val.end : pc;
|
||||||
|
}
|
||||||
|
if (!proc_symbol || pc < val.pc)
|
||||||
|
{
|
||||||
|
mips_extra_func_info_t found_heuristic =
|
||||||
|
heuristic_proc_desc (PROC_LOW_ADDR (proc_desc), pc, NULL);
|
||||||
|
if (found_heuristic)
|
||||||
|
proc_desc = found_heuristic;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (startaddr == 0)
|
||||||
|
startaddr = heuristic_proc_start (pc);
|
||||||
|
|
||||||
|
proc_desc = heuristic_proc_desc (startaddr, pc, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
if (proc_desc)
|
if (proc_desc)
|
||||||
{
|
{
|
||||||
|
@ -3115,38 +3147,7 @@ find_proc_desc (CORE_ADDR pc, struct frame_info *next_frame)
|
||||||
CORE_ADDR startaddr = 0;
|
CORE_ADDR startaddr = 0;
|
||||||
|
|
||||||
proc_desc = non_heuristic_proc_desc (pc, &startaddr);
|
proc_desc = non_heuristic_proc_desc (pc, &startaddr);
|
||||||
|
if (proc_desc == NULL)
|
||||||
if (proc_desc)
|
|
||||||
{
|
|
||||||
/* IF this is the topmost frame AND
|
|
||||||
* (this proc does not have debugging information OR
|
|
||||||
* the PC is in the procedure prologue)
|
|
||||||
* THEN create a "heuristic" proc_desc (by analyzing
|
|
||||||
* the actual code) to replace the "official" proc_desc.
|
|
||||||
*/
|
|
||||||
if (next_frame == NULL)
|
|
||||||
{
|
|
||||||
struct symtab_and_line val;
|
|
||||||
struct symbol *proc_symbol =
|
|
||||||
PROC_DESC_IS_DUMMY (proc_desc) ? 0 : PROC_SYMBOL (proc_desc);
|
|
||||||
|
|
||||||
if (proc_symbol)
|
|
||||||
{
|
|
||||||
val = find_pc_line (BLOCK_START
|
|
||||||
(SYMBOL_BLOCK_VALUE (proc_symbol)), 0);
|
|
||||||
val.pc = val.end ? val.end : pc;
|
|
||||||
}
|
|
||||||
if (!proc_symbol || pc < val.pc)
|
|
||||||
{
|
|
||||||
mips_extra_func_info_t found_heuristic =
|
|
||||||
heuristic_proc_desc (PROC_LOW_ADDR (proc_desc),
|
|
||||||
pc, next_frame);
|
|
||||||
if (found_heuristic)
|
|
||||||
proc_desc = found_heuristic;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (startaddr == 0)
|
if (startaddr == 0)
|
||||||
startaddr = heuristic_proc_start (pc);
|
startaddr = heuristic_proc_start (pc);
|
||||||
|
|
Loading…
Reference in New Issue