xref: /llvm-project/llvm/test/tools/llvm-nm/option-X.test (revision b135358877e94dbd5d2f3231c2c98309fae70628)
1## Test the "-X" option.
2## The option specifies the type of object file to examine.
3
4# RUN: llvm-as -o %t32.bc %p/Inputs/bitcode-sym32.ll
5# RUN: llvm-as -o %t64.bc %p/Inputs/bitcode-sym64.ll
6
7# RUN: llvm-nm --format=just-symbols -X32 %t32.bc %t64.bc | \
8# RUN:   FileCheck %s -DFILE1=%t32.bc --check-prefixes=BITCODE32 --implicit-check-not={{.}}
9# RUN: llvm-nm --format=just-symbols -X64 %t32.bc %t64.bc | \
10# RUN:   FileCheck %s -DFILE2=%t64.bc --check-prefixes=BITCODE64 --implicit-check-not={{.}}
11# RUN: llvm-nm --format=just-symbols -X32_64 %t32.bc %t64.bc | \
12# RUN:   FileCheck %s -DFILE1=%t32.bc -DFILE2=%t64.bc --check-prefixes=BITCODE32,BITCODE64
13# RUN: llvm-nm --format=just-symbols -Xany %t32.bc %t64.bc | \
14# RUN:   FileCheck %s -DFILE1=%t32.bc -DFILE2=%t64.bc --check-prefixes=BITCODE32,BITCODE64
15
16# BITCODE32:      [[FILE1]]:
17# BITCODE32-NEXT: C32
18# BITCODE32-NEXT: foo32
19# BITCODE32-NEXT: undef_var32
20
21# BITCODE64:      [[FILE2]]:
22# BITCODE64-NEXT: C64
23# BITCODE64-NEXT: bar64
24# BITCODE64-NEXT: static_var64
25
26# RUN: yaml2obj --docnum=1 -DCLASS=ELFCLASS32 %s -o %t_elf32.o
27# RUN: yaml2obj --docnum=1 -DCLASS=ELFCLASS64 %s -o %t_elf64.o
28
29# RUN: llvm-nm --format=just-symbols -X32 %t_elf32.o %t_elf64.o | \
30# RUN:   FileCheck %s -DFILE32=%t_elf32.o --check-prefixes=ELF32 --implicit-check-not={{.}}
31# RUN: llvm-nm --format=just-symbols -X64 %t_elf32.o %t_elf64.o | \
32# RUN:   FileCheck %s -DFILE64=%t_elf64.o --check-prefixes=ELF64 --implicit-check-not={{.}}
33# RUN: llvm-nm --format=just-symbols -X32_64 %t_elf32.o %t_elf64.o | \
34# RUN:   FileCheck %s -DFILE32=%t_elf32.o -DFILE64=%t_elf64.o --check-prefixes=ELF32,ELF64
35# RUN: llvm-nm --format=just-symbols -Xany %t_elf32.o %t_elf64.o | \
36# RUN:   FileCheck %s -DFILE32=%t_elf32.o -DFILE64=%t_elf64.o --check-prefixes=ELF32,ELF64
37
38# ELF32:      [[FILE32]]:
39# ELF32-NEXT: ELFCLASS32_var
40
41# ELF64:      [[FILE64]]:
42# ELF64-NEXT: ELFCLASS64_var
43
44--- !ELF
45FileHeader:
46  Class:   [[CLASS]]
47  Data:    ELFDATA2LSB
48  Type:    ET_REL
49Symbols:
50  - Name:    [[CLASS]]_var
51
52# RUN: yaml2obj --docnum=2 -DFLAG=0x1DF %s -o %t_xcoff32.o
53# RUN: yaml2obj --docnum=2 -DFLAG=0x1F7 %s -o %t_xcoff64.o
54# RUN: rm -f %t.a
55# RUN: llvm-ar -q -c %t.a %t_xcoff32.o %t_xcoff64.o
56
57# RUN: llvm-nm --format=just-symbols -X32 %t_xcoff32.o | \
58# RUN:   FileCheck --check-prefixes=XCOFF32 %s --implicit-check-not={{.}}
59# RUN: llvm-nm --format=just-symbols -X32 %t.a | \
60# RUN:   FileCheck --check-prefixes=ARC32,XCOFF32 %s -DFILE=%basename_t --implicit-check-not={{.}}
61# ARC32:      [[FILE]].tmp_xcoff32.o:
62# XCOFF32:      var_0x1DF
63
64# RUN: llvm-nm --format=just-symbols -X64 %t_xcoff64.o | \
65# RUN:   FileCheck --check-prefixes=XCOFF64 %s --implicit-check-not={{.}}
66# RUN: llvm-nm --format=just-symbols -X64 %t.a | \
67# RUN:   FileCheck --check-prefixes=ARC64,XCOFF64 -DFILE=%basename_t %s --implicit-check-not={{.}}
68# ARC64:       [[FILE]].tmp_xcoff64.o:
69# XCOFF64:       var_0x1F7
70
71# RUN: llvm-nm --format=just-symbols %t_xcoff32.o %t_xcoff64.o | \
72# RUN:   FileCheck --check-prefixes=BOTH %s -DFILE32=%t_xcoff32.o -DFILE64=%t_xcoff64.o --match-full-lines
73# RUN: llvm-nm --format=just-symbols -X32_64 %t_xcoff32.o %t_xcoff64.o | \
74# RUN:   FileCheck --check-prefixes=BOTH %s -DFILE32=%t_xcoff32.o -DFILE64=%t_xcoff64.o --match-full-lines
75# RUN: llvm-nm --format=just-symbols -Xany %t_xcoff32.o %t_xcoff64.o | \
76# RUN:   FileCheck --check-prefixes=BOTH %s -DFILE32=%t_xcoff32.o -DFILE64=%t_xcoff64.o --match-full-lines
77
78# BOTH:        [[FILE32]]:
79# BOTH-NEXT:   var_0x1DF
80# BOTH-EMPTY:
81# BOTH-NEXT:   [[FILE64]]:
82# BOTH-NEXT:   var_0x1F7
83
84# RUN: llvm-nm --format=just-symbols -X32_64 %t.a | \
85# RUN:   FileCheck --check-prefixes=ARCHIVE-BOTH -DFILE=%basename_t --match-full-lines %s
86# RUN: llvm-nm --format=just-symbols -Xany %t.a | \
87# RUN:   FileCheck --check-prefixes=ARCHIVE-BOTH -DFILE=%basename_t --match-full-lines %s
88
89# ARCHIVE-BOTH:      [[FILE]].tmp_xcoff32.o:
90# ARCHIVE-BOTH-NEXT: var_0x1DF{{[[:space:]]}}
91# ARCHIVE-BOTH-NEXT: [[FILE]].tmp_xcoff64.o:
92# ARCHIVE-BOTH-NEXT: var_0x1F7
93
94# RUN: llvm-nm --format=just-symbols -X64 %t_xcoff32.o | count 0
95# RUN: llvm-nm --format=just-symbols -X32 %t_xcoff64.o | count 0
96
97# RUN: not llvm-nm --format=just-symbols -X33 %t_xcoff32.o 2>&1 |  FileCheck %s --check-prefixes=ERR
98# ERR:      error: : -X value should be one of: 32, 64, 32_64, (default) any
99# ERR-NEXT: var_0x1DF
100
101--- !XCOFF
102FileHeader:
103  MagicNumber:       [[FLAG]]
104Symbols:
105  - Name:            var_[[FLAG]]
106