From d6b183074686940e8533b6fa377b098ec87a7f12 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 6 Jan 2010 16:24:56 +0100 Subject: 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. --- dwflpp.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'dwflpp.cxx') 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 */, -- cgit