CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
108 lines
2.9 KiB
ArmAsm
108 lines
2.9 KiB
ArmAsm
# REQUIRES: x86, aarch64
|
|
## Test that __eh_frame CIE/FDE ordering is preserved even when
|
|
## priority-based section sorting (from BP compression sort, order files,
|
|
## etc.) would otherwise reorder input sections. CIE records must precede
|
|
## the FDE records that reference them; reordering breaks CIE pointer
|
|
## resolution.
|
|
|
|
## x86_64
|
|
# RUN: llvm-mc -filetype=obj -emit-compact-unwind-non-canonical=true -triple=x86_64-apple-macos10.15 %s -o %t-x86_64.o
|
|
# RUN: %lld -lSystem -lc++ %t-x86_64.o -o %t-x86_64 --bp-compression-sort=both
|
|
# RUN: llvm-objdump --dwarf=frames %t-x86_64 2>&1 | FileCheck %s --implicit-check-not=error --implicit-check-not=warning
|
|
|
|
## arm64
|
|
# RUN: llvm-mc -filetype=obj -emit-compact-unwind-non-canonical=true -triple=arm64-apple-macos11.0 %s -o %t-arm64.o
|
|
# RUN: %lld -arch arm64 -lSystem -lc++ %t-arm64.o -o %t-arm64 --bp-compression-sort=both
|
|
# RUN: llvm-objdump --dwarf=frames %t-arm64 2>&1 | FileCheck %s --implicit-check-not=error --implicit-check-not=warning
|
|
|
|
## Verify that __eh_frame starts with a CIE (not an FDE), contains both
|
|
## CIEs and FDEs, and that no parse errors occur. The test uses two
|
|
## personality functions, producing two CIE groups (CIE_A + FDEs, CIE_B +
|
|
## FDEs). The --implicit-check-not flags above ensure no FDE fails to
|
|
## resolve its CIE pointer.
|
|
# CHECK: .eh_frame contents:
|
|
# CHECK: {{[0-9a-f]+}} {{.*}} CIE
|
|
# CHECK: {{[0-9a-f]+}} {{.*}} FDE
|
|
# CHECK: {{[0-9a-f]+}} {{.*}} FDE
|
|
# CHECK: {{[0-9a-f]+}} {{.*}} FDE
|
|
# CHECK: {{[0-9a-f]+}} {{.*}} FDE
|
|
|
|
.globl _my_personality_a, _my_personality_b, _main
|
|
|
|
.text
|
|
## _func_a uses cfi_escape to force DWARF unwind (can't be compact-encoded).
|
|
## Uses personality A -> produces CIE_A + FDE for _func_a.
|
|
.p2align 2
|
|
_func_a:
|
|
.cfi_startproc
|
|
.cfi_personality 155, _my_personality_a
|
|
.cfi_lsda 16, Lexception_a
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_escape 0x2e, 0x10
|
|
ret
|
|
.cfi_endproc
|
|
|
|
## _func_b also uses personality A + cfi_escape -> reuses CIE_A, new FDE.
|
|
.p2align 2
|
|
_func_b:
|
|
.cfi_startproc
|
|
.cfi_personality 155, _my_personality_a
|
|
.cfi_lsda 16, Lexception_b
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_escape 0x2e, 0x10
|
|
ret
|
|
.cfi_endproc
|
|
|
|
## _func_c uses personality B + cfi_escape -> produces CIE_B + FDE.
|
|
.p2align 2
|
|
_func_c:
|
|
.cfi_startproc
|
|
.cfi_personality 155, _my_personality_b
|
|
.cfi_lsda 16, Lexception_c
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_escape 0x2e, 0x10
|
|
ret
|
|
.cfi_endproc
|
|
|
|
## _func_d uses personality B + cfi_escape -> reuses CIE_B, new FDE.
|
|
.p2align 2
|
|
_func_d:
|
|
.cfi_startproc
|
|
.cfi_personality 155, _my_personality_b
|
|
.cfi_lsda 16, Lexception_d
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_escape 0x2e, 0x10
|
|
ret
|
|
.cfi_endproc
|
|
|
|
.p2align 2
|
|
_my_personality_a:
|
|
ret
|
|
|
|
.p2align 2
|
|
_my_personality_b:
|
|
ret
|
|
|
|
.p2align 2
|
|
_main:
|
|
ret
|
|
|
|
.section __TEXT,__gcc_except_tab
|
|
GCC_except_table_a:
|
|
Lexception_a:
|
|
.byte 255
|
|
|
|
GCC_except_table_b:
|
|
Lexception_b:
|
|
.byte 255
|
|
|
|
GCC_except_table_c:
|
|
Lexception_c:
|
|
.byte 255
|
|
|
|
GCC_except_table_d:
|
|
Lexception_d:
|
|
.byte 255
|
|
|
|
.subsections_via_symbols
|