[llvm] r297230 - [ObjectYAML] Fix issue with DWARF2 AddrSize 8
Chris Bieneman via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 7 13:34:35 PST 2017
Author: cbieneman
Date: Tue Mar 7 15:34:35 2017
New Revision: 297230
URL: http://llvm.org/viewvc/llvm-project?rev=297230&view=rev
Log:
[ObjectYAML] Fix issue with DWARF2 AddrSize 8
In my refactoring I introduced a bug where we were using the reference size instead of the offset size for DW_FORM_strp and similar forms.
This patch resolves the error and adds a test case testing all the DWARF forms for DWARF2 AddrSize 8. There is similar coverage already in the DWARFDebugInfoTest sources that covers the parser. Once I migrate the DWARFGenerator APIs to be built on the YAML tools they will be fully covered under the same tests.
Added:
llvm/trunk/test/ObjectYAML/MachO/DWARF2-AddrSize8-FormValues.yaml
Modified:
llvm/trunk/lib/ObjectYAML/DWARFVisitor.cpp
Modified: llvm/trunk/lib/ObjectYAML/DWARFVisitor.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/DWARFVisitor.cpp?rev=297230&r1=297229&r2=297230&view=diff
==============================================================================
--- llvm/trunk/lib/ObjectYAML/DWARFVisitor.cpp (original)
+++ llvm/trunk/lib/ObjectYAML/DWARFVisitor.cpp Tue Mar 7 15:34:35 2017
@@ -34,10 +34,14 @@ void DWARFYAML::VisitorImpl<T>::onVariab
}
}
+unsigned getOffsetSize(const DWARFYAML::Unit &Unit) {
+ return Unit.Length.isDWARF64() ? 8 : 4;
+}
+
unsigned getRefSize(const DWARFYAML::Unit &Unit) {
if (Unit.Version == 2)
return Unit.AddrSize;
- return Unit.Length.isDWARF64() ? 8 : 4;
+ return getOffsetSize(Unit);
}
template <typename T> void DWARFYAML::VisitorImpl<T>::traverseDebugInfo() {
@@ -149,7 +153,7 @@ template <typename T> void DWARFYAML::Vi
case dwarf::DW_FORM_GNU_strp_alt:
case dwarf::DW_FORM_line_strp:
case dwarf::DW_FORM_strp_sup:
- onVariableSizeValue(FormVal->Value, getRefSize(Unit));
+ onVariableSizeValue(FormVal->Value, getOffsetSize(Unit));
break;
case dwarf::DW_FORM_ref_sig8:
onValue((uint64_t)FormVal->Value);
Added: llvm/trunk/test/ObjectYAML/MachO/DWARF2-AddrSize8-FormValues.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ObjectYAML/MachO/DWARF2-AddrSize8-FormValues.yaml?rev=297230&view=auto
==============================================================================
--- llvm/trunk/test/ObjectYAML/MachO/DWARF2-AddrSize8-FormValues.yaml (added)
+++ llvm/trunk/test/ObjectYAML/MachO/DWARF2-AddrSize8-FormValues.yaml Tue Mar 7 15:34:35 2017
@@ -0,0 +1,507 @@
+# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACF
+ cputype: 0x01000007
+ cpusubtype: 0x00000003
+ filetype: 0x0000000A
+ ncmds: 5
+ sizeofcmds: 1800
+ flags: 0x00000000
+ reserved: 0x00000000
+LoadCommands:
+ - cmd: LC_SEGMENT_64
+ cmdsize: 72
+ segname: __PAGEZERO
+ vmaddr: 0
+ vmsize: 4294967296
+ fileoff: 0
+ filesize: 0
+ maxprot: 0
+ initprot: 0
+ nsects: 0
+ flags: 0
+ - cmd: LC_SEGMENT_64
+ cmdsize: 472
+ segname: __TEXT
+ vmaddr: 4294967296
+ vmsize: 4096
+ fileoff: 0
+ filesize: 0
+ maxprot: 7
+ initprot: 5
+ nsects: 5
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x0000000100000F50
+ size: 52
+ offset: 0x00000000
+ align: 4
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000400
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __stubs
+ segname: __TEXT
+ addr: 0x0000000100000F84
+ size: 6
+ offset: 0x00000000
+ align: 1
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000408
+ reserved1: 0x00000000
+ reserved2: 0x00000006
+ reserved3: 0x00000000
+ - sectname: __stub_helper
+ segname: __TEXT
+ addr: 0x0000000100000F8C
+ size: 26
+ offset: 0x00000000
+ align: 2
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000400
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __cstring
+ segname: __TEXT
+ addr: 0x0000000100000FA6
+ size: 14
+ offset: 0x00000000
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000002
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __unwind_info
+ segname: __TEXT
+ addr: 0x0000000100000FB4
+ size: 72
+ offset: 0x00000000
+ align: 2
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - cmd: LC_SEGMENT_64
+ cmdsize: 232
+ segname: __DATA
+ vmaddr: 4294971392
+ vmsize: 4096
+ fileoff: 0
+ filesize: 0
+ maxprot: 7
+ initprot: 3
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __nl_symbol_ptr
+ segname: __DATA
+ addr: 0x0000000100001000
+ size: 16
+ offset: 0x00000000
+ align: 3
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000006
+ reserved1: 0x00000001
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __la_symbol_ptr
+ segname: __DATA
+ addr: 0x0000000100001010
+ size: 8
+ offset: 0x00000000
+ align: 3
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000007
+ reserved1: 0x00000003
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - cmd: LC_SEGMENT_64
+ cmdsize: 72
+ segname: __LINKEDIT
+ vmaddr: 4294975488
+ vmsize: 4096
+ fileoff: 4096
+ filesize: 60
+ maxprot: 7
+ initprot: 1
+ nsects: 0
+ flags: 0
+ - cmd: LC_SEGMENT_64
+ cmdsize: 952
+ segname: __DWARF
+ vmaddr: 4294979584
+ vmsize: 4096
+ fileoff: 8192
+ filesize: 764
+ maxprot: 7
+ initprot: 3
+ nsects: 11
+ flags: 0
+ Sections:
+ - sectname: __debug_line
+ segname: __DWARF
+ addr: 0x0000000100003000
+ size: 69
+ offset: 0x00002000
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __debug_pubnames
+ segname: __DWARF
+ addr: 0x0000000100003045
+ size: 27
+ offset: 0x00002045
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __debug_pubtypes
+ segname: __DWARF
+ addr: 0x0000000100003060
+ size: 35
+ offset: 0x00002060
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __debug_aranges
+ segname: __DWARF
+ addr: 0x0000000100003083
+ size: 48
+ offset: 0x00002083
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __debug_info
+ segname: __DWARF
+ addr: 0x00000001000030B3
+ size: 180
+ offset: 0x000020B3
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __debug_abbrev
+ segname: __DWARF
+ addr: 0x000000010000312C
+ size: 84
+ offset: 0x00002167
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __debug_str
+ segname: __DWARF
+ addr: 0x0000000100003178
+ size: 83
+ offset: 0x000021BB
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __apple_names
+ segname: __DWARF
+ addr: 0x0000000100003206
+ size: 36
+ offset: 0x0000221E
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __apple_namespac
+ segname: __DWARF
+ addr: 0x0000000100003242
+ size: 36
+ offset: 0x00002242
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __apple_types
+ segname: __DWARF
+ addr: 0x0000000100003266
+ size: 114
+ offset: 0x00002266
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __apple_objc
+ segname: __DWARF
+ addr: 0x00000001000032D8
+ size: 36
+ offset: 0x000022D8
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+DWARF:
+ debug_str:
+ - World
+ debug_abbrev:
+ - Code: 0x00000001
+ Tag: DW_TAG_compile_unit
+ Children: DW_CHILDREN_no
+ Attributes:
+ - Attribute: 0x2000
+ Form: DW_FORM_addr
+ - Attribute: 0x2001
+ Form: DW_FORM_block
+ - Attribute: DW_AT_MIPS_loop_begin
+ Form: DW_FORM_block1
+ - Attribute: DW_AT_MIPS_tail_loop_begin
+ Form: DW_FORM_block2
+ - Attribute: DW_AT_MIPS_epilog_begin
+ Form: DW_FORM_block4
+ - Attribute: DW_AT_MIPS_loop_unroll_factor
+ Form: DW_FORM_data1
+ - Attribute: DW_AT_MIPS_software_pipeline_depth
+ Form: DW_FORM_data2
+ - Attribute: DW_AT_MIPS_linkage_name
+ Form: DW_FORM_data4
+ - Attribute: DW_AT_MIPS_stride
+ Form: DW_FORM_data8
+ - Attribute: DW_AT_MIPS_abstract_name
+ Form: DW_FORM_string
+ - Attribute: DW_AT_MIPS_clone_origin
+ Form: DW_FORM_strp
+ - Attribute: DW_AT_MIPS_has_inlines
+ Form: DW_FORM_ref_addr
+ - Attribute: DW_AT_MIPS_stride_byte
+ Form: DW_FORM_ref1
+ - Attribute: DW_AT_MIPS_stride_elem
+ Form: DW_FORM_ref2
+ - Attribute: DW_AT_MIPS_ptr_dopetype
+ Form: DW_FORM_ref4
+ - Attribute: DW_AT_MIPS_allocatable_dopetype
+ Form: DW_FORM_ref8
+ - Attribute: DW_AT_MIPS_assumed_shape_dopetype
+ Form: DW_FORM_ref_sig8
+ - Attribute: DW_AT_MIPS_assumed_size
+ Form: DW_FORM_ref_udata
+ - Attribute: 0x2012
+ Form: DW_FORM_flag
+ - Attribute: 0x2013
+ Form: DW_FORM_flag
+ - Attribute: 0x2014
+ Form: DW_FORM_flag_present
+ - Attribute: 0x2015
+ Form: DW_FORM_sdata
+ - Attribute: 0x2017
+ Form: DW_FORM_udata
+ - Attribute: 0x2018
+ Form: DW_FORM_GNU_ref_alt
+ - Attribute: 0x2019
+ Form: DW_FORM_sec_offset
+ - Attribute: 0x201A
+ Form: DW_FORM_addr
+ debug_info:
+ - Length:
+ TotalLength: 168
+ Version: 2
+ AbbrOffset: 0
+ AddrSize: 8
+ Entries:
+ - AbbrCode: 0x00000001
+ Values:
+ - Value: 0x0123456789ABCDEF
+ - Value: 0x000000000000000A
+ BlockData:
+ - 0x01
+ - 0x02
+ - 0x03
+ - 0x04
+ - 0x05
+ - 0x06
+ - 0x07
+ - 0x08
+ - 0x09
+ - 0x00
+ - Value: 0x000000000000000A
+ BlockData:
+ - 0x01
+ - 0x02
+ - 0x03
+ - 0x04
+ - 0x05
+ - 0x06
+ - 0x07
+ - 0x08
+ - 0x09
+ - 0x00
+ - Value: 0x000000000000000A
+ BlockData:
+ - 0x01
+ - 0x02
+ - 0x03
+ - 0x04
+ - 0x05
+ - 0x06
+ - 0x07
+ - 0x08
+ - 0x09
+ - 0x00
+ - Value: 0x000000000000000A
+ BlockData:
+ - 0x01
+ - 0x02
+ - 0x03
+ - 0x04
+ - 0x05
+ - 0x06
+ - 0x07
+ - 0x08
+ - 0x09
+ - 0x00
+ - Value: 0x0000000000000001
+ - Value: 0x0000000000002345
+ - Value: 0x000000006789ABCD
+ - Value: 0x0011223344556677
+ - Value: 0x0000000000000000
+ CStr: Hello
+ - Value: 0x0000000000000000
+ - Value: 0x0000000012345678
+ - Value: 0x0000000000000001
+ - Value: 0x0000000000002345
+ - Value: 0x000000006789ABCD
+ - Value: 0x0011223344556677
+ - Value: 0xAABBCCDDEEFF0011
+ - Value: 0xFFFFFFFFFFFFFFFE
+ - Value: 0x0000000000000001
+ - Value: 0x0000000000000000
+ - Value: 0x0000000000000001
+ - Value: 0x8000000000000000
+ - Value: 0xFFFFFFFFFFFFFFFE
+ - Value: 0x0000000000000001
+ - Value: 0x0000000000000002
+ - Value: 0x0123456789ABCDEF
+...
+
+#CHECK: debug_info:
+#CHECK: - Length:
+#CHECK: TotalLength: 168
+#CHECK: Version: 2
+#CHECK: AbbrOffset: 0
+#CHECK: AddrSize: 8
+#CHECK: Entries:
+#CHECK: - AbbrCode: 0x00000001
+#CHECK: Values:
+#CHECK: - Value: 0x0123456789ABCDEF
+#CHECK: - Value: 0x000000000000000A
+#CHECK: BlockData:
+#CHECK: - 0x01
+#CHECK: - 0x02
+#CHECK: - 0x03
+#CHECK: - 0x04
+#CHECK: - 0x05
+#CHECK: - 0x06
+#CHECK: - 0x07
+#CHECK: - 0x08
+#CHECK: - 0x09
+#CHECK: - 0x00
+#CHECK: - Value: 0x000000000000000A
+#CHECK: BlockData:
+#CHECK: - 0x01
+#CHECK: - 0x02
+#CHECK: - 0x03
+#CHECK: - 0x04
+#CHECK: - 0x05
+#CHECK: - 0x06
+#CHECK: - 0x07
+#CHECK: - 0x08
+#CHECK: - 0x09
+#CHECK: - 0x00
+#CHECK: - Value: 0x000000000000000A
+#CHECK: BlockData:
+#CHECK: - 0x01
+#CHECK: - 0x02
+#CHECK: - 0x03
+#CHECK: - 0x04
+#CHECK: - 0x05
+#CHECK: - 0x06
+#CHECK: - 0x07
+#CHECK: - 0x08
+#CHECK: - 0x09
+#CHECK: - 0x00
+#CHECK: - Value: 0x000000000000000A
+#CHECK: BlockData:
+#CHECK: - 0x01
+#CHECK: - 0x02
+#CHECK: - 0x03
+#CHECK: - 0x04
+#CHECK: - 0x05
+#CHECK: - 0x06
+#CHECK: - 0x07
+#CHECK: - 0x08
+#CHECK: - 0x09
+#CHECK: - 0x00
+#CHECK: - Value: 0x0000000000000001
+#CHECK: - Value: 0x0000000000002345
+#CHECK: - Value: 0x000000006789ABCD
+#CHECK: - Value: 0x0011223344556677
+#CHECK: CStr: Hello
+#CHECK: - Value: 0x0000000000000000
+#CHECK: - Value: 0x0000000012345678
+#CHECK: - Value: 0x0000000000000001
+#CHECK: - Value: 0x0000000000002345
+#CHECK: - Value: 0x000000006789ABCD
+#CHECK: - Value: 0x0011223344556677
+#CHECK: - Value: 0xAABBCCDDEEFF0011
+#CHECK: - Value: 0xFFFFFFFFFFFFFFFE
+#CHECK: - Value: 0x0000000000000001
+#CHECK: - Value: 0x0000000000000000
+#CHECK: - Value: 0x0000000000000001
+#CHECK: - Value: 0xFFFFFFFFFFFFFFFE
+#CHECK: - Value: 0x0000000000000001
+#CHECK: - Value: 0x0000000000000002
+#CHECK: - Value: 0x0123456789ABCDEF
More information about the llvm-commits
mailing list