|
|
|
/*
|
|
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "cxa_default_handlers.cpp"
|
|
|
|
#include "cxa_exception_storage.cpp"
|
|
|
|
#include "cxa_guard.cpp"
|
|
|
|
#include "cxa_handlers.cpp"
|
|
|
|
#include "llair_intrinsics.h"
|
|
|
|
#ifdef EXCEPTIONS
|
|
|
|
#include "cxa_exception.cpp"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
|
|
|
void abort_message(const char* format, ...) { abort(); }
|
|
|
|
|
|
|
|
#ifndef EXCEPTIONS
|
|
|
|
|
|
|
|
__attribute__((noreturn)) void __llair_throw(void* thrown_exception) {
|
|
|
|
__llair_unreachable();
|
|
|
|
}
|
|
|
|
|
|
|
|
void* __cxa_allocate_exception(size_t thrown_size) throw() {
|
|
|
|
__llair_unreachable();
|
|
|
|
}
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
__attribute__((always_inline)) _Unwind_Reason_Code
|
|
|
|
_Unwind_RaiseException(_Unwind_Exception* unwind_exception) {
|
|
|
|
__llair_throw(thrown_object_from_cxa_exception(
|
|
|
|
abi::cxa_exception_from_exception_unwind_exception(unwind_exception)));
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|