238 lines · plain
1## Show that llvm-readelf + llvm-readobj demangle symbol names in symbol tables2## (including dynamic symbols), relocations (including dynamic relocations), and groups.3 4# RUN: yaml2obj %s -o %t.so5 6## Check LLVM output style.7# RUN: llvm-readobj --symbols --relocations --dyn-symbols --dyn-relocations \8# RUN: --section-groups --cg-profile --addrsig \9# RUN: --demangle %t.so > %t.llvm.long10# RUN: llvm-readobj --symbols --relocations --dyn-symbols --dyn-relocations \11# RUN: --section-groups --cg-profile --addrsig \12# RUN: -C %t.so > %t.llvm.short13# RUN: FileCheck %s --input-file %t.llvm.long --check-prefixes=LLVM-COMMON,LLVM-DEMANGLE14# RUN: diff %t.llvm.long %t.llvm.short15 16## Check that default is no demangling.17# RUN: llvm-readobj --symbols --relocations --dyn-symbols --dyn-relocations \18# RUN: --section-groups --cg-profile --addrsig \19# RUN: %t.so > %t.llvm.default20# RUN: llvm-readobj --symbols --relocations --dyn-symbols --dyn-relocations \21# RUN: --section-groups --cg-profile --addrsig \22# RUN: --no-demangle %t.so > %t.llvm.nodemangle23# RUN: FileCheck %s --input-file %t.llvm.default --check-prefixes=LLVM-COMMON,LLVM-MANGLED24# RUN: diff %t.llvm.default %t.llvm.nodemangle25 26# LLVM-COMMON: Relocations [27# LLVM-COMMON: Section {{.*}} .rela.text.foo {28# LLVM-DEMANGLE-NEXT: {{ }}foo(char){{ }}29# LLVM-MANGLED-NEXT: {{ }}_Z3fooc{{ }}30# LLVM-COMMON-NEXT: }31# LLVM-COMMON: ]32 33# LLVM-COMMON: Dynamic Relocations {34# LLVM-DEMANGLE-NEXT: {{ }}foo(int){{ }}35# LLVM-MANGLED-NEXT: {{ }}_Z3fooi{{ }}36# LLVM-COMMON-NEXT: }37 38# LLVM-COMMON: Symbols [39# LLVM-DEMANGLE: Name: foo(char){{ }}40# LLVM-DEMANGLE: Name: blah(float){{ }}41# LLVM-MANGLED: Name: _Z3fooc{{ }}42# LLVM-MANGLED: Name: _Z4blahf{{ }}43# LLVM-COMMON: ]44 45# LLVM-COMMON: DynamicSymbols [46# LLVM-DEMANGLE: Name: foo(int){{ }}47# LLVM-MANGLED: Name: _Z3fooi{{ }}48# LLVM-COMMON: ]49 50# LLVM-COMMON: Groups {51# LLVM-DEMANGLE: Signature: foo(char){{$}}52# LLVM-MANGLED: Signature: _Z3fooc{{$}}53# LLVM-COMMON: }54 55# LLVM-COMMON: CGProfile [56# LLVM-DEMANGLE: From: foo(char){{ }}57# LLVM-DEMANGLE: To: blah(float){{ }}58# LLVM-MANGLED: From: _Z3fooc{{ }}59# LLVM-MANGLED: To: _Z4blahf{{ }}60# LLVM-COMMON: ]61 62# LLVM-COMMON: Addrsig [63# LLVM-DEMANGLE-NEXT: Sym: foo(char){{ }}64# LLVM-DEMANGLE-NEXT: Sym: blah(float){{ }}65# LLVM-MANGLED-NEXT: Sym: _Z3fooc{{ }}66# LLVM-MANGLED-NEXT: Sym: _Z4blahf{{ }}67# LLVM-COMMON-NEXT: ]68 69## Check GNU output style.70# RUN: llvm-readelf --symbols --relocations --dyn-symbols --dyn-relocations \71# RUN: --section-groups --addrsig --demangle %t.so > %t.gnu.long72# RUN: llvm-readelf --symbols --relocations --dyn-symbols --dyn-relocations \73# RUN: --section-groups --addrsig -C %t.so > %t.gnu.short74# RUN: FileCheck %s --input-file %t.gnu.long --check-prefixes=GNU-COMMON,GNU-DEMANGLE75# RUN: diff %t.gnu.long %t.gnu.short76 77## Check that default is no demangling.78# RUN: llvm-readelf --symbols --relocations --dyn-symbols --dyn-relocations \79# RUN: --section-groups --addrsig %t.so > %t.gnu.default80# RUN: llvm-readelf --symbols --relocations --dyn-symbols --dyn-relocations \81# RUN: --section-groups --addrsig --no-demangle %t.so > %t.gnu.nodemangle82# RUN: FileCheck %s --input-file %t.gnu.default --check-prefixes=GNU-COMMON,GNU-MANGLED83# RUN: diff %t.gnu.default %t.gnu.nodemangle84 85# GNU-COMMON: Relocation section '.rela.text.foo' at offset {{.*}} contains 1 entries:86# GNU-COMMON-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend87# GNU-DEMANGLE-NEXT: foo(char){{ }}88# GNU-MANGLED-NEXT: _Z3fooc{{ }}89 90# GNU-COMMON: 'RELA' relocation section at offset {{.*}} contains 24 bytes:91# GNU-COMMON-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend92# GNU-DEMANGLE-NEXT: foo(int){{ }}93# GNU-MANGLED-NEXT: _Z3fooi{{ }}94 95# GNU-COMMON: Symbol table '.dynsym' contains 2 entries:96# GNU-COMMON-NEXT: Num: Value Size Type Bind Vis Ndx Name97# GNU-COMMON-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND98# GNU-DEMANGLE-NEXT: foo(int){{$}}99# GNU-MANGLED-NEXT: _Z3fooi{{$}}100 101# GNU-COMMON: Symbol table '.symtab' contains 3 entries:102# GNU-COMMON-NEXT: Num: Value Size Type Bind Vis Ndx Name103# GNU-COMMON-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND104# GNU-DEMANGLE-NEXT: foo(char){{$}}105# GNU-DEMANGLE-NEXT: blah(float){{$}}106# GNU-MANGLED-NEXT: _Z3fooc{{$}}107# GNU-MANGLED-NEXT: _Z4blahf{{$}}108 109# GNU-COMMON: COMDAT group section [{{.*}}] `.group'110# GNU-DEMANGLE-SAME: [foo(char)]111# GNU-MANGLED-SAME: [_Z3fooc]112 113# GNU-COMMON: Address-significant symbols section '.llvm_addrsig' contains 2 entries:114# GNU-COMMON: Num: Name115# GNU-DEMANGLE-NEXT: 1: foo(char)116# GNU-DEMANGLE-NEXT: 2: blah(float)117# GNU-MANGLED-NEXT: 1: _Z3fooc118# GNU-MANGLED-NEXT: 2: _Z4blahf119 120!ELF121FileHeader:122 Class: ELFCLASS64123 Data: ELFDATA2LSB124 Type: ET_DYN125 Machine: EM_X86_64126Sections:127 - Name: .dynstr128 Type: SHT_STRTAB129 Flags: [ SHF_ALLOC ]130 AddressAlign: 0x100131 EntSize: 0x1132 - Name: .dynsym133 Type: SHT_DYNSYM134 Flags: [ SHF_ALLOC ]135 Link: .dynstr136 Address: 0x100137 AddressAlign: 0x100138 EntSize: 0x18139 - Name: .rela.dyn140 Type: SHT_RELA141 Flags: [ SHF_ALLOC ]142 Link: .dynsym143 Info: .text.foo144 Address: 0x200145 AddressAlign: 0x100146 EntSize: 0x18147 Relocations:148 - Offset: 0x10149 Symbol: _Z3fooi150 Type: R_X86_64_PC32151 Addend: 0x4152 - Name: .dynamic153 Type: SHT_DYNAMIC154 Flags: [ SHF_ALLOC ]155 Address: 0x0000000000001000156 Link: .dynstr157 AddressAlign: 0x0000000000001000158 EntSize: 0x0000000000000010159 Entries:160 - Tag: DT_STRTAB161 Value: 0x0000000000000000162 - Tag: DT_STRSZ163 Value: 0x0000000000000009164 - Tag: DT_SYMTAB165 Value: 0x0000000000000100166 - Tag: DT_SYMENT167 Value: 0x0000000000000018168 - Tag: DT_RELA169 Value: 0x0000000000000200170 - Tag: DT_RELASZ171 Value: 0x0000000000000018172 - Tag: DT_RELAENT173 Value: 0x0000000000000018174 - Tag: DT_NULL175 Value: 0x0000000000000000176 - Name: .text.foo177 Type: SHT_PROGBITS178 Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ]179 Size: 0x40180 Address: 0x2000181 AddressAlign: 0x2000182 - Name: .group183 Type: SHT_GROUP184 Link: .symtab185 Info: _Z3fooc186 Members:187 - SectionOrType: GRP_COMDAT188 - SectionOrType: .text.foo189 - Name: .rela.text.foo190 Type: SHT_RELA191 Link: .symtab192 Info: .text.foo193 Relocations:194 - Offset: 0x10195 Symbol: _Z3fooc196 Type: R_X86_64_PC32197 - Name: .llvm.call-graph-profile198 Type: SHT_LLVM_CALL_GRAPH_PROFILE199 Link: .symtab200 EntSize: 8201 Content: "2000000000000000"202 - Name: .rel.llvm.call-graph-profile203 Type: SHT_REL204 Info: .llvm.call-graph-profile205 Relocations:206 - Symbol: 1207 Type: R_X86_64_NONE208 - Offset: 0x1209 Symbol: 2210 Type: R_X86_64_NONE211 - Name: .llvm_addrsig212 Type: SHT_LLVM_ADDRSIG213 Link: .symtab214 Content: "0102"215Symbols:216 - Name: _Z3fooc217 Type: STT_FUNC218 Section: .text.foo219 Binding: STB_GLOBAL220 - Name: _Z4blahf221 Type: STT_FUNC222 Section: .text.foo223 Binding: STB_GLOBAL224DynamicSymbols:225 - Name: _Z3fooi226 Binding: STB_GLOBAL227ProgramHeaders:228 - Type: PT_LOAD229 Flags: [ PF_R, PF_X ]230 VAddr: 0x0231 FirstSec: .dynstr232 LastSec: .text.foo233 - Type: PT_DYNAMIC234 Flags: [ PF_R ]235 VAddr: 0x1000236 FirstSec: .dynamic237 LastSec: .dynamic238