summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libdw/ChangeLog6
-rw-r--r--libdw/dwarf_formref_die.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 12df9bbe..ae266d4e 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,9 @@
+2013-04-10 Mark Wielaard <[email protected]>
+
+ * dwarf_formref_die.c (dwarf_formref_die): Reference size is only
+ equal to address size when we have a DW_FORM_ref_addr for DWARF
+ version 2.
+
2013-03-25 Mark Wielaard <[email protected]>
* dwarf_getsrclines.c (dwarf_getsrclines): Mark highest address as
diff --git a/libdw/dwarf_formref_die.c b/libdw/dwarf_formref_die.c
index f0701270..b1af2abf 100644
--- a/libdw/dwarf_formref_die.c
+++ b/libdw/dwarf_formref_die.c
@@ -50,7 +50,7 @@ dwarf_formref_die (attr, result)
{
/* This has an absolute offset. */
- uint8_t ref_size = (cu->version == 2
+ uint8_t ref_size = (cu->version == 2 && attr->form == DW_FORM_ref_addr
? cu->address_size
: cu->offset_size);