1## Test that llvm-objdump can dump dynamic symbols. 2# RUN: yaml2obj --docnum=1 %s -o %t1 3# RUN: llvm-objdump --dynamic-syms %t1 | \ 4# RUN: FileCheck %s --match-full-lines --strict-whitespace --check-prefix=DYNSYM 5# RUN: llvm-objdump -T %t1 | \ 6# RUN: FileCheck %s --match-full-lines --strict-whitespace --check-prefix=DYNSYM 7 8# DYNSYM:{{.*}}file format elf64-x86-64 9# DYNSYM-EMPTY: 10# DYNSYM-NEXT:DYNAMIC SYMBOL TABLE: 11# DYNSYM-NEXT:0000000000000000 l DO .data 0000000000000000 localsym 12# DYNSYM-NEXT:0000000000000000 g DO .data 0000000000000000 globalsym 13# DYNSYM-NEXT:0000000000000000 u DO .data 0000000000000000 uniqueglobalsym 14# DYNSYM-NEXT:0000000000000000 w DO .data 0000000000000000 weaksym 15# DYNSYM-NEXT:0000000000000000 g Df .data 0000000000000000 filesym 16# DYNSYM-NEXT:0000000000000000 g DF .data 0000000000000000 funcsym 17# DYNSYM-EMPTY: 18 19--- !ELF 20FileHeader: 21 Class: ELFCLASS64 22 Data: ELFDATA2LSB 23 Type: ET_DYN 24 Machine: EM_X86_64 25Sections: 26 - Name: .data 27 Type: SHT_PROGBITS 28 Flags: [ SHF_ALLOC, SHF_WRITE ] 29DynamicSymbols: 30 - Name: localsym 31 Type: STT_OBJECT 32 Section: .data 33 Binding: STB_LOCAL 34 - Name: globalsym 35 Type: STT_OBJECT 36 Section: .data 37 Binding: STB_GLOBAL 38 - Name: uniqueglobalsym 39 Type: STT_OBJECT 40 Section: .data 41 Binding: STB_GNU_UNIQUE 42 - Name: weaksym 43 Type: STT_OBJECT 44 Section: .data 45 Binding: STB_WEAK 46 - Name: filesym 47 Type: STT_FILE 48 Section: .data 49 Binding: STB_GLOBAL 50 - Name: funcsym 51 Type: STT_FUNC 52 Section: .data 53 Binding: STB_GLOBAL 54 55## Test dumping ELF files with no .dynsym section. 56# RUN: yaml2obj --docnum=2 %s -o %t2 57# RUN: llvm-objdump --dynamic-syms %t2 | \ 58# RUN: FileCheck %s --match-full-lines --strict-whitespace --check-prefix=NODYNSYM 59# RUN: llvm-objdump -T %t2 | \ 60# RUN: FileCheck %s --match-full-lines --strict-whitespace --check-prefix=NODYNSYM 61 62# NODYNSYM:DYNAMIC SYMBOL TABLE: 63# NODYNSYM-EMPTY: 64 65--- !ELF 66FileHeader: 67 Class: ELFCLASS64 68 Data: ELFDATA2LSB 69 Type: ET_DYN 70 Machine: EM_X86_64 71 72## Test dumping ELF files with logically empty .dynsym section (only has a 0-index NULL symbol). 73# RUN: yaml2obj --docnum=3 %s -o %t3 74# RUN: llvm-objdump --dynamic-syms %t3 | \ 75# RUN: FileCheck %s --match-full-lines --strict-whitespace --check-prefix=ONLY-NULL 76# RUN: llvm-objdump -T %t3 | \ 77# RUN: FileCheck %s --match-full-lines --strict-whitespace --check-prefix=ONLY-NULL 78 79# ONLY-NULL:DYNAMIC SYMBOL TABLE: 80# ONLY-NULL-EMPTY: 81 82--- !ELF 83FileHeader: 84 Class: ELFCLASS64 85 Data: ELFDATA2LSB 86 Type: ET_DYN 87 Machine: EM_X86_64 88DynamicSymbols: [] 89 90## Test dumping ELF files with truly empty .dynsym section (size of .dynsym section is 0). 91# RUN: yaml2obj --docnum=4 %s -o %t4 92# RUN: llvm-objdump --dynamic-syms %t4 | \ 93# RUN: FileCheck %s --match-full-lines --strict-whitespace --check-prefix=EMPTY 94# RUN: llvm-objdump -T %t4 | \ 95# RUN: FileCheck %s --match-full-lines --strict-whitespace --check-prefix=EMPTY 96 97# EMPTY:DYNAMIC SYMBOL TABLE: 98# EMPTY-EMPTY: 99 100--- !ELF 101FileHeader: 102 Class: ELFCLASS64 103 Data: ELFDATA2LSB 104 Type: ET_DYN 105 Machine: EM_X86_64 106Sections: 107 - Name: .dynsym 108 Type: SHT_DYNSYM 109 Size: 0 110