4 // Pick up any OS-specific definitions.
5 #include <bits/os_defines.h>
7 // Pick up any CPU-specific definitions.
8 #include <bits/cpu_defines.h>
10 // The current version of the C++ library in compressed ISO date format.
11 #define __GLIBCXX__ 20090321
14 #define __GXX_WEAK__ 1
15 #define _GLIBCXX_GTHREAD_USE_WEAK 1
18 #define _GLIBCXX_HAVE_MBSTATE_T 1
19 #define _GLIBCXX_HAVE_WCHAR_H 1
22 // Macros for visibility.
23 // _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
24 // _GLIBCXX_VISIBILITY_ATTR
25 #define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY default
27 #if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
28 # define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
30 # define _GLIBCXX_VISIBILITY_ATTR(V)
33 // Macros for deprecated.
34 // _GLIBCXX_DEPRECATED
35 // _GLIBCXX_DEPRECATED_ATTR
36 #ifndef _GLIBCXX_DEPRECATED
37 # define _GLIBCXX_DEPRECATED 1
40 #if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
41 # define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__))
43 # define _GLIBCXX_DEPRECATED_ATTR
46 // Macros for activating various namespace association modes.
47 // _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
48 // _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
49 // _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
51 // Guide to libstdc++ namespaces.
56 namespace __parallel { }
57 namespace __norm { } // __normative, __shadow, __replaced
58 namespace __cxx1998 { }
65 # define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1
68 #ifdef _GLIBCXX_PARALLEL
69 # define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1
72 // works with gcc 4.3.3
73 //#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 1
75 #define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
77 // Defined if any namespace association modes are active.
78 #if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
79 || _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \
80 || _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
81 # define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1
84 // Macros for namespace scope. Either namespace std:: or the name
85 // of some nested namespace within it.
91 // Macros for enclosing namespaces and possibly nested namespaces.
92 // _GLIBCXX_BEGIN_NAMESPACE
93 // _GLIBCXX_END_NAMESPACE
94 // _GLIBCXX_BEGIN_NESTED_NAMESPACE
95 // _GLIBCXX_END_NESTED_NAMESPACE
96 // _GLIBCXX_BEGIN_POTENTIAL_NESTED_NAMESPACE
97 // _GLIBCXX_END_POTENTIAL_NESTED_NAMESPACE
98 #ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION
99 # define _GLIBCXX_STD_D _GLIBCXX_STD
100 # define _GLIBCXX_STD_P _GLIBCXX_STD
101 # define _GLIBCXX_STD std
102 # define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X)
103 # define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
104 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
105 # define _GLIBCXX_END_NAMESPACE }
108 # if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else
109 # define _GLIBCXX_STD_D _GLIBCXX_STD
110 # define _GLIBCXX_STD_P _GLIBCXX_STD
111 # define _GLIBCXX_STD _6
112 # define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6)
113 # define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
117 # if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
118 # define _GLIBCXX_STD_D __norm
119 # define _GLIBCXX_STD_P _GLIBCXX_STD
120 # define _GLIBCXX_STD __cxx1998
121 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
122 # define _GLIBCXX_END_NAMESPACE }
123 # define _GLIBCXX_EXTERN_TEMPLATE 0
127 # if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
128 # define _GLIBCXX_STD_D _GLIBCXX_STD
129 # define _GLIBCXX_STD_P __norm
130 # define _GLIBCXX_STD __cxx1998
131 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
132 # define _GLIBCXX_END_NAMESPACE }
133 # define _GLIBCXX_EXTERN_TEMPLATE 0
137 # if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
138 # define _GLIBCXX_STD_D __norm
139 # define _GLIBCXX_STD_P __norm
140 # define _GLIBCXX_STD __cxx1998
141 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
142 # define _GLIBCXX_END_NAMESPACE }
143 # define _GLIBCXX_EXTERN_TEMPLATE 0
146 # if __NO_INLINE__ && !__GXX_WEAK__
147 # warning currently using namespace associated mode which may fail \
148 without inlining due to lack of weak symbols
151 # define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) {
152 # define _GLIBCXX_END_NESTED_NAMESPACE } }
155 // Namespace associations for debug mode.
156 #if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
160 namespace __debug { }
161 namespace __cxx1998 { }
163 using namespace __debug __attribute__ ((strong));
164 using namespace __cxx1998 __attribute__ ((strong));
168 // Namespace associations for parallel mode.
169 #if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
173 namespace __parallel { }
174 namespace __cxx1998 { }
176 using namespace __parallel __attribute__ ((strong));
177 using namespace __cxx1998 __attribute__ ((strong));
181 // Namespace associations for versioning mode.
182 #if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
186 using namespace _6 __attribute__ ((strong));
192 using namespace _6 __attribute__ ((strong));
200 using namespace _6 __attribute__ ((strong));
205 // Define if compatibility should be provided for -mlong-double-64.
206 #undef _GLIBCXX_LONG_DOUBLE_COMPAT
208 // XXX GLIBCXX_ABI Deprecated
209 // Namespace associations for long double 128 mode.
210 _GLIBCXX_BEGIN_NAMESPACE(std)
211 #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
212 # define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
213 # define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
214 # define _GLIBCXX_END_LDBL_NAMESPACE }
215 namespace __gnu_cxx_ldbl128 { }
216 using namespace __gnu_cxx_ldbl128 __attribute__((__strong__));
218 # define _GLIBCXX_LDBL_NAMESPACE
219 # define _GLIBCXX_BEGIN_LDBL_NAMESPACE
220 # define _GLIBCXX_END_LDBL_NAMESPACE
222 _GLIBCXX_END_NAMESPACE
225 // Allow use of "export template." This is currently not a feature
226 // that g++ supports.
227 // #define _GLIBCXX_EXPORT_TEMPLATE 1
229 // Allow use of the GNU syntax extension, "extern template." This
230 // extension is fully documented in the g++ manual, but in a nutshell,
231 // it inhibits all implicit instantiations and is used throughout the
232 // library to avoid multiple weak definitions for required types that
233 // are already explicitly instantiated in the library binary. This
234 // substantially reduces the binary size of resulting executables.
235 #ifndef _GLIBCXX_EXTERN_TEMPLATE
236 # define _GLIBCXX_EXTERN_TEMPLATE 1
240 // Certain function definitions that are meant to be overridable from
241 // user code are decorated with this macro. For some targets, this
242 // macro causes these definitions to be weak.
243 #ifndef _GLIBCXX_WEAK_DEFINITION
244 # define _GLIBCXX_WEAK_DEFINITION
247 // Macro used to indicate that the native "C" includes, when compiled
248 // as "C++", have declarations in namespace std and not the global
249 // namespace. Note, this is unrelated to possible "C" compatibility
250 // includes that inject C90/C99 names into the global namespace.
251 #if __cplusplus == 199711L
252 # define _GLIBCXX_NAMESPACE_GLOBAL_INJECTION 1
255 // The remainder of the prewritten config is automatic; all the
256 // user hooks are listed above.
258 // Create a boolean flag to be used to determine if --fast-math is set.
260 # define _GLIBCXX_FAST_MATH 1
262 # define _GLIBCXX_FAST_MATH 0
265 // This marks string literals in header files to be extracted for eventual
266 // translation. It is primarily used for messages in thrown exceptions; see
267 // src/functexcept.cc. We use __N because the more traditional _N is used
268 // for something else under certain OSes (see BADNAMES).
269 #define __N(msgid) (msgid)
271 // For example, <windows.h> is known to #define min and max as macros...
275 // End of prewritten config; the discovered settings follow.
278 #define _GLIBCXX_HOSTED 1
279 #ifdef L4_THREAD_SAFE
280 # define _GLIBCXX__PTHREADS 1
282 #define _GLIBCXX_HAVE_UNISTD_H 1
283 // L4: for ARM builtins are usually linux specific functions, if at all
285 #if defined(ARCH_x86) || defined(ARCH_amd64)
286 # define _GLIBCXX_ATOMIC_BUILTINS 1
289 #ifdef __USING_SJLJ_EXCEPTIONS__
290 # define _GLIBCXX_SJLJ_EXCEPTIONS 1