summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Jackson <snortotter@gmail.com>2019-06-13 10:39:36 +0000
committerChris Jackson <snortotter@gmail.com>2019-06-13 10:39:36 +0000
commit7b395133029a8a93d2516d5c5d7b19aae3c71648 (patch)
tree1de175927e4dfa249cd0089213d66637e91ca301
parente1aea858968364a3685d31042a46b470ec33458b (diff)
downloadbcm5719-llvm-7b395133029a8a93d2516d5c5d7b19aae3c71648.tar.gz
bcm5719-llvm-7b395133029a8a93d2516d5c5d7b19aae3c71648.zip
[llvm-nm] Additional lit tests for command line options
Differential Revision: https://reviews.llvm.org/D62955 llvm-svn: 363248
-rw-r--r--llvm/test/tools/llvm-nm/X86/format-sysv-32-bit.test (renamed from llvm/test/tools/llvm-nm/X86/sysv-i386.test)1
-rw-r--r--llvm/test/tools/llvm-nm/X86/format-sysv-64-bit.test5
-rw-r--r--llvm/test/tools/llvm-nm/X86/macho-format-sysv.test8
-rw-r--r--llvm/test/tools/llvm-nm/X86/portability.test25
-rw-r--r--llvm/test/tools/llvm-nm/X86/posixELF.test4
-rw-r--r--llvm/test/tools/llvm-nm/X86/sysv-x86_64.test13
-rw-r--r--llvm/test/tools/llvm-nm/debug-syms.test32
-rw-r--r--llvm/test/tools/llvm-nm/format-sysv-binding.test44
-rw-r--r--llvm/test/tools/llvm-nm/format-sysv-layout.test28
-rw-r--r--llvm/test/tools/llvm-nm/format-sysv-section.test35
-rw-r--r--llvm/test/tools/llvm-nm/format-sysv-type.test44
-rw-r--r--llvm/test/tools/llvm-nm/no-sort.test40
-rw-r--r--llvm/test/tools/llvm-nm/numeric-sort.test44
-rw-r--r--llvm/test/tools/llvm-nm/print-filename.test19
-rw-r--r--llvm/test/tools/llvm-nm/print-size.test19
-rw-r--r--llvm/test/tools/llvm-nm/undefined-only.test20
16 files changed, 363 insertions, 18 deletions
diff --git a/llvm/test/tools/llvm-nm/X86/sysv-i386.test b/llvm/test/tools/llvm-nm/X86/format-sysv-32-bit.test
index ea0dcab5bb3..d3d43247d36 100644
--- a/llvm/test/tools/llvm-nm/X86/sysv-i386.test
+++ b/llvm/test/tools/llvm-nm/X86/format-sysv-32-bit.test
@@ -1,4 +1,3 @@
-RUN: llvm-nm -f sysv %p/Inputs/hello.obj.elf-i386
RUN: llvm-nm -f sysv %p/Inputs/hello.obj.elf-i386 | FileCheck %s --strict-whitespace
CHECK: Name Value Class Type Size Line Section
diff --git a/llvm/test/tools/llvm-nm/X86/format-sysv-64-bit.test b/llvm/test/tools/llvm-nm/X86/format-sysv-64-bit.test
new file mode 100644
index 00000000000..8169bb5233e
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/X86/format-sysv-64-bit.test
@@ -0,0 +1,5 @@
+RUN: llvm-nm -f sysv %p/Inputs/hello.obj.elf-x86_64 | FileCheck %s --strict-whitespace
+
+CHECK: Name Value Class Type Size Line Section
+CHECK: main |0000000000000000| T | FUNC|0000000000000015| |.text
+CHECK: puts | | U | NOTYPE| | |*UND*
diff --git a/llvm/test/tools/llvm-nm/X86/macho-format-sysv.test b/llvm/test/tools/llvm-nm/X86/macho-format-sysv.test
new file mode 100644
index 00000000000..e298623d632
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/X86/macho-format-sysv.test
@@ -0,0 +1,8 @@
+RUN: llvm-nm -f sysv %p/Inputs/hello.obj.macho-x86_64 2>&1 | FileCheck %s --strict-whitespace
+
+CHECK: Name Value Class Type Size Line Section
+CHECK: EH_frame0 |0000000000000068| s | |0000000000000000| |
+CHECK: L_.str |000000000000003b| s | |0000000000000000| |
+CHECK: _main |0000000000000000| T | |0000000000000000| |
+CHECK: _main.eh |0000000000000080| S | |0000000000000000| |
+CHECK: _printf | | U | | | |
diff --git a/llvm/test/tools/llvm-nm/X86/portability.test b/llvm/test/tools/llvm-nm/X86/portability.test
new file mode 100644
index 00000000000..ca8c4781f0b
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/X86/portability.test
@@ -0,0 +1,25 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm %t.o --portability | FileCheck %s --strict-whitespace --match-full-lines
+# RUN: llvm-nm %t.o -P | FileCheck %s --strict-whitespace --match-full-lines
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+Symbols:
+ - Name: symbol_a
+ Section: .text
+ Size: 16
+ Value: 0xff
+ - Name: symbol_wider_name
+ Section: .text
+ Size: 256
+ Value: 0xffeedd
+
+# CHECK:symbol_a n ff 10
+# CHECK-NEXT:symbol_wider_name n ffeedd 100
diff --git a/llvm/test/tools/llvm-nm/X86/posixELF.test b/llvm/test/tools/llvm-nm/X86/posixELF.test
deleted file mode 100644
index 810bc9705f9..00000000000
--- a/llvm/test/tools/llvm-nm/X86/posixELF.test
+++ /dev/null
@@ -1,4 +0,0 @@
-# RUN: llvm-nm -P %p/Inputs/hello.obj.elf-x86_64 | FileCheck %s
-
-CHECK: main T 0 15
-CHECK: puts U 0 0
diff --git a/llvm/test/tools/llvm-nm/X86/sysv-x86_64.test b/llvm/test/tools/llvm-nm/X86/sysv-x86_64.test
deleted file mode 100644
index c517af97ad8..00000000000
--- a/llvm/test/tools/llvm-nm/X86/sysv-x86_64.test
+++ /dev/null
@@ -1,13 +0,0 @@
-RUN: llvm-nm -f sysv %p/Inputs/hello.obj.elf-x86_64 | FileCheck %s --check-prefix=ELF --strict-whitespace
-RUN: llvm-nm -f sysv %p/Inputs/hello.obj.macho-x86_64 2>&1 | FileCheck %s --check-prefix=MACHO --strict-whitespace
-
-ELF: Name Value Class Type Size Line Section
-ELF: main |0000000000000000| T | FUNC|0000000000000015| |.text
-ELF: puts | | U | NOTYPE| | |*UND*
-
-MACHO: Name Value Class Type Size Line Section
-MACHO: EH_frame0 |0000000000000068| s | |0000000000000000| |
-MACHO: L_.str |000000000000003b| s | |0000000000000000| |
-MACHO: _main |0000000000000000| T | |0000000000000000| |
-MACHO: _main.eh |0000000000000080| S | |0000000000000000| |
-MACHO: _printf | | U | | | |
diff --git a/llvm/test/tools/llvm-nm/debug-syms.test b/llvm/test/tools/llvm-nm/debug-syms.test
new file mode 100644
index 00000000000..d10308002a1
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/debug-syms.test
@@ -0,0 +1,32 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm --debug-syms %t.o | FileCheck %s --implicit-check-not U
+# RUN: llvm-nm -a %t.o | FileCheck %s --implicit-check-not U
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_ARM
+Sections:
+ - Name: section
+ Type: SHT_PROGBITS
+Symbols:
+ - Name: ""
+ Type: STT_SECTION
+ Section: section
+ - Name: file_sym
+ Type: STT_FILE
+ Index: SHN_ABS
+ - Name: $d
+ Section: section
+ - Name: $t
+ Section: section
+ - Name: $a
+ Section: section
+
+# CHECK: $a
+# CHECK-NEXT: $d
+# CHECK-NEXT: $t
+# CHECK-NEXT: file_sym
+# CHECK-NEXT: section
diff --git a/llvm/test/tools/llvm-nm/format-sysv-binding.test b/llvm/test/tools/llvm-nm/format-sysv-binding.test
new file mode 100644
index 00000000000..557df3d6d0f
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/format-sysv-binding.test
@@ -0,0 +1,44 @@
+# XFAIL: *
+# For a symbol in a text section the class character for an unrecognised binding
+# value is '?' in gnu-nm but llvm-nm prints 'T'. Filed as:
+# https://bugs.llvm.org/show_bug.cgi?id=41711
+
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm %t.o --format=sysv | FileCheck %s
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+Symbols:
+ - Name: symbol_local
+ Binding: STB_LOCAL
+ Section: .text
+ Value: 0x101
+ Size: 8
+ - Name: symbol_weak
+ Binding: STB_WEAK
+ Section: .text
+ Value: 0x102
+ Size: 4
+ - Name: symbol_undefined_binding
+ Binding: 5
+ Section: .text
+ Value: 0x1004
+ Size: 32
+ - Name: symbol_global
+ Binding: STB_GLOBAL
+ Section: .text
+ Value: 0x103
+ Size: 16
+
+# CHECK: symbol_global {{.*}}| T |
+# CHECK-NEXT: symbol_local {{.*}}| t |
+# CHECK-NEXT: symbol_unrecognised_binding {{.*}}| ? |
+# CHECK-NEXT: symbol_weak {{.*}}| W |
diff --git a/llvm/test/tools/llvm-nm/format-sysv-layout.test b/llvm/test/tools/llvm-nm/format-sysv-layout.test
new file mode 100644
index 00000000000..085e8380da6
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/format-sysv-layout.test
@@ -0,0 +1,28 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm %t.o --debug-syms --format=sysv | FileCheck %s -DFILE=%t.o --strict-whitespace
+# RUN: llvm-nm %t.o --debug-syms -f=sysv | FileCheck %s -DFILE=%t.o --strict-whitespace
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+Symbols:
+ - Name: symbol_with_a_significantly_longer_name
+ Section: .text
+ - Name: symbol
+ Section: .text
+ - Name: symbol_2
+ Type: STT_FUNC
+
+# CHECK: Symbols from [[FILE]]:
+# CHECK-EMPTY:
+# CHECK-NEXT: Name Value Class Type Size Line Section
+# CHECK-NEXT: symbol |0000000000000000| t | NOTYPE|0000000000000000| |.text
+# CHECK-NEXT: symbol_2 | | U | FUNC| | |*UND*
+# CHECK-NEXT: symbol_with_a_significantly_longer_name|0000000000000000| t | NOTYPE|0000000000000000| |.text
diff --git a/llvm/test/tools/llvm-nm/format-sysv-section.test b/llvm/test/tools/llvm-nm/format-sysv-section.test
new file mode 100644
index 00000000000..1ebfa93d141
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/format-sysv-section.test
@@ -0,0 +1,35 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm %t.o --format=sysv | FileCheck %s
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+Symbols:
+ - Name: symbol_undefined
+ - Name: symbol
+ Section: .text
+ - Name: symbol_common
+ Index: SHN_COMMON
+ - Name: symbol_absolute
+ Index: SHN_ABS
+ - Name: proc
+ Index: 0xff01
+ - Name: os
+ Index: 0xff21
+ - Name: reserved
+ Index: 0xfffe
+
+# CHECK: os {{.*}}|
+# CHECK-NEXT: proc {{.*}}|
+# CHECK-NEXT: reserved {{.*}}|
+# CHECK-NEXT: symbol {{.*}}| |.text
+# CHECK-NEXT: symbol_absolute {{.*}}| |*ABS*
+# CHECK-NEXT: symbol_common {{.*}}| |*COM*
+# CHECK-NEXT: symbol_undefined {{.*}}| |*UND*
diff --git a/llvm/test/tools/llvm-nm/format-sysv-type.test b/llvm/test/tools/llvm-nm/format-sysv-type.test
new file mode 100644
index 00000000000..a8bf1b5ef41
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/format-sysv-type.test
@@ -0,0 +1,44 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm %t.o --debug-syms --format=sysv | FileCheck %s
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Symbols:
+ - Name: symbol_notype
+ Type: STT_NOTYPE
+ - Name: symbol_common
+ Type: STT_COMMON
+ - Name: symbol_tls
+ Type: STT_TLS
+ - Name: symbol_file
+ Type: STT_FILE
+ - Name: symbol_obj
+ Type: STT_OBJECT
+ - Name: symbol_func
+ Type: STT_FUNC
+ - Name: symbol_ifunc
+ Type: STT_GNU_IFUNC
+ - Name: os_specific
+ Type: 11
+ - Name: proc_specific
+ Type: 13
+ - Name: unknown
+ Type: 7
+
+## FIXME: Should not print blank types for unknown, OS-specific and processor-
+## specific types. See https://bugs.llvm.org/show_bug.cgi?id=41713.
+
+# CHECK: os_specific {{.*}}| | | |*UND*
+# CHECK-NEXT: proc_specific {{.*}}| | | |*UND*
+# CHECK-NEXT: symbol_common {{.*}}| COMMON| | |*COM*
+# CHECK-NEXT: symbol_file {{.*}}| FILE| | |*UND*
+# CHECK-NEXT: symbol_func {{.*}}| FUNC| | |*UND*
+# CHECK-NEXT: symbol_ifunc {{.*}}| IFUNC| | |*UND*
+# CHECK-NEXT: symbol_notype {{.*}}| NOTYPE| | |*UND*
+# CHECK-NEXT: symbol_obj {{.*}}| OBJECT| | |*UND*
+# CHECK-NEXT: symbol_tls {{.*}}| TLS| | |*UND*
+# CHECK-NEXT: unknown {{.*}}| | | |*UND*
diff --git a/llvm/test/tools/llvm-nm/no-sort.test b/llvm/test/tools/llvm-nm/no-sort.test
new file mode 100644
index 00000000000..d7405587583
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/no-sort.test
@@ -0,0 +1,40 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm %t.o | FileCheck %s --check-prefix=DEFAULT
+# RUN: llvm-nm --no-sort %t.o | FileCheck %s --check-prefix=NOSORT
+# RUN: llvm-nm -p %t.o | FileCheck %s --check-prefix=NOSORT
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+Symbols:
+ - Name: symbol_a
+ Section: .text
+ Value: 0x100
+ - Name: symbol_b
+ Section: .text
+ Value: 0x25
+ - Name: symbol_d
+ Section: .text
+ Value: 0x25
+ - Name: symbol_c
+ Section: .text
+ Value: 0x50
+
+# The default is to sort by symbol name.
+# DEFAULT: 0000000000000100 n symbol_a
+# DEFAULT-NEXT: 0000000000000025 n symbol_b
+# DEFAULT-NEXT: 0000000000000050 n symbol_c
+# DEFAULT-NEXT: 0000000000000025 n symbol_d
+
+# When --no-sort is specified then the symbols are output in
+# symbol table order.
+# NOSORT: 0000000000000100 n symbol_a
+# NOSORT-NEXT: 0000000000000025 n symbol_b
+# NOSORT-NEXT: 0000000000000025 n symbol_d
+# NOSORT-NEXT: 0000000000000050 n symbol_c
diff --git a/llvm/test/tools/llvm-nm/numeric-sort.test b/llvm/test/tools/llvm-nm/numeric-sort.test
new file mode 100644
index 00000000000..26a6bcbcbda
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/numeric-sort.test
@@ -0,0 +1,44 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm %t.o | FileCheck %s --check-prefix=DEFAULT
+# RUN: llvm-nm --numeric-sort %t.o | FileCheck %s --check-prefix=NUMERIC
+# RUN: llvm-nm -n %t.o | FileCheck %s --check-prefix=NUMERIC
+# RUN: llvm-nm -v %t.o | FileCheck %s --check-prefix=NUMERIC
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+Symbols:
+ - Name: symbol_a
+ Section: .text
+ Binding: STB_LOCAL
+ Value: 0x100
+ - Name: symbol_b
+ Section: .text
+ Binding: STB_LOCAL
+ Value: 0x25
+ - Name: symbol_d
+ Section: .text
+ Binding: STB_LOCAL
+ Value: 0x25
+ - Name: symbol_c
+ Section: .text
+ Binding: STB_LOCAL
+ Value: 0x50
+
+# The default is to sort by symbol name.
+# DEFAULT: 0000000000000100 n symbol_a
+# DEFAULT-NEXT: 0000000000000025 n symbol_b
+# DEFAULT-NEXT: 0000000000000050 n symbol_c
+# DEFAULT-NEXT: 0000000000000025 n symbol_d
+
+# --numeric-sort sorts the symbols by value.
+# NUMERIC: 0000000000000025 n symbol_b
+# NUMERIC-NEXT: 0000000000000025 n symbol_d
+# NUMERIC-NEXT: 0000000000000050 n symbol_c
+# NUMERIC-NEXT: 0000000000000100 n symbol_a
diff --git a/llvm/test/tools/llvm-nm/print-filename.test b/llvm/test/tools/llvm-nm/print-filename.test
new file mode 100644
index 00000000000..6c47240b3d5
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/print-filename.test
@@ -0,0 +1,19 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm --print-file-name %t.o | FileCheck %s -DFILE=%t.o
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm --print-file-name %t.o | FileCheck %s -DFILE=%t.o
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+Symbols:
+ - Name: symbol_a
+ Section: .text
+
+# CHECK: [[FILE]]: 0000000000000000 n symbol_a
diff --git a/llvm/test/tools/llvm-nm/print-size.test b/llvm/test/tools/llvm-nm/print-size.test
new file mode 100644
index 00000000000..4614fd1177c
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/print-size.test
@@ -0,0 +1,19 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm --print-size %t.o | FileCheck %s --strict-whitespace
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+Symbols:
+ - Name: a_symbol
+ Size: 0x123456789abcdef0
+ Section: .text
+ Binding: STB_GLOBAL
+
+# CHECK: 0000000000000000 123456789abcdef0 N a_symbol
diff --git a/llvm/test/tools/llvm-nm/undefined-only.test b/llvm/test/tools/llvm-nm/undefined-only.test
new file mode 100644
index 00000000000..99fa519e70a
--- /dev/null
+++ b/llvm/test/tools/llvm-nm/undefined-only.test
@@ -0,0 +1,20 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-nm --undefined-only %t.o | FileCheck %s --implicit-check-not=symbol_defined
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+Symbols:
+ - Name: symbol_undefined_a
+ - Name: symbol_defined
+ Section: .text
+ - Name: symbol_undefined_b
+
+# CHECK: U symbol_undefined_a
+# CHECK-NEXT: U symbol_undefined_b
OpenPOWER on IntegriCloud