1*4f6757ceSJonas Hahnfeld# REQUIRES: asserts 2*4f6757ceSJonas Hahnfeld 3*4f6757ceSJonas Hahnfeld# RUN: llvm-mc -triple=riscv32-linux-gnu -mattr=+relax -filetype=obj -o %t.32.o %s 4*4f6757ceSJonas Hahnfeld# RUN: llvm-jitlink -noexec -phony-externals -debug-only=jitlink %t.32.o 2>&1 | \ 5*4f6757ceSJonas Hahnfeld# RUN: FileCheck %s 6*4f6757ceSJonas Hahnfeld 7*4f6757ceSJonas Hahnfeld# RUN: llvm-mc -triple=riscv64-linux-gnu -mattr=+relax -filetype=obj -o %t.64.o %s 8*4f6757ceSJonas Hahnfeld# RUN: llvm-jitlink -noexec -phony-externals -debug-only=jitlink %t.64.o 2>&1 | \ 9*4f6757ceSJonas Hahnfeld# RUN: FileCheck %s 10*4f6757ceSJonas Hahnfeld 11*4f6757ceSJonas Hahnfeld# Check that splitting of eh-frame sections works. 12*4f6757ceSJonas Hahnfeld# 13*4f6757ceSJonas Hahnfeld# CHECK: DWARFRecordSectionSplitter: Processing .eh_frame... 14*4f6757ceSJonas Hahnfeld# CHECK: Processing block at 15*4f6757ceSJonas Hahnfeld# CHECK: Processing CFI record at 16*4f6757ceSJonas Hahnfeld# CHECK: Processing CFI record at 17*4f6757ceSJonas Hahnfeld# CHECK: EHFrameEdgeFixer: Processing .eh_frame in "{{.*}}"... 18*4f6757ceSJonas Hahnfeld# CHECK: Processing block at 19*4f6757ceSJonas Hahnfeld# CHECK: Record is CIE 20*4f6757ceSJonas Hahnfeld# CHECK: Processing block at 21*4f6757ceSJonas Hahnfeld# CHECK: Record is FDE 22*4f6757ceSJonas Hahnfeld# CHECK: Adding edge at {{.*}} to CIE at: {{.*}} 23*4f6757ceSJonas Hahnfeld# CHECK: Existing edge at {{.*}} to PC begin at {{.*}} 24*4f6757ceSJonas Hahnfeld# CHECK: Adding keep-alive edge from target at {{.*}} to FDE at {{.*}} 25*4f6757ceSJonas Hahnfeld# CHECK: Processing block at 26*4f6757ceSJonas Hahnfeld# CHECK: Record is FDE 27*4f6757ceSJonas Hahnfeld# CHECK: Adding edge at {{.*}} to CIE at: {{.*}} 28*4f6757ceSJonas Hahnfeld# CHECK: Existing edge at {{.*}} to PC begin at {{.*}} 29*4f6757ceSJonas Hahnfeld# CHECK: Adding keep-alive edge from target at {{.*}} to FDE at {{.*}} 30*4f6757ceSJonas Hahnfeld 31*4f6757ceSJonas Hahnfeld## This is "int main { throw 1; }" compiled for riscv32. We use the 32-bit 32*4f6757ceSJonas Hahnfeld## version because it is also legal for riscv64. 33*4f6757ceSJonas Hahnfeld .text 34*4f6757ceSJonas Hahnfeld .globl main 35*4f6757ceSJonas Hahnfeld .p2align 1 36*4f6757ceSJonas Hahnfeld .type main,@function 37*4f6757ceSJonas Hahnfeldmain: 38*4f6757ceSJonas Hahnfeld .cfi_startproc 39*4f6757ceSJonas Hahnfeld addi sp, sp, -16 40*4f6757ceSJonas Hahnfeld .cfi_def_cfa_offset 16 41*4f6757ceSJonas Hahnfeld sw ra, 12(sp) 42*4f6757ceSJonas Hahnfeld .cfi_offset ra, -4 43*4f6757ceSJonas Hahnfeld li a0, 4 44*4f6757ceSJonas Hahnfeld call __cxa_allocate_exception 45*4f6757ceSJonas Hahnfeld li a1, 1 46*4f6757ceSJonas Hahnfeld sw a1, 0(a0) 47*4f6757ceSJonas Hahnfeld lga a1, _ZTIi 48*4f6757ceSJonas Hahnfeld li a2, 0 49*4f6757ceSJonas Hahnfeld call __cxa_throw 50*4f6757ceSJonas Hahnfeld.Lfunc_end0: 51*4f6757ceSJonas Hahnfeld .size main, .Lfunc_end0-main 52*4f6757ceSJonas Hahnfeld .cfi_endproc 53*4f6757ceSJonas Hahnfeld 54*4f6757ceSJonas Hahnfeld .globl dup 55*4f6757ceSJonas Hahnfeld .p2align 1 56*4f6757ceSJonas Hahnfeld .type dup,@function 57*4f6757ceSJonas Hahnfelddup: 58*4f6757ceSJonas Hahnfeld .cfi_startproc 59*4f6757ceSJonas Hahnfeld addi sp, sp, -16 60*4f6757ceSJonas Hahnfeld .cfi_def_cfa_offset 16 61*4f6757ceSJonas Hahnfeld sw ra, 12(sp) 62*4f6757ceSJonas Hahnfeld .cfi_offset ra, -4 63*4f6757ceSJonas Hahnfeld li a0, 4 64*4f6757ceSJonas Hahnfeld call __cxa_allocate_exception 65*4f6757ceSJonas Hahnfeld li a1, 1 66*4f6757ceSJonas Hahnfeld sw a1, 0(a0) 67*4f6757ceSJonas Hahnfeld lga a1, _ZTIi 68*4f6757ceSJonas Hahnfeld li a2, 0 69*4f6757ceSJonas Hahnfeld call __cxa_throw 70*4f6757ceSJonas Hahnfeld.Lfunc_end1: 71*4f6757ceSJonas Hahnfeld .size dup, .Lfunc_end1-dup 72*4f6757ceSJonas Hahnfeld .cfi_endproc 73