brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.1 KiB · e348e59 Raw
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