192 lines · plain
1## Check parsing and dumping of the SFrame header.2# RUN: yaml2obj --docnum=1 %s -o %t.13# RUN: llvm-readobj --sframe=.sframe_bad_sh_size --sframe=.sframe_1b \4# RUN: --sframe=.sframe_bad_magic --sframe=.sframe_bad_version \5# RUN: --sframe=.sframe_6b --sframe=.sframe_short_auxheader \6# RUN: --sframe=.sframe_header %t.1 2>&1 | \7# RUN: FileCheck %s --strict-whitespace --match-full-lines \8# RUN: -DFILE=%t.1 --check-prefix=CASE19 10## Check big-endian support and the handling of --sframe argument default.11# RUN: yaml2obj --docnum=2 %s -o %t.212# RUN: llvm-readobj --sframe %t.2 2>&1 | \13# RUN: FileCheck %s --strict-whitespace --match-full-lines \14# RUN: -DFILE=%t.2 --check-prefix=CASE215 16## Check handling of corrupted elf files (bad sh_name)17# RUN: yaml2obj --docnum=3 %s -o %t.318# RUN: not llvm-readobj --sframe %t.3 2>&1 | \19# RUN: FileCheck %s --strict-whitespace --match-full-lines \20# RUN: -DFILE=%t.3 --check-prefix=CASE321 22--- !ELF23FileHeader:24 Class: ELFCLASS6425 Data: ELFDATA2LSB26 Type: ET_EXEC27Sections:28 - Name: .sframe_bad_sh_size29 Type: SHT_GNU_SFRAME30 Flags: [ SHF_ALLOC ]31 ShSize: 0xfffff32# CASE1-LABEL:SFrame section '.sframe_bad_sh_size' {33# CASE1:{{.*}}: warning: '[[FILE]]': The end of the file was unexpectedly encountered34 - Name: .sframe_1b35 Type: SHT_GNU_SFRAME36 Flags: [ SHF_ALLOC ]37 ContentArray: [ 0x00 ]38# CASE1-LABEL:SFrame section '.sframe_1b' {39# CASE1:{{.*}}: warning: '[[FILE]]': invalid sframe section: unexpected end of data at offset 0x1 while reading [0x0, 0x4)40 41 - Name: .sframe_bad_magic42 Type: SHT_GNU_SFRAME43 Flags: [ SHF_ALLOC ]44 ContentArray: [ 0xde, 0xad, 0xbe, 0xef]45# CASE1-LABEL:SFrame section '.sframe_bad_magic' {46# CASE1:{{.*}}: warning: '[[FILE]]': invalid sframe section: invalid magic number (0xadde)47 48 - Name: .sframe_bad_version49 Type: SHT_GNU_SFRAME50 Flags: [ SHF_ALLOC ]51 ContentArray: [52 0xe2, 0xde, 0x01, 0x00 # Preamble (magic, version, flags)53 ]54# CASE1-LABEL:SFrame section '.sframe_bad_version' {55# CASE1:{{.*}}: warning: '[[FILE]]': invalid sframe section: invalid/unsupported version number (1)56 57 - Name: .sframe_6b58 Type: SHT_GNU_SFRAME59 Flags: [ SHF_ALLOC ]60 ContentArray: [61 0xe2, 0xde, 0x02, 0x00, # Preamble (magic, version, flags)62 0x01, 0x0263 ]64# CASE1-LABEL:SFrame section '.sframe_6b' {65# CASE1:{{.*}}: warning: '[[FILE]]': invalid sframe section: unexpected end of data at offset 0x6 while reading [0x0, 0x1c)66 67 - Name: .sframe_short_auxheader68 Type: SHT_GNU_SFRAME69 Flags: [ SHF_ALLOC ]70 ContentArray: [71 0xe2, 0xde, 0x02, 0x06, # Preamble (magic, version, flags)72 # Header:73 0x03, 0x42, 0x47, 0x08, # ABI, Fixed FP offset, Fixed RA Offset, AUX header length74 0x01, 0x00, 0x00, 0x00, # Number of FDEs75 0x10, 0x00, 0x00, 0x00, # Number of FREs76 0x00, 0x10, 0x00, 0x00, # FRE length77 0x00, 0x00, 0x00, 0x00, # FDE offset78 0x00, 0x01, 0x00, 0x00, # FRE offset79 0xde, 0xad, 0xbe, 0xef, # AUX header80 ]81# CASE1-LABEL:SFrame section '.sframe_short_auxheader' {82# CASE1: Header {83# CASE1-NEXT: Magic: 0xDEE284# CASE1-NEXT: Version: V2 (0x2)85# CASE1-NEXT: Flags [ (0x6)86# CASE1-NEXT: FDEFuncStartPCRel (0x4){{ *}}87# CASE1-NEXT: FramePointer (0x2){{ *}}88# CASE1-NEXT: ]89# CASE1-NEXT: ABI: AMD64EndianLittle (0x3)90# CASE1-NEXT: CFA fixed FP offset (unused): 6691# CASE1-NEXT: CFA fixed RA offset: 7192# CASE1-NEXT: Auxiliary header length: 893# CASE1-NEXT: Num FDEs: 194# CASE1-NEXT: Num FREs: 1695# CASE1-NEXT: FRE subsection length: 409696# CASE1-NEXT: FDE subsection offset: 097# CASE1-NEXT: FRE subsection offset: 25698# CASE1-NEXT:{{.*}}: warning: '[[FILE]]': unexpected end of data at offset 0x20 while reading [0x1c, 0x24)99# CASE1-NEXT: }100# CASE1-NEXT:{{.*}}: warning: '[[FILE]]': unexpected end of data at offset 0x20 while reading [0x24, 0x38)101# CASE1-NEXT:}102 103 - Name: .sframe_header104 Type: SHT_GNU_SFRAME105 Flags: [ SHF_ALLOC ]106 ContentArray: [107 0xe2, 0xde, 0x02, 0x06, # Preamble (magic, version, flags)108 # Header:109 0x03, 0x42, 0x47, 0x04, # ABI, Fixed FP offset, Fixed RA Offset, AUX header length110 0x00, 0x00, 0x00, 0x00, # Number of FDEs111 0x10, 0x00, 0x00, 0x00, # Number of FREs112 0x00, 0x10, 0x00, 0x00, # FRE length113 0x00, 0x00, 0x00, 0x00, # FDE offset114 0x00, 0x01, 0x00, 0x00, # FRE offset115 0xde, 0xad, 0xbe, 0xef, # AUX header116 ]117# CASE1-LABEL:SFrame section '.sframe_header' {118# CASE1: Header {119# CASE1-NEXT: Magic: 0xDEE2120# CASE1-NEXT: Version: V2 (0x2)121# CASE1-NEXT: Flags [ (0x6)122# CASE1-NEXT: FDEFuncStartPCRel (0x4){{ *}}123# CASE1-NEXT: FramePointer (0x2){{ *}}124# CASE1-NEXT: ]125# CASE1-NEXT: ABI: AMD64EndianLittle (0x3)126# CASE1-NEXT: CFA fixed FP offset (unused): 66127# CASE1-NEXT: CFA fixed RA offset: 71128# CASE1-NEXT: Auxiliary header length: 4129# CASE1-NEXT: Num FDEs: 0130# CASE1-NEXT: Num FREs: 16131# CASE1-NEXT: FRE subsection length: 4096132# CASE1-NEXT: FDE subsection offset: 0133# CASE1-NEXT: FRE subsection offset: 256134# CASE1-NEXT: Auxiliary header: [0xDE, 0xAD, 0xBE, 0xEF]135# CASE1-NEXT: }136# CASE1-NEXT: Function Index [137# CASE1-NEXT: ]138# CASE1-NEXT:}139 140--- !ELF141FileHeader:142 Class: ELFCLASS64143 Data: ELFDATA2MSB144 Type: ET_EXEC145Sections:146 - Name: .sframe147 Type: SHT_GNU_SFRAME148 Flags: [ SHF_ALLOC ]149 ContentArray: [150 0xde, 0xe2, 0x02, 0x01, # Preamble (magic, version, flags)151 # Header:152 0x01, 0x42, 0x47, 0x00, # ABI, Fixed FP offset, Fixed RA Offset, AUX header length153 0x00, 0x00, 0x00, 0x00, # Number of FDEs154 0x00, 0x00, 0x00, 0x10, # Number of FREs155 0x00, 0x00, 0x10, 0x00, # FRE length156 0x00, 0x00, 0x00, 0x00, # FDE offset157 0x00, 0x00, 0x01, 0x00, # FRE offset158 ]159# CASE2-LABEL:SFrame section '.sframe' {160# CASE2: Header {161# CASE2-NEXT: Magic: 0xDEE2162# CASE2-NEXT: Version: V2 (0x2)163# CASE2-NEXT: Flags [ (0x1)164# CASE2-NEXT: FDESorted (0x1){{ *}}165# CASE2-NEXT: ]166# CASE2-NEXT: ABI: AArch64EndianBig (0x1)167# CASE2-NEXT: CFA fixed FP offset (unused): 66168# CASE2-NEXT: CFA fixed RA offset (unused): 71169# CASE2-NEXT: Auxiliary header length: 0170# CASE2-NEXT: Num FDEs: 0171# CASE2-NEXT: Num FREs: 16172# CASE2-NEXT: FRE subsection length: 4096173# CASE2-NEXT: FDE subsection offset: 0174# CASE2-NEXT: FRE subsection offset: 256175# CASE2-NEXT: Auxiliary header: []176# CASE2-NEXT: }177# CASE2-NEXT: Function Index [178# CASE2-NEXT: ]179# CASE2-NEXT:}180 181--- !ELF182FileHeader:183 Class: ELFCLASS64184 Data: ELFDATA2MSB185 Type: ET_EXEC186Sections:187 - Name: .corrupted188 Type: SHT_GNU_SFRAME189 Flags: [ SHF_ALLOC ]190 ShName: 0x10000191# CASE3:{{.*}}: error: '[[FILE]]': a section [index 1] has an invalid sh_name (0x10000) offset which goes past the end of the section name string table192