| ## Check the section header properties of ".dynsym", |
| ## ".dynstr", ".symtab", ".strtab", ".shstrtab". |
| ## These sections sections are usually added implicitly, |
| ## but here we add them explicitly in YAML and verify. |
| ## We check their order matches YAML and that file offset is |
| ## ascending. This is a natural default behavior. |
| |
| # RUN: yaml2obj --docnum=1 %s -o %t1 |
| # RUN: llvm-readelf -S %t1 | FileCheck %s |
| |
| # CHECK: Section Headers: |
| # CHECK-NEXT: [Nr] Name Type Address Off Size |
| # CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 |
| # CHECK-NEXT: [ 1] .dynstr STRTAB 0000000000000100 000040 000001 |
| # CHECK-NEXT: [ 2] .dynsym DYNSYM 0000000000000150 000041 000018 |
| # CHECK-NEXT: [ 3] .symtab SYMTAB 0000000000000000 000059 000018 |
| # CHECK-NEXT: [ 4] .strtab STRTAB 0000000000000000 000071 000001 |
| # CHECK-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 000072 000035 |
| # CHECK-NEXT: [ 6] .text.foo PROGBITS 0000000000000200 0000a7 000000 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Sections: |
| - Name: .dynstr |
| Type: SHT_STRTAB |
| Address: 0x100 |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| Address: 0x150 |
| - Name: .symtab |
| Type: SHT_SYMTAB |
| - Name: .strtab |
| Type: SHT_STRTAB |
| - Name: .shstrtab |
| Type: SHT_STRTAB |
| - Name: .text.foo |
| Type: SHT_PROGBITS |
| Address: 0x200 |
| |
| ## Check that yaml2obj creates empty .dynstr and .dynsym sections for |
| ## the case when no dynamic symbols were specified and Content wasn't set, |
| ## but the sections were explicitly listed. Check their VAs are correct. |
| |
| # RUN: yaml2obj --docnum=2 %s -o %t2 |
| # RUN: llvm-readelf -S %t2 | FileCheck %s --check-prefix=NODYNSYM |
| |
| # NODYNSYM: Section Headers: |
| # NODYNSYM-NEXT: [Nr] Name Type Address Off Size |
| # NODYNSYM-NEXT: [ 0] NULL 0000000000000000 000000 000000 |
| # NODYNSYM-NEXT: [ 1] .dynstr STRTAB 0000000000000100 000040 000001 |
| # NODYNSYM-NEXT: [ 2] .dynsym DYNSYM 0000000000000150 000041 000018 |
| # NODYNSYM-NEXT: [ 3] .symtab SYMTAB 0000000000000000 000059 000018 |
| # NODYNSYM-NEXT: [ 4] .strtab STRTAB 0000000000000000 000071 000001 |
| # NODYNSYM-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 000072 000035 |
| # NODYNSYM-NEXT: [ 6] .text.foo PROGBITS 0000000000000200 0000a7 000000 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Sections: |
| - Name: .dynstr |
| Type: SHT_STRTAB |
| Address: 0x100 |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| Address: 0x150 |
| - Name: .symtab |
| Type: SHT_SYMTAB |
| - Name: .strtab |
| Type: SHT_STRTAB |
| - Name: .shstrtab |
| Type: SHT_STRTAB |
| - Name: .text.foo |
| Type: SHT_PROGBITS |
| Address: 0x200 |
| |
| ## Check we don't add a symbol table when no "Symbols" key is specified. |
| |
| # RUN: yaml2obj --docnum=3 %s -o %t3 |
| # RUN: llvm-readelf -S %t3 | FileCheck /dev/null --implicit-check-not=.symtab |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| |
| ## Check we add a symbol table when "Symbols" key is specified. |
| |
| # RUN: yaml2obj --docnum=4 %s -o %t4 |
| # RUN: llvm-readelf -S %t4 | FileCheck %s --check-prefix=SYMTAB |
| |
| # SYMTAB: .symtab |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Symbols: [] |