[v2] gdb: Fix false match issue in skip_prologue_using_linetable
Commit Message
We should exclude matches to the ending PC to prevent false matches with the
next function, as prologue_end is located at the end PC.
<fun1>:
0x00: ... <-- start_pc
0x04: ...
0x08: ... <-- breakpoint
0x0c: ret
<fun2>:
0x10: ret <-- end_pc | prologue_end of fun2
---
gdb/symtab.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On 4/18/23 05:16, WANG Rui wrote:
I've submitted a v3, including test-case here (
https://sourceware.org/pipermail/gdb-patches/2023-April/198967.html ).
Thanks,
- Tom
@@ -3705,7 +3705,7 @@ skip_prologue_using_linetable (CORE_ADDR func_addr)
for (;
(it < linetable->item + linetable->nitems
- && it->raw_pc () <= unrel_end);
+ && it->raw_pc () < unrel_end);
it++)
if (it->prologue_end)
return {it->pc (objfile)};