From 5fed3c67c3016cad0b34051106f7d259f95489b0 Mon Sep 17 00:00:00 2001 From: Gregory LEOCADIE Date: Thu, 8 Dec 2022 14:26:02 +0100 Subject: Fix frame categorization --- src/x86_64/Gstash_frame.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/x86_64/Gstash_frame.c b/src/x86_64/Gstash_frame.c index d8f086e9..6b980a98 100644 --- a/src/x86_64/Gstash_frame.c +++ b/src/x86_64/Gstash_frame.c @@ -71,11 +71,13 @@ tdep_stash_frame (struct dwarf_cursor *d, struct dwarf_reg_state *rs) && DWARF_GET_LOC(d->loc[rs->ret_addr_column]) == d->cfa-8 && (rs->reg.where[RBP] == DWARF_WHERE_UNDEF || rs->reg.where[RBP] == DWARF_WHERE_SAME + || rs->reg.where[RBP] == DWARF_WHERE_CFA || (rs->reg.where[RBP] == DWARF_WHERE_CFAREL && labs((long) rs->reg.val[RBP]) < (1 << 14) && rs->reg.val[RBP]+1 != 0)) && (rs->reg.where[RSP] == DWARF_WHERE_UNDEF || rs->reg.where[RSP] == DWARF_WHERE_SAME + || rs->reg.where[RSP] == DWARF_WHERE_CFA || (rs->reg.where[RSP] == DWARF_WHERE_CFAREL && labs((long) rs->reg.val[RSP]) < (1 << 14) && rs->reg.val[RSP]+1 != 0))) @@ -88,6 +90,10 @@ tdep_stash_frame (struct dwarf_cursor *d, struct dwarf_reg_state *rs) f->rbp_cfa_offset = rs->reg.val[RBP]; if (rs->reg.where[RSP] == DWARF_WHERE_CFAREL) f->rsp_cfa_offset = rs->reg.val[RSP]; + if (rs->reg.where[RBP] == DWARF_WHERE_CFA) + f->rbp_cfa_offset = 0; + if (rs->reg.where[RSP] == DWARF_WHERE_CFA) + f->rsp_cfa_offset = 0; Debug (4, " standard frame\n"); } -- cgit v1.2.1