10 #ifndef ____CXXABI_CONFIG_H
11 #define ____CXXABI_CONFIG_H
13 #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
14 !defined(__ARM_DWARF_EH__)
15 #define _LIBCXXABI_ARM_EHABI
18 #if !defined(__has_attribute)
19 #define __has_attribute(_attribute_) 0
23 #if defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
24 #define _LIBCXXABI_HIDDEN
25 #define _LIBCXXABI_DATA_VIS
26 #define _LIBCXXABI_FUNC_VIS
27 #define _LIBCXXABI_TYPE_VIS
28 #elif defined(_LIBCXXABI_BUILDING_LIBRARY)
29 #define _LIBCXXABI_HIDDEN
30 #define _LIBCXXABI_DATA_VIS __declspec(dllexport)
31 #define _LIBCXXABI_FUNC_VIS __declspec(dllexport)
32 #define _LIBCXXABI_TYPE_VIS __declspec(dllexport)
34 #define _LIBCXXABI_HIDDEN
35 #define _LIBCXXABI_DATA_VIS __declspec(dllimport)
36 #define _LIBCXXABI_FUNC_VIS __declspec(dllimport)
37 #define _LIBCXXABI_TYPE_VIS __declspec(dllimport)
40 #if !defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
41 #define _LIBCXXABI_HIDDEN __attribute__((__visibility__("hidden")))
42 #define _LIBCXXABI_DATA_VIS __attribute__((__visibility__("default")))
43 #define _LIBCXXABI_FUNC_VIS __attribute__((__visibility__("default")))
44 #if __has_attribute(__type_visibility__)
45 #define _LIBCXXABI_TYPE_VIS __attribute__((__type_visibility__("default")))
47 #define _LIBCXXABI_TYPE_VIS __attribute__((__visibility__("default")))
50 #define _LIBCXXABI_HIDDEN
51 #define _LIBCXXABI_DATA_VIS
52 #define _LIBCXXABI_FUNC_VIS
53 #define _LIBCXXABI_TYPE_VIS
58 #define _LIBCXXABI_WEAK
60 #define _LIBCXXABI_WEAK __attribute__((__weak__))
63 #if defined(__clang__)
64 #define _LIBCXXABI_COMPILER_CLANG
67 #if __has_attribute(__no_sanitize__) && defined(_LIBCXXABI_COMPILER_CLANG)
68 #define _LIBCXXABI_NO_CFI __attribute__((__no_sanitize__("cfi")))
70 #define _LIBCXXABI_NO_CFI
73 #endif // ____CXXABI_CONFIG_H