brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.9 KiB · 58ec3cb Raw
686 lines · plain
1## Check that llvm-objdump reports an error when2## .shstrtab has an invalid type.3 4# RUN: yaml2obj %s --docnum=1 -o %t15# RUN: not llvm-objdump -s %t1 2>&1 | FileCheck %s -DFILE=%t1 --check-prefix=INVALID-SHTYPE6 7# INVALID-SHTYPE: error: '[[FILE]]': invalid sh_type for string table section [index 1]: expected SHT_STRTAB, but got SHT_PROGBITS8 9--- !ELF10FileHeader:11  Class:   ELFCLASS6412  Data:    ELFDATA2LSB13  Type:    ET_DYN14  Machine: EM_X86_6415Sections:16  - Name: .shstrtab17    Type: SHT_PROGBITS18 19## Check that llvm-objdump reports an error when20## .shstrtab has an invalid zero-size.21 22# RUN: yaml2obj %s --docnum=2 -o %t223# RUN: not llvm-objdump -s %t2 2>&1 | FileCheck %s -DFILE=%t2 --check-prefix=STRTAB-EMPTY24 25# STRTAB-EMPTY: error: '[[FILE]]': SHT_STRTAB string table section [index 1] is empty26 27--- !ELF28FileHeader:29  Class:   ELFCLASS6430  Data:    ELFDATA2LSB31  Type:    ET_DYN32  Machine: EM_X86_6433Sections:34  - Name: .shstrtab35    Type: SHT_STRTAB36    Size: 037 38## Check that llvm-objdump reports an error when .shstrtab has an invalid39## size that goes past the end of the file.40 41# RUN: not llvm-objdump -s %p/Inputs/invalid-strtab-size.elf 2>&1 \42# RUN:   | FileCheck %s -DFILE=%p/Inputs/invalid-strtab-size.elf --check-prefix=INVALID-STRTAB-SIZE43 44# INVALID-STRTAB-SIZE: error: '[[FILE]]': section [index 1] has a sh_offset (0x70) + sh_size (0xffffff) that is greater than the file size (0x218)45 46## Document that llvm-dwarfdump doesn't reports errors/warnings during relocation resolution47## when instead of SHT_RELA section we have a SHT_REL section in an object.48## In this case it just doesn't try to read relocation addends and assumes they are 0.49 50## Note: we don't check the output, because the intention of this test is just to check the51## exit code and to document the fact that no warnings are reported.52# RUN: yaml2obj %s --docnum=3 -o %t353# RUN: llvm-dwarfdump -debug-line %t3 2>&1 | FileCheck --implicit-check-not=warning: %s54 55--- !ELF56FileHeader:57  Class:   ELFCLASS6458  Data:    ELFDATA2LSB59  Type:    ET_REL60  Machine: EM_X86_6461Sections:62  - Name: .debug_line63    Type: SHT_PROGBITS64## The exact content does not matter here. We can use any minimal valid debug section65## which is a target for relocation. The idea is to trigger the code that reads the66## relocation's addend during relocation resolution. It should fail if called on67## a non-SHT_RELA section.68    Content: 380000000200210000000101FB0E0D00010101010000000100000100676C6F62616C2E6370700000000000000902000000000000000013023700010169  - Name: .rela.debug_line70    Type: SHT_REL71    Info: .debug_line72    Relocations:73      - Offset: 0x000000000000002E74        Type:   R_X86_64_6475 76## Check that llvm-objdump reports an error when it tries to dump section names77## and .shstrtab is not null-terminated.78 79# RUN: yaml2obj %s --docnum=4 -o %t480# RUN: not llvm-objdump -s %t4 2>&1 | FileCheck -DFILE=%t4 --check-prefix=SHSTRTAB-NON-TERM %s81 82# SHSTRTAB-NON-TERM: error: '[[FILE]]': SHT_STRTAB string table section [index 1] is non-null terminated83 84--- !ELF85FileHeader:86  Class:   ELFCLASS6487  Data:    ELFDATA2LSB88  Type:    ET_DYN89  Machine: EM_X86_6490Sections:91  - Name: .shstrtab92    Type: SHT_STRTAB93    Content: "11"94 95## Check that llvm-objdump reports an error when it tries to dump a symbol name and96## .strtab is not null-terminated.97 98# RUN: yaml2obj %s --docnum=5 -o %t599# RUN: not llvm-objdump --syms %t5 2>&1 | FileCheck --check-prefix=NONULL %s100 101# NONULL: error: {{.*}}: SHT_STRTAB string table section [index 1] is non-null terminated102 103--- !ELF104FileHeader:105  Class:   ELFCLASS64106  Data:    ELFDATA2LSB107  Type:    ET_DYN108  Machine: EM_X86_64109Sections:110  - Name: .strtab111    Type: SHT_STRTAB112    Content: "11"113Symbols:114  - Name: foo115 116## Check that llvm-readobj reports an error if .symtab has an invalid sh_entsize.117 118# RUN: yaml2obj %s --docnum=6 -o %t6119# RUN: llvm-readobj --symbols %t6 2>&1 | FileCheck -DFILE=%t6 --check-prefix=INVALID-SYM-SIZE %s120 121# INVALID-SYM-SIZE: warning: '[[FILE]]': unable to read symbols from the SHT_SYMTAB section: section [index 1] has invalid sh_entsize: expected 24, but got 32122 123--- !ELF124FileHeader:125  Class:   ELFCLASS64126  Data:    ELFDATA2LSB127  Type:    ET_DYN128  Machine: EM_X86_64129Sections:130  - Name: .symtab131    Type: SHT_SYMTAB132    EntSize: 32133Symbols:134  - Name: foo135 136## Check that llvm-readobj reports a warning if .dynsym has an invalid sh_entsize.137 138# RUN: yaml2obj %s --docnum=7 -o %t7139# RUN: llvm-readobj --dyn-symbols %t7 2>&1 | FileCheck -DFILE=%t7 --check-prefix=INVALID-DYNSYM-SIZE %s140 141# INVALID-DYNSYM-SIZE: warning: '[[FILE]]': SHT_DYNSYM section with index 1 has invalid size (0x30) or entry size (0x20)142 143--- !ELF144FileHeader:145  Class:   ELFCLASS64146  Data:    ELFDATA2LSB147  Type:    ET_DYN148  Machine: EM_X86_64149Sections:150  - Name: .dynsym151    Type: SHT_DYNSYM152    EntSize: 32153DynamicSymbols:154  - Name: foo155 156## Check that llvm-readobj reports a warning if .symtab has an invalid sh_link value,157## which is greater than number of sections.158 159# RUN: yaml2obj %s --docnum=8 -o %t8160# RUN: llvm-readobj --symbols %t8 2>&1 | FileCheck -DFILE=%t8 --check-prefix=INVALID-SYMTAB-LINK %s161 162# INVALID-SYMTAB-LINK: warning: '[[FILE]]': unable to get the string table for the SHT_SYMTAB section: invalid section index: 255163 164--- !ELF165FileHeader:166  Class:   ELFCLASS64167  Data:    ELFDATA2LSB168  Type:    ET_REL169  Machine: EM_X86_64170Sections:171  - Name: .symtab172    Type: SHT_SYMTAB173    Link: 0xFF174 175## Check that llvm-readobj reports an error when trying to dump sections176## when the e_shentsize field is broken.177 178# RUN: yaml2obj %s --docnum=9 -o %t9179# RUN: not llvm-readobj -S %t9 2>&1 | \180# RUN:   FileCheck -DFILE=%t9 --implicit-check-not=warning: --check-prefix=INVALID-SH-ENTSIZE %s181 182# INVALID-SH-ENTSIZE:      LoadName: <Not found>183# INVALID-SH-ENTSIZE-NEXT: error: '[[FILE]]': unable to continue dumping, the file is corrupt: invalid e_shentsize in ELF header: 1184 185--- !ELF186FileHeader:187  Class:      ELFCLASS64188  Data:       ELFDATA2LSB189  Type:       ET_REL190  Machine:    EM_X86_64191  EShEntSize: 1192 193## Check that llvm-readobj reports a warning if .symtab has sh_size194## that is not a multiple of sh_entsize.195 196# RUN: yaml2obj %s --docnum=10 -o %t10197# RUN: llvm-readobj --symbols %t10 2>&1 | FileCheck -DFILE=%t10 --check-prefix=INVALID-SYMTAB-SIZE %s198 199# INVALID-SYMTAB-SIZE: warning: '[[FILE]]': unable to read symbols from the SHT_SYMTAB section: section [index 1] has an invalid sh_size (1) which is not a multiple of its sh_entsize (24)200 201--- !ELF202FileHeader:203  Class:   ELFCLASS64204  Data:    ELFDATA2LSB205  Type:    ET_DYN206  Machine: EM_X86_64207Sections:208  - Name: .symtab209    Type: SHT_SYMTAB210    Size: 1211 212## Test that llvm-readobj reports an error if SHT_SYMTAB_SHNDX section has213## invalid sh_size which should be:214## sizeof(.symtab_shndx) = (sizeof(.symtab) / entsize(.symtab)) * entsize(.symtab_shndx)215 216# RUN: yaml2obj %s --docnum=11 -o %t11217# RUN: llvm-readobj --symbols %t11 2>&1 | FileCheck --check-prefix=INVALID-XINDEX-SIZE %s218 219# INVALID-XINDEX-SIZE: warning: {{.*}}: SHT_SYMTAB_SHNDX has 2 entries, but the symbol table associated has 1220 221--- !ELF222FileHeader:223  Class:   ELFCLASS64224  Data:    ELFDATA2LSB225  Type:    ET_DYN226  Machine: EM_X86_64227Sections:228  - Name: .symtab_shndx229    Type: SHT_SYMTAB_SHNDX230    Entries: [ 0, 1 ]231    Link: .symtab232Symbols: []233 234## Check that llvm-readobj reports a warning when the e_phentsize field is broken.235 236# RUN: llvm-readobj --program-headers %p/Inputs/invalid-e_shnum.elf 2>&1 | \237# RUN:  FileCheck -DFILE=%p/Inputs/invalid-e_shnum.elf --check-prefix=INVALID-PH-ENTSIZE %s238 239# INVALID-PH-ENTSIZE: warning: '[[FILE]]': unable to dump program headers: invalid e_phentsize: 12336240 241## Check that llvm-readobj reports a warning when we have no SHT_SYMTAB_SHNDX section,242## but have a symbol referencing it.243 244# RUN: llvm-readobj --symbols %p/Inputs/invalid-ext-symtab-index.elf-x86-64 2>&1 | \245# RUN:   FileCheck -DFILE=%p/Inputs/invalid-ext-symtab-index.elf-x86-64 --check-prefix=INVALID-EXT-SYMTAB-INDEX %s246 247# INVALID-EXT-SYMTAB-INDEX: warning: '[[FILE]]': found an extended symbol index (0), but unable to locate the extended symbol index table248# INVALID-EXT-SYMTAB-INDEX: Section: Reserved (0xFFFF)249 250## Check that llvm-readobj reports an error if a relocation section251## has a broken sh_offset (past the end of the file).252 253# RUN: yaml2obj %s --docnum=12 -o %t12254# RUN: yaml2obj %s --docnum=13 -o %t13255# RUN: llvm-readobj -r %t12 2>&1 | FileCheck -DFILE=%t12 --check-prefix=INVALID-RELOC-SH-OFFSET -DTYPE=SHT_REL %s256# RUN: llvm-readobj -r %t13 2>&1 | FileCheck -DFILE=%t13 --check-prefix=INVALID-RELOC-SH-OFFSET -DTYPE=SHT_RELA %s257 258# INVALID-RELOC-SH-OFFSET: warning: '[[FILE]]': unable to read relocations from [[TYPE]] section with index 1: section [index 1] has a sh_offset (0x10000) + sh_size (0x0) that is greater than the file size (0x160)259 260--- !ELF261FileHeader:262  Class:   ELFCLASS64263  Data:    ELFDATA2LSB264  Type:    ET_REL265  Machine: EM_386266Sections:267  - Name:     .rel268    Type:     SHT_REL269    ShOffset: 0x10000270 271--- !ELF272FileHeader:273  Class:   ELFCLASS64274  Data:    ELFDATA2LSB275  Type:    ET_REL276  Machine: EM_X86_64277Sections:278  - Name:     .rela279    Type:     SHT_RELA280    ShOffset: 0x10000281 282## Check that llvm-readobj reports a warning when we try to print section symbols and283## .shstrtab has a broken sh_offset so large that sh_offset + sh_size overflows the platform address size type.284 285# RUN: yaml2obj %s --docnum=14 -o %t14286# RUN: llvm-readobj --symbols %t14 2>&1 | FileCheck -DFILE=%t14 --check-prefix=INVALID-SECTION-SIZE2 %s287 288# INVALID-SECTION-SIZE2:      Symbol {289# INVALID-SECTION-SIZE2:       Name: symbol (1)290# INVALID-SECTION-SIZE2-NEXT:  Value: 0x123291# INVALID-SECTION-SIZE2-NEXT:  Size: 0292# INVALID-SECTION-SIZE2-NEXT:  Binding: Local (0x0)293# INVALID-SECTION-SIZE2-NEXT:  Type: None (0x0)294# INVALID-SECTION-SIZE2-NEXT:  Other: 0295# INVALID-SECTION-SIZE2-NEXT: warning: '[[FILE]]': section [index 1] has a sh_offset (0xffffffff) + sh_size (0x1b) that cannot be represented296# INVALID-SECTION-SIZE2-NEXT:  Section: <?> (0x1)297# INVALID-SECTION-SIZE2-NEXT: }298 299--- !ELF300FileHeader:301  Class:   ELFCLASS32302  Data:    ELFDATA2LSB303  Type:    ET_REL304  Machine: EM_386305Sections:306  - Name:     .shstrtab307    Type:     SHT_STRTAB308    ShOffset: 0xFFFFFFFF309Symbols:310  - Name:    symbol311    Section: .shstrtab312    Value:   0x123313 314## Check that llvm-readobj reports an error when trying to dump sections315## when the e_shnum field is broken (is greater than the actual number of sections).316 317# RUN: yaml2obj %s --docnum=15 -o %t15318# RUN: not llvm-readobj -S %t15 2>&1 | \319# RUN:   FileCheck -DFILE=%t15 --implicit-check-not=warning: --check-prefix=INVALID-SECTION-NUM %s320 321# INVALID-SECTION-NUM:      LoadName: <Not found>322# INVALID-SECTION-NUM-NEXT: error: '[[FILE]]': unable to continue dumping, the file is corrupt: section table goes past the end of file323 324--- !ELF325FileHeader:326  Class:    ELFCLASS64327  Data:     ELFDATA2LSB328  Type:     ET_REL329  Machine:  EM_X86_64330  EShNum:   0xFF331 332## Check llvm-readobj does not crash on a truncated ELF.333 334## Create a truncated ELF object with ELFCLASSNONE class using echo.335## 0x7f, 'E', 'L', 'F', ELFCLASS64(2), ELFDATA2LSB(1),336## EV_CURRENT(1), ELFOSABI_LINUX(3), <padding zero bytes>, ET_REL(1), EM_NONE(0)337# RUN: echo -e -n "\x7f\x45\x4c\x46\x02\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00" > %t11338# RUN: not llvm-readobj -r %t11 2>&1 | FileCheck --check-prefix=INVALID-BUFFER %s339 340# INVALID-BUFFER: error: {{.*}}': invalid buffer: the size (18) is smaller than an ELF header (64)341 342# RUN: not llvm-readobj %p/Inputs/invalid-coff-header-too-small 2>&1 | FileCheck --check-prefix=COFF-HEADER %s343# COFF-HEADER: The file was not recognized as a valid object file344 345## Check that llvm-readobj reports an error if section name offset346## overflows the section name string table.347 348# RUN: yaml2obj %s --docnum=16 -o %t16349# RUN: llvm-readobj --sections %t16 2>&1 | FileCheck -DFILE=%t16 --check-prefix=BROKEN-SECNAME %s350 351## BROKEN-SECNAME: warning: '[[FILE]]': unable to get the name of SHT_STRTAB section with index 2: a section [index 2] has an invalid sh_name (0xb) offset which goes past the end of the section name string table352 353--- !ELF354FileHeader:355  Class:   ELFCLASS64356  Data:    ELFDATA2LSB357  Type:    ET_REL358  Machine: EM_X86_64359Sections:360  - Name: .shstrtab361    Type: SHT_STRTAB362    Size: 1363 364## Check that llvm-readobj reports an error if a section has a broken offset365## that goes past the end of the file.366 367# RUN: yaml2obj %s --docnum=17 -o %t17368# RUN: not llvm-readobj --sections --section-data %t17 2>&1 \369# RUN:  | FileCheck -DFILE=%t17 --check-prefix=BROKEN-SECSHOFFSET %s370 371# BROKEN-SECSHOFFSET: error: '[[FILE]]': section [index 1] has a sh_offset (0xffff0000) + sh_size (0x0) that is greater than the file size (0x160)372 373--- !ELF374FileHeader:375  Class:   ELFCLASS64376  Data:    ELFDATA2LSB377  Type:    ET_REL378  Machine: EM_X86_64379Sections:380  - Name:     .foo381    Type:     SHT_PROGBITS382    ShOffset: 0xFFFF0000383 384## Check that llvm-readobj reports a warning if symbol name385## offset goes past the end of the symbol string table.386 387# RUN: yaml2obj %s --docnum=18 -o %t18388# RUN: llvm-readobj --symbols %t18 2>&1 | FileCheck -DFILE=%t18 --check-prefix=INVALID-SYM-NAME %s389 390# INVALID-SYM-NAME: warning: '[[FILE]]': st_name (0x1) is past the end of the string table of size 0x1391 392--- !ELF393FileHeader:394  Class:   ELFCLASS64395  Data:    ELFDATA2LSB396  Type:    ET_REL397  Machine: EM_X86_64398Sections:399  - Name: .strtab400    Type: SHT_STRTAB401    Size: 1402Symbols:403  - Name: foo404 405## Version index in .gnu.version overflows the version map.406## Check llvm-readobj reports it.407 408# RUN: yaml2obj %s --docnum=19 -o %t19409# RUN: llvm-readobj --dyn-symbols %t19 2>&1 | FileCheck -DFILE=%t19 --check-prefix=INVALID-VERSION %s410 411# INVALID-VERSION: warning: '[[FILE]]': SHT_GNU_versym section refers to a version index 255 which is missing412 413--- !ELF414FileHeader:415  Class:   ELFCLASS64416  Data:    ELFDATA2LSB417  Type:    ET_DYN418  Machine: EM_X86_64419Sections:420  - Name:    .gnu.version421    Type:    SHT_GNU_versym422    Entries: [ 0xFF ]423DynamicSymbols:424  - Name: foo425 426## ELF header contains e_phentsize field with a value != sizeof(Elf_Phdr).427## Check llvm-readobj reports it.428 429# RUN: llvm-readobj -l %p/Inputs/corrupt-invalid-phentsize.elf.x86-64 2>&1 \430# RUN:   | FileCheck -DFILE=%p/Inputs/corrupt-invalid-phentsize.elf.x86-64 --check-prefix=PHENTSIZE %s431 432# PHENTSIZE: warning: '[[FILE]]': unable to read program headers to locate the PT_DYNAMIC segment: invalid e_phentsize: 57433 434## The dynamic table contains DT_STRTAB with a value that is not in any loadable segment.435## Check llvm-readobj reports it.436 437# RUN: yaml2obj %s --docnum=20 -o %t20438# RUN: llvm-readobj --dynamic-table %t20 2>&1 | FileCheck -DFILE=%t20 --check-prefix=INVALID-DTSTRTAB %s439 440# INVALID-DTSTRTAB: warning: '[[FILE]]': unable to parse DT_STRTAB: virtual address is not in any segment: 0xffff0000441 442--- !ELF443FileHeader:444  Class:   ELFCLASS64445  Data:    ELFDATA2LSB446  Type:    ET_EXEC447  Machine: EM_X86_64448Sections:449  - Name:    .dynamic450    Type:    SHT_DYNAMIC451    Address: 0x1000452    Entries:453      - Tag:   DT_STRTAB454        Value: 0xFFFF0000455      - Tag:   DT_NULL456        Value: 0x0457ProgramHeaders:458  - Type:     PT_LOAD459    VAddr:    0x1000460    FirstSec: .dynamic461    LastSec:  .dynamic462 463## Check that llvm-readobj reports a warning when a dynamic relocation section464## has sh_entsize field with size != sizeof(Elf_Rela).465 466# RUN: llvm-readobj --dyn-relocations \467# RUN:   %p/Inputs/corrupt-invalid-relocation-size.elf.x86-64 2>&1 \468# RUN:    | FileCheck -DFILE=%p/Inputs/corrupt-invalid-relocation-size.elf.x86-64 --check-prefix=RELOC-BROKEN-ENTSIZE %s469 470# RELOC-BROKEN-ENTSIZE: warning: '[[FILE]]': invalid DT_RELASZ value (0x18) or DT_RELAENT value (0x19)471 472## Check that llvm-readobj reports a warning when .dynamic section has an invalid473## size, which isn't a multiple of the dynamic entry size. 474 475# RUN: yaml2obj %s --docnum=21 -o %t21476# RUN: llvm-readobj --dyn-relocations %t21 2>&1 | FileCheck -DFILE=%t21 --check-prefix=DYN-TABLE-SIZE %s477 478# DYN-TABLE-SIZE: warning: '[[FILE]]': SHT_DYNAMIC section with index 1 has invalid size (0x1){{$}}479 480--- !ELF481FileHeader:482  Class:   ELFCLASS64483  Data:    ELFDATA2LSB484  Type:    ET_EXEC485  Machine: EM_X86_64486Sections:487  - Name:    .dynamic488    Type:    SHT_DYNAMIC489    Content: "00"490 491## PT_DYNAMIC's p_offset field is so large that p_offset + p_filesz is larger492## than the object size. Check llvm-readobj reports it.493 494# RUN: yaml2obj %s --docnum=22 -o %t22495# RUN: llvm-readobj --dyn-relocations %t22 2>&1 | FileCheck -DFILE=%t22 --check-prefix=DYN-TABLE-PHDR %s496 497# DYN-TABLE-PHDR: warning: '[[FILE]]': PT_DYNAMIC segment offset (0xffff0000) + file size (0x0) exceeds the size of the file (0x150)498 499--- !ELF500FileHeader:501  Class:   ELFCLASS64502  Data:    ELFDATA2LSB503  Type:    ET_EXEC504  Machine: EM_X86_64505ProgramHeaders:506  - Type:   PT_DYNAMIC507    Offset: 0xffff0000508 509## PT_DYNAMIC's p_filesz field is so large that p_offset + p_filesz is larger510## than the object size. Check llvm-readobj reports it.511 512# RUN: yaml2obj %s --docnum=23 -o %t23513# RUN: llvm-readobj --dyn-relocations %t23 2>&1 \514# RUN:  | FileCheck -DFILE=%t23 --check-prefix=DYN-TABLE-PHDR2 %s515 516# DYN-TABLE-PHDR2: warning: '[[FILE]]': PT_DYNAMIC segment offset (0x78) + file size (0xffff0000) exceeds the size of the file (0x1a8)517 518--- !ELF519FileHeader:520  Class:   ELFCLASS64521  Data:    ELFDATA2LSB522  Type:    ET_EXEC523  Machine: EM_X86_64524Sections:525  - Name: .dynamic526    Type: SHT_DYNAMIC527    Entries:528      - Tag:   DT_NULL529        Value: 0530ProgramHeaders:531  - Type:     PT_DYNAMIC532    FileSize: 0xffff0000533    FirstSec: .dynamic534    LastSec:  .dynamic535 536# RUN: yaml2obj --docnum=24 %s -o %t24537# RUN: not obj2yaml 2>&1 %t24 | FileCheck %s -DFILE=%t24 --check-prefix=INVALID-SHSTRNDX538 539# INVALID-SHSTRNDX: Error reading file: [[FILE]]: section header string table index 255 does not exist540 541--- !ELF542FileHeader:543  Class:     ELFCLASS64544  Data:      ELFDATA2LSB545  Type:      ET_REL546  Machine:   EM_X86_64547  EShStrNdx: 0xFF548Sections:549  - Name: .foo550    Type: SHT_PROGBITS551 552## We report an error if the number of sections stored in sh_size553## is greater than UINT64_MAX / sizeof(Elf_Shdr) == 288230376151711743.554## Here we check that do not crash on a border value.555 556# RUN: yaml2obj --docnum=25 %s -o %t25557# RUN: not llvm-readobj -h %t25 2>&1 | FileCheck -DFILE=%t25 --check-prefix=INVALID-SEC-NUM1 %s558 559# INVALID-SEC-NUM1: error: '[[FILE]]': unable to continue dumping, the file is corrupt: invalid section header table offset (e_shoff = 0x58) or invalid number of sections specified in the first section header's sh_size field (0x3ffffffffffffff)560 561--- !ELF562FileHeader:563  Class:    ELFCLASS64564  Data:     ELFDATA2LSB565  Type:     ET_REL566  Machine:  EM_X86_64567  EShNum:   0x0568Sections:569  - Type: SHT_NULL570    Size: 288230376151711743571 572## See above, but now we test the UINT64_MAX / sizeof(Elf_Shdr) value.573## The error is slightly different in this case.574 575# RUN: yaml2obj --docnum=26 %s -o %t26576# RUN: not llvm-readobj -h %t26 2>&1 | FileCheck -DFILE=%t26 --check-prefix=INVALID-SEC-NUM2 %s577 578# INVALID-SEC-NUM2: error: '[[FILE]]': unable to continue dumping, the file is corrupt: invalid number of sections specified in the NULL section's sh_size field (288230376151711744)579 580--- !ELF581FileHeader:582  Class:    ELFCLASS64583  Data:     ELFDATA2LSB584  Type:     ET_REL585  Machine:  EM_X86_64586  EShNum:   0x0587Sections:588  - Type: SHT_NULL589    Size: 288230376151711744590 591## Check the case when SHOff is too large. SHOff + sizeof(Elf_Shdr) overflows the uint64 type.592 593# RUN: yaml2obj --docnum=27 %s -o %t27594# RUN: not llvm-readobj -h %t27 2>&1 | FileCheck -DFILE=%t27 --check-prefix=INVALID-SEC-NUM3 %s595 596# INVALID-SEC-NUM3: error: '[[FILE]]': unable to continue dumping, the file is corrupt: section header table goes past the end of the file: e_shoff = 0xffffffffffffffff597 598--- !ELF599FileHeader:600  Class:   ELFCLASS64601  Data:    ELFDATA2LSB602  Type:    ET_REL603  Machine: EM_X86_64604  EShOff:  0xffffffffffffffff605 606## Check that llvm-objdump reports an error when it tries to dump a607## symbol name and .strtab is empty.608 609# RUN: yaml2obj %s --docnum=28 -o %t28610# RUN: not llvm-objdump --syms %t28 2>&1 | FileCheck -DFILE=%t28 --check-prefix=STRTAB-EMPTY2 %s611 612# STRTAB-EMPTY2: error: '[[FILE]]': SHT_STRTAB string table section [index 1] is empty613 614--- !ELF615FileHeader:616  Class:   ELFCLASS64617  Data:    ELFDATA2LSB618  Type:    ET_DYN619  Machine: EM_X86_64620Sections:621  - Name: .strtab622    Type: SHT_STRTAB623    Content: ""624Symbols:625  - Name: foo626 627## Check that we report a warning if SHT_GNU_versym has invalid628## sh_entsize value (3 instead of 2) when trying to access the entries.629 630# RUN: yaml2obj %s --docnum=29 -o %t29631# RUN: llvm-readobj -V %t29 2>&1 | FileCheck -DFILE=%t29 --check-prefix=INVALID-VER-SHENTSIZE %s632 633# INVALID-VER-SHENTSIZE: warning: '[[FILE]]': cannot read content of SHT_GNU_versym section with index 1: section [index 1] has invalid sh_entsize: expected 2, but got 3634 635--- !ELF636FileHeader:637  Class:   ELFCLASS64638  Data:    ELFDATA2LSB639  OSABI:   ELFOSABI_FREEBSD640  Type:    ET_DYN641  Machine: EM_X86_64642Sections:643  - Name:    .gnu.version644    Type:    SHT_GNU_versym645    EntSize: 0x0000000000000003646    Entries: [ ]647## Needed to trigger creation of .dynsym.648DynamicSymbols:649  - Name:    foo650    Binding: STB_GLOBAL651 652## Check the case when e_shstrndx == SHN_XINDEX, but null section's sh_link contains653## the index of a section header string table that is larger than the number of the sections.654 655# RUN: yaml2obj --docnum=30 %s -o %t30656# RUN: not llvm-objcopy %t30 2>&1 | FileCheck %s -DFILE=%t30 --check-prefix=INVALID-SHSTRTAB-INDEX657 658# INVALID-SHSTRTAB-INDEX: error: section header string table index 255 does not exist659 660--- !ELF661FileHeader:662  Class:     ELFCLASS64663  Data:      ELFDATA2LSB664  Type:      ET_REL665  Machine:   EM_X86_64666## SHN_XINDEX == 0xffff.667  EShStrNdx: 0xffff668Sections:669  - Type: SHT_NULL670    Link: 0xff671 672## Check the case when the e_phoff field is invalid.673# RUN: yaml2obj --docnum=31 %s -o %t31674# RUN: llvm-objdump --private-headers %t31 2>&1 | FileCheck -DFILE=%t31 %s --check-prefix=INVALID-PHOFF675 676# INVALID-PHOFF: warning: '[[FILE]]': program headers are longer than binary of size 280: e_phoff = 0xffffff, e_phnum = 0, e_phentsize = 0677# INVALID-PHOFF-EMPTY:678 679--- !ELF680FileHeader:681  Class:   ELFCLASS64682  Data:    ELFDATA2LSB683  Type:    ET_EXEC684  Machine: EM_X86_64685  EPhOff:  0xffffff686