mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-01 20:12:01 +08:00
Fix sparc prologue skipping
sparc can fail at inline prologue skipping. Andrew Burgess tracked this down to sparc32_skip_prologue, which should use skip_prologue_using_sal rather than its hand-rolled variant. I don't have a good way to test this with the gdb test suite (is there a board file for using qemu? That would help), but it fixes a regression in the internal AdaCore test suite. We've had this patch internally at AdaCore for a while, but I just now finally got around to making sure that backing it out reintroduces the problem. gdb/ChangeLog 2020-09-21 Tom Tromey <tromey@adacore.com> * sparc-tdep.c (sparc32_skip_prologue): Use skip_prologue_using_sal.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2020-09-21 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* sparc-tdep.c (sparc32_skip_prologue): Use
|
||||
skip_prologue_using_sal.
|
||||
|
||||
2020-09-19 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* symfile.c (add_section_size_callback): Remove.
|
||||
|
@ -1127,18 +1127,19 @@ static CORE_ADDR
|
||||
sparc32_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
|
||||
{
|
||||
struct symtab_and_line sal;
|
||||
CORE_ADDR func_start, func_end;
|
||||
CORE_ADDR func_addr;
|
||||
struct sparc_frame_cache cache;
|
||||
|
||||
/* This is the preferred method, find the end of the prologue by
|
||||
using the debugging information. */
|
||||
if (find_pc_partial_function (start_pc, NULL, &func_start, &func_end))
|
||||
{
|
||||
sal = find_pc_line (func_start, 0);
|
||||
|
||||
if (sal.end < func_end
|
||||
&& start_pc <= sal.end)
|
||||
return sal.end;
|
||||
if (find_pc_partial_function (start_pc, NULL, &func_addr, NULL))
|
||||
{
|
||||
CORE_ADDR post_prologue_pc
|
||||
= skip_prologue_using_sal (gdbarch, func_addr);
|
||||
|
||||
if (post_prologue_pc != 0)
|
||||
return std::max (start_pc, post_prologue_pc);
|
||||
}
|
||||
|
||||
start_pc = sparc_analyze_prologue (gdbarch, start_pc, 0xffffffffUL, &cache);
|
||||
|
Reference in New Issue
Block a user