; Testing 32-bit and 64-bit exception section entries, no exception auxilliary ; entries should be produced as no debug information is specified. ; RUN: llc -mtriple=powerpc-ibm-aix-xcoff -filetype=obj -o %t_32.o < %s ; RUN: llvm-readobj --exception-section %t_32.o | FileCheck %s --check-prefix=EXCEPT ; RUN: llvm-readobj --section-headers %t_32.o | FileCheck %s --check-prefix=READ ; RUN: llvm-readobj --syms %t_32.o | FileCheck %s --check-prefix=SYMS ; RUN: llc -mtriple=powerpc64-unknown-aix -filetype=obj -o %t_64.o < %s ; RUN: llvm-readobj --exception-section %t_64.o | FileCheck %s --check-prefix=EXCEPT64 ; RUN: llvm-readobj --section-headers %t_64.o | FileCheck %s --check-prefix=READ64 ; RUN: llvm-readobj --syms %t_64.o | FileCheck %s --check-prefix=SYMS64 !1 = !{!"ppc-trap-reason", !"1", !"2"} declare void @llvm.ppc.trap(i32 %a) define dso_local void @sub_test() { call void @llvm.ppc.trap(i32 1), !annotation !1 ret void } define dso_local void @test__trap_annotation(i32 %a) { call void @llvm.ppc.trap(i32 %a), !annotation !1 call void @sub_test() call void @llvm.ppc.trap(i32 %a), !annotation !1 ret void } ; EXCEPT: Exception section { ; EXCEPT-NEXT: Symbol: .sub_test (3) ; EXCEPT-NEXT: LangID: 0 ; EXCEPT-NEXT: Reason: 0 ; EXCEPT-NEXT: Trap Instr Addr: 0x4 ; EXCEPT-NEXT: LangID: 1 ; EXCEPT-NEXT: Reason: 2 ; EXCEPT-NEXT: Symbol: .test__trap_annotation (6) ; EXCEPT-NEXT: LangID: 0 ; EXCEPT-NEXT: Reason: 0 ; EXCEPT-NEXT: Trap Instr Addr: 0x3C ; EXCEPT-NEXT: LangID: 1 ; EXCEPT-NEXT: Reason: 2 ; EXCEPT-NEXT: Trap Instr Addr: 0x44 ; EXCEPT-NEXT: LangID: 1 ; EXCEPT-NEXT: Reason: 2 ; EXCEPT-NEXT: } ; There are multiple "Section {" lines in the readobj output so we need to start this READ check ; on a unique line (Type: STYP_DATA (0x40)) so that the checks know where to start reading ; READ: Type: STYP_DATA (0x40) ; READ-NEXT: } ; READ-NEXT: Section { ; READ-NEXT: Index: 3 ; READ-NEXT: Name: .except ; READ-NEXT: PhysicalAddress: 0x0 ; READ-NEXT: VirtualAddress: 0x0 ; READ-NEXT: Size: 0x1E ; READ-NEXT: RawDataOffset: 0x12C ; READ-NEXT: RelocationPointer: 0x0 ; READ-NEXT: LineNumberPointer: 0x0 ; READ-NEXT: NumberOfRelocations: 0 ; READ-NEXT: NumberOfLineNumbers: 0 ; READ-NEXT: Type: STYP_EXCEPT (0x100) ; READ-NEXT: } ; READ-NEXT: ] ; SYMS: Index: [[#IND:]]{{.*}}{{[[:space:]] *}}Name: .sub_test ; SYMS-NEXT: Value (RelocatableAddress): 0x0 ; SYMS-NEXT: Section: .text ; SYMS-NEXT: Type: 0x20 ; SYMS-NEXT: StorageClass: C_EXT (0x2) ; SYMS-NEXT: NumberOfAuxEntries: 2 ; SYMS-NEXT: Function Auxiliary Entry { ; SYMS-NEXT: Index: [[#IND+1]] ; SYMS-NEXT: OffsetToExceptionTable: 0x12C ; SYMS-NEXT: SizeOfFunction: 0xC ; SYMS-NEXT: PointerToLineNum: 0x0 ; SYMS-NEXT: SymbolIndexOfNextBeyond: [[#IND+3]] ; SYMS-NEXT: } ; SYMS-NEXT: CSECT Auxiliary Entry { ; SYMS-NEXT: Index: [[#IND+2]] ; SYMS-NEXT: ContainingCsectSymbolIndex: 1 ; SYMS-NEXT: ParameterHashIndex: 0x0 ; SYMS-NEXT: TypeChkSectNum: 0x0 ; SYMS-NEXT: SymbolAlignmentLog2: 0 ; SYMS-NEXT: SymbolType: XTY_LD (0x2) ; SYMS-NEXT: StorageMappingClass: XMC_PR (0x0) ; SYMS-NEXT: StabInfoIndex: 0x0 ; SYMS-NEXT: StabSectNum: 0x0 ; SYMS-NEXT: } ; SYMS-NEXT: } ; SYMS-NEXT: Symbol { ; SYMS-NEXT: Index: [[#IND+3]] ; SYMS-NEXT: Name: .test__trap_annotation ; SYMS-NEXT: Value (RelocatableAddress): 0x28 ; SYMS-NEXT: Section: .text ; SYMS-NEXT: Type: 0x20 ; SYMS-NEXT: StorageClass: C_EXT (0x2) ; SYMS-NEXT: NumberOfAuxEntries: 2 ; SYMS-NEXT: Function Auxiliary Entry { ; SYMS-NEXT: Index: [[#IND+4]] ; SYMS-NEXT: OffsetToExceptionTable: 0x138 ; SYMS-NEXT: SizeOfFunction: 0x34 ; SYMS-NEXT: PointerToLineNum: 0x0 ; SYMS-NEXT: SymbolIndexOfNextBeyond: [[#IND+6]] ; SYMS-NEXT: } ; SYMS-NEXT: CSECT Auxiliary Entry { ; SYMS-NEXT: Index: [[#IND+5]] ; SYMS-NEXT: ContainingCsectSymbolIndex: 1 ; SYMS-NEXT: ParameterHashIndex: 0x0 ; SYMS-NEXT: TypeChkSectNum: 0x0 ; SYMS-NEXT: SymbolAlignmentLog2: 0 ; SYMS-NEXT: SymbolType: XTY_LD (0x2) ; SYMS-NEXT: StorageMappingClass: XMC_PR (0x0) ; SYMS-NEXT: StabInfoIndex: 0x0 ; SYMS-NEXT: StabSectNum: 0x0 ; SYMS-NEXT: } ; SYMS-NEXT: } ; EXCEPT64: Exception section { ; EXCEPT64-NEXT: Symbol: .sub_test (3) ; EXCEPT64-NEXT: LangID: 0 ; EXCEPT64-NEXT: Reason: 0 ; EXCEPT64-NEXT: Trap Instr Addr: 0x4 ; EXCEPT64-NEXT: LangID: 1 ; EXCEPT64-NEXT: Reason: 2 ; EXCEPT64-NEXT: Symbol: .test__trap_annotation (6) ; EXCEPT64-NEXT: LangID: 0 ; EXCEPT64-NEXT: Reason: 0 ; EXCEPT64-NEXT: Trap Instr Addr: 0x3C ; EXCEPT64-NEXT: LangID: 1 ; EXCEPT64-NEXT: Reason: 2 ; EXCEPT64-NEXT: Trap Instr Addr: 0x44 ; EXCEPT64-NEXT: LangID: 1 ; EXCEPT64-NEXT: Reason: 2 ; EXCEPT64-NEXT: } ; READ64: Type: STYP_DATA (0x40) ; READ64-NEXT: } ; READ64-NEXT: Section { ; READ64-NEXT: Index: 3 ; READ64-NEXT: Name: .except ; READ64-NEXT: PhysicalAddress: 0x0 ; READ64-NEXT: VirtualAddress: 0x0 ; READ64-NEXT: Size: 0x32 ; READ64-NEXT: RawDataOffset: 0x1A8 ; READ64-NEXT: RelocationPointer: 0x0 ; READ64-NEXT: LineNumberPointer: 0x0 ; READ64-NEXT: NumberOfRelocations: 0 ; READ64-NEXT: NumberOfLineNumbers: 0 ; READ64-NEXT: Type: STYP_EXCEPT (0x100) ; READ64-NEXT: } ; READ64-NEXT: ] ; SYMS64: Index: [[#IND:]]{{.*}}{{[[:space:]] *}}Name: .sub_test ; SYMS64-NEXT: Value (RelocatableAddress): 0x0 ; SYMS64-NEXT: Section: .text ; SYMS64-NEXT: Type: 0x0 ; SYMS64-NEXT: StorageClass: C_EXT (0x2) ; SYMS64-NEXT: NumberOfAuxEntries: 2 ; SYMS64-NEXT: Function Auxiliary Entry { ; SYMS64-NEXT: Index: [[#IND+1]] ; SYMS64-NEXT: SizeOfFunction: 0x18 ; SYMS64-NEXT: PointerToLineNum: 0x0 ; SYMS64-NEXT: SymbolIndexOfNextBeyond: [[#IND+3]] ; SYMS64-NEXT: Auxiliary Type: AUX_FCN (0xFE) ; SYMS64-NEXT: } ; SYMS64-NEXT: CSECT Auxiliary Entry { ; SYMS64-NEXT: Index: [[#IND+2]] ; SYMS64-NEXT: ContainingCsectSymbolIndex: 1 ; SYMS64-NEXT: ParameterHashIndex: 0x0 ; SYMS64-NEXT: TypeChkSectNum: 0x0 ; SYMS64-NEXT: SymbolAlignmentLog2: 0 ; SYMS64-NEXT: SymbolType: XTY_LD (0x2) ; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0) ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) ; SYMS64-NEXT: } ; SYMS64-NEXT: } ; SYMS64-NEXT: Symbol { ; SYMS64-NEXT: Index: [[#IND+3]] ; SYMS64-NEXT: Name: .test__trap_annotation ; SYMS64-NEXT: Value (RelocatableAddress): 0x28 ; SYMS64-NEXT: Section: .text ; SYMS64-NEXT: Type: 0x0 ; SYMS64-NEXT: StorageClass: C_EXT (0x2) ; SYMS64-NEXT: NumberOfAuxEntries: 2 ; SYMS64-NEXT: Function Auxiliary Entry { ; SYMS64-NEXT: Index: [[#IND+4]] ; SYMS64-NEXT: SizeOfFunction: 0x68 ; SYMS64-NEXT: PointerToLineNum: 0x0 ; SYMS64-NEXT: SymbolIndexOfNextBeyond: [[#IND+6]] ; SYMS64-NEXT: Auxiliary Type: AUX_FCN (0xFE) ; SYMS64-NEXT: } ; SYMS64-NEXT: CSECT Auxiliary Entry { ; SYMS64-NEXT: Index: [[#IND+5]] ; SYMS64-NEXT: ContainingCsectSymbolIndex: 1 ; SYMS64-NEXT: ParameterHashIndex: 0x0 ; SYMS64-NEXT: TypeChkSectNum: 0x0 ; SYMS64-NEXT: SymbolAlignmentLog2: 0 ; SYMS64-NEXT: SymbolType: XTY_LD (0x2) ; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0) ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB) ; SYMS64-NEXT: } ; SYMS64-NEXT: }