forked from OSchip/llvm-project
60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
//===------------------------- cxa_exception.cpp --------------------------===//
|
|
//
|
|
// 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
|
|
//
|
|
//
|
|
// This file implements the "Exception Handling APIs"
|
|
// https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// Support functions for the no-exceptions libc++ library
|
|
|
|
#include "cxxabi.h"
|
|
|
|
#include <exception> // for std::terminate
|
|
#include "cxa_exception.h"
|
|
#include "cxa_handlers.h"
|
|
|
|
namespace __cxxabiv1 {
|
|
|
|
extern "C" {
|
|
|
|
void
|
|
__cxa_increment_exception_refcount(void *thrown_object) throw() {
|
|
if (thrown_object != nullptr)
|
|
std::terminate();
|
|
}
|
|
|
|
void
|
|
__cxa_decrement_exception_refcount(void *thrown_object) throw() {
|
|
if (thrown_object != nullptr)
|
|
std::terminate();
|
|
}
|
|
|
|
|
|
void *__cxa_current_primary_exception() throw() { return nullptr; }
|
|
|
|
void
|
|
__cxa_rethrow_primary_exception(void* thrown_object) {
|
|
if (thrown_object != nullptr)
|
|
std::terminate();
|
|
}
|
|
|
|
bool
|
|
__cxa_uncaught_exception() throw() { return false; }
|
|
|
|
unsigned int
|
|
__cxa_uncaught_exceptions() throw() { return 0; }
|
|
|
|
} // extern "C"
|
|
|
|
// provide dummy implementations for the 'no exceptions' case.
|
|
uint64_t __getExceptionClass (const _Unwind_Exception*) { return 0; }
|
|
void __setExceptionClass ( _Unwind_Exception*, uint64_t) {}
|
|
bool __isOurExceptionClass(const _Unwind_Exception*) { return false; }
|
|
|
|
} // abi
|