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 #if !defined(L4_MINIMAL_LIBC)
19 #define _GLIBCXX_HAVE_MBSTATE_T 1
20 #define _GLIBCXX_HAVE_WCHAR_H 1
24 // Macros for visibility.
25 // _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
26 // _GLIBCXX_VISIBILITY_ATTR
27 #define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY default
29 #if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
30 # define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
32 # define _GLIBCXX_VISIBILITY_ATTR(V)
35 // Macros for deprecated.
36 // _GLIBCXX_DEPRECATED
37 // _GLIBCXX_DEPRECATED_ATTR
38 #ifndef _GLIBCXX_DEPRECATED
39 # define _GLIBCXX_DEPRECATED 1
42 #if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
43 # define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__))
45 # define _GLIBCXX_DEPRECATED_ATTR
48 // Macros for activating various namespace association modes.
49 // _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
50 // _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
51 // _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
53 // Guide to libstdc++ namespaces.
58 namespace __parallel { }
59 namespace __norm { } // __normative, __shadow, __replaced
60 namespace __cxx1998 { }
67 # define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1
70 #ifdef _GLIBCXX_PARALLEL
71 # define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1
74 // works with gcc 4.3.3
75 //#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 1
77 #define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
79 // Defined if any namespace association modes are active.
80 #if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
81 || _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \
82 || _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
83 # define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1
86 // Macros for namespace scope. Either namespace std:: or the name
87 // of some nested namespace within it.
93 // Macros for enclosing namespaces and possibly nested namespaces.
94 // _GLIBCXX_BEGIN_NAMESPACE
95 // _GLIBCXX_END_NAMESPACE
96 // _GLIBCXX_BEGIN_NESTED_NAMESPACE
97 // _GLIBCXX_END_NESTED_NAMESPACE
98 // _GLIBCXX_BEGIN_POTENTIAL_NESTED_NAMESPACE
99 // _GLIBCXX_END_POTENTIAL_NESTED_NAMESPACE
100 #ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION
101 # define _GLIBCXX_STD_D _GLIBCXX_STD
102 # define _GLIBCXX_STD_P _GLIBCXX_STD
103 # define _GLIBCXX_STD std
104 # define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X)
105 # define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
106 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
107 # define _GLIBCXX_END_NAMESPACE }
110 # if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else
111 # define _GLIBCXX_STD_D _GLIBCXX_STD
112 # define _GLIBCXX_STD_P _GLIBCXX_STD
113 # define _GLIBCXX_STD _6
114 # define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6)
115 # define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
119 # if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
120 # define _GLIBCXX_STD_D __norm
121 # define _GLIBCXX_STD_P _GLIBCXX_STD
122 # define _GLIBCXX_STD __cxx1998
123 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
124 # define _GLIBCXX_END_NAMESPACE }
125 # define _GLIBCXX_EXTERN_TEMPLATE 0
129 # if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
130 # define _GLIBCXX_STD_D _GLIBCXX_STD
131 # define _GLIBCXX_STD_P __norm
132 # define _GLIBCXX_STD __cxx1998
133 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
134 # define _GLIBCXX_END_NAMESPACE }
135 # define _GLIBCXX_EXTERN_TEMPLATE 0
139 # if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
140 # define _GLIBCXX_STD_D __norm
141 # define _GLIBCXX_STD_P __norm
142 # define _GLIBCXX_STD __cxx1998
143 # define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
144 # define _GLIBCXX_END_NAMESPACE }
145 # define _GLIBCXX_EXTERN_TEMPLATE 0
148 # if __NO_INLINE__ && !__GXX_WEAK__
149 # warning currently using namespace associated mode which may fail \
150 without inlining due to lack of weak symbols
153 # define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) {
154 # define _GLIBCXX_END_NESTED_NAMESPACE } }
157 // Namespace associations for debug mode.
158 #if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
162 namespace __debug { }
163 namespace __cxx1998 { }
165 using namespace __debug __attribute__ ((strong));
166 using namespace __cxx1998 __attribute__ ((strong));
170 // Namespace associations for parallel mode.
171 #if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
175 namespace __parallel { }
176 namespace __cxx1998 { }
178 using namespace __parallel __attribute__ ((strong));
179 using namespace __cxx1998 __attribute__ ((strong));
183 // Namespace associations for versioning mode.
184 #if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
188 using namespace _6 __attribute__ ((strong));
194 using namespace _6 __attribute__ ((strong));
202 using namespace _6 __attribute__ ((strong));
207 // Define if compatibility should be provided for -mlong-double-64.
208 #undef _GLIBCXX_LONG_DOUBLE_COMPAT
210 // XXX GLIBCXX_ABI Deprecated
211 // Namespace associations for long double 128 mode.
212 _GLIBCXX_BEGIN_NAMESPACE(std)
213 #if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
214 # define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
215 # define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
216 # define _GLIBCXX_END_LDBL_NAMESPACE }
217 namespace __gnu_cxx_ldbl128 { }
218 using namespace __gnu_cxx_ldbl128 __attribute__((__strong__));
220 # define _GLIBCXX_LDBL_NAMESPACE
221 # define _GLIBCXX_BEGIN_LDBL_NAMESPACE
222 # define _GLIBCXX_END_LDBL_NAMESPACE
224 _GLIBCXX_END_NAMESPACE
227 // Allow use of "export template." This is currently not a feature
228 // that g++ supports.
229 // #define _GLIBCXX_EXPORT_TEMPLATE 1
231 // Allow use of the GNU syntax extension, "extern template." This
232 // extension is fully documented in the g++ manual, but in a nutshell,
233 // it inhibits all implicit instantiations and is used throughout the
234 // library to avoid multiple weak definitions for required types that
235 // are already explicitly instantiated in the library binary. This
236 // substantially reduces the binary size of resulting executables.
237 #ifndef _GLIBCXX_EXTERN_TEMPLATE
238 # define _GLIBCXX_EXTERN_TEMPLATE 1
242 // Certain function definitions that are meant to be overridable from
243 // user code are decorated with this macro. For some targets, this
244 // macro causes these definitions to be weak.
245 #ifndef _GLIBCXX_WEAK_DEFINITION
246 # define _GLIBCXX_WEAK_DEFINITION
249 // Macro used to indicate that the native "C" includes, when compiled
250 // as "C++", have declarations in namespace std and not the global
251 // namespace. Note, this is unrelated to possible "C" compatibility
252 // includes that inject C90/C99 names into the global namespace.
253 #if __cplusplus == 199711L
254 # define _GLIBCXX_NAMESPACE_GLOBAL_INJECTION 1
257 // The remainder of the prewritten config is automatic; all the
258 // user hooks are listed above.
260 // Create a boolean flag to be used to determine if --fast-math is set.
262 # define _GLIBCXX_FAST_MATH 1
264 # define _GLIBCXX_FAST_MATH 0
267 // This marks string literals in header files to be extracted for eventual
268 // translation. It is primarily used for messages in thrown exceptions; see
269 // src/functexcept.cc. We use __N because the more traditional _N is used
270 // for something else under certain OSes (see BADNAMES).
271 #define __N(msgid) (msgid)
273 // For example, <windows.h> is known to #define min and max as macros...
277 // End of prewritten config; the discovered settings follow.
280 #define _GLIBCXX_HOSTED 1
281 #ifndef L4_MINIMAL_LIBC
282 # define _GLIBCXX__PTHREADS 1
284 #define _GLIBCXX_HAVE_UNISTD_H 1
285 // L4: for ARM builtins are usually linux specific functions, if at all
287 #if defined(ARCH_x86) || defined(ARCH_amd64)
288 # define _GLIBCXX_ATOMIC_BUILTINS 1
291 #ifdef __USING_SJLJ_EXCEPTIONS__
292 # define _GLIBCXX_SJLJ_EXCEPTIONS 1