## a) Test that yaml2macho is able to emit the .debug_aranges section and obj2yaml ## is able to convert it back. # RUN: yaml2obj --docnum=1 %s | obj2yaml | FileCheck %s --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x0000000A ncmds: 7 sizeofcmds: 1848 flags: 0x00000000 reserved: 0x00000000 LoadCommands: - cmd: LC_UUID cmdsize: 24 uuid: B4D48511-37F4-3ED4-AFA7-1683DCE69AC4 - cmd: LC_SYMTAB cmdsize: 24 symoff: 4096 nsyms: 2 stroff: 4128 strsize: 28 - 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: 121 offset: 0x000020B3 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __debug_abbrev segname: __DWARF addr: 0x000000010000312C size: 76 offset: 0x0000212C align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __debug_str segname: __DWARF addr: 0x0000000100003178 size: 142 offset: 0x00002178 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 - sectname: __apple_names segname: __DWARF addr: 0x0000000100003206 size: 60 offset: 0x00002206 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 LinkEditData: NameList: - n_strx: 2 n_type: 0x0F n_sect: 1 n_desc: 16 n_value: 4294967296 - n_strx: 22 n_type: 0x0F n_sect: 1 n_desc: 0 n_value: 4294971216 StringTable: - '' - '' - __mh_execute_header - _main DWARF: debug_aranges: - Length: 44 Version: 2 CuOffset: 0 AddressSize: 8 SegmentSelectorSize: 0 Descriptors: - Address: 0x0000000100000F50 Length: 52 ... # CHECK: debug_aranges: # CHECK-NEXT: - Length: 0x2C # CHECK-NEXT: Version: 2 # CHECK-NEXT: CuOffset: 0x0 # CHECK-NEXT: AddressSize: 0x8 # CHECK-NEXT: Descriptors: # CHECK-NEXT: - Address: 0x100000F50 # CHECK-NEXT: Length: 0x34 ## b) Test that if the "debug_aranges" entry is empty, yaml2macho will only emit the ## section header. # RUN: yaml2obj --docnum=2 %s -o %t2.o # RUN: llvm-readobj --sections --section-data %t2.o | FileCheck %s --check-prefix=EMPTY-SECTION # EMPTY-SECTION: Index: 0 # EMPTY-SECTION-NEXT: Name: __debug_aranges (5F 5F 64 65 62 75 67 5F 61 72 61 6E 67 65 73 00) # EMPTY-SECTION-NEXT: Segment: __DWARF (5F 5F 44 57 41 52 46 00 00 00 00 00 00 00 00 00) # EMPTY-SECTION-NEXT: Address: 0x0 # EMPTY-SECTION-NEXT: Size: 0xC # EMPTY-SECTION-NEXT: Offset: 528 # EMPTY-SECTION-NEXT: Alignment: 0 # EMPTY-SECTION-NEXT: RelocationOffset: 0x0 # EMPTY-SECTION-NEXT: RelocationCount: 0 # EMPTY-SECTION-NEXT: Type: Regular (0x0) # EMPTY-SECTION-NEXT: Attributes [ (0x0) # EMPTY-SECTION-NEXT: ] # EMPTY-SECTION-NEXT: Reserved1: 0x0 # EMPTY-SECTION-NEXT: Reserved2: 0x0 # EMPTY-SECTION-NEXT: Reserved3: 0x0 # EMPTY-SECTION-NEXT: SectionData ( # EMPTY-SECTION-NEXT: ) --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x0000000A ncmds: 1 sizeofcmds: 232 flags: 0x00000000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 152 segname: __DWARF vmaddr: 0x00 vmsize: 0x00 fileoff: 0x00 filesize: 0x00 maxprot: 0 initprot: 0 nsects: 1 flags: 0 Sections: - sectname: __debug_aranges segname: __DWARF addr: 0x00 size: 12 offset: 528 align: 0 reloff: 0x00000000 nreloc: 0 flags: 0x00000000 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 DWARF: debug_aranges: []