
Reland `sigsetjmp` patches with build fixes. We wrap every target replying on the epilogue library into conditional checks. --------- Co-authored-by: Petr Hosek <phosek@google.com>
38 lines
1.4 KiB
C++
38 lines
1.4 KiB
C++
//===-- Implementation header for setjmp ------------------------*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIBC_SRC_SETJMP_SETJMP_IMPL_H
|
|
#define LLVM_LIBC_SRC_SETJMP_SETJMP_IMPL_H
|
|
|
|
// This header has the _impl prefix in its name to avoid conflict with the
|
|
// public header setjmp.h which is also included. here.
|
|
#include "hdr/types/jmp_buf.h"
|
|
#include "src/__support/macros/config.h"
|
|
#include "src/__support/macros/properties/compiler.h"
|
|
|
|
namespace LIBC_NAMESPACE_DECL {
|
|
|
|
// TODO(https://github.com/llvm/llvm-project/issues/112427)
|
|
// Some of the architecture-specific definitions are marked `naked`, which in
|
|
// GCC implies `nothrow`.
|
|
//
|
|
// Right now, our aliases aren't marked `nothrow`, so we wind up in a situation
|
|
// where clang will emit -Wmissing-exception-spec if we add `nothrow` here, but
|
|
// GCC will emit -Wmissing-attributes here without `nothrow`. We need to update
|
|
// LLVM_LIBC_FUNCTION to denote when a function throws or not.
|
|
|
|
#ifdef LIBC_COMPILER_IS_GCC
|
|
[[gnu::nothrow]]
|
|
#endif
|
|
[[gnu::returns_twice]] int
|
|
setjmp(jmp_buf buf);
|
|
|
|
} // namespace LIBC_NAMESPACE_DECL
|
|
|
|
#endif // LLVM_LIBC_SRC_SETJMP_SETJMP_IMPL_H
|