201 lines
7.6 KiB
LLVM
201 lines
7.6 KiB
LLVM
; 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: }
|