summaryrefslogtreecommitdiffstats
path: root/dwflpp.cxx
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2010-01-06 16:24:56 +0100
committerMark Wielaard <mjw@redhat.com>2010-01-06 16:27:57 +0100
commitd6b183074686940e8533b6fa377b098ec87a7f12 (patch)
tree284b6e7c1776b44c87f212823b74db2a4ccda9b2 /dwflpp.cxx
parent53d480f81d7c8232b2bfd5728baddcef50fe67ff (diff)
downloadsystemtap-steved-d6b183074686940e8533b6fa377b098ec87a7f12.tar.gz
systemtap-steved-d6b183074686940e8533b6fa377b098ec87a7f12.tar.xz
systemtap-steved-d6b183074686940e8533b6fa377b098ec87a7f12.zip
Fix get_cfa_ops failure on shared libraries.
The fix for PR10923 (fafeaf) wasn't completely correct. All cfa lookups need to be done through the relative pc (without bias) of the module we are looking in. * dwflpp.cxx (translate_location): Call get_cfa_ops with relative pc.
Diffstat (limited to 'dwflpp.cxx')
-rw-r--r--dwflpp.cxx6
1 files changed, 3 insertions, 3 deletions
diff --git a/dwflpp.cxx b/dwflpp.cxx
index 4fb0d54e..0d41dab8 100644
--- a/dwflpp.cxx
+++ b/dwflpp.cxx
@@ -1729,9 +1729,9 @@ dwflpp::translate_location(struct obstack *pool,
e->tok);
}
- // get_cfa_ops works on the dw address space, pc is relative to current
- // module, so add do need to add module_bias.
- Dwarf_Op *cfa_ops = get_cfa_ops (pc + module_bias);
+ // pc is relative to current module, which is what get_cfa_ops
+ // and c_translate_location expects.
+ Dwarf_Op *cfa_ops = get_cfa_ops (pc);
return c_translate_location (pool, &loc2c_error, this,
&loc2c_emit_address,
1, 0 /* PR9768 */,