201 lines · plain
1; Testing 32-bit and 64-bit exception section entries, no exception auxilliary2; entries should be produced as no debug information is specified.3; RUN: llc -mtriple=powerpc-ibm-aix-xcoff -mcpu=ppc -filetype=obj -o %t_32.o < %s4; RUN: llvm-readobj --exception-section %t_32.o | FileCheck %s --check-prefix=EXCEPT5; RUN: llvm-readobj --section-headers %t_32.o | FileCheck %s --check-prefix=READ6; RUN: llvm-readobj --syms %t_32.o | FileCheck %s --check-prefix=SYMS7 8; RUN: llc -mtriple=powerpc64-unknown-aix -mcpu=ppc -filetype=obj -o %t_64.o < %s9; RUN: llvm-readobj --exception-section %t_64.o | FileCheck %s --check-prefix=EXCEPT6410; RUN: llvm-readobj --section-headers %t_64.o | FileCheck %s --check-prefix=READ6411; RUN: llvm-readobj --syms %t_64.o | FileCheck %s --check-prefix=SYMS6412 13!1 = !{!"ppc-trap-reason", !"1", !"2"}14declare void @llvm.ppc.trap(i32 %a)15define dso_local void @sub_test() {16 call void @llvm.ppc.trap(i32 1), !annotation !117 ret void18}19define dso_local void @test__trap_annotation(i32 %a) {20 call void @llvm.ppc.trap(i32 %a), !annotation !121 call void @sub_test()22 call void @llvm.ppc.trap(i32 %a), !annotation !123 ret void24}25 26; EXCEPT: Exception section {27; EXCEPT-NEXT: Symbol: .sub_test28; EXCEPT-NEXT: LangID: 029; EXCEPT-NEXT: Reason: 030; EXCEPT-NEXT: Trap Instr Addr: 0x431; EXCEPT-NEXT: LangID: 132; EXCEPT-NEXT: Reason: 233; EXCEPT-NEXT: Symbol: .test__trap_annotation34; EXCEPT-NEXT: LangID: 035; EXCEPT-NEXT: Reason: 036; EXCEPT-NEXT: Trap Instr Addr: 0x3C37; EXCEPT-NEXT: LangID: 138; EXCEPT-NEXT: Reason: 239; EXCEPT-NEXT: Trap Instr Addr: 0x4440; EXCEPT-NEXT: LangID: 141; EXCEPT-NEXT: Reason: 242; EXCEPT-NEXT: }43 44; There are multiple "Section {" lines in the readobj output so we need to start this READ check45; on a unique line (Type: STYP_DATA (0x40)) so that the checks know where to start reading46; READ: Type: STYP_DATA (0x40)47; READ-NEXT: }48; READ-NEXT: Section {49; READ-NEXT: Index: 350; READ-NEXT: Name: .except51; READ-NEXT: PhysicalAddress: 0x052; READ-NEXT: VirtualAddress: 0x053; READ-NEXT: Size: 0x1E54; READ-NEXT: RawDataOffset: 0x12C55; READ-NEXT: RelocationPointer: 0x056; READ-NEXT: LineNumberPointer: 0x057; READ-NEXT: NumberOfRelocations: 058; READ-NEXT: NumberOfLineNumbers: 059; READ-NEXT: Type: STYP_EXCEPT (0x100)60; READ-NEXT: }61; READ-NEXT: ]62 63; SYMS: Index: [[#IND:]]{{.*}}{{[[:space:]] *}}Name: .sub_test64; SYMS-NEXT: Value (RelocatableAddress): 0x065; SYMS-NEXT: Section: .text66; SYMS-NEXT: Type: 0x2067; SYMS-NEXT: StorageClass: C_EXT (0x2)68; SYMS-NEXT: NumberOfAuxEntries: 269; SYMS-NEXT: Function Auxiliary Entry {70; SYMS-NEXT: Index: [[#IND+1]]71; SYMS-NEXT: OffsetToExceptionTable: 0x12C72; SYMS-NEXT: SizeOfFunction: 0xC73; SYMS-NEXT: PointerToLineNum: 0x074; SYMS-NEXT: SymbolIndexOfNextBeyond: [[#IND+3]]75; SYMS-NEXT: }76; SYMS-NEXT: CSECT Auxiliary Entry {77; SYMS-NEXT: Index: [[#IND+2]]78; SYMS-NEXT: ContainingCsectSymbolIndex: [[#IND-2]]79; SYMS-NEXT: ParameterHashIndex: 0x080; SYMS-NEXT: TypeChkSectNum: 0x081; SYMS-NEXT: SymbolAlignmentLog2: 082; SYMS-NEXT: SymbolType: XTY_LD (0x2)83; SYMS-NEXT: StorageMappingClass: XMC_PR (0x0)84; SYMS-NEXT: StabInfoIndex: 0x085; SYMS-NEXT: StabSectNum: 0x086; SYMS-NEXT: }87; SYMS-NEXT: }88; SYMS-NEXT: Symbol {89; SYMS-NEXT: Index: [[#IND+3]]90; SYMS-NEXT: Name: .test__trap_annotation91; SYMS-NEXT: Value (RelocatableAddress): 0x2892; SYMS-NEXT: Section: .text93; SYMS-NEXT: Type: 0x2094; SYMS-NEXT: StorageClass: C_EXT (0x2)95; SYMS-NEXT: NumberOfAuxEntries: 296; SYMS-NEXT: Function Auxiliary Entry {97; SYMS-NEXT: Index: [[#IND+4]]98; SYMS-NEXT: OffsetToExceptionTable: 0x13899; SYMS-NEXT: SizeOfFunction: 0x34100; SYMS-NEXT: PointerToLineNum: 0x0101; SYMS-NEXT: SymbolIndexOfNextBeyond: [[#IND+6]]102; SYMS-NEXT: }103; SYMS-NEXT: CSECT Auxiliary Entry {104; SYMS-NEXT: Index: [[#IND+5]]105; SYMS-NEXT: ContainingCsectSymbolIndex: [[#IND-2]]106; SYMS-NEXT: ParameterHashIndex: 0x0107; SYMS-NEXT: TypeChkSectNum: 0x0108; SYMS-NEXT: SymbolAlignmentLog2: 0109; SYMS-NEXT: SymbolType: XTY_LD (0x2)110; SYMS-NEXT: StorageMappingClass: XMC_PR (0x0)111; SYMS-NEXT: StabInfoIndex: 0x0112; SYMS-NEXT: StabSectNum: 0x0113; SYMS-NEXT: }114; SYMS-NEXT: }115 116; EXCEPT64: Exception section {117; EXCEPT64-NEXT: Symbol: .sub_test118; EXCEPT64-NEXT: LangID: 0119; EXCEPT64-NEXT: Reason: 0120; EXCEPT64-NEXT: Trap Instr Addr: 0x4121; EXCEPT64-NEXT: LangID: 1122; EXCEPT64-NEXT: Reason: 2123; EXCEPT64-NEXT: Symbol: .test__trap_annotation124; EXCEPT64-NEXT: LangID: 0125; EXCEPT64-NEXT: Reason: 0126; EXCEPT64-NEXT: Trap Instr Addr: 0x3C127; EXCEPT64-NEXT: LangID: 1128; EXCEPT64-NEXT: Reason: 2129; EXCEPT64-NEXT: Trap Instr Addr: 0x44130; EXCEPT64-NEXT: LangID: 1131; EXCEPT64-NEXT: Reason: 2132; EXCEPT64-NEXT: }133 134; READ64: Type: STYP_DATA (0x40)135; READ64-NEXT: }136; READ64-NEXT: Section {137; READ64-NEXT: Index: 3138; READ64-NEXT: Name: .except139; READ64-NEXT: PhysicalAddress: 0x0140; READ64-NEXT: VirtualAddress: 0x0141; READ64-NEXT: Size: 0x32142; READ64-NEXT: RawDataOffset: 0x1A8143; READ64-NEXT: RelocationPointer: 0x0144; READ64-NEXT: LineNumberPointer: 0x0145; READ64-NEXT: NumberOfRelocations: 0146; READ64-NEXT: NumberOfLineNumbers: 0147; READ64-NEXT: Type: STYP_EXCEPT (0x100)148; READ64-NEXT: }149; READ64-NEXT: ]150 151; SYMS64: Index: [[#IND:]]{{.*}}{{[[:space:]] *}}Name: .sub_test152; SYMS64-NEXT: Value (RelocatableAddress): 0x0153; SYMS64-NEXT: Section: .text154; SYMS64-NEXT: Type: 0x0155; SYMS64-NEXT: StorageClass: C_EXT (0x2)156; SYMS64-NEXT: NumberOfAuxEntries: 2157; SYMS64-NEXT: Function Auxiliary Entry {158; SYMS64-NEXT: Index: [[#IND+1]]159; SYMS64-NEXT: SizeOfFunction: 0x18160; SYMS64-NEXT: PointerToLineNum: 0x0161; SYMS64-NEXT: SymbolIndexOfNextBeyond: [[#IND+3]]162; SYMS64-NEXT: Auxiliary Type: AUX_FCN (0xFE)163; SYMS64-NEXT: }164; SYMS64-NEXT: CSECT Auxiliary Entry {165; SYMS64-NEXT: Index: [[#IND+2]]166; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#IND-2]]167; SYMS64-NEXT: ParameterHashIndex: 0x0168; SYMS64-NEXT: TypeChkSectNum: 0x0169; SYMS64-NEXT: SymbolAlignmentLog2: 0170; SYMS64-NEXT: SymbolType: XTY_LD (0x2)171; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0)172; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)173; SYMS64-NEXT: }174; SYMS64-NEXT: }175; SYMS64-NEXT: Symbol {176; SYMS64-NEXT: Index: [[#IND+3]]177; SYMS64-NEXT: Name: .test__trap_annotation178; SYMS64-NEXT: Value (RelocatableAddress): 0x28179; SYMS64-NEXT: Section: .text180; SYMS64-NEXT: Type: 0x0181; SYMS64-NEXT: StorageClass: C_EXT (0x2)182; SYMS64-NEXT: NumberOfAuxEntries: 2183; SYMS64-NEXT: Function Auxiliary Entry {184; SYMS64-NEXT: Index: [[#IND+4]]185; SYMS64-NEXT: SizeOfFunction: 0x68186; SYMS64-NEXT: PointerToLineNum: 0x0187; SYMS64-NEXT: SymbolIndexOfNextBeyond: [[#IND+6]]188; SYMS64-NEXT: Auxiliary Type: AUX_FCN (0xFE)189; SYMS64-NEXT: }190; SYMS64-NEXT: CSECT Auxiliary Entry {191; SYMS64-NEXT: Index: [[#IND+5]]192; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#IND-2]]193; SYMS64-NEXT: ParameterHashIndex: 0x0194; SYMS64-NEXT: TypeChkSectNum: 0x0195; SYMS64-NEXT: SymbolAlignmentLog2: 0196; SYMS64-NEXT: SymbolType: XTY_LD (0x2)197; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0)198; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)199; SYMS64-NEXT: }200; SYMS64-NEXT: }201