diff options
Diffstat (limited to 'llvm/test/tools/llvm-readobj/MachO')
17 files changed, 847 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal-archive.x86_64.i386 b/llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal-archive.x86_64.i386 Binary files differnew file mode 100644 index 00000000000..1660714c68e --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal-archive.x86_64.i386 diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal.x86_64.i386 b/llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal.x86_64.i386 Binary files differnew file mode 100644 index 00000000000..36d5fc29d68 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal.x86_64.i386 diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-arm b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-arm Binary files differnew file mode 100644 index 00000000000..992ae17ffb1 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-arm diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-i386 b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-i386 Binary files differnew file mode 100644 index 00000000000..5305fe8663a --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-i386 diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-x86_64 b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-x86_64 Binary files differnew file mode 100644 index 00000000000..42b80dd9d2f --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-x86_64 diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-arm b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-arm Binary files differnew file mode 100644 index 00000000000..117df9efc1c --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-arm diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-i386 b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-i386 Binary files differnew file mode 100644 index 00000000000..5048171ccb0 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-i386 diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc Binary files differnew file mode 100644 index 00000000000..dd2e956499e --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc64 b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc64 Binary files differnew file mode 100644 index 00000000000..20ec8ef23f0 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc64 diff --git a/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-x86-64 b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-x86-64 Binary files differnew file mode 100644 index 00000000000..bcdfc8aa696 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-x86-64 diff --git a/llvm/test/tools/llvm-readobj/MachO/file-headers.test b/llvm/test/tools/llvm-readobj/MachO/file-headers.test new file mode 100644 index 00000000000..9425094bbf5 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/file-headers.test @@ -0,0 +1,160 @@ +# RUN: yaml2obj %s --docnum=1 -o %t.i386 +# RUN: llvm-readobj -h %t.i386 \ +# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.i386 --check-prefix I386 + +# I386:File: [[FILE]] +# I386-NEXT:Format: Mach-O 32-bit i386 +# I386-NEXT:Arch: i386 +# I386-NEXT:AddressSize: 32bit +# I386-NEXT:MachHeader { +# I386-NEXT: Magic: Magic (0xFEEDFACE) +# I386-NEXT: CpuType: X86 (0x7) +# I386-NEXT: CpuSubType: CPU_SUBTYPE_I386_ALL (0x3) +# I386-NEXT: FileType: Relocatable (0x1) +# I386-NEXT: NumOfLoadCommands: 0 +# I386-NEXT: SizeOfLoadCommands: 0 +# I386-NEXT: Flags [ (0x2000) +# I386-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +# I386-NEXT: ] +# I386-NEXT:} +# I386-NOT:{{.}} + +--- !mach-o +FileHeader: + magic: 0xFEEDFACE + cputype: 0x00000007 + cpusubtype: 0x00000003 + filetype: 0x00000001 + ncmds: 0 + sizeofcmds: 0 + flags: 0x00002000 + +# RUN: yaml2obj %s --docnum=2 -o %t.x86-64 +# RUN: llvm-readobj -h %t.x86-64 \ +# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.x86-64 --check-prefix X86-64 + +# X86-64:File: [[FILE]] +# X86-64-NEXT:Format: Mach-O 64-bit x86-64 +# X86-64-NEXT:Arch: x86_64 +# X86-64-NEXT:AddressSize: 64bit +# X86-64-NEXT:MachHeader { +# X86-64-NEXT: Magic: Magic64 (0xFEEDFACF) +# X86-64-NEXT: CpuType: X86-64 (0x1000007) +# X86-64-NEXT: CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3) +# X86-64-NEXT: FileType: Relocatable (0x1) +# X86-64-NEXT: NumOfLoadCommands: 0 +# X86-64-NEXT: SizeOfLoadCommands: 0 +# X86-64-NEXT: Flags [ (0x2000) +# X86-64-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +# X86-64-NEXT: ] +# X86-64-NEXT: Reserved: 0x0 +# X86-64-NEXT:} +# X86-64-NOT:{{.}} + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x00000003 + filetype: 0x00000001 + ncmds: 0 + sizeofcmds: 0 + flags: 0x00002000 + reserved: 0x00000000 + +# RUN: yaml2obj %s --docnum=3 -o %t.ppc +# RUN: llvm-readobj -h %t.ppc \ +# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.ppc --check-prefix PPC + +# PPC:File: [[FILE]] +# PPC-NEXT:Format: Mach-O 32-bit ppc +# PPC-NEXT:Arch: powerpc +# PPC-NEXT:AddressSize: 32bit +# PPC-NEXT:MachHeader { +# PPC-NEXT: Magic: Magic (0xFEEDFACE) +# PPC-NEXT: CpuType: PowerPC (0x12) +# PPC-NEXT: CpuSubType: CPU_SUBTYPE_POWERPC_ALL (0x0) +# PPC-NEXT: FileType: Relocatable (0x1) +# PPC-NEXT: NumOfLoadCommands: 0 +# PPC-NEXT: SizeOfLoadCommands: 0 +# PPC-NEXT: Flags [ (0x2000) +# PPC-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +# PPC-NEXT: ] +# PPC-NEXT:} +# PPC-NOT:{{.}} + +--- !mach-o +IsLittleEndian: false +FileHeader: + magic: 0xFEEDFACE + cputype: 0x00000012 + cpusubtype: 0x00000000 + filetype: 0x00000001 + ncmds: 0 + sizeofcmds: 0 + flags: 0x00002000 + +# RUN: yaml2obj %s --docnum=4 -o %t.ppc64 +# RUN: llvm-readobj -h %t.ppc64 \ +# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.ppc64 --check-prefix PPC64 + +# PPC64:File: [[FILE]] +# PPC64-NEXT:Format: Mach-O 64-bit ppc64 +# PPC64-NEXT:Arch: powerpc64 +# PPC64-NEXT:AddressSize: 64bit +# PPC64-NEXT:MachHeader { +# PPC64-NEXT: Magic: Magic64 (0xFEEDFACF) +# PPC64-NEXT: CpuType: PowerPC64 (0x1000012) +# PPC64-NEXT: CpuSubtype: 0x0 +# PPC64-NEXT: FileType: Relocatable (0x1) +# PPC64-NEXT: NumOfLoadCommands: 0 +# PPC64-NEXT: SizeOfLoadCommands: 0 +# PPC64-NEXT: Flags [ (0x2000) +# PPC64-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +# PPC64-NEXT: ] +# PPC64-NEXT: Reserved: 0x0 +# PPC64-NEXT:} +# PPC64-NOT:{{.}} + +--- !mach-o +IsLittleEndian: false +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000012 + cpusubtype: 0x00000000 + filetype: 0x00000001 + ncmds: 0 + sizeofcmds: 0 + flags: 0x00002000 + reserved: 0x00000000 + +# RUN: yaml2obj %s --docnum=5 -o %t.arm +# RUN: llvm-readobj -h %t.arm \ +# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm --check-prefix ARM + +# ARM:File: [[FILE]] +# ARM-NEXT:Format: Mach-O arm +# ARM-NEXT:Arch: arm +# ARM-NEXT:AddressSize: 32bit +# ARM-NEXT:MachHeader { +# ARM-NEXT: Magic: Magic (0xFEEDFACE) +# ARM-NEXT: CpuType: Arm (0xC) +# ARM-NEXT: CpuSubType: CPU_SUBTYPE_ARM_V7 (0x9) +# ARM-NEXT: FileType: Relocatable (0x1) +# ARM-NEXT: NumOfLoadCommands: 0 +# ARM-NEXT: SizeOfLoadCommands: 0 +# ARM-NEXT: Flags [ (0x2000) +# ARM-NEXT: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +# ARM-NEXT: ] +# ARM-NEXT:} +# ARM-NOT:{{.}} + +--- !mach-o +FileHeader: + magic: 0xFEEDFACE + cputype: 0x0000000C + cpusubtype: 0x00000009 + filetype: 0x00000001 + ncmds: 0 + sizeofcmds: 0 + flags: 0x00002000 diff --git a/llvm/test/tools/llvm-readobj/MachO/needed-libs.test b/llvm/test/tools/llvm-readobj/MachO/needed-libs.test new file mode 100644 index 00000000000..d199327cadb --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/needed-libs.test @@ -0,0 +1,26 @@ +# RUN: yaml2obj %s -o %t.o +# RUN: llvm-readobj --needed-libs %t.o | FileCheck %s + +# CHECK: NeededLibraries [ +# CHECK-NEXT: /usr/lib/libSystem.B.dylib +# CHECK-NEXT: ] + +!mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x00000003 + filetype: 0x00000001 + ncmds: 1 + sizeofcmds: 56 + flags: 0x00002000 + reserved: 0x00000000 +LoadCommands: + - cmd: LC_LOAD_DYLIB + cmdsize: 56 + dylib: + name: 24 + timestamp: 2 + current_version: 81985536 + compatibility_version: 65536 + PayloadString: /usr/lib/libSystem.B.dylib diff --git a/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-arm.test b/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-arm.test new file mode 100644 index 00000000000..3444ab15328 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-arm.test @@ -0,0 +1,16 @@ +## Test that llvm-readobj/llvm-readelf shows proper relocation type +## names and values for macho-arm target. + +## TODO: use yaml2obj. +# RUN: llvm-readobj -r --expand-relocs %p/Inputs/relocs.obj.macho-arm | FileCheck %s + +# CHECK: Type: ARM_RELOC_VANILLA (0) +# CHECK: Type: ARM_RELOC_PAIR (1) +# CHECK: Type: ARM_RELOC_SECTDIFF (2) +# CHECK: Type: ARM_RELOC_LOCAL_SECTDIFF (3) +# CHECK: Type: ARM_RELOC_PB_LA_PTR (4) +# CHECK: Type: ARM_RELOC_BR24 (5) +# CHECK: Type: ARM_THUMB_RELOC_BR22 (6) +# CHECK: Type: ARM_THUMB_32BIT_BRANCH (7) +# CHECK: Type: ARM_RELOC_HALF (8) +# CHECK: Type: ARM_RELOC_HALF_SECTDIFF (9) diff --git a/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-i386.test b/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-i386.test new file mode 100644 index 00000000000..5b14933840e --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-i386.test @@ -0,0 +1,12 @@ +## Test that llvm-readobj/llvm-readelf shows proper relocation type +## names and values for macho-i386 target. + +## TODO: use yaml2obj. +# RUN: llvm-readobj -r --expand-relocs %p/Inputs/relocs.obj.macho-i386 | FileCheck %s + +# CHECK: Type: GENERIC_RELOC_VANILLA (0) +# CHECK: Type: GENERIC_RELOC_PAIR (1) +# CHECK: Type: GENERIC_RELOC_SECTDIFF (2) +# CHECK: Type: GENERIC_RELOC_PB_LA_PTR (3) +# CHECK: Type: GENERIC_RELOC_LOCAL_SECTDIFF (4) +# CHECK: Type: GENERIC_RELOC_TLV (5) diff --git a/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-x64.test b/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-x64.test new file mode 100644 index 00000000000..49e0a8b3ef6 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-x64.test @@ -0,0 +1,16 @@ +## Test that llvm-readobj/llvm-readelf shows proper relocation type +## names and values for macho-x64 target. + +## TODO: use yaml2obj. +# RUN: llvm-readobj -r --expand-relocs %p/Inputs/relocs.obj.macho-x86_64 | FileCheck %s + +# CHECK: Type: X86_64_RELOC_UNSIGNED (0) +# CHECK: Type: X86_64_RELOC_SIGNED (1) +# CHECK: Type: X86_64_RELOC_BRANCH (2) +# CHECK: Type: X86_64_RELOC_GOT_LOAD (3) +# CHECK: Type: X86_64_RELOC_GOT (4) +# CHECK: Type: X86_64_RELOC_SUBTRACTOR (5) +# CHECK: Type: X86_64_RELOC_SIGNED_1 (6) +# CHECK: Type: X86_64_RELOC_SIGNED_2 (7) +# CHECK: Type: X86_64_RELOC_SIGNED_4 (8) +# CHECK: Type: X86_64_RELOC_TLV (9) diff --git a/llvm/test/tools/llvm-readobj/MachO/sections.test b/llvm/test/tools/llvm-readobj/MachO/sections.test new file mode 100644 index 00000000000..37c6567164b --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/sections.test @@ -0,0 +1,314 @@ +## Show that llvm-readobj prints MachO all section types properly. +# RUN: yaml2obj %s > %t +# RUN: llvm-readobj --sections %t | FileCheck %s + +# CHECK: Type: Regular (0x0) +# CHECK: Type: ZeroFill (0x1) +# CHECK: Type: CStringLiterals (0x2) +# CHECK: Type: 4ByteLiterals (0x3) +# CHECK: Type: 8ByteLiterals (0x4) +# CHECK: Type: LiteralPointers (0x5) +# CHECK: Type: NonLazySymbolPointers (0x6) +# CHECK: Type: LazySymbolPointers (0x7) +# CHECK: Type: SymbolStubs (0x8) +# CHECK: Type: ModInitFuncPointers (0x9) +# CHECK: Type: ModTermFuncPointers (0xA) +# CHECK: Type: Coalesced (0xB) +# CHECK: Type: GBZeroFill (0xC) +# CHECK: Type: Interposing (0xD) +# CHECK: Type: 16ByteLiterals (0xE) +# CHECK: Type: DTraceDOF (0xF) +# CHECK: Type: LazyDylibSymbolPointers (0x10) +# CHECK: Type: ThreadLocalRegular (0x11) +# CHECK: Type: ThreadLocalZerofill (0x12) +# CHECK: Type: ThreadLocalVariables (0x13) +# CHECK: Type: ThreadLocalVariablePointers (0x14) +# CHECK: Type: ThreadLocalInitFunctionPointers (0x15) + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x80000003 + filetype: 0x00000002 + ncmds: 1 + sizeofcmds: 1832 + flags: 0x00002000 + reserved: 0x00000000 +LoadCommands: + - cmd: LC_SEGMENT_64 + cmdsize: 1832 + segname: '' + vmaddr: 0x0000000000001000 + vmsize: 4096 + fileoff: 0 + filesize: 4096 + maxprot: 7 + initprot: 7 + nsects: 22 + flags: 0 + Sections: + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000000 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000001 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000002 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000003 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000004 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000005 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000006 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000007 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000008 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000009 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x0000000a + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x0000000b + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x0000000c + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x0000000d + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x0000000e + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x0000000f + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000010 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000011 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000012 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000013 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000014 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 + - sectname: '' + segname: '' + addr: 0x000000000000000 + size: 0 + offset: 0x00000000 + align: 0 + reloff: 0x00000000 + nreloc: 0 + flags: 0x00000015 + reserved1: 0x00000000 + reserved2: 0x00000000 + reserved3: 0x00000000 diff --git a/llvm/test/tools/llvm-readobj/MachO/universal-x86_64.i386.test b/llvm/test/tools/llvm-readobj/MachO/universal-x86_64.i386.test new file mode 100644 index 00000000000..d91a43bd7a8 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/MachO/universal-x86_64.i386.test @@ -0,0 +1,303 @@ +RUN: llvm-readobj -h %p/Inputs/macho-universal.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix MULTIHEADER + +RUN: llvm-readobj --sections %p/Inputs/macho-universal.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix MULTISECTIONS + +RUN: llvm-readobj -h %p/Inputs/macho-universal-archive.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix MULTIHEADER-ARCHIVE \ +RUN: -DARFILE="%p/Inputs/macho-universal-archive.x86_64.i386" + +RUN: llvm-readobj --sections %p/Inputs/macho-universal-archive.x86_64.i386 \ +RUN: | FileCheck %s -check-prefix MULTISECTIONS-ARCHIVE \ +RUN: -DARFILE="%p/Inputs/macho-universal-archive.x86_64.i386" + +MULTIHEADER: Format: Mach-O 64-bit x86-64 +MULTIHEADER: Arch: x86_64 +MULTIHEADER: AddressSize: 64bit +MULTIHEADER: MachHeader { +MULTIHEADER: Magic: Magic64 (0xFEEDFACF) +MULTIHEADER: CpuType: X86-64 (0x1000007) +MULTIHEADER: CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3) +MULTIHEADER: FileType: Executable (0x2) +MULTIHEADER: NumOfLoadCommands: 16 +MULTIHEADER: SizeOfLoadCommands: 880 +MULTIHEADER: Flags [ (0x200085) +MULTIHEADER: MH_DYLDLINK (0x4) +MULTIHEADER: MH_NOUNDEFS (0x1) +MULTIHEADER: MH_PIE (0x200000) +MULTIHEADER: MH_TWOLEVEL (0x80) +MULTIHEADER: ] +MULTIHEADER: Reserved: 0x0 +MULTIHEADER: } + +MULTIHEADER: Format: Mach-O 32-bit i386 +MULTIHEADER: Arch: i386 +MULTIHEADER: AddressSize: 32bit +MULTIHEADER: MachHeader { +MULTIHEADER: Magic: Magic (0xFEEDFACE) +MULTIHEADER: CpuType: X86 (0x7) +MULTIHEADER: CpuSubType: CPU_SUBTYPE_I386_ALL (0x3) +MULTIHEADER: FileType: Executable (0x2) +MULTIHEADER: NumOfLoadCommands: 16 +MULTIHEADER: SizeOfLoadCommands: 716 +MULTIHEADER: Flags [ (0x1200085) +MULTIHEADER: MH_DYLDLINK (0x4) +MULTIHEADER: MH_NOUNDEFS (0x1) +MULTIHEADER: MH_NO_HEAP_EXECUTION (0x1000000) +MULTIHEADER: MH_PIE (0x200000) +MULTIHEADER: MH_TWOLEVEL (0x80) +MULTIHEADER: ] +MULTIHEADER: } + + + +MULTISECTIONS: Format: Mach-O 64-bit x86-64 +MULTISECTIONS: Arch: x86_64 +MULTISECTIONS: AddressSize: 64bit +MULTISECTIONS: Sections [ +MULTISECTIONS: Section { +MULTISECTIONS: Index: 0 +MULTISECTIONS: Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS: Address: 0x100000F60 +MULTISECTIONS: Size: 0x12 +MULTISECTIONS: Offset: 3936 +MULTISECTIONS: Alignment: 4 +MULTISECTIONS: RelocationOffset: 0x0 +MULTISECTIONS: RelocationCount: 0 +MULTISECTIONS: Type: Regular (0x0) +MULTISECTIONS: Attributes [ (0x800004) +MULTISECTIONS: PureInstructions (0x800000) +MULTISECTIONS: SomeInstructions (0x4) +MULTISECTIONS: ] +MULTISECTIONS: Reserved1: 0x0 +MULTISECTIONS: Reserved2: 0x0 +MULTISECTIONS: } +MULTISECTIONS: Section { +MULTISECTIONS: Index: 1 +MULTISECTIONS: Name: __unwind_info (5F 5F 75 6E 77 69 6E 64 5F 69 6E 66 6F 00 00 00) +MULTISECTIONS: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS: Address: 0x100000F72 +MULTISECTIONS: Size: 0x48 +MULTISECTIONS: Offset: 3954 +MULTISECTIONS: Alignment: 0 +MULTISECTIONS: RelocationOffset: 0x0 +MULTISECTIONS: RelocationCount: 0 +MULTISECTIONS: Type: Regular (0x0) +MULTISECTIONS: Attributes [ (0x0) +MULTISECTIONS: ] +MULTISECTIONS: Reserved1: 0x0 +MULTISECTIONS: Reserved2: 0x0 +MULTISECTIONS: } +MULTISECTIONS: Section { +MULTISECTIONS: Index: 2 +MULTISECTIONS: Name: __eh_frame (5F 5F 65 68 5F 66 72 61 6D 65 00 00 00 00 00 00) +MULTISECTIONS: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS: Address: 0x100000FC0 +MULTISECTIONS: Size: 0x40 +MULTISECTIONS: Offset: 4032 +MULTISECTIONS: Alignment: 3 +MULTISECTIONS: RelocationOffset: 0x0 +MULTISECTIONS: RelocationCount: 0 +MULTISECTIONS: Type: Regular (0x0) +MULTISECTIONS: Attributes [ (0x0) +MULTISECTIONS: ] +MULTISECTIONS: Reserved1: 0x0 +MULTISECTIONS: Reserved2: 0x0 +MULTISECTIONS: } +MULTISECTIONS: ] + +MULTISECTIONS: Format: Mach-O 32-bit i386 +MULTISECTIONS: Arch: i386 +MULTISECTIONS: AddressSize: 32bit +MULTISECTIONS: Sections [ +MULTISECTIONS: Section { +MULTISECTIONS: Index: 0 +MULTISECTIONS: Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS: Address: 0x1FA0 +MULTISECTIONS: Size: 0x15 +MULTISECTIONS: Offset: 4000 +MULTISECTIONS: Alignment: 4 +MULTISECTIONS: RelocationOffset: 0x0 +MULTISECTIONS: RelocationCount: 0 +MULTISECTIONS: Type: Regular (0x0) +MULTISECTIONS: Attributes [ (0x800004) +MULTISECTIONS: PureInstructions (0x800000) +MULTISECTIONS: SomeInstructions (0x4) +MULTISECTIONS: ] +MULTISECTIONS: Reserved1: 0x0 +MULTISECTIONS: Reserved2: 0x0 +MULTISECTIONS: } +MULTISECTIONS: Section { +MULTISECTIONS: Index: 1 +MULTISECTIONS: Name: __unwind_info (5F 5F 75 6E 77 69 6E 64 5F 69 6E 66 6F 00 00 00) +MULTISECTIONS: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS: Address: 0x1FB5 +MULTISECTIONS: Size: 0x48 +MULTISECTIONS: Offset: 4021 +MULTISECTIONS: Alignment: 0 +MULTISECTIONS: RelocationOffset: 0x0 +MULTISECTIONS: RelocationCount: 0 +MULTISECTIONS: Type: Regular (0x0) +MULTISECTIONS: Attributes [ (0x0) +MULTISECTIONS: ] +MULTISECTIONS: Reserved1: 0x0 +MULTISECTIONS: Reserved2: 0x0 +MULTISECTIONS: } +MULTISECTIONS: ] + +MULTIHEADER-ARCHIVE: {{^$}} +MULTIHEADER-ARCHIVE-NEXT: File: [[ARFILE]](hello.o) +MULTIHEADER-ARCHIVE: Format: Mach-O 64-bit x86-64 +MULTIHEADER-ARCHIVE: Arch: x86_64 +MULTIHEADER-ARCHIVE: AddressSize: 64bit +MULTIHEADER-ARCHIVE: MachHeader { +MULTIHEADER-ARCHIVE: Magic: Magic64 (0xFEEDFACF) +MULTIHEADER-ARCHIVE: CpuType: X86-64 (0x1000007) +MULTIHEADER-ARCHIVE: CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3) +MULTIHEADER-ARCHIVE: FileType: Relocatable (0x1) +MULTIHEADER-ARCHIVE: NumOfLoadCommands: 3 +MULTIHEADER-ARCHIVE: SizeOfLoadCommands: 496 +MULTIHEADER-ARCHIVE: Flags [ (0x2000) +MULTIHEADER-ARCHIVE: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +MULTIHEADER-ARCHIVE: ] +MULTIHEADER-ARCHIVE: Reserved: 0x0 +MULTIHEADER-ARCHIVE: } +MULTIHEADER-ARCHIVE-EMPTY: +MULTIHEADER-ARCHIVE-NEXT: File: [[ARFILE]](foo.o) +MULTIHEADER-ARCHIVE: Format: Mach-O 32-bit i386 +MULTIHEADER-ARCHIVE: Arch: i386 +MULTIHEADER-ARCHIVE: AddressSize: 32bit +MULTIHEADER-ARCHIVE: MachHeader { +MULTIHEADER-ARCHIVE: Magic: Magic (0xFEEDFACE) +MULTIHEADER-ARCHIVE: CpuType: X86 (0x7) +MULTIHEADER-ARCHIVE: CpuSubType: CPU_SUBTYPE_I386_ALL (0x3) +MULTIHEADER-ARCHIVE: FileType: Relocatable (0x1) +MULTIHEADER-ARCHIVE: NumOfLoadCommands: 3 +MULTIHEADER-ARCHIVE: SizeOfLoadCommands: 296 +MULTIHEADER-ARCHIVE: Flags [ (0x2000) +MULTIHEADER-ARCHIVE: MH_SUBSECTIONS_VIA_SYMBOLS (0x2000) +MULTIHEADER-ARCHIVE: ] +MULTIHEADER-ARCHIVE: } + +MULTISECTIONS-ARCHIVE: {{^$}} +MULTISECTIONS-ARCHIVE-NEXT: File: [[ARFILE]](hello.o) +MULTISECTIONS-ARCHIVE: Format: Mach-O 64-bit x86-64 +MULTISECTIONS-ARCHIVE: Arch: x86_64 +MULTISECTIONS-ARCHIVE: AddressSize: 64bit +MULTISECTIONS-ARCHIVE: Sections [ +MULTISECTIONS-ARCHIVE: Section { +MULTISECTIONS-ARCHIVE: Index: 0 +MULTISECTIONS-ARCHIVE: Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Address: 0x0 +MULTISECTIONS-ARCHIVE: Size: 0x3B +MULTISECTIONS-ARCHIVE: Offset: 528 +MULTISECTIONS-ARCHIVE: Alignment: 4 +MULTISECTIONS-ARCHIVE: RelocationOffset: 0x2B8 +MULTISECTIONS-ARCHIVE: RelocationCount: 2 +MULTISECTIONS-ARCHIVE: Type: Regular (0x0) +MULTISECTIONS-ARCHIVE: Attributes [ (0x800004) +MULTISECTIONS-ARCHIVE: PureInstructions (0x800000) +MULTISECTIONS-ARCHIVE: SomeInstructions (0x4) +MULTISECTIONS-ARCHIVE: ] +MULTISECTIONS-ARCHIVE: Reserved1: 0x0 +MULTISECTIONS-ARCHIVE: Reserved2: 0x0 +MULTISECTIONS-ARCHIVE: } +MULTISECTIONS-ARCHIVE: Section { +MULTISECTIONS-ARCHIVE: Index: 1 +MULTISECTIONS-ARCHIVE: Name: __cstring (5F 5F 63 73 74 72 69 6E 67 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Address: 0x3B +MULTISECTIONS-ARCHIVE: Size: 0xD +MULTISECTIONS-ARCHIVE: Offset: 587 +MULTISECTIONS-ARCHIVE: Alignment: 0 +MULTISECTIONS-ARCHIVE: RelocationOffset: 0x0 +MULTISECTIONS-ARCHIVE: RelocationCount: 0 +MULTISECTIONS-ARCHIVE: Type: CStringLiterals (0x2) +MULTISECTIONS-ARCHIVE: Attributes [ (0x0) +MULTISECTIONS-ARCHIVE: ] +MULTISECTIONS-ARCHIVE: Reserved1: 0x0 +MULTISECTIONS-ARCHIVE: Reserved2: 0x0 +MULTISECTIONS-ARCHIVE: } +MULTISECTIONS-ARCHIVE: Section { +MULTISECTIONS-ARCHIVE: Index: 2 +MULTISECTIONS-ARCHIVE: Name: __compact_unwind (5F 5F 63 6F 6D 70 61 63 74 5F 75 6E 77 69 6E 64) +MULTISECTIONS-ARCHIVE: Segment: __LD (5F 5F 4C 44 00 00 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Address: 0x48 +MULTISECTIONS-ARCHIVE: Size: 0x20 +MULTISECTIONS-ARCHIVE: Offset: 600 +MULTISECTIONS-ARCHIVE: Alignment: 3 +MULTISECTIONS-ARCHIVE: RelocationOffset: 0x2C8 +MULTISECTIONS-ARCHIVE: RelocationCount: 1 +MULTISECTIONS-ARCHIVE: Type: Regular (0x0) +MULTISECTIONS-ARCHIVE: Attributes [ (0x20000) +MULTISECTIONS-ARCHIVE: Debug (0x20000) +MULTISECTIONS-ARCHIVE: ] +MULTISECTIONS-ARCHIVE: Reserved1: 0x0 +MULTISECTIONS-ARCHIVE: Reserved2: 0x0 +MULTISECTIONS-ARCHIVE: } +MULTISECTIONS-ARCHIVE: Section { +MULTISECTIONS-ARCHIVE: Index: 3 +MULTISECTIONS-ARCHIVE: Name: __eh_frame (5F 5F 65 68 5F 66 72 61 6D 65 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Address: 0x68 +MULTISECTIONS-ARCHIVE: Size: 0x40 +MULTISECTIONS-ARCHIVE: Offset: 632 +MULTISECTIONS-ARCHIVE: Alignment: 3 +MULTISECTIONS-ARCHIVE: RelocationOffset: 0x0 +MULTISECTIONS-ARCHIVE: RelocationCount: 0 +MULTISECTIONS-ARCHIVE: Type: Coalesced (0xB) +MULTISECTIONS-ARCHIVE: Attributes [ (0x680000) +MULTISECTIONS-ARCHIVE: LiveSupport (0x80000) +MULTISECTIONS-ARCHIVE: NoTOC (0x400000) +MULTISECTIONS-ARCHIVE: StripStaticSyms (0x200000) +MULTISECTIONS-ARCHIVE: ] +MULTISECTIONS-ARCHIVE: Reserved1: 0x0 +MULTISECTIONS-ARCHIVE: Reserved2: 0x0 +MULTISECTIONS-ARCHIVE: } +MULTISECTIONS-ARCHIVE: ] +MULTISECTIONS-ARCHIVE-EMPTY: +MULTISECTIONS-ARCHIVE-NEXT: File: [[ARFILE]](foo.o) +MULTISECTIONS-ARCHIVE: Format: Mach-O 32-bit i386 +MULTISECTIONS-ARCHIVE: Arch: i386 +MULTISECTIONS-ARCHIVE: AddressSize: 32bit +MULTISECTIONS-ARCHIVE: Sections [ +MULTISECTIONS-ARCHIVE: Section { +MULTISECTIONS-ARCHIVE: Index: 0 +MULTISECTIONS-ARCHIVE: Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Address: 0x0 +MULTISECTIONS-ARCHIVE: Size: 0x5 +MULTISECTIONS-ARCHIVE: Offset: 324 +MULTISECTIONS-ARCHIVE: Alignment: 4 +MULTISECTIONS-ARCHIVE: RelocationOffset: 0x0 +MULTISECTIONS-ARCHIVE: RelocationCount: 0 +MULTISECTIONS-ARCHIVE: Type: Regular (0x0) +MULTISECTIONS-ARCHIVE: Attributes [ (0x800004) +MULTISECTIONS-ARCHIVE: PureInstructions (0x800000) +MULTISECTIONS-ARCHIVE: SomeInstructions (0x4) +MULTISECTIONS-ARCHIVE: ] +MULTISECTIONS-ARCHIVE: Reserved1: 0x0 +MULTISECTIONS-ARCHIVE: Reserved2: 0x0 +MULTISECTIONS-ARCHIVE: } +MULTISECTIONS-ARCHIVE: Section { +MULTISECTIONS-ARCHIVE: Index: 1 +MULTISECTIONS-ARCHIVE: Name: __data (5F 5F 64 61 74 61 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00) +MULTISECTIONS-ARCHIVE: Address: 0x8 +MULTISECTIONS-ARCHIVE: Size: 0x4 +MULTISECTIONS-ARCHIVE: Offset: 332 +MULTISECTIONS-ARCHIVE: Alignment: 2 +MULTISECTIONS-ARCHIVE: RelocationOffset: 0x0 +MULTISECTIONS-ARCHIVE: RelocationCount: 0 +MULTISECTIONS-ARCHIVE: Type: Regular (0x0) +MULTISECTIONS-ARCHIVE: Attributes [ (0x0) +MULTISECTIONS-ARCHIVE: ] +MULTISECTIONS-ARCHIVE: Reserved1: 0x0 +MULTISECTIONS-ARCHIVE: Reserved2: 0x0 +MULTISECTIONS-ARCHIVE: } +MULTISECTIONS-ARCHIVE: ] + |