xref: /llvm-project/llvm/test/tools/llvm-nm/option-X.test (revision b135358877e94dbd5d2f3231c2c98309fae70628)
10135aa7bSzhijian## Test the "-X" option.
20135aa7bSzhijian## The option specifies the type of object file to examine.
30135aa7bSzhijian
40135aa7bSzhijian# RUN: llvm-as -o %t32.bc %p/Inputs/bitcode-sym32.ll
50135aa7bSzhijian# RUN: llvm-as -o %t64.bc %p/Inputs/bitcode-sym64.ll
60135aa7bSzhijian
70135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32 %t32.bc %t64.bc | \
80135aa7bSzhijian# RUN:   FileCheck %s -DFILE1=%t32.bc --check-prefixes=BITCODE32 --implicit-check-not={{.}}
90135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X64 %t32.bc %t64.bc | \
100135aa7bSzhijian# RUN:   FileCheck %s -DFILE2=%t64.bc --check-prefixes=BITCODE64 --implicit-check-not={{.}}
110135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32_64 %t32.bc %t64.bc | \
120135aa7bSzhijian# RUN:   FileCheck %s -DFILE1=%t32.bc -DFILE2=%t64.bc --check-prefixes=BITCODE32,BITCODE64
130135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -Xany %t32.bc %t64.bc | \
140135aa7bSzhijian# RUN:   FileCheck %s -DFILE1=%t32.bc -DFILE2=%t64.bc --check-prefixes=BITCODE32,BITCODE64
150135aa7bSzhijian
160135aa7bSzhijian# BITCODE32:      [[FILE1]]:
170135aa7bSzhijian# BITCODE32-NEXT: C32
180135aa7bSzhijian# BITCODE32-NEXT: foo32
190135aa7bSzhijian# BITCODE32-NEXT: undef_var32
200135aa7bSzhijian
210135aa7bSzhijian# BITCODE64:      [[FILE2]]:
220135aa7bSzhijian# BITCODE64-NEXT: C64
230135aa7bSzhijian# BITCODE64-NEXT: bar64
240135aa7bSzhijian# BITCODE64-NEXT: static_var64
250135aa7bSzhijian
260135aa7bSzhijian# RUN: yaml2obj --docnum=1 -DCLASS=ELFCLASS32 %s -o %t_elf32.o
270135aa7bSzhijian# RUN: yaml2obj --docnum=1 -DCLASS=ELFCLASS64 %s -o %t_elf64.o
280135aa7bSzhijian
290135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32 %t_elf32.o %t_elf64.o | \
300135aa7bSzhijian# RUN:   FileCheck %s -DFILE32=%t_elf32.o --check-prefixes=ELF32 --implicit-check-not={{.}}
310135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X64 %t_elf32.o %t_elf64.o | \
320135aa7bSzhijian# RUN:   FileCheck %s -DFILE64=%t_elf64.o --check-prefixes=ELF64 --implicit-check-not={{.}}
330135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32_64 %t_elf32.o %t_elf64.o | \
340135aa7bSzhijian# RUN:   FileCheck %s -DFILE32=%t_elf32.o -DFILE64=%t_elf64.o --check-prefixes=ELF32,ELF64
350135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -Xany %t_elf32.o %t_elf64.o | \
360135aa7bSzhijian# RUN:   FileCheck %s -DFILE32=%t_elf32.o -DFILE64=%t_elf64.o --check-prefixes=ELF32,ELF64
370135aa7bSzhijian
380135aa7bSzhijian# ELF32:      [[FILE32]]:
390135aa7bSzhijian# ELF32-NEXT: ELFCLASS32_var
400135aa7bSzhijian
410135aa7bSzhijian# ELF64:      [[FILE64]]:
420135aa7bSzhijian# ELF64-NEXT: ELFCLASS64_var
430135aa7bSzhijian
440135aa7bSzhijian--- !ELF
450135aa7bSzhijianFileHeader:
460135aa7bSzhijian  Class:   [[CLASS]]
470135aa7bSzhijian  Data:    ELFDATA2LSB
480135aa7bSzhijian  Type:    ET_REL
490135aa7bSzhijianSymbols:
500135aa7bSzhijian  - Name:    [[CLASS]]_var
510135aa7bSzhijian
520135aa7bSzhijian# RUN: yaml2obj --docnum=2 -DFLAG=0x1DF %s -o %t_xcoff32.o
530135aa7bSzhijian# RUN: yaml2obj --docnum=2 -DFLAG=0x1F7 %s -o %t_xcoff64.o
540135aa7bSzhijian# RUN: rm -f %t.a
55*fe3b621fSzhijian# RUN: llvm-ar -q -c %t.a %t_xcoff32.o %t_xcoff64.o
560135aa7bSzhijian
570135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32 %t_xcoff32.o | \
580135aa7bSzhijian# RUN:   FileCheck --check-prefixes=XCOFF32 %s --implicit-check-not={{.}}
590135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32 %t.a | \
600135aa7bSzhijian# RUN:   FileCheck --check-prefixes=ARC32,XCOFF32 %s -DFILE=%basename_t --implicit-check-not={{.}}
610135aa7bSzhijian# ARC32:      [[FILE]].tmp_xcoff32.o:
620135aa7bSzhijian# XCOFF32:      var_0x1DF
630135aa7bSzhijian
640135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X64 %t_xcoff64.o | \
650135aa7bSzhijian# RUN:   FileCheck --check-prefixes=XCOFF64 %s --implicit-check-not={{.}}
660135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X64 %t.a | \
670135aa7bSzhijian# RUN:   FileCheck --check-prefixes=ARC64,XCOFF64 -DFILE=%basename_t %s --implicit-check-not={{.}}
680135aa7bSzhijian# ARC64:       [[FILE]].tmp_xcoff64.o:
690135aa7bSzhijian# XCOFF64:       var_0x1F7
700135aa7bSzhijian
710135aa7bSzhijian# RUN: llvm-nm --format=just-symbols %t_xcoff32.o %t_xcoff64.o | \
720135aa7bSzhijian# RUN:   FileCheck --check-prefixes=BOTH %s -DFILE32=%t_xcoff32.o -DFILE64=%t_xcoff64.o --match-full-lines
730135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32_64 %t_xcoff32.o %t_xcoff64.o | \
740135aa7bSzhijian# RUN:   FileCheck --check-prefixes=BOTH %s -DFILE32=%t_xcoff32.o -DFILE64=%t_xcoff64.o --match-full-lines
750135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -Xany %t_xcoff32.o %t_xcoff64.o | \
760135aa7bSzhijian# RUN:   FileCheck --check-prefixes=BOTH %s -DFILE32=%t_xcoff32.o -DFILE64=%t_xcoff64.o --match-full-lines
770135aa7bSzhijian
780135aa7bSzhijian# BOTH:        [[FILE32]]:
790135aa7bSzhijian# BOTH-NEXT:   var_0x1DF
800135aa7bSzhijian# BOTH-EMPTY:
810135aa7bSzhijian# BOTH-NEXT:   [[FILE64]]:
820135aa7bSzhijian# BOTH-NEXT:   var_0x1F7
830135aa7bSzhijian
840135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32_64 %t.a | \
850135aa7bSzhijian# RUN:   FileCheck --check-prefixes=ARCHIVE-BOTH -DFILE=%basename_t --match-full-lines %s
860135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -Xany %t.a | \
870135aa7bSzhijian# RUN:   FileCheck --check-prefixes=ARCHIVE-BOTH -DFILE=%basename_t --match-full-lines %s
880135aa7bSzhijian
890135aa7bSzhijian# ARCHIVE-BOTH:      [[FILE]].tmp_xcoff32.o:
900135aa7bSzhijian# ARCHIVE-BOTH-NEXT: var_0x1DF{{[[:space:]]}}
910135aa7bSzhijian# ARCHIVE-BOTH-NEXT: [[FILE]].tmp_xcoff64.o:
920135aa7bSzhijian# ARCHIVE-BOTH-NEXT: var_0x1F7
930135aa7bSzhijian
940135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X64 %t_xcoff32.o | count 0
950135aa7bSzhijian# RUN: llvm-nm --format=just-symbols -X32 %t_xcoff64.o | count 0
960135aa7bSzhijian
970135aa7bSzhijian# RUN: not llvm-nm --format=just-symbols -X33 %t_xcoff32.o 2>&1 |  FileCheck %s --check-prefixes=ERR
980135aa7bSzhijian# ERR:      error: : -X value should be one of: 32, 64, 32_64, (default) any
990135aa7bSzhijian# ERR-NEXT: var_0x1DF
1000135aa7bSzhijian
1010135aa7bSzhijian--- !XCOFF
1020135aa7bSzhijianFileHeader:
1030135aa7bSzhijian  MagicNumber:       [[FLAG]]
1040135aa7bSzhijianSymbols:
1050135aa7bSzhijian  - Name:            var_[[FLAG]]
106