mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-30 00:32:53 +00:00
54801d6fa5
Undefined and weak symbols don't have a meaningful size or value. As such, nothing should be printed for those attributes (this is already done for the address with 'U') with the BSD format. This matches what GNU nm does. Note that for the POSIX.2 format [1] zero values are still printed for the size and value. This seems in spirit with the format strings in that specification, but is debatable. [1] http://pubs.opengroup.org/onlinepubs/9699919799/ Differential Revision: https://reviews.llvm.org/D26936 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287802 91177308-0d34-0410-b5e6-96231b3b80d8
186 lines
6.6 KiB
Plaintext
186 lines
6.6 KiB
Plaintext
RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-nm -a -S - \
|
|
RUN: | FileCheck %s -check-prefix COFF32
|
|
RUN: yaml2obj %p/Inputs/COFF/x86-64.yaml | llvm-nm -a -S - \
|
|
RUN: | FileCheck %s -check-prefix COFF64
|
|
RUN: llvm-nm %p/Inputs/trivial-object-test.elf-i386 \
|
|
RUN: | FileCheck %s -check-prefix ELF
|
|
RUN: llvm-nm %p/Inputs/trivial-object-test.elf-i386 -S \
|
|
RUN: | FileCheck %s -check-prefix ELF-SIZE
|
|
RUN: llvm-nm -o %p/Inputs/trivial-object-test.elf-i386 \
|
|
RUN: | FileCheck %s -check-prefix ELF-o
|
|
RUN: llvm-nm -u %p/Inputs/trivial-object-test.elf-i386 \
|
|
RUN: | FileCheck %s -check-prefix ELF-u
|
|
RUN: llvm-nm %p/Inputs/trivial-object-test.elf-x86-64 \
|
|
RUN: | FileCheck %s -check-prefix ELF64
|
|
RUN: llvm-nm %p/Inputs/weak.elf-x86-64 \
|
|
RUN: | FileCheck %s -check-prefix WEAK-ELF64
|
|
RUN: llvm-nm %p/Inputs/absolute.elf-x86-64 \
|
|
RUN: | FileCheck %s -check-prefix ABSOLUTE-ELF64
|
|
RUN: llvm-nm %p/Inputs/trivial-object-test.macho-i386 \
|
|
RUN: | FileCheck %s -check-prefix macho
|
|
RUN: llvm-nm -U %p/Inputs/trivial-object-test.macho-i386 \
|
|
RUN: | FileCheck %s -check-prefix macho-U
|
|
RUN: llvm-nm %p/Inputs/trivial-object-test.macho-x86-64 \
|
|
RUN: | FileCheck %s -check-prefix macho64
|
|
RUN: llvm-nm %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
RUN: | FileCheck %s -check-prefix macho-tdb
|
|
RUN: llvm-nm -j %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
RUN: | FileCheck %s -check-prefix macho-j
|
|
RUN: llvm-nm -r %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
RUN: | FileCheck %s -check-prefix macho-r
|
|
RUN: llvm-nm %p/Inputs/macho-text-data-bss.macho-x86_64 -s __DATA __data \
|
|
RUN: | FileCheck %s -check-prefix macho-s
|
|
RUN: llvm-nm -x %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
RUN: | FileCheck %s -check-prefix macho-x
|
|
RUN: llvm-nm -o %p/Inputs/macho-text-data-bss.macho-x86_64 \
|
|
RUN: | FileCheck %s -check-prefix macho-o
|
|
RUN: llvm-nm -p -a %p/Inputs/macho-hello-g.macho-x86_64 \
|
|
RUN: | FileCheck %s -check-prefix macho-pa
|
|
RUN: llvm-nm -u %p/Inputs/macho-hello-g.macho-x86_64 \
|
|
RUN: | FileCheck %s -check-prefix macho-u
|
|
RUN: llvm-nm -S -a %p/Inputs/common.coff-i386 \
|
|
RUN: | FileCheck %s -check-prefix COFF-COMMON
|
|
RUN: llvm-nm %p/Inputs/relocatable-with-section-address.elf-x86-64 \
|
|
RUN: | FileCheck %s -check-prefix ELF-SEC-ADDR64
|
|
RUN: llvm-nm %p/Inputs/thumb-symbols.elf.arm \
|
|
RUN: | FileCheck %s -check-prefix ELF-THUMB
|
|
RUN: mkdir -p %t
|
|
RUN: cd %t
|
|
RUN: cp %p/Inputs/trivial-object-test.macho-i386 a.out
|
|
RUN: llvm-nm | FileCheck %s -check-prefix A-OUT
|
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
|
ELF-NOT: U
|
|
ELF: U SomeOtherFunction
|
|
ELF: 00000000 T main
|
|
ELF: U puts
|
|
|
|
ELF-SIZE: U SomeOtherFunction
|
|
ELF-SIZE-NEXT: 00000000 00000024 T main
|
|
ELF-SIZE-NEXT: U puts
|
|
|
|
ELF-o: {{.*}}/trivial-object-test.elf-i386: U SomeOtherFunction
|
|
ELF-o: {{.*}}/trivial-object-test.elf-i386: 00000000 T main
|
|
ELF-o: {{.*}}/trivial-object-test.elf-i386: U puts
|
|
|
|
ELF-u: U SomeOtherFunction
|
|
ELF-u: U puts
|
|
|
|
ELF64: U SomeOtherFunction
|
|
ELF64: 0000000000000000 T main
|
|
ELF64: U puts
|
|
|
|
WEAK-ELF64: w f1
|
|
WEAK-ELF64: 0000000000000000 W f2
|
|
WEAK-ELF64: v x1
|
|
WEAK-ELF64: 0000000000000000 V x2
|
|
|
|
ABSOLUTE-ELF64: 0000000000000123 a a1
|
|
ABSOLUTE-ELF64: 0000000000000123 A a2
|
|
|
|
macho: U _SomeOtherFunction
|
|
macho: 00000000 T _main
|
|
macho: U _puts
|
|
|
|
macho-U-NOT: U _SomeOtherFunction
|
|
macho-U: 00000000 T _main
|
|
macho-U-NOT: U _puts
|
|
|
|
macho64: 0000000000000028 s L_.str
|
|
macho64: U _SomeOtherFunction
|
|
macho64: 0000000000000000 T _main
|
|
macho64: U _puts
|
|
|
|
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
|
|
|
|
macho-j: EH_frame0
|
|
macho-j: _b
|
|
macho-j: _d
|
|
macho-j: _t
|
|
macho-j: _t.eh
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
macho-u: _printf
|
|
macho-u: dyld_stub_binder
|
|
|
|
Test that nm uses addresses even with ELF .o files.
|
|
ELF-SEC-ADDR64: 0000000000000058 D a
|
|
ELF-SEC-ADDR64-NEXT: 000000000000005c D b
|
|
ELF-SEC-ADDR64-NEXT: 0000000000000040 T f
|
|
ELF-SEC-ADDR64-NEXT: 0000000000000050 T g
|
|
ELF-SEC-ADDR64-NEXT: 0000000000000060 D p
|
|
|
|
|
|
Test that we drop the thumb bit only from function addresses.
|
|
ELF-THUMB: 00000000 t f
|
|
ELF-THUMB: 00000003 t g
|
|
|
|
A-OUT: U _SomeOtherFunction
|
|
A-OUT: 00000000 T _main
|
|
A-OUT: U _puts
|