327 lines · yaml
1## Check that obj2yaml can parse auxiliary symbols for XCOFF object file correctly.2 3## 32-bit4# RUN: yaml2obj %s --docnum=1 -o %t325# RUN: obj2yaml %t32 | FileCheck %s --check-prefix=CHECK326 7# CHECK32: --- !XCOFF8# CHECK32-NEXT: FileHeader:9# CHECK32-NEXT: MagicNumber: 0x1DF10# CHECK32-NEXT: NumberOfSections: 011# CHECK32-NEXT: CreationTime: 012# CHECK32-NEXT: OffsetToSymbolTable: 0x1413# CHECK32-NEXT: EntriesInSymbolTable: 1314# CHECK32-NEXT: AuxiliaryHeaderSize: 015# CHECK32-NEXT: Flags: 0x016# CHECK32-NEXT: Symbols:17# CHECK32-NEXT: - Name: ''18# CHECK32-NEXT: Value: 0x019# CHECK32-NEXT: Section: N_UNDEF20# CHECK32-NEXT: Type: 0x021# CHECK32-NEXT: StorageClass: C_FILE22# CHECK32-NEXT: NumberOfAuxEntries: 123# CHECK32-NEXT: AuxEntries:24# CHECK32-NEXT: - Type: AUX_FILE25# CHECK32-NEXT: FileNameOrString: FileName26# CHECK32-NEXT: FileStringType: XFT_CD27# CHECK32-NEXT: - Name: ''28# CHECK32-NEXT: Value: 0x029# CHECK32-NEXT: Section: N_UNDEF30# CHECK32-NEXT: Type: 0x031# CHECK32-NEXT: StorageClass: C_HIDEXT32# CHECK32-NEXT: NumberOfAuxEntries: 133# CHECK32-NEXT: AuxEntries:34# CHECK32-NEXT: - Type: AUX_CSECT35# CHECK32-NEXT: ParameterHashIndex: 136# CHECK32-NEXT: TypeChkSectNum: 237# CHECK32-NEXT: SymbolType: XTY_SD38# CHECK32-NEXT: SymbolAlignment: 539# CHECK32-NEXT: StorageMappingClass: XMC_PR40# CHECK32-NEXT: SectionOrLength: 341# CHECK32-NEXT: StabInfoIndex: 442# CHECK32-NEXT: StabSectNum: 543# CHECK32-NEXT: - Name: ''44# CHECK32-NEXT: Value: 0x045# CHECK32-NEXT: Section: N_UNDEF46# CHECK32-NEXT: Type: 0x047# CHECK32-NEXT: StorageClass: C_EXT48# CHECK32-NEXT: NumberOfAuxEntries: 249# CHECK32-NEXT: AuxEntries:50# CHECK32-NEXT: - Type: AUX_FCN51# CHECK32-NEXT: OffsetToExceptionTbl: 152# CHECK32-NEXT: SizeOfFunction: 253# CHECK32-NEXT: SymIdxOfNextBeyond: 354# CHECK32-NEXT: PtrToLineNum: 455# CHECK32-NEXT: - Type: AUX_CSECT56# CHECK32-NEXT: ParameterHashIndex: 157# CHECK32-NEXT: TypeChkSectNum: 258# CHECK32-NEXT: SymbolType: XTY_SD59# CHECK32-NEXT: SymbolAlignment: 260# CHECK32-NEXT: StorageMappingClass: XMC_PR61# CHECK32-NEXT: SectionOrLength: 462# CHECK32-NEXT: StabInfoIndex: 563# CHECK32-NEXT: StabSectNum: 664# CHECK32-NEXT: - Name: ''65# CHECK32-NEXT: Value: 0x066# CHECK32-NEXT: Section: N_UNDEF67# CHECK32-NEXT: Type: 0x068# CHECK32-NEXT: StorageClass: C_DWARF69# CHECK32-NEXT: NumberOfAuxEntries: 170# CHECK32-NEXT: AuxEntries:71# CHECK32-NEXT: - Type: AUX_SECT72# CHECK32-NEXT: LengthOfSectionPortion: 4473# CHECK32-NEXT: NumberOfRelocEnt: 174# CHECK32-NEXT: - Name: ''75# CHECK32-NEXT: Value: 0x076# CHECK32-NEXT: Section: N_UNDEF77# CHECK32-NEXT: Type: 0x078# CHECK32-NEXT: StorageClass: C_STAT79# CHECK32-NEXT: NumberOfAuxEntries: 180# CHECK32-NEXT: AuxEntries:81# CHECK32-NEXT: - Type: AUX_STAT82# CHECK32-NEXT: SectionLength: 183# CHECK32-NEXT: NumberOfRelocEnt: 284# CHECK32-NEXT: NumberOfLineNum: 385# CHECK32-NEXT: - Name: ''86# CHECK32-NEXT: Value: 0x087# CHECK32-NEXT: Section: N_UNDEF88# CHECK32-NEXT: Type: 0x089# CHECK32-NEXT: StorageClass: C_BLOCK90# CHECK32-NEXT: NumberOfAuxEntries: 191# CHECK32-NEXT: AuxEntries:92# CHECK32-NEXT: - Type: AUX_SYM93# CHECK32-NEXT: LineNumHi: 194# CHECK32-NEXT: LineNumLo: 295 96--- !XCOFF97FileHeader:98 MagicNumber: 0x01DF99Symbols:100 - StorageClass: C_FILE101 AuxEntries:102 - Type: AUX_FILE103 FileNameOrString: FileName104 FileStringType: XFT_CD105 - StorageClass: C_HIDEXT106 AuxEntries:107 - Type: AUX_CSECT108 ParameterHashIndex: 1109 TypeChkSectNum: 2110 SymbolAlignmentAndType: 41111 SectionOrLength: 3112 StabInfoIndex: 4113 StabSectNum: 5114 - StorageClass: C_EXT115 AuxEntries:116 - Type: AUX_FCN117 OffsetToExceptionTbl: 1118 SizeOfFunction: 2119 SymIdxOfNextBeyond: 3120 PtrToLineNum: 4121 - Type: AUX_CSECT122 ParameterHashIndex: 1123 TypeChkSectNum: 2124 SymbolAlignmentAndType: 17125 SectionOrLength: 4126 StabInfoIndex: 5127 StabSectNum: 6128 - StorageClass: C_DWARF129 AuxEntries:130 - Type: AUX_SECT131 LengthOfSectionPortion: 44132 NumberOfRelocEnt: 1133 - StorageClass: C_STAT134 AuxEntries:135 - Type: AUX_STAT136 SectionLength: 1137 NumberOfRelocEnt: 2138 NumberOfLineNum: 3139 - StorageClass: C_BLOCK140 AuxEntries:141 - Type: AUX_SYM142 LineNumHi: 1143 LineNumLo: 2144 145## 64-bit146# RUN: yaml2obj %s --docnum=2 -o %t64147# RUN: obj2yaml %t64 | FileCheck %s --check-prefix=CHECK64148 149# CHECK64: --- !XCOFF150# CHECK64-NEXT: FileHeader:151# CHECK64-NEXT: MagicNumber: 0x1F7152# CHECK64-NEXT: NumberOfSections: 0153# CHECK64-NEXT: CreationTime: 0154# CHECK64-NEXT: OffsetToSymbolTable: 0x18155# CHECK64-NEXT: EntriesInSymbolTable: 12156# CHECK64-NEXT: AuxiliaryHeaderSize: 0157# CHECK64-NEXT: Flags: 0x0158# CHECK64-NEXT: Symbols:159# CHECK64-NEXT: - Name: ''160# CHECK64-NEXT: Value: 0x0161# CHECK64-NEXT: Section: N_UNDEF162# CHECK64-NEXT: Type: 0x0163# CHECK64-NEXT: StorageClass: C_FILE164# CHECK64-NEXT: NumberOfAuxEntries: 1165# CHECK64-NEXT: AuxEntries:166# CHECK64-NEXT: - Type: AUX_FILE167# CHECK64-NEXT: FileNameOrString: FileName168# CHECK64-NEXT: FileStringType: XFT_CD169# CHECK64-NEXT: - Name: ''170# CHECK64-NEXT: Value: 0x0171# CHECK64-NEXT: Section: N_UNDEF172# CHECK64-NEXT: Type: 0x0173# CHECK64-NEXT: StorageClass: C_HIDEXT174# CHECK64-NEXT: NumberOfAuxEntries: 1175# CHECK64-NEXT: AuxEntries:176# CHECK64-NEXT: - Type: AUX_CSECT177# CHECK64-NEXT: ParameterHashIndex: 1178# CHECK64-NEXT: TypeChkSectNum: 2179# CHECK64-NEXT: SymbolType: XTY_SD180# CHECK64-NEXT: SymbolAlignment: 5181# CHECK64-NEXT: StorageMappingClass: XMC_PR182# CHECK64-NEXT: SectionOrLengthLo: 3183# CHECK64-NEXT: SectionOrLengthHi: 4184# CHECK64-NEXT: - Name: ''185# CHECK64-NEXT: Value: 0x0186# CHECK64-NEXT: Section: N_UNDEF187# CHECK64-NEXT: Type: 0x0188# CHECK64-NEXT: StorageClass: C_EXT189# CHECK64-NEXT: NumberOfAuxEntries: 3190# CHECK64-NEXT: AuxEntries:191# CHECK64-NEXT: - Type: AUX_FCN192# CHECK64-NEXT: SizeOfFunction: 3193# CHECK64-NEXT: SymIdxOfNextBeyond: 2194# CHECK64-NEXT: PtrToLineNum: 1195# CHECK64-NEXT: - Type: AUX_EXCEPT196# CHECK64-NEXT: OffsetToExceptionTbl: 1197# CHECK64-NEXT: SizeOfFunction: 2198# CHECK64-NEXT: SymIdxOfNextBeyond: 3199# CHECK64-NEXT: - Type: AUX_CSECT200# CHECK64-NEXT: ParameterHashIndex: 1201# CHECK64-NEXT: TypeChkSectNum: 2202# CHECK64-NEXT: SymbolType: XTY_SD203# CHECK64-NEXT: SymbolAlignment: 2204# CHECK64-NEXT: StorageMappingClass: XMC_PR205# CHECK64-NEXT: SectionOrLengthLo: 3206# CHECK64-NEXT: SectionOrLengthHi: 4207# CHECK64-NEXT: - Name: ''208# CHECK64-NEXT: Value: 0x0209# CHECK64-NEXT: Section: N_UNDEF210# CHECK64-NEXT: Type: 0x0211# CHECK64-NEXT: StorageClass: C_DWARF212# CHECK64-NEXT: NumberOfAuxEntries: 1213# CHECK64-NEXT: AuxEntries:214# CHECK64-NEXT: - Type: AUX_SECT215# CHECK64-NEXT: LengthOfSectionPortion: 44216# CHECK64-NEXT: NumberOfRelocEnt: 1217# CHECK64-NEXT: - Name: ''218# CHECK64-NEXT: Value: 0x0219# CHECK64-NEXT: Section: N_UNDEF220# CHECK64-NEXT: Type: 0x0221# CHECK64-NEXT: StorageClass: C_BLOCK222# CHECK64-NEXT: NumberOfAuxEntries: 1223# CHECK64-NEXT: AuxEntries:224# CHECK64-NEXT: - Type: AUX_SYM225# CHECK64-NEXT: LineNum: 1226 227--- !XCOFF228FileHeader:229 MagicNumber: 0x1F7230Symbols:231 - StorageClass: C_FILE232 AuxEntries:233 - Type: AUX_FILE234 FileNameOrString: FileName235 FileStringType: XFT_CD236 - StorageClass: C_HIDEXT237 AuxEntries:238 - Type: AUX_CSECT239 ParameterHashIndex: 1240 TypeChkSectNum: 2241 SymbolAlignmentAndType: 41242 SectionOrLengthLo: 3243 SectionOrLengthHi: 4244 - StorageClass: C_EXT245 AuxEntries:246 - Type: AUX_FCN247 SizeOfFunction: 3248 SymIdxOfNextBeyond: 2249 PtrToLineNum: 1250 - Type: AUX_EXCEPT251 OffsetToExceptionTbl: 1252 SizeOfFunction: 2253 SymIdxOfNextBeyond: 3254 - Type: AUX_CSECT255 ParameterHashIndex: 1256 TypeChkSectNum: 2257 SymbolAlignmentAndType: 17258 SectionOrLengthLo: 3259 SectionOrLengthHi: 4260 - StorageClass: C_DWARF261 AuxEntries:262 - Type: AUX_SECT263 LengthOfSectionPortion: 44264 NumberOfRelocEnt: 1265 - StorageClass: C_BLOCK266 AuxEntries:267 - Type: AUX_SYM268 LineNum: 1269 270## Check that error messages are reported appropriately.271 272# RUN: yaml2obj %s --docnum=3 -o - | not obj2yaml 2>&1 | FileCheck %s --check-prefix=ERROR1273# ERROR1: failed to parse symbol "SYM_STAT" with index of 1: expected 1 aux symbol for C_STAT, while got 2274 275--- !XCOFF276FileHeader:277 MagicNumber: 0x1DF278Symbols:279 - Name: SYM280 - Name: SYM_STAT281 StorageClass: C_STAT282 NumberOfAuxEntries: 2283 AuxEntries:284 - Type: AUX_STAT285 - Type: AUX_STAT286 287# RUN: yaml2obj %s --docnum=4 -o - | not obj2yaml 2>&1 | FileCheck %s --check-prefix=ERROR2288# ERROR2: failed to parse symbol "SYM_BLOCK" with index of 0: expected 1 aux symbol for C_BLOCK or C_FCN, while got 2289 290--- !XCOFF291FileHeader:292 MagicNumber: 0x1DF293Symbols:294 - Name: SYM_BLOCK295 StorageClass: C_BLOCK296 NumberOfAuxEntries: 2297 AuxEntries:298 - Type: AUX_SYM299 - Type: AUX_SYM300 301# RUN: yaml2obj %s --docnum=5 -o - | not obj2yaml 2>&1 | FileCheck %s --check-prefix=ERROR3302# ERROR3: failed to parse symbol "SYM_DWARF" with index of 0: expected 1 aux symbol for C_DWARF, while got 2303 304--- !XCOFF305FileHeader:306 MagicNumber: 0x1DF307Symbols:308 - Name: SYM_DWARF309 StorageClass: C_DWARF310 NumberOfAuxEntries: 2311 AuxEntries:312 - Type: AUX_SECT313 - Type: AUX_SECT314 315# RUN: yaml2obj %s --docnum=6 -o - | not obj2yaml 2>&1 | FileCheck %s --check-prefix=ERROR4316# ERROR4: failed to parse symbol "SYM_EXT" with index of 0: invalid auxiliary symbol type: 252317 318--- !XCOFF319FileHeader:320 MagicNumber: 0x1F7321Symbols:322 - Name: SYM_EXT323 StorageClass: C_EXT324 AuxEntries:325 - Type: AUX_FILE326 - Type: AUX_CSECT327