| ## 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: [] |