|
From: <sv...@va...> - 2007-02-16 19:20:36
|
Author: sewardj
Date: 2007-02-16 19:20:28 +0000 (Fri, 16 Feb 2007)
New Revision: 6599
Log:
Correctly handle DW_CFA_def_cfa_sf (existing code fails to scale
offset by data_a_f).
Modified:
trunk/coregrind/m_debuginfo/readdwarf.c
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2007-02-16 15:39:24 UTC (rev 6598)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2007-02-16 19:20:28 UTC (rev 6599)
@@ -2271,7 +2271,7 @@
if (reg < 0 || reg >= N_CFI_REGS)
return 0; /* fail */
ctx->cfa_reg = reg;
- ctx->cfa_offset = off;
+ ctx->cfa_offset = off * ctx->data_a_f;
if (si->ddump_frames)
VG_(printf)(" rci:DW_CFA_def_cfa_sf\n");
break;
@@ -2566,7 +2566,8 @@
i += nleb;
off = read_leb128( &instr[i], &nleb, 1 );
i += nleb;
- VG_(printf)(" DW_CFA_def_cfa_sf: r%d ofs %d\n", (Int)reg, (Int)off);
+ VG_(printf)(" DW_CFA_def_cfa_sf: r%d ofs %d\n",
+ (Int)reg, (Int)(off * data_a_f));
break;
case DW_CFA_register:
|