brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · 287fa51 Raw
194 lines · plain
1## ELF section symbols use the corresponding section names when printing2## unnamed symbols. This test verifies this and also that appropriate things3## are printed if the section is somehow invalid.4 5# RUN: yaml2obj %s -o %t16# RUN: llvm-readobj %t1 --symbols --relocations 2>&1 | \7# RUN:   FileCheck %s -DFILE=%t1 --check-prefix=LLVM1 --implicit-check-not="warning:"8# RUN: llvm-readelf %t1 --symbols --relocations 2>&1 | \9# RUN:   FileCheck %s -DFILE=%t1 --check-prefix=GNU1 --implicit-check-not="warning:"10# RUN: llvm-readelf %t1 --symbols -X 2>&1 | \11# RUN:   FileCheck %s -DFILE=%t1 --check-prefix=GNUX1 --implicit-check-not="warning:"12 13# LLVM1:      Relocations [14# LLVM1-NEXT:   Section (5) .rela.foo {15# LLVM1-NEXT:     0x1 R_X86_64_NONE .foo 0x016# LLVM1-NEXT:     0x2 R_X86_64_NONE symbol1 0x017# LLVM1-NEXT: warning: '[[FILE]]': invalid section index: 6718# LLVM1-NEXT:     0x3 R_X86_64_NONE <section 67> 0x019# LLVM1-NEXT:     0x4 R_X86_64_NONE symbol2 0x020# LLVM1-NEXT:     0x5 R_X86_64_NONE .bar 0x021# LLVM1-NEXT:     0x6 R_X86_64_NONE symbol3 0x022# LLVM1-NEXT: warning: '[[FILE]]': invalid section index: 6623# LLVM1-NEXT:     0x7 R_X86_64_NONE <section 66> 0x024# LLVM1-NEXT:     0x8 R_X86_64_NONE symbol4 0x025# LLVM1-NEXT:   }26# LLVM1-NEXT: ]27 28# LLVM1: Name: (0)29# LLVM1: Name: .foo (0)30# LLVM1: Name: symbol1 (25)31# LLVM1: Name: <section 67> (0)32# LLVM1: Name: symbol2 (17)33# LLVM1: Name: .bar (0)34# LLVM1: Name: symbol3 (9)35# LLVM1: Name: <section 66> (0)36# LLVM1: Name: symbol4 (1)37# LLVM1: warning: '[[FILE]]': a section [index 3] has an invalid sh_name (0xffff) offset which goes past the end of the section name string table38# LLVM1: Name: <section 3> (0)39 40# GNU1:      Relocation section '.rela.foo' at offset {{.*}} contains 8 entries:41# GNU1-NEXT:  Offset     Info    Type         Sym. Value  Symbol's Name + Addend42# GNU1-NEXT: 00000001  00000100 R_X86_64_NONE   00000000   .foo + 043# GNU1-NEXT: 00000002  00000200 R_X86_64_NONE   00000000   symbol1 + 044# GNU1-NEXT: warning: '[[FILE]]': invalid section index: 6745# GNU1-NEXT: 00000003  00000300 R_X86_64_NONE   00000000   <section 67> + 046# GNU1-NEXT: 00000004  00000400 R_X86_64_NONE   00000000   symbol2 + 047# GNU1-NEXT: 00000005  00000500 R_X86_64_NONE   00000000   .bar + 048# GNU1-NEXT: 00000006  00000600 R_X86_64_NONE   00000000   symbol3 + 049# GNU1-NEXT: warning: '[[FILE]]': invalid section index: 6650# GNU1-NEXT: 00000007  00000700 R_X86_64_NONE   00000000   <section 66> + 051# GNU1-NEXT: 00000008  00000800 R_X86_64_NONE   00000000   symbol4 + 052 53# GNU1:      Symbol table '.symtab' contains 10 entries:54# GNU1-NEXT:    Num: {{.*}} Type    {{.*}} Ndx Name55# GNU1-NEXT:      0: {{.*}} NOTYPE  {{.*}} UND {{$}}56# GNU1-NEXT:      1: {{.*}} SECTION {{.*}}  1 .foo57# GNU1-NEXT:      2: {{.*}} SECTION {{.*}}  1 symbol158# GNU1-NEXT:      3: {{.*}} SECTION {{.*}} 67 <section 67>59# GNU1-NEXT:      4: {{.*}} SECTION {{.*}} 67 symbol260# GNU1-NEXT:      5: {{.*}} SECTION {{.*}}  2 .bar61# GNU1-NEXT:      6: {{.*}} SECTION {{.*}}  2 symbol362# GNU1-NEXT:      7: {{.*}} SECTION {{.*}} 66 <section 66>63# GNU1-NEXT:      8: {{.*}} SECTION {{.*}} 66 symbol464# GNU1-NEXT: warning: '[[FILE]]': a section [index 3] has an invalid sh_name (0xffff) offset which goes past the end of the section name string table65# GNU1-NEXT:      9: {{.*}} SECTION {{.*}}  3 <section 3>66 67# GNUX1:      Symbol table '.symtab' contains 10 entries:68# GNUX1-NEXT:    Num: {{.*}} Type    {{.*}} Ndx(SecName) Name69# GNUX1-NEXT:      0: {{.*}} NOTYPE  {{.*}} UND {{$}}70# GNUX1-NEXT:      1: {{.*}} SECTION {{.*}}   1 (.foo)    .foo71# GNUX1-NEXT:      2: {{.*}} SECTION {{.*}}   1 (.foo)     symbol172# GNUX1-NEXT: warning: '[[FILE]]': invalid section index: 6773# GNUX1-NEXT:      3: {{.*}} SECTION {{.*}}  67            <section 67>74# GNUX1-NEXT:      4: {{.*}} SECTION {{.*}}  67            symbol275# GNUX1-NEXT:      5: {{.*}} SECTION {{.*}}   2 (.bar)     .bar76# GNUX1-NEXT:      6: {{.*}} SECTION {{.*}}   2 (.bar)     symbol377# GNUX1-NEXT: warning: '[[FILE]]': invalid section index: 6678# GNUX1-NEXT:      7: {{.*}} SECTION {{.*}}  66            <section 66>79# GNUX1-NEXT:      8: {{.*}} SECTION {{.*}}  66            symbol480# GNUX1-NEXT: warning: '[[FILE]]': a section [index 3] has an invalid sh_name (0xffff) offset which goes past the end of the section name string table81# GNUX1-NEXT:      9: {{.*}} SECTION {{.*}}   3            <section 3>82 83--- !ELF84FileHeader:85  Class:   ELFCLASS3286  Data:    ELFDATA2LSB87  Type:    ET_REL88  Machine: EM_X86_6489Sections:90  - Name: .foo91    Type: SHT_PROGBITS92  - Name: .bar93    Type: SHT_PROGBITS94  - Name:   .invalid95    Type:   SHT_PROGBITS96    ShName: 0xffff97  - Name: .symtab_shndx98    Type: SHT_SYMTAB_SHNDX99    Link: .symtab100    Entries: [ 0, 0, 0, 0, 0, 2, 2, 0x42, 0x42, 0 ]101  - Name: .rela.foo102    Type: SHT_RELA103    Link: .symtab104    Info: .foo105    Relocations:106      - Offset: 0x1107        Symbol: 1108        Type:   R_X86_64_NONE109      - Offset: 0x2110        Symbol: 2111        Type:   R_X86_64_NONE112      - Offset: 0x3113        Symbol: 3114        Type:   R_X86_64_NONE115      - Offset: 0x4116        Symbol: 4117        Type:   R_X86_64_NONE118      - Offset: 0x5119        Symbol: 5120        Type:   R_X86_64_NONE121      - Offset: 0x6122        Symbol: 6123        Type:   R_X86_64_NONE124      - Offset: 0x7125        Symbol: 7126        Type:   R_X86_64_NONE127      - Offset: 0x8128        Symbol: 8129        Type:   R_X86_64_NONE130Symbols:131## Case 1: a valid unnamed section symbol.132  - Name: ""133    Section: .foo134    Type: STT_SECTION135## Case 2: a valid named section symbol.136  - Name: "symbol1"137    Section: .foo138    Type: STT_SECTION139## Case 3: an unnamed section symbol with invalid index.140  - Name: ""141    Index: 0x43142    Type: STT_SECTION143## Case 4: a named section symbol with invalid index.144  - Name: "symbol2"145    Index: 0x43146    Type: STT_SECTION147## Case 5: a valid unnamed section symbol via SHT_SYMTAB_SHNDX.148  - Name: ""149    Index: SHN_XINDEX150    Type: STT_SECTION151## Case 6: a valid named section symbol via SHT_SYMTAB_SHNDX.152  - Name: "symbol3"153    Index: SHN_XINDEX154    Type: STT_SECTION155## Case 7: a unnamed section symbol via SHT_SYMTAB_SHNDX with invalid index.156  - Name: ""157    Index: SHN_XINDEX158    Type: STT_SECTION159## Case 8: a named section symbol via SHT_SYMTAB_SHNDX with invalid index.160  - Name: "symbol4"161    Index: SHN_XINDEX162    Type: STT_SECTION163## Case 9: a unnamed section symbol with invalid name.164  - Name: ""165    Index: 3166    Type: STT_SECTION167 168# RUN: yaml2obj %s --docnum=2 -o %t2169# RUN: llvm-readobj %t2 --symbols 2> %t.llvm.err2 | FileCheck %s --check-prefix=LLVM2170# RUN: FileCheck %s --input-file %t.llvm.err2 --check-prefix=WARN2 --implicit-check-not=warning171# RUN: llvm-readelf %t2 --symbols 2> %t.gnu.err2 | FileCheck %s --check-prefix=GNU2172# RUN: FileCheck %s --input-file %t.gnu.err2 --check-prefix=WARN2 --implicit-check-not=warning173 174# LLVM2: Name: (0)175# LLVM2: Name: <?> (0)176 177# GNU2:      Symbol table '.symtab' contains 2 entries:178# GNU2-NEXT:    Num: {{.*}} Type    {{.*}} Ndx Name179# GNU2-NEXT:      0: {{.*}} NOTYPE  {{.*}} UND {{$}}180# GNU2-NEXT:      1: {{.*}} SECTION {{.*}} RSV[0xffff] <?>181 182# WARN2: warning: '{{.*}}.tmp2': found an extended symbol index (1), but unable to locate the extended symbol index table183 184--- !ELF185FileHeader:186  Class: ELFCLASS32187  Data:  ELFDATA2LSB188  Type:  ET_REL189Symbols:190  # Section symbol via SHT_SYMTAB_SHNDX when SHT_SYMTAB_SHNDX is missing.191  - Name: ""192    Index: SHN_XINDEX193    Type: STT_SECTION194