xref: /aosp_15_r20/external/libcxxabi/include/__cxxabi_config.h (revision c05d8e5dc3e10f6ce4317e8bc22cc4a25f55fa94)
1*c05d8e5dSAndroid Build Coastguard Worker //===-------------------------- __cxxabi_config.h -------------------------===//
2*c05d8e5dSAndroid Build Coastguard Worker //
3*c05d8e5dSAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*c05d8e5dSAndroid Build Coastguard Worker //
5*c05d8e5dSAndroid Build Coastguard Worker // This file is dual licensed under the MIT and the University of Illinois Open
6*c05d8e5dSAndroid Build Coastguard Worker // Source Licenses. See LICENSE.TXT for details.
7*c05d8e5dSAndroid Build Coastguard Worker //
8*c05d8e5dSAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*c05d8e5dSAndroid Build Coastguard Worker 
10*c05d8e5dSAndroid Build Coastguard Worker #ifndef ____CXXABI_CONFIG_H
11*c05d8e5dSAndroid Build Coastguard Worker #define ____CXXABI_CONFIG_H
12*c05d8e5dSAndroid Build Coastguard Worker 
13*c05d8e5dSAndroid Build Coastguard Worker #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) &&                 \
14*c05d8e5dSAndroid Build Coastguard Worker     !defined(__ARM_DWARF_EH__)
15*c05d8e5dSAndroid Build Coastguard Worker #define _LIBCXXABI_ARM_EHABI
16*c05d8e5dSAndroid Build Coastguard Worker #endif
17*c05d8e5dSAndroid Build Coastguard Worker 
18*c05d8e5dSAndroid Build Coastguard Worker #if !defined(__has_attribute)
19*c05d8e5dSAndroid Build Coastguard Worker #define __has_attribute(_attribute_) 0
20*c05d8e5dSAndroid Build Coastguard Worker #endif
21*c05d8e5dSAndroid Build Coastguard Worker 
22*c05d8e5dSAndroid Build Coastguard Worker #if defined(_WIN32)
23*c05d8e5dSAndroid Build Coastguard Worker  #if defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
24*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_HIDDEN
25*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_DATA_VIS
26*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_FUNC_VIS
27*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_TYPE_VIS
28*c05d8e5dSAndroid Build Coastguard Worker  #elif defined(_LIBCXXABI_BUILDING_LIBRARY)
29*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_HIDDEN
30*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_DATA_VIS __declspec(dllexport)
31*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_FUNC_VIS __declspec(dllexport)
32*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_TYPE_VIS __declspec(dllexport)
33*c05d8e5dSAndroid Build Coastguard Worker  #else
34*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_HIDDEN
35*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_DATA_VIS __declspec(dllimport)
36*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_FUNC_VIS __declspec(dllimport)
37*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_TYPE_VIS __declspec(dllimport)
38*c05d8e5dSAndroid Build Coastguard Worker  #endif
39*c05d8e5dSAndroid Build Coastguard Worker #else
40*c05d8e5dSAndroid Build Coastguard Worker  #if !defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
41*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_HIDDEN __attribute__((__visibility__("hidden")))
42*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_DATA_VIS __attribute__((__visibility__("default")))
43*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_FUNC_VIS __attribute__((__visibility__("default")))
44*c05d8e5dSAndroid Build Coastguard Worker   #if __has_attribute(__type_visibility__)
45*c05d8e5dSAndroid Build Coastguard Worker    #define _LIBCXXABI_TYPE_VIS __attribute__((__type_visibility__("default")))
46*c05d8e5dSAndroid Build Coastguard Worker   #else
47*c05d8e5dSAndroid Build Coastguard Worker    #define _LIBCXXABI_TYPE_VIS __attribute__((__visibility__("default")))
48*c05d8e5dSAndroid Build Coastguard Worker   #endif
49*c05d8e5dSAndroid Build Coastguard Worker  #else
50*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_HIDDEN
51*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_DATA_VIS
52*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_FUNC_VIS
53*c05d8e5dSAndroid Build Coastguard Worker   #define _LIBCXXABI_TYPE_VIS
54*c05d8e5dSAndroid Build Coastguard Worker  #endif
55*c05d8e5dSAndroid Build Coastguard Worker #endif
56*c05d8e5dSAndroid Build Coastguard Worker 
57*c05d8e5dSAndroid Build Coastguard Worker #if defined(_WIN32)
58*c05d8e5dSAndroid Build Coastguard Worker #define _LIBCXXABI_WEAK
59*c05d8e5dSAndroid Build Coastguard Worker #else
60*c05d8e5dSAndroid Build Coastguard Worker #define _LIBCXXABI_WEAK __attribute__((__weak__))
61*c05d8e5dSAndroid Build Coastguard Worker #endif
62*c05d8e5dSAndroid Build Coastguard Worker 
63*c05d8e5dSAndroid Build Coastguard Worker #if defined(__clang__)
64*c05d8e5dSAndroid Build Coastguard Worker #define _LIBCXXABI_COMPILER_CLANG
65*c05d8e5dSAndroid Build Coastguard Worker #endif
66*c05d8e5dSAndroid Build Coastguard Worker 
67*c05d8e5dSAndroid Build Coastguard Worker #if __has_attribute(__no_sanitize__) && defined(_LIBCXXABI_COMPILER_CLANG)
68*c05d8e5dSAndroid Build Coastguard Worker #define _LIBCXXABI_NO_CFI __attribute__((__no_sanitize__("cfi")))
69*c05d8e5dSAndroid Build Coastguard Worker #else
70*c05d8e5dSAndroid Build Coastguard Worker #define _LIBCXXABI_NO_CFI
71*c05d8e5dSAndroid Build Coastguard Worker #endif
72*c05d8e5dSAndroid Build Coastguard Worker 
73*c05d8e5dSAndroid Build Coastguard Worker #if defined(__arm__)
74*c05d8e5dSAndroid Build Coastguard Worker #  define _LIBCXXABI_GUARD_ABI_ARM
75*c05d8e5dSAndroid Build Coastguard Worker #endif
76*c05d8e5dSAndroid Build Coastguard Worker 
77*c05d8e5dSAndroid Build Coastguard Worker #endif // ____CXXABI_CONFIG_H
78