aboutsummaryrefslogtreecommitdiff
path: root/libunwind/test
diff options
context:
space:
mode:
authorDaniel Kiss <daniel.kiss@arm.com>2022-05-15 21:42:07 +0200
committerDaniel Kiss <daniel.kiss@arm.com>2022-05-15 21:42:07 +0200
commitfd864238fca1435cb1ceffdca0d4294cf3419ac7 (patch)
tree292b62f5fb72e7b8e6f15bafac2c6ce5ddd5772a /libunwind/test
parentea18987094eff5a5835135da1f472d2e7bf6c68e (diff)
downloadllvm-fd864238fca1435cb1ceffdca0d4294cf3419ac7.zip
llvm-fd864238fca1435cb1ceffdca0d4294cf3419ac7.tar.gz
llvm-fd864238fca1435cb1ceffdca0d4294cf3419ac7.tar.bz2
Revert "[libunwind][AArch64] Add support for DWARF expression for RA_SIGN_STATE."
This reverts commit f6366ef7f4f3cf1182fd70e0c50a9fa54374b612.
Diffstat (limited to 'libunwind/test')
-rw-r--r--libunwind/test/aarch64.ra_sign_state.pass.cpp63
1 files changed, 0 insertions, 63 deletions
diff --git a/libunwind/test/aarch64.ra_sign_state.pass.cpp b/libunwind/test/aarch64.ra_sign_state.pass.cpp
deleted file mode 100644
index 1e09c93..0000000
--- a/libunwind/test/aarch64.ra_sign_state.pass.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-// -*- C++ -*-
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// REQUIRES: linux && target={{aarch64-.+}}
-
-// This test ensures the .cfi_negate_ra_state the RA_SIGN_STATE pseudo register
-// could be set directly set by a DWARF expression and the unwinder handles it
-// correctly. The two directives can't be mixed in one CIE/FDE sqeuence.
-
-#include <stdlib.h>
-
-__attribute__((noinline, target("branch-protection=pac-ret+leaf")))
-void bar() {
- // ".cfi_negate_ra_state" is emitted by the compiler.
- throw 1;
-}
-
-__attribute__((noinline, target("branch-protection=none")))
-void foo() {
- // Here a DWARF expression sets RA_SIGN_STATE.
- // The LR is signed manually and stored on the stack.
- asm volatile(
- ".cfi_escape 0x16," // DW_CFA_val_expression
- "34," // REG_34(RA_SIGN_STATE)
- "1," // expression_length(1)
- "0x31\n" // DW_OP_lit1
- "add sp, sp, 16\n" // Restore SP's value before the stack frame is
- // created.
- "paciasp\n" // Sign the LR.
- "str lr, [sp, -0x8]\n" // Overwrite LR on the stack.
- "sub sp, sp, 16\n" // Restore SP's value.
- );
- bar();
- _Exit(-1);
-}
-
-__attribute__((noinline, target("branch-protection=pac-ret")))
-void bazz() {
- // ".cfi_negate_ra_state" is emitted by the compiler.
- try {
- foo();
- } catch (int i) {
- if (i == 1)
- throw i;
- throw 2;
- }
-}
-
-int main() {
- try {
- bazz();
- } catch (int i) {
- if (i == 1)
- _Exit(0);
- }
- return -1;
-}