120 lines
2.6 KiB
ArmAsm
120 lines
2.6 KiB
ArmAsm
# REQUIRES: asserts
|
|
# UNSUPPORTED: system-windows
|
|
# RUN: llvm-mc -triple=x86_64-unknown-linux -position-independent \
|
|
# RUN: -filetype=obj -o %t %s
|
|
# RUN: llvm-jitlink -debug-only=jitlink -define-abs bar=0x01 \
|
|
# RUN: -define-abs _ZTIi=0x02 -noexec %t 2>&1 | FileCheck %s
|
|
#
|
|
# FIXME: This test should run on windows. Investigate spurious
|
|
# 'note: command had no output on stdout or stderr' errors, then re-enable.
|
|
#
|
|
# Check that a basic .eh-frame section is recognized and parsed. We
|
|
# Expect to see two FDEs with corresponding keep-alive edges.
|
|
#
|
|
# CHECK: Adding keep-alive edge from target at {{.*}} to FDE at
|
|
# CHECK: Adding keep-alive edge from target at {{.*}} to FDE at
|
|
|
|
.text
|
|
.file "exceptions.cpp"
|
|
.globl foo
|
|
.p2align 4, 0x90
|
|
.type foo,@function
|
|
foo:
|
|
.cfi_startproc
|
|
|
|
pushq %rax
|
|
.cfi_def_cfa_offset 16
|
|
movl $4, %edi
|
|
callq __cxa_allocate_exception@PLT
|
|
movl $1, (%rax)
|
|
movq _ZTIi@GOTPCREL(%rip), %rsi
|
|
movq %rax, %rdi
|
|
xorl %edx, %edx
|
|
callq __cxa_throw@PLT
|
|
.Lfunc_end0:
|
|
.size foo, .Lfunc_end0-foo
|
|
.cfi_endproc
|
|
|
|
.globl main
|
|
.p2align 4, 0x90
|
|
.type main,@function
|
|
main:
|
|
.Lfunc_begin0:
|
|
.cfi_startproc
|
|
.cfi_personality 155, DW.ref.__gxx_personality_v0
|
|
.cfi_lsda 27, .Lexception0
|
|
|
|
pushq %rbx
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset %rbx, -16
|
|
xorl %ebx, %ebx
|
|
.Ltmp0:
|
|
callq bar@PLT
|
|
.Ltmp1:
|
|
|
|
movl %ebx, %eax
|
|
popq %rbx
|
|
.cfi_def_cfa_offset 8
|
|
retq
|
|
.LBB1_1:
|
|
.cfi_def_cfa_offset 16
|
|
.Ltmp2:
|
|
movq %rax, %rdi
|
|
callq __cxa_begin_catch@PLT
|
|
callq __cxa_end_catch@PLT
|
|
movl $1, %ebx
|
|
movl %ebx, %eax
|
|
popq %rbx
|
|
.cfi_def_cfa_offset 8
|
|
retq
|
|
.Lfunc_end1:
|
|
.size main, .Lfunc_end1-main
|
|
.cfi_endproc
|
|
.section .gcc_except_table,"a",@progbits
|
|
.p2align 2
|
|
GCC_except_table1:
|
|
.Lexception0:
|
|
.byte 255
|
|
.byte 156
|
|
.uleb128 .Lttbase0-.Lttbaseref0
|
|
.Lttbaseref0:
|
|
.byte 1
|
|
.uleb128 .Lcst_end0-.Lcst_begin0
|
|
.Lcst_begin0:
|
|
.uleb128 .Ltmp0-.Lfunc_begin0
|
|
.uleb128 .Ltmp1-.Ltmp0
|
|
.uleb128 .Ltmp2-.Lfunc_begin0
|
|
.byte 1
|
|
.uleb128 .Ltmp1-.Lfunc_begin0
|
|
.uleb128 .Lfunc_end1-.Ltmp1
|
|
.byte 0
|
|
.byte 0
|
|
.Lcst_end0:
|
|
.byte 1
|
|
|
|
.byte 0
|
|
.p2align 2
|
|
|
|
.Ltmp3:
|
|
.quad .L_ZTIi.DW.stub-.Ltmp3
|
|
.Lttbase0:
|
|
.p2align 2
|
|
|
|
.data
|
|
.p2align 3
|
|
.L_ZTIi.DW.stub:
|
|
.quad _ZTIi
|
|
.hidden DW.ref.__gxx_personality_v0
|
|
.weak DW.ref.__gxx_personality_v0
|
|
.section .data.DW.ref.__gxx_personality_v0,"aGw",@progbits,DW.ref.__gxx_personality_v0,comdat
|
|
.p2align 3
|
|
.type DW.ref.__gxx_personality_v0,@object
|
|
.size DW.ref.__gxx_personality_v0, 8
|
|
DW.ref.__gxx_personality_v0:
|
|
.quad __gxx_personality_v0
|
|
.ident "clang version 12.0.0 (git@github.com:llvm/llvm-project.git afd483e57d166418e94a65bd9716e7dc4c114eed)"
|
|
.section ".note.GNU-stack","",@progbits
|
|
.addrsig
|
|
.addrsig_sym __gxx_personality_v0
|
|
.addrsig_sym _ZTIi
|