diff --git a/libcxxabi/src/cxa_handlers.hpp b/libcxxabi/src/cxa_handlers.hpp index ce567ec14710..bfd5abe13195 100644 --- a/libcxxabi/src/cxa_handlers.hpp +++ b/libcxxabi/src/cxa_handlers.hpp @@ -13,6 +13,8 @@ #ifndef _CXA_HANDLERS_H #define _CXA_HANDLERS_H +#include <__cxxabi_config.h> + #include namespace std @@ -31,9 +33,9 @@ __terminate(terminate_handler func) _NOEXCEPT; extern "C" { -extern void (*__cxa_terminate_handler)(); -extern void (*__cxa_unexpected_handler)(); -extern void (*__cxa_new_handler)(); +_LIBCXXABI_DATA_VIS extern void (*__cxa_terminate_handler)(); +_LIBCXXABI_DATA_VIS extern void (*__cxa_unexpected_handler)(); +_LIBCXXABI_DATA_VIS extern void (*__cxa_new_handler)(); /* diff --git a/libcxxabi/src/private_typeinfo.cpp b/libcxxabi/src/private_typeinfo.cpp index 9804e161db30..73ef362aafc0 100644 --- a/libcxxabi/src/private_typeinfo.cpp +++ b/libcxxabi/src/private_typeinfo.cpp @@ -616,13 +616,11 @@ bool __pointer_to_member_type_info::can_catch_nested( // If there is a public path from (dynamic_ptr, dynamic_type) to // (static_ptr, static_type), then return dynamic_ptr. // Else return nullptr. -extern "C" -void* -__dynamic_cast(const void* static_ptr, - const __class_type_info* static_type, - const __class_type_info* dst_type, - std::ptrdiff_t src2dst_offset) -{ + +extern "C" _LIBCXXABI_FUNC_VIS void * +__dynamic_cast(const void *static_ptr, const __class_type_info *static_type, + const __class_type_info *dst_type, + std::ptrdiff_t src2dst_offset) { // Possible future optimization: Take advantage of src2dst_offset // Currently clang always sets src2dst_offset to -1 (no hint).