diff options
| author | Mark Wielaard <[email protected]> | 2013-04-10 15:52:57 +0200 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2013-04-10 15:52:57 +0200 |
| commit | d4744a7f641bbafe1a92529a812277052ae67029 (patch) | |
| tree | 16a2ba11781e31bb49d33bcace0d4357c268c45a | |
| parent | 1a09420a120dc7b71574f433d9c4929a80873ce3 (diff) | |
libdw: DW_FORM_GNU_ref_alt is always offset_size.
Unlike DW_FORM_ref_addr, a DW_FORM_GNU_ref_alt is always of offset size,
even in DWARF version 2.
Signed-off-by: Mark Wielaard <[email protected]>
| -rw-r--r-- | libdw/ChangeLog | 6 | ||||
| -rw-r--r-- | libdw/dwarf_formref_die.c | 2 |
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); |
