| ; 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 |
| ; 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 |
| ; 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: [[#IND-2]] |
| ; 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: [[#IND-2]] |
| ; 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 |
| ; 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 |
| ; 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: [[#IND-2]] |
| ; 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: [[#IND-2]] |
| ; 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: } |