## This test checks that the CPU subtype matching logic is handled correctly. # RUN: yaml2obj %s --docnum=1 -o %t-armv6.obj # RUN: yaml2obj %s --docnum=2 -o %t-armv7.obj # RUN: llvm-as %p/Inputs/arm64-ios.ll -o %t-arm64.bc # RUN: llvm-as %p/Inputs/armv7-ios.ll -o %t-armv7.bc # RUN: llvm-libtool-darwin -static -o %t.lib %t-armv6.obj %t-armv7.obj %t-arm64.bc %t-armv7.bc -arch_only armv7 ## Check that only armv7 binary is present: # RUN: llvm-ar t %t.lib | \ # RUN: FileCheck %s --check-prefix=ARM-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp # ARM-NAMES: [[PREFIX]]-armv7.obj # ARM-NAMES-NEXT: [[PREFIX]]-armv7.bc ## Check that only armv7 symbol is present: # RUN: llvm-nm --print-armap %t.lib | \ # RUN: FileCheck %s --check-prefix=ARM-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines # ARM-SYMBOLS: Archive map # ARM-SYMBOLS-NEXT: _armv7 in [[PREFIX]]-armv7.obj # ARM-SYMBOLS-NEXT: _armv7 in [[PREFIX]]-armv7.bc # ARM-SYMBOLS-EMPTY: ## armv6.yaml ## CPUTYPE: CPU_TYPE_ARM ## CPUSUBTYPE: CPU_SUBTYPE_ARM_V6 --- !mach-o FileHeader: magic: 0xFEEDFACE cputype: 0x0000000C cpusubtype: 0x00000006 filetype: 0x00000001 ncmds: 2 sizeofcmds: 148 flags: 0x00002000 LoadCommands: - cmd: LC_SEGMENT cmdsize: 124 segname: '' vmaddr: 0 vmsize: 24 fileoff: 296 filesize: 24 maxprot: 7 initprot: 7 nsects: 1 flags: 0 Sections: - sectname: __text segname: __TEXT addr: 0x0000000000000000 size: 24 offset: 0x00000128 align: 2 reloff: 0x00000000 nreloc: 0 flags: 0x80000400 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 content: 04D04DE208009FE500008DE504D08DE21EFF2FE100000000 - cmd: LC_SYMTAB cmdsize: 24 symoff: 328 nsyms: 1 stroff: 340 strsize: 8 LinkEditData: NameList: - n_strx: 1 n_type: 0x0F n_sect: 1 n_desc: 0 n_value: 0 StringTable: - '' - _armv6 - '' ... ## armv7.yaml ## CPUTYPE: CPU_TYPE_ARM ## CPUSUBTYPE: CPU_SUBTYPE_ARM_V7 --- !mach-o FileHeader: magic: 0xFEEDFACE cputype: 0x0000000C cpusubtype: 0x00000009 filetype: 0x00000001 ncmds: 2 sizeofcmds: 148 flags: 0x00002000 LoadCommands: - cmd: LC_SEGMENT cmdsize: 124 segname: '' vmaddr: 0 vmsize: 10 fileoff: 280 filesize: 10 maxprot: 7 initprot: 7 nsects: 1 flags: 0 Sections: - sectname: __text segname: __TEXT addr: 0x0000000000000000 size: 10 offset: 0x00000118 align: 1 reloff: 0x00000000 nreloc: 0 flags: 0x80000400 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 content: 81B00020009001B07047 - cmd: LC_SYMTAB cmdsize: 24 symoff: 292 nsyms: 1 stroff: 304 strsize: 8 LinkEditData: NameList: - n_strx: 1 n_type: 0x0F n_sect: 1 n_desc: 8 n_value: 0 StringTable: - '' - _armv7 - '' ... # RUN: yaml2obj %s --docnum=3 -o %t-x86_64.obj # RUN: yaml2obj %s --docnum=4 -o %t-x86_64_h.obj # RUN: llvm-as %p/Inputs/x86_64-osx.ll -o %t-x86_64.bc # RUN: llvm-as %p/Inputs/x86_64h-osx.ll -o %t-x86_64_h.bc # RUN: llvm-libtool-darwin -static -o %t.lib %t-x86_64.obj %t-x86_64_h.obj %t-x86_64.bc %t-x86_64_h.bc -arch_only x86_64 ## Check that only x86_64 binary is present: # RUN: llvm-ar t %t.lib | \ # RUN: FileCheck %s --check-prefix=X86-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp # X86-NAMES: [[PREFIX]]-x86_64.obj # X86-NAMES-NEXT: [[PREFIX]]-x86_64.bc ## Check that only x86_64 symbol is present: # RUN: llvm-nm --print-armap %t.lib | \ # RUN: FileCheck %s --check-prefix=X86-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines # X86-SYMBOLS: Archive map # X86-SYMBOLS-NEXT: _x86_64 in [[PREFIX]]-x86_64.obj # X86-SYMBOLS-NEXT: _x86_64 in [[PREFIX]]-x86_64.bc # X86-SYMBOLS-EMPTY: ## x86_64.yaml ## CPUTYPE: CPU_TYPE_X86_64 ## CPUSUBTYPE: CPU_SUBTYPE_X86_64_ALL --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000003 filetype: 0x00000001 ncmds: 2 sizeofcmds: 176 flags: 0x00002000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 152 segname: '' vmaddr: 0 vmsize: 15 fileoff: 312 filesize: 15 maxprot: 7 initprot: 7 nsects: 1 flags: 0 Sections: - sectname: __text segname: __TEXT addr: 0x0000000000000000 size: 15 offset: 0x00000138 align: 4 reloff: 0x00000000 nreloc: 0 flags: 0x80000400 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 content: 554889E531C0C745FC000000005DC3 - cmd: LC_SYMTAB cmdsize: 24 symoff: 328 nsyms: 1 stroff: 344 strsize: 8 LinkEditData: NameList: - n_strx: 1 n_type: 0x0F n_sect: 1 n_desc: 0 n_value: 0 StringTable: - '' - _x86_64 - '' ... ## x86_64h.yaml ## CPUTYPE: CPU_TYPE_X86_64 ## CPUSUBTYPE: CPU_SUBTYPE_X86_64_H --- !mach-o FileHeader: magic: 0xFEEDFACF cputype: 0x01000007 cpusubtype: 0x00000008 filetype: 0x00000001 ncmds: 2 sizeofcmds: 176 flags: 0x00002000 reserved: 0x00000000 LoadCommands: - cmd: LC_SEGMENT_64 cmdsize: 152 segname: '' vmaddr: 0 vmsize: 15 fileoff: 312 filesize: 15 maxprot: 7 initprot: 7 nsects: 1 flags: 0 Sections: - sectname: __text segname: __TEXT addr: 0x0000000000000000 size: 15 offset: 0x00000138 align: 4 reloff: 0x00000000 nreloc: 0 flags: 0x80000400 reserved1: 0x00000000 reserved2: 0x00000000 reserved3: 0x00000000 content: 554889E531C0C745FC000000005DC3 - cmd: LC_SYMTAB cmdsize: 24 symoff: 328 nsyms: 1 stroff: 344 strsize: 8 LinkEditData: NameList: - n_strx: 1 n_type: 0x0F n_sect: 1 n_desc: 0 n_value: 0 StringTable: - '' - _x86_64_h - '' ...