forked from OSchip/llvm-project
366 lines
10 KiB
Plaintext
366 lines
10 KiB
Plaintext
# RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-nm -a -S - \
|
|
# RUN: | FileCheck %s -check-prefix COFF32
|
|
|
|
# COFF32: 00000000 d .data
|
|
# COFF32-NEXT: 00000000 t .text
|
|
# COFF32-NEXT: 00000000 d L_.str
|
|
# COFF32-NEXT: U _SomeOtherFunction
|
|
# COFF32-NEXT: 00000000 T _main
|
|
# COFF32-NEXT: U _puts
|
|
|
|
# RUN: yaml2obj %p/Inputs/COFF/x86-64.yaml | llvm-nm -a -S - \
|
|
# RUN: | FileCheck %s -check-prefix COFF64
|
|
|
|
# COFF64: 00000000 d .data
|
|
# COFF64-NEXT: 00000000 t .text
|
|
# COFF64-NEXT: 00000000 r ??__Ex@@YAXXZ
|
|
# COFF64-NEXT: 00000000 d L.str
|
|
# COFF64-NEXT: U SomeOtherFunction
|
|
# COFF64-NEXT: 00000000 T main
|
|
# COFF64-NEXT: U puts
|
|
|
|
# RUN: llvm-nm %p/Inputs/trivial-object-test.wasm \
|
|
# RUN: | FileCheck %s -check-prefix WASM
|
|
|
|
# WASM: 00000000 d .L.str
|
|
# WASM-NEXT: 00000019 t .LSomeOtherFunction_bitcast
|
|
# WASM-NEXT: U SomeOtherFunction
|
|
# WASM-NEXT: 00000001 T main
|
|
# WASM-NEXT: U puts
|
|
# WASM-NEXT: 00000010 D var
|
|
|
|
# RUN: yaml2obj --docnum=1 %s -o %t.elf-i386
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS32
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_386
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Symbols:
|
|
- Name: main
|
|
Type: STT_FUNC
|
|
Section: .text
|
|
Binding: STB_GLOBAL
|
|
Size: 0x0000000000000024
|
|
- Name: SomeOtherFunction
|
|
Binding: STB_GLOBAL
|
|
- Name: puts
|
|
Binding: STB_GLOBAL
|
|
|
|
# RUN: llvm-nm %t.elf-i386 | FileCheck %s -check-prefix=ELF
|
|
|
|
# ELF-NOT: U
|
|
# ELF: U SomeOtherFunction
|
|
# ELF: 00000000 T main
|
|
# ELF: U puts
|
|
|
|
# RUN: llvm-nm -o %t.elf-i386 | FileCheck %s -DFILE=%t.elf-i386 -check-prefix=ELF-o
|
|
|
|
# RUN: llvm-nm %t.elf-i386 -S | FileCheck %s -check-prefix ELF-SIZE
|
|
|
|
# ELF-SIZE: U SomeOtherFunction
|
|
# ELF-SIZE-NEXT: 00000000 00000024 T main
|
|
# ELF-SIZE-NEXT: U puts
|
|
|
|
# ELF-o-NOT: U
|
|
# ELF-o: [[FILE]]: U SomeOtherFunction
|
|
# ELF-o: [[FILE]]: 00000000 T main
|
|
# ELF-o: [[FILE]]: U puts
|
|
|
|
# RUN: llvm-nm -u %t.elf-i386 | FileCheck %s -check-prefix ELF-u
|
|
|
|
# ELF-u: U SomeOtherFunction
|
|
# ELF-u: U puts
|
|
|
|
## Test different ELF symbols for 64-bit platform.
|
|
|
|
# RUN: yaml2obj --docnum=2 %s -o %t.elf-x86-64
|
|
# RUN: llvm-nm %t.elf-x86-64 | FileCheck %s -check-prefix ELF64
|
|
|
|
# ELF64: U SomeOtherFunction
|
|
# ELF64: 0000000000000123 a absSym1
|
|
# ELF64: 0000000000000123 A absSym2
|
|
# ELF64: 0000000000002000 D dataSym1
|
|
# ELF64: 0000000000002004 D dataSym2
|
|
# ELF64: 0000000000001000 T textSym1
|
|
# ELF64: 0000000000001004 T textSym2
|
|
# ELF64: U undefinedSym
|
|
# ELF64: v weakObject1
|
|
# ELF64: 0000000000001000 V weakObject2
|
|
# ELF64: w weakSym1
|
|
# ELF64: 0000000000001000 W weakSym2
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Address: 0x1000
|
|
- Name: .data
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_WRITE ]
|
|
Address: 0x2000
|
|
Symbols:
|
|
- Name: absSym1
|
|
Index: SHN_ABS
|
|
Value: 0x0000000000000123
|
|
- Name: absSym2
|
|
Index: SHN_ABS
|
|
Binding: STB_GLOBAL
|
|
Value: 0x0000000000000123
|
|
- Name: SomeOtherFunction
|
|
Binding: STB_GLOBAL
|
|
- Name: undefinedSym
|
|
Binding: STB_GLOBAL
|
|
- Name: weakObject1
|
|
Type: STT_OBJECT
|
|
Binding: STB_WEAK
|
|
- Name: weakObject2
|
|
Type: STT_OBJECT
|
|
Section: .text
|
|
Binding: STB_WEAK
|
|
- Name: weakSym1
|
|
Binding: STB_WEAK
|
|
- Name: weakSym2
|
|
Section: .text
|
|
Binding: STB_WEAK
|
|
- Name: dataSym1
|
|
Type: STT_OBJECT
|
|
Section: .data
|
|
Binding: STB_GLOBAL
|
|
Value: 0x0000000000000000
|
|
- Name: dataSym2
|
|
Type: STT_OBJECT
|
|
Section: .data
|
|
Binding: STB_GLOBAL
|
|
Value: 0x0000000000000004
|
|
- Name: textSym1
|
|
Type: STT_FUNC
|
|
Section: .text
|
|
Binding: STB_GLOBAL
|
|
Value: 0x0000000000000000
|
|
- Name: textSym2
|
|
Type: STT_FUNC
|
|
Section: .text
|
|
Binding: STB_GLOBAL
|
|
Value: 0x0000000000000004
|
|
|
|
## Test llvm-nm shows all symbols with -a.
|
|
|
|
# RUN: yaml2obj --docnum=3 %s -o %t-a.elf-x86-64
|
|
# RUN: llvm-nm -a %t-a.elf-x86-64 | FileCheck %s -check-prefix ELF64-a
|
|
|
|
# ELF64-a: 00000000 b .bss
|
|
# ELF64-a-NEXT: 00000000 n .comment
|
|
# ELF64-a-NEXT: 00000000 d .data
|
|
# ELF64-a-NEXT: 00000000 N .debug_sec
|
|
# ELF64-a-NEXT: 00000000 t .text
|
|
# ELF64-a-NEXT: 00000000 a fileSym
|
|
# ELF64-a-NEXT: 00000014 T regularSym
|
|
# ELF64-a-NEXT: U undefSym
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS32
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_386
|
|
Sections:
|
|
- Name: .rodata
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
- Name: .data
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
- Name: .bss
|
|
Type: SHT_NOBITS
|
|
Flags: [ SHF_WRITE, SHF_ALLOC ]
|
|
- Name: .debug_sec
|
|
Type: SHT_PROGBITS
|
|
- Name: .comment
|
|
Type: SHT_PROGBITS
|
|
Symbols:
|
|
- Name: fileSym
|
|
Type: STT_FILE
|
|
Index: SHN_ABS
|
|
- Name: .text
|
|
Type: STT_SECTION
|
|
Section: .text
|
|
- Name: .data
|
|
Type: STT_SECTION
|
|
Section: .data
|
|
- Name: .bss
|
|
Type: STT_SECTION
|
|
Section: .bss
|
|
- Name: .debug_sec
|
|
Type: STT_SECTION
|
|
Section: .debug_sec
|
|
- Name: .comment
|
|
Type: STT_SECTION
|
|
Section: .comment
|
|
- Name: undefSym
|
|
Binding: STB_GLOBAL
|
|
- Name: regularSym
|
|
Type: STT_FUNC
|
|
Section: .text
|
|
Binding: STB_GLOBAL
|
|
Value: 0x0000000000000014
|
|
|
|
## Test that we drop the thumb bit only from function addresses.
|
|
|
|
# RUN: yaml2obj --docnum=4 %s -o %t.elf-arm32
|
|
# RUN: llvm-nm %t.elf-arm32 | FileCheck %s -check-prefix ELF-THUMB
|
|
|
|
# ELF-THUMB: 00000000 t func
|
|
# ELF-THUMB: 00000003 t sym
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS32
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_ARM
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
Symbols:
|
|
- Name: func
|
|
Type: STT_FUNC
|
|
Section: .text
|
|
Value: 0x0000000000000001
|
|
- Name: sym
|
|
Section: .text
|
|
Value: 0x0000000000000003
|
|
|
|
# RUN: llvm-nm %p/Inputs/trivial-object-test.macho-i386 \
|
|
# RUN: | FileCheck %s -check-prefix macho
|
|
|
|
# macho: U _SomeOtherFunction
|
|
# macho: 00000000 T _main
|
|
# macho: U _puts
|
|
|
|
# RUN: llvm-nm -U %p/Inputs/trivial-object-test.macho-i386 \
|
|
# RUN: | FileCheck %s -check-prefix macho-U
|
|
|
|
# macho-U-NOT: U _SomeOtherFunction
|
|
# macho-U: 00000000 T _main
|
|
# macho-U-NOT: U _puts
|
|
|
|
# RUN: llvm-nm %p/Inputs/trivial-object-test.macho-x86-64 \
|
|
# RUN: | FileCheck %s -check-prefix macho64
|
|
|
|
# macho64: 0000000000000028 s L_.str
|
|
# macho64: U _SomeOtherFunction
|
|
# macho64: 0000000000000000 T _main
|
|
# macho64: U _puts
|
|
|
|
# RUN: llvm-nm %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
# RUN: | FileCheck %s -check-prefix macho-tdb
|
|
|
|
# macho-tdb: 0000000000000030 s EH_frame0
|
|
# macho-tdb: 0000000000000070 b _b
|
|
# macho-tdb: 000000000000000c D _d
|
|
# macho-tdb: 0000000000000000 T _t
|
|
# macho-tdb: 0000000000000048 S _t.eh
|
|
|
|
# RUN: llvm-nm -j %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
# RUN: | FileCheck %s -check-prefix macho-j
|
|
|
|
# macho-j: EH_frame0
|
|
# macho-j: _b
|
|
# macho-j: _d
|
|
# macho-j: _t
|
|
# macho-j: _t.eh
|
|
|
|
# RUN: llvm-nm -r %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
# RUN: | FileCheck %s -check-prefix macho-r
|
|
|
|
# macho-r: 0000000000000048 S _t.eh
|
|
# macho-r-NEXT: 0000000000000000 T _t
|
|
# macho-r-NEXT: 000000000000000c D _d
|
|
# macho-r-NEXT: 0000000000000070 b _b
|
|
# macho-r-NEXT: 0000000000000030 s EH_frame0
|
|
|
|
# RUN: llvm-nm %p/Inputs/macho-text-data-bss.macho-x86_64 -s __DATA __data \
|
|
# RUN: | FileCheck %s -check-prefix macho-s
|
|
|
|
# macho-s: 000000000000000c D _d
|
|
# macho-s-NOT: 0000000000000048 S _t.eh
|
|
# macho-s-NOT: 0000000000000000 T _t
|
|
# macho-s-NOT: 0000000000000070 b _b
|
|
# macho-s-NOT: 0000000000000030 s EH_frame0
|
|
|
|
# RUN: llvm-nm -x %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
# RUN: | FileCheck %s -check-prefix macho-x
|
|
|
|
# macho-x: 0000000000000030 0e 05 0000 00000010 EH_frame0
|
|
# macho-x: 0000000000000070 0e 03 0000 0000000d _b
|
|
# macho-x: 000000000000000c 0f 02 0000 00000004 _d
|
|
# macho-x: 0000000000000000 0f 01 0000 00000001 _t
|
|
# macho-x: 0000000000000048 0f 05 0000 00000007 _t.eh
|
|
|
|
# RUN: llvm-nm -o %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
# RUN: | FileCheck %s -check-prefix macho-o
|
|
|
|
# macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 0000000000000030 s EH_frame0
|
|
# macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 0000000000000070 b _b
|
|
# macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 000000000000000c D _d
|
|
# macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 0000000000000000 T _t
|
|
# macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 0000000000000048 S _t.eh
|
|
|
|
# RUN: llvm-nm -p -a %p/Inputs/macho-hello-g.macho-x86_64 \
|
|
# RUN: | FileCheck %s -check-prefix macho-pa
|
|
|
|
# macho-pa: 0000000000000000 - 00 0000 SO /Volumes/SandBox/
|
|
# macho-pa: 0000000000000000 - 00 0000 SO hello.c
|
|
# macho-pa: 0000000053c8408d - 03 0001 OSO /Volumes/SandBox/hello.o
|
|
# macho-pa: 0000000100000f30 - 01 0000 BNSYM
|
|
# macho-pa: 0000000100000f30 - 01 0000 FUN _main
|
|
# macho-pa: 000000000000003b - 00 0000 FUN
|
|
# macho-pa: 000000000000003b - 01 0000 ENSYM
|
|
# macho-pa: 0000000000000000 - 01 0000 SO
|
|
# macho-pa: 0000000100000000 T __mh_execute_header
|
|
# macho-pa: 0000000100000f30 T _main
|
|
# macho-pa: U _printf
|
|
# macho-pa: U dyld_stub_binder
|
|
|
|
# RUN: llvm-nm -u %p/Inputs/macho-hello-g.macho-x86_64 \
|
|
# RUN: | FileCheck %s -check-prefix macho-u
|
|
|
|
# macho-u: _printf
|
|
# macho-u: dyld_stub_binder
|
|
|
|
# RUN: llvm-nm -S -a %p/Inputs/common.coff-i386 \
|
|
# RUN: | FileCheck %s -check-prefix COFF-COMMON
|
|
|
|
# COFF-COMMON: 00000000 b .bss
|
|
# COFF-COMMON-NEXT: 00000000 d .data
|
|
# COFF-COMMON-NEXT: 00000000 d .drectve
|
|
# COFF-COMMON-NEXT: 00000000 n .file
|
|
# COFF-COMMON-NEXT: 00000000 r .rdata$zzz
|
|
# COFF-COMMON-NEXT: 00000000 t .text
|
|
# COFF-COMMON-NEXT: C _a
|
|
|
|
# RUN: mkdir -p %t
|
|
# RUN: cd %t
|
|
# RUN: cp %p/Inputs/trivial-object-test.macho-i386 a.out
|
|
# RUN: llvm-nm a.out | FileCheck %s -check-prefix A-OUT
|
|
|
|
# A-OUT: U _SomeOtherFunction
|
|
# A-OUT: 00000000 T _main
|
|
# A-OUT: U _puts
|