1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00

[llvm-nm] Additional lit tests for command line options

Differential Revision: https://reviews.llvm.org/D62955

llvm-svn: 363248
This commit is contained in:
Chris Jackson 2019-06-13 10:39:36 +00:00
parent 37794d7bd2
commit d7b24c7030
16 changed files with 363 additions and 18 deletions

View File

@ -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

View File

@ -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*

View File

@ -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 | | | |

View File

@ -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

View File

@ -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

View File

@ -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 | | | |

View File

@ -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

View File

@ -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 |

View File

@ -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

View File

@ -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*

View File

@ -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*

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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