summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-readobj/MachO
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/llvm-readobj/MachO')
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal-archive.x86_64.i386bin0 -> 1656 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal.x86_64.i386bin0 -> 16624 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-armbin0 -> 396 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-i386bin0 -> 368 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-x86_64bin0 -> 460 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-armbin0 -> 908 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-i386bin0 -> 472 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppcbin0 -> 844 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc64bin0 -> 956 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-x86-64bin0 -> 532 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/file-headers.test160
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/needed-libs.test26
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-arm.test16
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-i386.test12
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/reloc-types-macho-x64.test16
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/sections.test314
-rw-r--r--llvm/test/tools/llvm-readobj/MachO/universal-x86_64.i386.test303
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
new file mode 100644
index 00000000000..1660714c68e
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal-archive.x86_64.i386
Binary files differ
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
new file mode 100644
index 00000000000..36d5fc29d68
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/macho-universal.x86_64.i386
Binary files differ
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
new file mode 100644
index 00000000000..992ae17ffb1
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-arm
Binary files differ
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
new file mode 100644
index 00000000000..5305fe8663a
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-i386
Binary files differ
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
new file mode 100644
index 00000000000..42b80dd9d2f
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/relocs.obj.macho-x86_64
Binary files differ
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
new file mode 100644
index 00000000000..117df9efc1c
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-arm
Binary files differ
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
new file mode 100644
index 00000000000..5048171ccb0
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-i386
Binary files differ
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
new file mode 100644
index 00000000000..dd2e956499e
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc
Binary files differ
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
new file mode 100644
index 00000000000..20ec8ef23f0
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-ppc64
Binary files differ
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
new file mode 100644
index 00000000000..bcdfc8aa696
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/MachO/Inputs/trivial.obj.macho-x86-64
Binary files differ
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: ]
+
OpenPOWER on IntegriCloud