brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.8 KiB · 11a0a2a Raw
159 lines · yaml
1## Check that obj2yaml dumps SHT_STRTAB/SHT_SYMTAB/SHT_DYNSYM sections2## when they are allocatable.3 4## In the following test we check the normal case: when .dynsym (SHT_DYNSYM)5## and .dynstr (SHT_STRTAB) are allocatable sections and .symtab (SHT_SYMTAB),6## .strtab (SHT_STRTAB) and .shstrtab (SHT_STRTAB) are not.7## Check we explicitly declare allocatable sections.8 9# RUN: yaml2obj %s -o %t1.so -D FLAG1=SHF_ALLOC -D FLAG2=""10# RUN: llvm-readelf -S %t1.so | FileCheck %s --check-prefixes=RE,RE-111# RUN: obj2yaml %t1.so | FileCheck %s --check-prefix=OUTPUT12 13## Check the information about sections using an independent tool.14 15# RE:        Section Headers:16# RE-NEXT:   [Nr] Name      Type     Address          Off    Size   ES Flg Lk Inf Al17# RE-NEXT:   [ 0]           NULL     0000000000000000 000000 000000 00     0   0  018# RE-NEXT:   [ 1] .foo.1    PROGBITS 0000000000000000 000040 000000 00     0   0  019# RE-1-NEXT: [ 2] .dynsym   DYNSYM   0000000000001000 000040 000030 18   A 4   2  020# RE-2-NEXT: [ 2] .dynsym   DYNSYM   0000000000001000 000040 000030 18     4   2  021# RE-NEXT:   [ 3] .foo.2    PROGBITS 0000000000000000 000070 000000 00     0   0  022# RE-1-NEXT: [ 4] .dynstr   STRTAB   0000000000002000 000070 000005 00   A 0   0  023# RE-2-NEXT: [ 4] .dynstr   STRTAB   0000000000002000 000070 000005 00     0   0  024# RE-NEXT:   [ 5] .foo.3    PROGBITS 0000000000000000 000075 000000 00     0   0  025# RE-1-NEXT: [ 6] .symtab   SYMTAB   0000000000003000 000075 000030 18     8   2  026# RE-2-NEXT: [ 6] .symtab   SYMTAB   0000000000003000 000075 000030 18   A 8   2  027# RE-NEXT:   [ 7] .foo.4    PROGBITS 0000000000000000 0000a5 000000 00     0   0  028# RE-1-NEXT: [ 8] .strtab   STRTAB   0000000000004000 0000a5 000005 00     0   0  029# RE-2-NEXT: [ 8] .strtab   STRTAB   0000000000004000 0000a5 000005 00   A 0   0  030# RE-NEXT:   [ 9] .foo.5    PROGBITS 0000000000000000 0000aa 000000 00     0   0  031# RE-1-NEXT: [10] .shstrtab STRTAB   0000000000005000 0000aa 000055 00     0   0  032# RE-2-NEXT: [10] .shstrtab STRTAB   0000000000005000 0000aa 000055 00   A 0   0  033# RE-NEXT:   [11] .foo.6    PROGBITS 0000000000000000 0000ff 000000 00     0   0  034 35# OUTPUT:      --- !ELF36# OUTPUT-NEXT: FileHeader:37# OUTPUT-NEXT:   Class: ELFCLASS6438# OUTPUT-NEXT:   Data:  ELFDATA2LSB39# OUTPUT-NEXT:   Type:  ET_DYN40# OUTPUT-NEXT: Sections:41# OUTPUT-NEXT:   - Name: .foo.142# OUTPUT-NEXT:     Type: SHT_PROGBITS43# OUTPUT-NEXT:   - Name:    .dynsym44# OUTPUT-NEXT:     Type:    SHT_DYNSYM45# OUTPUT-NEXT:     Flags:   [ SHF_ALLOC ]46# OUTPUT-NEXT:     Address: 0x100047# OUTPUT-NEXT:     Link:    .dynstr48# OUTPUT-NEXT:   - Name: .foo.249# OUTPUT-NEXT:     Type: SHT_PROGBITS50# OUTPUT-NEXT:   - Name:    .dynstr51# OUTPUT-NEXT:     Type:    SHT_STRTAB52# OUTPUT-NEXT:     Flags:   [ SHF_ALLOC ]53# OUTPUT-NEXT:     Address: 0x200054# OUTPUT-NEXT:   - Name: .foo.355# OUTPUT-NEXT:     Type: SHT_PROGBITS56# OUTPUT-NEXT:   - Name: .foo.457# OUTPUT-NEXT:     Type: SHT_PROGBITS58# OUTPUT-NEXT:   - Name: .foo.559# OUTPUT-NEXT:     Type: SHT_PROGBITS60# OUTPUT-NEXT:   - Name: .foo.661# OUTPUT-NEXT:     Type: SHT_PROGBITS62# OUTPUT-NEXT: Symbols:63# OUTPUT-NEXT:   - Name: foo64# OUTPUT-NEXT: DynamicSymbols:65# OUTPUT-NEXT:   - Name: bar66# OUTPUT-NEXT: ...67 68--- !ELF69FileHeader:70  Class: ELFCLASS6471  Data:  ELFDATA2LSB72  Type:  ET_DYN73Sections:74  - Name: .foo.175    Type: SHT_PROGBITS76  - Name:    .dynsym77    Type:    SHT_DYNSYM78    Address: 0x100079    Flags: [ [[FLAG1]] ]80  - Name: .foo.281    Type: SHT_PROGBITS82  - Name:    .dynstr83    Type:    SHT_STRTAB84    Address: 0x200085    Flags: [ [[FLAG1]] ]86  - Name: .foo.387    Type: SHT_PROGBITS88  - Name:    .symtab89    Type:    SHT_SYMTAB90    Address: 0x300091    Flags: [ [[FLAG2]] ]92  - Name: .foo.493    Type: SHT_PROGBITS94  - Name:    .strtab95    Type:    SHT_STRTAB96    Address: 0x400097    Flags: [ [[FLAG2]] ]98  - Name: .foo.599    Type: SHT_PROGBITS100  - Name:    .shstrtab101    Type:    SHT_STRTAB102    Address: 0x5000103    Flags: [ [[FLAG2]] ]104  - Name: .foo.6105    Type: SHT_PROGBITS106Symbols:107  - Name: foo108DynamicSymbols:109  - Name: bar110 111## Now test the abnormal case: when .symtab (SHT_SYMTAB),112## .strtab (SHT_STRTAB) and .shstrtab (SHT_STRTAB) are113## allocatable sections, but .dynsym (SHT_DYNSYM) and114## .dynstr (SHT_STRTAB) are not.115## Check that only allocatable versions are explicitly declared.116 117# RUN: yaml2obj %s -o %t2.so -D FLAG1="" -D FLAG2=SHF_ALLOC118# RUN: llvm-readelf -S %t2.so | FileCheck %s --check-prefixes=RE,RE-2119# RUN: obj2yaml %t2.so | FileCheck %s --check-prefix=OUTPUT2120 121## Check we explicitly declare only allocatable122## SHT_STRTAB/SHT_SYMTAB/SHT_DYNSYM sections.123# OUTPUT2:      --- !ELF124# OUTPUT2-NEXT: FileHeader:125# OUTPUT2-NEXT:   Class: ELFCLASS64126# OUTPUT2-NEXT:   Data:  ELFDATA2LSB127# OUTPUT2-NEXT:   Type:  ET_DYN128# OUTPUT2-NEXT: Sections:129# OUTPUT2-NEXT:   - Name: .foo.1130# OUTPUT2-NEXT:     Type: SHT_PROGBITS131# OUTPUT2-NEXT:   - Name: .foo.2132# OUTPUT2-NEXT:     Type: SHT_PROGBITS133# OUTPUT2-NEXT:   - Name: .foo.3134# OUTPUT2-NEXT:     Type: SHT_PROGBITS135# OUTPUT2-NEXT:   - Name:    .symtab136# OUTPUT2-NEXT:     Type:    SHT_SYMTAB137# OUTPUT2-NEXT:     Flags:   [ SHF_ALLOC ]138# OUTPUT2-NEXT:     Address: 0x3000139# OUTPUT2-NEXT:     Link:    .strtab140# OUTPUT2-NEXT:   - Name: .foo.4141# OUTPUT2-NEXT:     Type: SHT_PROGBITS142# OUTPUT2-NEXT:   - Name:    .strtab143# OUTPUT2-NEXT:     Type:    SHT_STRTAB144# OUTPUT2-NEXT:     Flags:   [ SHF_ALLOC ]145# OUTPUT2-NEXT:     Address: 0x4000146# OUTPUT2-NEXT:   - Name: .foo.5147# OUTPUT2-NEXT:     Type: SHT_PROGBITS148# OUTPUT2-NEXT:   - Name:    .shstrtab149# OUTPUT2-NEXT:     Type:    SHT_STRTAB150# OUTPUT2-NEXT:     Flags:   [ SHF_ALLOC ]151# OUTPUT2-NEXT:     Address: 0x5000152# OUTPUT2-NEXT:   - Name:    .foo.6153# OUTPUT2-NEXT:     Type:    SHT_PROGBITS154# OUTPUT2-NEXT: Symbols:155# OUTPUT2-NEXT:   - Name: foo156# OUTPUT2-NEXT: DynamicSymbols:157# OUTPUT2-NEXT:   - Name: bar158# OUTPUT2-NEXT: ...159