.debug_names: Parse DW_IDX_die_offset as a reference

Before this patch we were parsing the attributes as section offsets, as
that is what apple_names is doing. However, this is not correct as DWARF
v5 specifies that this attribute should use the Reference form class.

This also updates all the testcases (except the ones that deliberately
pass a different form) to use the correct form class.

llvm-svn: 328773
This commit is contained in:
Pavel Labath 2018-03-29 13:47:57 +00:00
parent 4f8f1e5115
commit 2d1fc4375f
8 changed files with 17 additions and 17 deletions

View File

@ -535,7 +535,7 @@ DWARFDebugNames::Entry::lookup(dwarf::Index Index) const {
Optional<uint64_t> DWARFDebugNames::Entry::getDIEUnitOffset() const {
if (Optional<DWARFFormValue> Off = lookup(dwarf::DW_IDX_die_offset))
return Off->getAsSectionOffset();
return Off->getAsReferenceUVal();
return None;
}

View File

@ -44,7 +44,7 @@
.byte 46 # Abbrev code
.byte 46 # DW_TAG_subprogram
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 0 # End of abbrev list
@ -52,11 +52,11 @@
.Lnames_entries0:
.Lnames0:
.byte 46 # Abbrev code
.long .Ldie0 # DW_IDX_die_offset
.long .Ldie0-.Lcu_begin0 # DW_IDX_die_offset
.long 0 # End of list: foo
.Lnames1:
.byte 46 # Abbrev code
.long .Ldie0 # DW_IDX_die_offset
.long .Ldie0-.Lcu_begin0 # DW_IDX_die_offset
.long 0 # End of list: _Z3foov
.p2align 2
.Lnames_end0:
@ -81,7 +81,7 @@
.byte 52 # Abbrev code
.byte 52 # DW_TAG_variable
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 0 # End of abbrev list
@ -89,7 +89,7 @@
.Lnames_entries1:
.Lnames2:
.byte 52 # Abbrev code
.long .Ldie1 # DW_IDX_die_offset
.long .Ldie1-.Lcu_begin1 # DW_IDX_die_offset
.long 0 # End of list: bar
.p2align 2
.Lnames_end1:
@ -113,7 +113,7 @@
# CHECK-NEXT: Abbreviations [
# CHECK-NEXT: Abbreviation 0x2e {
# CHECK-NEXT: Tag: DW_TAG_subprogram
# CHECK-NEXT: DW_IDX_die_offset: DW_FORM_data4
# CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
# CHECK-NEXT: }
# CHECK-NEXT: ]
# CHECK-NEXT: Bucket 0 [
@ -159,7 +159,7 @@
# CHECK-NEXT: Abbreviations [
# CHECK-NEXT: Abbreviation 0x34 {
# CHECK-NEXT: Tag: DW_TAG_variable
# CHECK-NEXT: DW_IDX_die_offset: DW_FORM_data4
# CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
# CHECK-NEXT: }
# CHECK-NEXT: ]
# CHECK-NEXT: Bucket 0 [
@ -169,7 +169,7 @@
# CHECK-NEXT: Entry @ 0xa3 {
# CHECK-NEXT: Abbrev: 0x34
# CHECK-NEXT: Tag: DW_TAG_variable
# CHECK-NEXT: DW_IDX_die_offset: 0x00000003
# CHECK-NEXT: DW_IDX_die_offset: 0x00000001
# CHECK-NEXT: }
# CHECK-NEXT: }
# CHECK-NEXT: ]

View File

@ -121,7 +121,7 @@
.byte 46 # Abbrev code
.byte 46 # DW_TAG_subprogram
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 0 # End of abbrev list
@ -163,7 +163,7 @@
.byte 46 # Abbrev code
.byte 46 # DW_TAG_subprogram
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 0 # End of abbrev list

View File

@ -50,13 +50,13 @@
.byte 46 # Abbrev code
.byte 46 # DW_TAG_subprogram
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 46 # Abbrev code
.byte 46 # DW_TAG_subprogram
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 0 # End of abbrev list

View File

@ -65,7 +65,7 @@
.byte 17 # DW_FORM_ref1
.byte 2 # DW_IDX_type_unit
.byte 17 # DW_FORM_ref1
.byte 2 # DW_IDX_die_offset
.byte 2 # DW_IDX_type_unit
.byte 5 # DW_FORM_data2
.byte 5 # DW_IDX_type_hash
.byte 6 # DW_FORM_data4

View File

@ -69,7 +69,7 @@
.byte 46 # Abbrev code
.byte 46 # DW_TAG_subprogram
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 0 # End of abbrev list

View File

@ -97,7 +97,7 @@
.byte 46 # Abbrev code
.byte 46 # DW_TAG_subprogram
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 0 # End of abbrev list

View File

@ -79,7 +79,7 @@
.byte 46 # Abbrev code
.byte 46 # DW_TAG_subprogram
.byte 3 # DW_IDX_die_offset
.byte 6 # DW_FORM_data4
.byte 19 # DW_FORM_ref4
.byte 0 # End of abbrev
.byte 0 # End of abbrev
.byte 0 # End of abbrev list