forked from OSchip/llvm-project
113 lines
4.8 KiB
Plaintext
113 lines
4.8 KiB
Plaintext
# RUN: llvm-readelf --hash-symbols %p/Inputs/dynamic-table-exe.x86 \
|
|
# RUN: | FileCheck %s --check-prefix HASH
|
|
|
|
# HASH: Symbol table of .hash for image:
|
|
# HASH-NEXT: Num Buc: Value Size Type Bind Vis Ndx Name
|
|
# HASH-NEXT: 9 0: 00000000 0 FUNC GLOBAL DEFAULT UND __gxx_personality_v0@CXXABI_1.3
|
|
# HASH-NEXT: 13 0: 00001b64 0 NOTYPE GLOBAL DEFAULT ABS _edata{{$}}
|
|
# HASH-NEXT: 7 0: 00000000 0 FUNC GLOBAL DEFAULT UND _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4
|
|
# HASH-NEXT: 2 0: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses{{$}}
|
|
# HASH-NEXT: 1 0: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__{{$}}
|
|
# HASH-NEXT: 16 1: 00000850 81 FUNC GLOBAL DEFAULT 14 main{{$}}
|
|
# HASH-NEXT: 10 1: 00000000 0 FUNC GLOBAL DEFAULT UND _Unwind_Resume@GCC_3.0
|
|
# HASH-NEXT: 8 1: 00000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.0
|
|
# HASH-NEXT: 12 1: 00001b68 0 NOTYPE GLOBAL DEFAULT ABS _end{{$}}
|
|
# HASH-NEXT: 6 1: 00000000 0 FUNC GLOBAL DEFAULT UND _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4
|
|
# HASH-NEXT: 5 1: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable{{$}}
|
|
# HASH-NEXT: 4 1: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable{{$}}
|
|
# HASH-NEXT: 3 1: 00000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.0
|
|
# HASH-NEXT: 11 2: 00000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.1.3
|
|
# HASH-NEXT: 15 2: 00001b64 0 NOTYPE GLOBAL DEFAULT ABS __bss_start{{$}}
|
|
# HASH-NEXT: 14 2: 0000093c 4 OBJECT GLOBAL DEFAULT 16 _IO_stdin_used{{$}}
|
|
# HASH: Symbol table of .gnu.hash for image:
|
|
# HASH-NEXT: Num Buc: Value Size Type Bind Vis Ndx Name
|
|
# HASH-NEXT: 12 0: 00001b68 0 NOTYPE GLOBAL DEFAULT ABS _end{{$}}
|
|
# HASH-NEXT: 13 0: 00001b64 0 NOTYPE GLOBAL DEFAULT ABS _edata{{$}}
|
|
# HASH-NEXT: 14 1: 0000093c 4 OBJECT GLOBAL DEFAULT 16 _IO_stdin_used{{$}}
|
|
# HASH-NEXT: 15 1: 00001b64 0 NOTYPE GLOBAL DEFAULT ABS __bss_start{{$}}
|
|
# HASH-NEXT: 16 1: 00000850 81 FUNC GLOBAL DEFAULT 14 main{{$}}
|
|
|
|
## Show that if there are no hash sections, we do not print anything.
|
|
# RUN: yaml2obj %s -o %t.o
|
|
# RUN: llvm-readelf --hash-symbols %t.o \
|
|
# RUN: | FileCheck %s --check-prefix NO-HASH --allow-empty
|
|
|
|
# NO-HASH-NOT: {{.}}
|
|
|
|
## Sanity check that we can still find the dynamic symbols (i.e. the above test
|
|
## doesn't pass due to a mistake in the dynamic section).
|
|
# RUN: llvm-readelf --dyn-symbols %t.o | FileCheck %s --check-prefix DYNSYMS
|
|
|
|
# DYNSYMS: Symbol table '.dynsym' contains 2 entries:
|
|
|
|
!ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_DYN
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
## TODO: Replace the raw section contents with more meaningful dynamic
|
|
## tags/symbols/etc, once yaml2obj supports it.
|
|
## FIXME: yaml2obj does not currently allow custom addresses for .dynstr and
|
|
## .dynsym if DynamicSymbols are specified.
|
|
## See https://bugs.llvm.org/show_bug.cgi?id=40339
|
|
- Name: .dynstr
|
|
Type: SHT_STRTAB
|
|
Flags: [ SHF_ALLOC ]
|
|
AddressAlign: 0x100
|
|
EntSize: 0x1
|
|
## "\0_Z3fooi\0"
|
|
Content: "005f5a33666f6f6900"
|
|
- Name: .dynsym
|
|
Type: SHT_DYNSYM
|
|
Flags: [ SHF_ALLOC ]
|
|
Link: .dynstr
|
|
Address: 0x100
|
|
AddressAlign: 0x100
|
|
EntSize: 0x18
|
|
## Null symbol;
|
|
## st_name: 1; st_info: Global | Func; st_other: 0;
|
|
## st_shndx: .text.foo; st_value: 0x2000; st_size: 0
|
|
Content: "000000000000000000000000000000000000000000000000010000001200040000200000000000000000000000000000"
|
|
- Name: .dynamic
|
|
Type: SHT_DYNAMIC
|
|
Flags: [ SHF_ALLOC ]
|
|
Address: 0x0000000000001000
|
|
Link: .dynstr
|
|
AddressAlign: 0x0000000000001000
|
|
EntSize: 0x0000000000000010
|
|
Entries:
|
|
- Tag: DT_STRTAB
|
|
Value: 0x0000000000000000
|
|
- Tag: DT_STRSZ
|
|
Value: 0x0000000000000009
|
|
- Tag: DT_SYMTAB
|
|
Value: 0x0000000000000100
|
|
- Tag: DT_SYMENT
|
|
Value: 0x0000000000000018
|
|
- Tag: DT_NULL
|
|
Value: 0x0000000000000000
|
|
- Name: .text.foo
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ]
|
|
Size: 0x40
|
|
Address: 0x2000
|
|
AddressAlign: 0x2000
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
Flags: [ PF_R, PF_X ]
|
|
VAddr: 0x0
|
|
PAddr: 0x0
|
|
Sections:
|
|
- Section: .dynsym
|
|
- Section: .dynstr
|
|
- Section: .dynamic
|
|
- Section: .text.foo
|
|
- Type: PT_DYNAMIC
|
|
Flags: [ PF_R ]
|
|
VAddr: 0x1000
|
|
PAddr: 0x1000
|
|
Sections:
|
|
- Section: .dynamic
|