| # REQUIRES: system-aix |
| ## Test the -X option. |
| ## The option specifies the type of object file on which llvm-ranlib will operate. |
| |
| # RUN: rm -rf %t && mkdir %t && cd %t |
| # RUN: yaml2obj --docnum=1 -DFLAG=0x1DF %s -o t32_1.o |
| # RUN: yaml2obj --docnum=1 -DFLAG=0x1F7 %s -o t64_1.o |
| # RUN: yaml2obj --docnum=2 -DFLAG=0x1DF %s -o t32_2.o |
| # RUN: yaml2obj --docnum=2 -DFLAG=0x1F7 %s -o t64_2.o |
| |
| # RUN: llvm-ar qS t_all.a t32_1.o t64_1.o t32_2.o t64_2.o |
| # RUN: cp t_all.a t_X32.a |
| # RUN: cp t_all.a t_X64.a |
| # RUN: cp t_all.a t_X32_64.a |
| |
| ## Test the OBJECT_MODE environment variable when adding symbol table. |
| # RUN: unset OBJECT_MODE |
| # RUN: llvm-ranlib t_X32.a |
| # RUN: llvm-nm --print-armap t_X32.a 2>&1 | FileCheck --check-prefixes=GLOB32 --implicit-check-not="in t64" %s |
| # RUN: cp t_all.a t_X32.a |
| # RUN: env OBJECT_MODE=32 llvm-ranlib t_X32.a |
| # RUN: llvm-nm --print-armap t_X32.a 2>&1 | FileCheck --check-prefixes=GLOB32 --implicit-check-not="in t64" %s |
| |
| # RUN: env OBJECT_MODE=64 llvm-ranlib t_X64.a |
| # RUN: llvm-nm --print-armap t_X64.a 2>&1 | FileCheck --check-prefixes=GLOB64 --implicit-check-not="in t32" %s |
| |
| # RUN: env OBJECT_MODE=32_64 llvm-ranlib t_X32_64.a |
| # RUN: llvm-nm --print-armap t_X32_64.a 2>&1 | FileCheck --check-prefixes=GLOB32,GLOB64 %s |
| # RUN: cp t_all.a t_X32_64.a |
| # RUN: env OBJECT_MODE=any llvm-ranlib t_X32_64.a |
| # RUN: llvm-nm --print-armap t_X32_64.a 2>&1 | FileCheck --check-prefixes=GLOB32,GLOB64 %s |
| |
| # RUN: cp t_all.a t_X32.a |
| # RUN: cp t_all.a t_X64.a |
| # RUN: cp t_all.a t_X32_64.a |
| |
| ## Test the -X option when adding symbol table. |
| # RUN: llvm-ranlib -X32 t_X32.a |
| # RUN: llvm-nm --print-armap t_X32.a 2>&1 | FileCheck --check-prefixes=GLOB32 --implicit-check-not="in t64" %s |
| # RUN: llvm-ranlib -X64 t_X32.a |
| # RUN: llvm-nm --print-armap t_X32.a 2>&1 | FileCheck --check-prefixes=GLOB32,GLOB64 %s |
| |
| # RUN: llvm-ranlib -X64 t_X64.a |
| # RUN: llvm-nm --print-armap t_X64.a 2>&1 | FileCheck --check-prefixes=GLOB64 --implicit-check-not="in t32" %s |
| # RUN: llvm-ranlib -X32 t_X64.a |
| # RUN: llvm-nm --print-armap t_X32.a 2>&1 | FileCheck --check-prefixes=GLOB32,GLOB64 %s |
| |
| # RUN: llvm-ranlib -X32_64 t_X32_64.a |
| # RUN: llvm-nm --print-armap t_X32_64.a 2>&1 | FileCheck --check-prefixes=GLOB32,GLOB64 %s |
| # RUN: cp t_all.a t_X32_64.a |
| # RUN: llvm-ranlib -Xany t_X32_64.a |
| # RUN: llvm-nm --print-armap t_X32_64.a 2>&1 | FileCheck --check-prefixes=GLOB32,GLOB64 %s |
| |
| # RUN: cp t_all.a t_X32.a |
| # RUN: cp t_all.a t_X64.a |
| |
| ## Test that the -X option will override the "OBJECT_MODE" environment variable. |
| # RUN: env OBJECT_MODE=32_64 llvm-ranlib -X32 t_X32.a |
| # RUN: llvm-nm --print-armap t_X32.a 2>&1 | FileCheck --check-prefixes=GLOB32 --implicit-check-not="in t64" %s |
| |
| # RUN: env OBJECT_MODE=32 llvm-ranlib -X64 t_X64.a |
| # RUN: llvm-nm --print-armap t_X64.a 2>&1 | FileCheck --check-prefixes=GLOB64 --implicit-check-not="in t32" %s |
| |
| # GLOB32: sym1_0x1DF in t32_1.o |
| # GLOB32-NEXT: sym2_0x1DF in t32_1.o |
| # GLOB32-NEXT: sym3_0x1DF in t32_2.o |
| # GLOB32-NEXT: sym4_0x1DF in t32_2.o |
| |
| # GLOB64: sym1_0x1F7 in t64_1.o |
| # GLOB64-NEXT: sym2_0x1F7 in t64_1.o |
| # GLOB64-NEXT: sym3_0x1F7 in t64_2.o |
| # GLOB64-NEXT: sym4_0x1F7 in t64_2.o |
| |
| ## Test invalid -X option and OBJECT_MODE enviornment var. |
| # RUN: not env OBJECT_MODE= llvm-ranlib t_X32.a 2>&1 | FileCheck --implicit-check-not="error:" --check-prefixes=INVALID-OBJECT-MODE %s |
| # RUN: not env OBJECT_MODE="" llvm-ranlib t_X32.a 2>&1 | FileCheck --implicit-check-not="error:" --check-prefixes=INVALID-OBJECT-MODE %s |
| # RUN: not env OBJECT_MODE=31 llvm-ranlib t_X64.a 2>&1 | FileCheck --implicit-check-not="error:" --check-prefixes=INVALID-OBJECT-MODE %s |
| # RUN: not llvm-ranlib -X t_X64.a 2>&1 | FileCheck --implicit-check-not="error:" --check-prefixes=INVALID-X-OPTION %s |
| # RUN: not llvm-ranlib -X31 t_X64.a 2>&1 | FileCheck --implicit-check-not="error:" --check-prefixes=INVALID-X-OPTION %s |
| |
| # INVALID-OBJECT-MODE: error: the OBJECT_MODE environment variable has an invalid value. OBJECT_MODE must be 32, 64, 32_64, or any |
| # INVALID-X-OPTION: error: the specified object mode is not valid. Specify -X32, -X64, -X32_64, or -Xany |
| |
| --- !XCOFF |
| FileHeader: |
| MagicNumber: [[FLAG]] |
| Sections: |
| - Name: .data |
| Flags: [ STYP_DATA ] |
| Symbols: |
| - Name: sym1_[[FLAG]] |
| Section: .data |
| Type: 0x4000 |
| StorageClass: C_EXT |
| AuxEntries: |
| - Type: AUX_CSECT |
| SymbolAlignmentAndType: 0x09 |
| StorageMappingClass: XMC_RW |
| - Name: sym2_[[FLAG]] |
| Section: .data |
| Type: 0x4000 |
| StorageClass: C_EXT |
| AuxEntries: |
| - Type: AUX_CSECT |
| SymbolAlignmentAndType: 0x09 |
| StorageMappingClass: XMC_RW |
| |
| --- !XCOFF |
| FileHeader: |
| MagicNumber: [[FLAG]] |
| Sections: |
| - Name: .text |
| Flags: [ STYP_DATA ] |
| Symbols: |
| - Name: sym3_[[FLAG]] |
| Section: .text |
| Type: 0x4000 |
| StorageClass: C_EXT |
| AuxEntries: |
| - Type: AUX_CSECT |
| SymbolAlignmentAndType: 0x09 |
| StorageMappingClass: XMC_PR |
| - Name: sym4_[[FLAG]] |
| Section: .text |
| Type: 0x4000 |
| StorageClass: C_EXT |
| AuxEntries: |
| - Type: AUX_CSECT |
| SymbolAlignmentAndType: 0x09 |
| StorageMappingClass: XMC_PR |