163f0f54cSFangrui Song## Check the section header properties of ".dynsym", 263f0f54cSFangrui Song## ".dynstr", ".symtab", ".strtab", ".shstrtab". 363f0f54cSFangrui Song## These sections sections are usually added implicitly, 463f0f54cSFangrui Song## but here we add them explicitly in YAML and verify. 563f0f54cSFangrui Song## We check their order matches YAML and that file offset is 663f0f54cSFangrui Song## ascending. This is a natural default behavior. 763f0f54cSFangrui Song 863f0f54cSFangrui Song# RUN: yaml2obj --docnum=1 %s -o %t1 963f0f54cSFangrui Song# RUN: llvm-readelf -S %t1 | FileCheck %s 1063f0f54cSFangrui Song 1163f0f54cSFangrui Song# CHECK: Section Headers: 1263f0f54cSFangrui Song# CHECK-NEXT: [Nr] Name Type Address Off Size 1363f0f54cSFangrui Song# CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 14*daff7b85SGeorgii Rymar# CHECK-NEXT: [ 1] .dynstr STRTAB 0000000000000100 000040 000001 15*daff7b85SGeorgii Rymar# CHECK-NEXT: [ 2] .dynsym DYNSYM 0000000000000150 000041 000018 16*daff7b85SGeorgii Rymar# CHECK-NEXT: [ 3] .symtab SYMTAB 0000000000000000 000059 000018 17*daff7b85SGeorgii Rymar# CHECK-NEXT: [ 4] .strtab STRTAB 0000000000000000 000071 000001 18*daff7b85SGeorgii Rymar# CHECK-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 000072 000035 19*daff7b85SGeorgii Rymar# CHECK-NEXT: [ 6] .text.foo PROGBITS 0000000000000200 0000a7 000000 2063f0f54cSFangrui Song 2163f0f54cSFangrui Song--- !ELF 2263f0f54cSFangrui SongFileHeader: 2363f0f54cSFangrui Song Class: ELFCLASS64 2463f0f54cSFangrui Song Data: ELFDATA2LSB 2563f0f54cSFangrui Song Type: ET_DYN 2663f0f54cSFangrui SongSections: 2763f0f54cSFangrui Song - Name: .dynstr 2863f0f54cSFangrui Song Type: SHT_STRTAB 2963f0f54cSFangrui Song Address: 0x100 3063f0f54cSFangrui Song - Name: .dynsym 3163f0f54cSFangrui Song Type: SHT_DYNSYM 3263f0f54cSFangrui Song Address: 0x150 3363f0f54cSFangrui Song - Name: .symtab 3463f0f54cSFangrui Song Type: SHT_SYMTAB 3563f0f54cSFangrui Song - Name: .strtab 3663f0f54cSFangrui Song Type: SHT_STRTAB 3763f0f54cSFangrui Song - Name: .shstrtab 3863f0f54cSFangrui Song Type: SHT_STRTAB 3963f0f54cSFangrui Song - Name: .text.foo 4063f0f54cSFangrui Song Type: SHT_PROGBITS 4163f0f54cSFangrui Song Address: 0x200 4263f0f54cSFangrui Song 4363f0f54cSFangrui Song## Check that yaml2obj creates empty .dynstr and .dynsym sections for 4463f0f54cSFangrui Song## the case when no dynamic symbols were specified and Content wasn't set, 4563f0f54cSFangrui Song## but the sections were explicitly listed. Check their VAs are correct. 4663f0f54cSFangrui Song 4763f0f54cSFangrui Song# RUN: yaml2obj --docnum=2 %s -o %t2 4863f0f54cSFangrui Song# RUN: llvm-readelf -S %t2 | FileCheck %s --check-prefix=NODYNSYM 4963f0f54cSFangrui Song 5063f0f54cSFangrui Song# NODYNSYM: Section Headers: 5163f0f54cSFangrui Song# NODYNSYM-NEXT: [Nr] Name Type Address Off Size 5263f0f54cSFangrui Song# NODYNSYM-NEXT: [ 0] NULL 0000000000000000 000000 000000 5363f0f54cSFangrui Song# NODYNSYM-NEXT: [ 1] .dynstr STRTAB 0000000000000100 000040 000001 5463f0f54cSFangrui Song# NODYNSYM-NEXT: [ 2] .dynsym DYNSYM 0000000000000150 000041 000018 5563f0f54cSFangrui Song# NODYNSYM-NEXT: [ 3] .symtab SYMTAB 0000000000000000 000059 000018 5663f0f54cSFangrui Song# NODYNSYM-NEXT: [ 4] .strtab STRTAB 0000000000000000 000071 000001 5763f0f54cSFangrui Song# NODYNSYM-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 000072 000035 5863f0f54cSFangrui Song# NODYNSYM-NEXT: [ 6] .text.foo PROGBITS 0000000000000200 0000a7 000000 5963f0f54cSFangrui Song 6063f0f54cSFangrui Song--- !ELF 6163f0f54cSFangrui SongFileHeader: 6263f0f54cSFangrui Song Class: ELFCLASS64 6363f0f54cSFangrui Song Data: ELFDATA2LSB 6463f0f54cSFangrui Song Type: ET_DYN 6563f0f54cSFangrui SongSections: 6663f0f54cSFangrui Song - Name: .dynstr 6763f0f54cSFangrui Song Type: SHT_STRTAB 6863f0f54cSFangrui Song Address: 0x100 6963f0f54cSFangrui Song - Name: .dynsym 7063f0f54cSFangrui Song Type: SHT_DYNSYM 7163f0f54cSFangrui Song Address: 0x150 7263f0f54cSFangrui Song - Name: .symtab 7363f0f54cSFangrui Song Type: SHT_SYMTAB 7463f0f54cSFangrui Song - Name: .strtab 7563f0f54cSFangrui Song Type: SHT_STRTAB 7663f0f54cSFangrui Song - Name: .shstrtab 7763f0f54cSFangrui Song Type: SHT_STRTAB 7863f0f54cSFangrui Song - Name: .text.foo 7963f0f54cSFangrui Song Type: SHT_PROGBITS 8063f0f54cSFangrui Song Address: 0x200 8163f0f54cSFangrui Song 8263f0f54cSFangrui Song## Check we don't add a symbol table when no "Symbols" key is specified. 8363f0f54cSFangrui Song 8463f0f54cSFangrui Song# RUN: yaml2obj --docnum=3 %s -o %t3 8563f0f54cSFangrui Song# RUN: llvm-readelf -S %t3 | FileCheck /dev/null --implicit-check-not=.symtab 8663f0f54cSFangrui Song 8763f0f54cSFangrui Song--- !ELF 8863f0f54cSFangrui SongFileHeader: 8963f0f54cSFangrui Song Class: ELFCLASS64 9063f0f54cSFangrui Song Data: ELFDATA2LSB 9163f0f54cSFangrui Song Type: ET_DYN 9263f0f54cSFangrui Song 9363f0f54cSFangrui Song## Check we add a symbol table when "Symbols" key is specified. 9463f0f54cSFangrui Song 9563f0f54cSFangrui Song# RUN: yaml2obj --docnum=4 %s -o %t4 9663f0f54cSFangrui Song# RUN: llvm-readelf -S %t4 | FileCheck %s --check-prefix=SYMTAB 9763f0f54cSFangrui Song 9863f0f54cSFangrui Song# SYMTAB: .symtab 9963f0f54cSFangrui Song 10063f0f54cSFangrui Song--- !ELF 10163f0f54cSFangrui SongFileHeader: 10263f0f54cSFangrui Song Class: ELFCLASS64 10363f0f54cSFangrui Song Data: ELFDATA2LSB 10463f0f54cSFangrui Song Type: ET_DYN 10563f0f54cSFangrui SongSymbols: [] 106