brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 004029c Raw
47 lines · cpp
1// -*- C++ -*-2//===----------------------------------------------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10// Ensure that functions marked as signal frames are reported as such.11 12// TODO: Investigate this failure on Apple13// XFAIL: target={{.+}}-apple-{{.+}}14 15// TODO: Figure out why this fails with Memory Sanitizer.16// XFAIL: msan17 18// UNSUPPORTED: libunwind-arm-ehabi19 20// The AIX assembler does not support CFI directives, which21// are necessary to run this test.22// UNSUPPORTED: target={{.*}}-aix{{.*}}23 24// Windows doesn't generally use CFI directives. However, i68625// mingw targets do use DWARF (where CFI directives are supported).26// UNSUPPORTED: target={{x86_64|arm.*|aarch64}}-{{.*}}-windows-{{.*}}27 28#undef NDEBUG29#include <assert.h>30#include <stdlib.h>31#include <libunwind.h>32 33void test() {34  asm(".cfi_signal_frame");35  unw_cursor_t cursor;36  unw_context_t uc;37  unw_getcontext(&uc);38  unw_init_local(&cursor, &uc);39  assert(unw_step(&cursor) > 0);40  assert(unw_is_signal_frame(&cursor));41}42 43int main(int, char**) {44  test();45  return 0;46}47