mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-03-07 00:47:39 +00:00
2009-11-10 Tristan Gingold <gingold@adacore.com>
* avr-tdep.c (avr_skip_prologue): First try to skip prologue using skip_prologue_using_sal.
This commit is contained in:
parent
1bd0bb725f
commit
8c201e543a
@ -1,3 +1,8 @@
|
||||
2009-11-10 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* avr-tdep.c (avr_skip_prologue): First try to skip prologue
|
||||
using skip_prologue_using_sal.
|
||||
|
||||
2009-11-10 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* avr-tdep.c (avr_extract_return_value): Remove.
|
||||
|
@ -789,40 +789,39 @@ static CORE_ADDR
|
||||
avr_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
|
||||
{
|
||||
CORE_ADDR func_addr, func_end;
|
||||
CORE_ADDR prologue_end = pc;
|
||||
CORE_ADDR post_prologue_pc;
|
||||
|
||||
/* See what the symbol table says */
|
||||
|
||||
if (find_pc_partial_function (pc, NULL, &func_addr, &func_end))
|
||||
{
|
||||
struct symtab_and_line sal;
|
||||
struct avr_unwind_cache info = {0};
|
||||
struct trad_frame_saved_reg saved_regs[AVR_NUM_REGS];
|
||||
if (!find_pc_partial_function (pc, NULL, &func_addr, &func_end))
|
||||
return pc;
|
||||
|
||||
info.saved_regs = saved_regs;
|
||||
post_prologue_pc = skip_prologue_using_sal (gdbarch, func_addr);
|
||||
if (post_prologue_pc != 0)
|
||||
return max (pc, post_prologue_pc);
|
||||
|
||||
/* Need to run the prologue scanner to figure out if the function has a
|
||||
prologue and possibly skip over moving arguments passed via registers
|
||||
to other registers. */
|
||||
{
|
||||
CORE_ADDR prologue_end = pc;
|
||||
struct avr_unwind_cache info = {0};
|
||||
struct trad_frame_saved_reg saved_regs[AVR_NUM_REGS];
|
||||
|
||||
prologue_end = avr_scan_prologue (gdbarch, func_addr, func_end, &info);
|
||||
|
||||
if (info.prologue_type == AVR_PROLOGUE_NONE)
|
||||
return pc;
|
||||
else
|
||||
{
|
||||
sal = find_pc_line (func_addr, 0);
|
||||
|
||||
if (sal.line != 0 && sal.end < func_end)
|
||||
return sal.end;
|
||||
}
|
||||
}
|
||||
info.saved_regs = saved_regs;
|
||||
|
||||
/* Need to run the prologue scanner to figure out if the function has a
|
||||
prologue and possibly skip over moving arguments passed via registers
|
||||
to other registers. */
|
||||
|
||||
prologue_end = avr_scan_prologue (gdbarch, func_addr, func_end, &info);
|
||||
|
||||
if (info.prologue_type != AVR_PROLOGUE_NONE)
|
||||
return prologue_end;
|
||||
}
|
||||
|
||||
/* Either we didn't find the start of this function (nothing we can do),
|
||||
or there's no line info, or the line after the prologue is after
|
||||
the end of the function (there probably isn't a prologue). */
|
||||
|
||||
return prologue_end;
|
||||
return pc;
|
||||
}
|
||||
|
||||
/* Not all avr devices support the BREAK insn. Those that don't should treat
|
||||
|
Loading…
x
Reference in New Issue
Block a user