11af6209dSGeorgii Rymar## Check what --sections prints when there is no section header string table. 21af6209dSGeorgii Rymar 31af6209dSGeorgii Rymar# RUN: yaml2obj %s -o %t 41af6209dSGeorgii Rymar# RUN: llvm-readelf --sections %t \ 51af6209dSGeorgii Rymar# RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix=GNU 60378afc4SGeorgii Rymar# RUN: llvm-readobj --sections %t 2>&1 \ 71af6209dSGeorgii Rymar# RUN: | FileCheck %s -DFILE=%t --check-prefix=LLVM 81af6209dSGeorgii Rymar 91af6209dSGeorgii Rymar# GNU:Section Headers: 101af6209dSGeorgii Rymar# GNU-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al 111af6209dSGeorgii Rymar# GNU-NEXT: [ 0] <no-strings> NULL 0000000000000000 000000 000000 00 0 0 0 121af6209dSGeorgii Rymar# GNU-NEXT: [ 1] <no-strings> PROGBITS 0000000000000000 000040 000000 00 0 0 0 131af6209dSGeorgii Rymar# GNU-NEXT: [ 2] <no-strings> PROGBITS 0000000000000000 000040 000000 00 0 0 0 141af6209dSGeorgii Rymar# GNU-NEXT: [ 3] <no-strings> STRTAB 0000000000000000 000040 000001 00 0 0 1 151af6209dSGeorgii Rymar# GNU-NEXT: [ 4] <no-strings> STRTAB 0000000000000000 000041 00001d 00 0 0 1 161af6209dSGeorgii Rymar 171af6209dSGeorgii Rymar# LLVM: Sections [ 181af6209dSGeorgii Rymar# LLVM-NEXT: Section { 191af6209dSGeorgii Rymar# LLVM-NEXT: Index: 0 201af6209dSGeorgii Rymar# LLVM-NEXT: Name: (0) 211af6209dSGeorgii Rymar# LLVM-NEXT: Type: SHT_NULL (0x0) 221af6209dSGeorgii Rymar# LLVM-NEXT: Flags [ (0x0) 231af6209dSGeorgii Rymar# LLVM-NEXT: ] 241af6209dSGeorgii Rymar# LLVM-NEXT: Address: 0x0 251af6209dSGeorgii Rymar# LLVM-NEXT: Offset: 0x0 261af6209dSGeorgii Rymar# LLVM-NEXT: Size: 0 271af6209dSGeorgii Rymar# LLVM-NEXT: Link: 0 281af6209dSGeorgii Rymar# LLVM-NEXT: Info: 0 291af6209dSGeorgii Rymar# LLVM-NEXT: AddressAlignment: 0 301af6209dSGeorgii Rymar# LLVM-NEXT: EntrySize: 0 311af6209dSGeorgii Rymar# LLVM-NEXT: } 321af6209dSGeorgii Rymar# LLVM-NEXT: Section { 331af6209dSGeorgii Rymar# LLVM-NEXT: Index: 1 341af6209dSGeorgii Rymar# LLVM-NEXT: Name: (0) 351af6209dSGeorgii Rymar# LLVM-NEXT: Type: SHT_PROGBITS (0x1) 361af6209dSGeorgii Rymar# LLVM-NEXT: Flags [ (0x0) 371af6209dSGeorgii Rymar# LLVM-NEXT: ] 381af6209dSGeorgii Rymar# LLVM-NEXT: Address: 0x0 391af6209dSGeorgii Rymar# LLVM-NEXT: Offset: 0x40 401af6209dSGeorgii Rymar# LLVM-NEXT: Size: 0 411af6209dSGeorgii Rymar# LLVM-NEXT: Link: 0 421af6209dSGeorgii Rymar# LLVM-NEXT: Info: 0 431af6209dSGeorgii Rymar# LLVM-NEXT: AddressAlignment: 0 441af6209dSGeorgii Rymar# LLVM-NEXT: EntrySize: 0 451af6209dSGeorgii Rymar# LLVM-NEXT: } 460378afc4SGeorgii Rymar# LLVM-NEXT: Section { 470378afc4SGeorgii Rymar# LLVM-NEXT: Index: 2 48*3de93230SGeorgii Rymar# LLVM-NEXT: warning: '[[FILE]]': unable to get the name of SHT_PROGBITS section with index 2: a section [index 2] has an invalid sh_name (0x1) offset which goes past the end of the section name string table 490378afc4SGeorgii Rymar# LLVM-NEXT: Name: <?> (1) 500378afc4SGeorgii Rymar# LLVM-NEXT: Type: SHT_PROGBITS (0x1) 510378afc4SGeorgii Rymar# LLVM-NEXT: Flags [ (0x0) 520378afc4SGeorgii Rymar# LLVM-NEXT: ] 530378afc4SGeorgii Rymar# LLVM-NEXT: Address: 0x0 540378afc4SGeorgii Rymar# LLVM-NEXT: Offset: 0x40 550378afc4SGeorgii Rymar# LLVM-NEXT: Size: 0 560378afc4SGeorgii Rymar# LLVM-NEXT: Link: 0 570378afc4SGeorgii Rymar# LLVM-NEXT: Info: 0 580378afc4SGeorgii Rymar# LLVM-NEXT: AddressAlignment: 0 590378afc4SGeorgii Rymar# LLVM-NEXT: EntrySize: 0 600378afc4SGeorgii Rymar# LLVM-NEXT: } 610378afc4SGeorgii Rymar# LLVM-NEXT: Section { 620378afc4SGeorgii Rymar# LLVM-NEXT: Index: 3 63*3de93230SGeorgii Rymar# LLVM-NEXT: warning: '[[FILE]]': unable to get the name of SHT_STRTAB section with index 3: a section [index 3] has an invalid sh_name (0x15) offset which goes past the end of the section name string table 640378afc4SGeorgii Rymar# LLVM-NEXT: Name: <?> (21) 650378afc4SGeorgii Rymar# LLVM-NEXT: Type: SHT_STRTAB (0x3) 660378afc4SGeorgii Rymar# LLVM-NEXT: Flags [ (0x0) 670378afc4SGeorgii Rymar# LLVM-NEXT: ] 680378afc4SGeorgii Rymar# LLVM-NEXT: Address: 0x0 690378afc4SGeorgii Rymar# LLVM-NEXT: Offset: 0x40 700378afc4SGeorgii Rymar# LLVM-NEXT: Size: 1 710378afc4SGeorgii Rymar# LLVM-NEXT: Link: 0 720378afc4SGeorgii Rymar# LLVM-NEXT: Info: 0 730378afc4SGeorgii Rymar# LLVM-NEXT: AddressAlignment: 1 740378afc4SGeorgii Rymar# LLVM-NEXT: EntrySize: 0 750378afc4SGeorgii Rymar# LLVM-NEXT: } 760378afc4SGeorgii Rymar# LLVM-NEXT: Section { 770378afc4SGeorgii Rymar# LLVM-NEXT: Index: 4 78*3de93230SGeorgii Rymar# LLVM-NEXT: warning: '[[FILE]]': unable to get the name of SHT_STRTAB section with index 4: a section [index 4] has an invalid sh_name (0xb) offset which goes past the end of the section name string table 790378afc4SGeorgii Rymar# LLVM-NEXT: Name: <?> (11) 800378afc4SGeorgii Rymar# LLVM-NEXT: Type: SHT_STRTAB (0x3) 810378afc4SGeorgii Rymar# LLVM-NEXT: Flags [ (0x0) 820378afc4SGeorgii Rymar# LLVM-NEXT: ] 830378afc4SGeorgii Rymar# LLVM-NEXT: Address: 0x0 840378afc4SGeorgii Rymar# LLVM-NEXT: Offset: 0x41 850378afc4SGeorgii Rymar# LLVM-NEXT: Size: 29 860378afc4SGeorgii Rymar# LLVM-NEXT: Link: 0 870378afc4SGeorgii Rymar# LLVM-NEXT: Info: 0 880378afc4SGeorgii Rymar# LLVM-NEXT: AddressAlignment: 1 890378afc4SGeorgii Rymar# LLVM-NEXT: EntrySize: 0 900378afc4SGeorgii Rymar# LLVM-NEXT: } 910378afc4SGeorgii Rymar# LLVM-NEXT: ] 921af6209dSGeorgii Rymar 931af6209dSGeorgii Rymar--- !ELF 941af6209dSGeorgii RymarFileHeader: 951af6209dSGeorgii Rymar Class: ELFCLASS64 961af6209dSGeorgii Rymar Data: ELFDATA2LSB 971af6209dSGeorgii Rymar Type: ET_DYN 987a587ca9SGeorgii Rymar EShStrNdx: 0 991af6209dSGeorgii RymarSections: 1001af6209dSGeorgii Rymar - Name: .foo 1011af6209dSGeorgii Rymar Type: SHT_PROGBITS 1021af6209dSGeorgii Rymar ShName: 0 1031af6209dSGeorgii Rymar - Name: .bar 1041af6209dSGeorgii Rymar Type: SHT_PROGBITS 1051af6209dSGeorgii Rymar ShName: 1 106