summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-nm/elf-extern-only.test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/llvm-nm/elf-extern-only.test')
-rw-r--r--llvm/test/tools/llvm-nm/elf-extern-only.test49
1 files changed, 49 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-nm/elf-extern-only.test b/llvm/test/tools/llvm-nm/elf-extern-only.test
new file mode 100644
index 00000000000..d8bbd664acc
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/elf-extern-only.test
@@ -0,0 +1,49 @@
+## Test that the --extern-only switch only shows external ELF symbols.
+
+# RUN: yaml2obj %s -o %t.o
+# RUN: llvm-nm %t.o --extern-only --no-sort | FileCheck %s
+# RUN: llvm-nm %t.o -g --no-sort | FileCheck %s
+
+## Using --no-sort ensures that the symbols appear in the symbol table order
+## allowing our CHECK-NOTs to work as expected.
+# CHECK-NOT: local
+# CHECK: D global_data_symbol
+# CHECK-NEXT: T global_function_symbol
+# CHECK-NEXT: U undefined
+# CHECK-NEXT: W weak_symbol
+# CHECK-NOT: local
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS32
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_386
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+Symbols:
+ - Name: local_function_symbol
+ Binding: STB_LOCAL
+ Section: .text
+ - Name: local_data_symbol
+ Binding: STB_LOCAL
+ Section: .data
+ - Name: global_data_symbol
+ Binding: STB_GLOBAL
+ Section: .data
+ - Name: global_function_symbol
+ Binding: STB_GLOBAL
+ Section: .text
+ - Name: undefined
+ Binding: STB_GLOBAL
+ - Name: weak_symbol
+ Binding: STB_WEAK
+ Section: .data
+ - Name: local_at_end
+ Binding: STB_LOCAL
+ Section: .text
OpenPOWER on IntegriCloud