73 lines · plain
1# REQUIRES: asserts2 3# RUN: llvm-mc -triple=riscv32-linux-gnu -mattr=+relax -filetype=obj -o %t.32.o %s4# RUN: llvm-jitlink -noexec -phony-externals -debug-only=jitlink %t.32.o 2>&1 | \5# RUN: FileCheck %s6 7# RUN: llvm-mc -triple=riscv64-linux-gnu -mattr=+relax -filetype=obj -o %t.64.o %s8# RUN: llvm-jitlink -noexec -phony-externals -debug-only=jitlink %t.64.o 2>&1 | \9# RUN: FileCheck %s10 11# Check that splitting of eh-frame sections works.12#13# CHECK: DWARFRecordSectionSplitter: Processing .eh_frame...14# CHECK: Processing block at15# CHECK: Processing CFI record at16# CHECK: Processing CFI record at17# CHECK: EHFrameEdgeFixer: Processing .eh_frame in "{{.*}}"...18# CHECK: Processing block at19# CHECK: Record is CIE20# CHECK: Processing block at21# CHECK: Record is FDE22# CHECK: Adding edge at {{.*}} to CIE at: {{.*}}23# CHECK: Existing edge at {{.*}} to PC begin at {{.*}}24# CHECK: Adding keep-alive edge from target at {{.*}} to FDE at {{.*}}25# CHECK: Processing block at26# CHECK: Record is FDE27# CHECK: Adding edge at {{.*}} to CIE at: {{.*}}28# CHECK: Existing edge at {{.*}} to PC begin at {{.*}}29# CHECK: Adding keep-alive edge from target at {{.*}} to FDE at {{.*}}30 31## This is "int main { throw 1; }" compiled for riscv32. We use the 32-bit32## version because it is also legal for riscv64.33 .text34 .globl main35 .p2align 136 .type main,@function37main:38 .cfi_startproc39 addi sp, sp, -1640 .cfi_def_cfa_offset 1641 sw ra, 12(sp)42 .cfi_offset ra, -443 li a0, 444 call __cxa_allocate_exception45 li a1, 146 sw a1, 0(a0)47 lga a1, _ZTIi48 li a2, 049 call __cxa_throw50.Lfunc_end0:51 .size main, .Lfunc_end0-main52 .cfi_endproc53 54 .globl dup55 .p2align 156 .type dup,@function57dup:58 .cfi_startproc59 addi sp, sp, -1660 .cfi_def_cfa_offset 1661 sw ra, 12(sp)62 .cfi_offset ra, -463 li a0, 464 call __cxa_allocate_exception65 li a1, 166 sw a1, 0(a0)67 lga a1, _ZTIi68 li a2, 069 call __cxa_throw70.Lfunc_end1:71 .size dup, .Lfunc_end1-dup72 .cfi_endproc73