mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-14 11:29:26 +01:00
Adding CodeSourcery just in case of, to be removed later
This commit is contained in:
parent
a98816a611
commit
4e0df49a5d
22
hardware/tools/CodeSourcery_arm/README-arm-none-eabi.html
Normal file
22
hardware/tools/CodeSourcery_arm/README-arm-none-eabi.html
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<html>
|
||||||
|
<title>Sourcery G++</title>
|
||||||
|
<body>
|
||||||
|
<b>Sourcery G++</b>
|
||||||
|
<p>
|
||||||
|
Sourcery G++ contains the complete GNU Toolchain,
|
||||||
|
including all of the following components:
|
||||||
|
<ul>
|
||||||
|
<li> CodeSourcery Common Startup Code Sequence</li>
|
||||||
|
<li> CodeSourcery Debug Sprite for ARM</li>
|
||||||
|
<li> GNU Binary Utilities (Binutils)</li>
|
||||||
|
<li> GNU C Compiler (GCC)</li>
|
||||||
|
<li> GNU C++ Compiler (G++)</li>
|
||||||
|
<li> GNU C++ Runtime Library (Libstdc++)</li>
|
||||||
|
<li> GNU Debugger (GDB)</li>
|
||||||
|
<li> Newlib C Library</li>
|
||||||
|
</ul>
|
||||||
|
Visit: <a href="http://www.codesourcery.com">http://www.codesourcery.com</a>
|
||||||
|
to access the Sourcery G++ support website.
|
||||||
|
</p>
|
||||||
|
<body>
|
||||||
|
</html>
|
28
hardware/tools/CodeSourcery_arm/README-arm-none-eabi.txt
Normal file
28
hardware/tools/CodeSourcery_arm/README-arm-none-eabi.txt
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Sourcery G++
|
||||||
|
============
|
||||||
|
|
||||||
|
Sourcery G++ contains the complete GNU Toolchain,
|
||||||
|
including all of the following components:
|
||||||
|
|
||||||
|
* CodeSourcery Common Startup Code Sequence
|
||||||
|
|
||||||
|
* CodeSourcery Debug Sprite for ARM
|
||||||
|
|
||||||
|
* GNU Binary Utilities (Binutils)
|
||||||
|
|
||||||
|
* GNU C Compiler (GCC)
|
||||||
|
|
||||||
|
* GNU C++ Compiler (G++)
|
||||||
|
|
||||||
|
* GNU C++ Runtime Library (Libstdc++)
|
||||||
|
|
||||||
|
* GNU Debugger (GDB)
|
||||||
|
|
||||||
|
* Newlib C Library
|
||||||
|
|
||||||
|
|
||||||
|
Visit:
|
||||||
|
|
||||||
|
http://www.codesourcery.com
|
||||||
|
|
||||||
|
to access the Sourcery G++ support website.
|
@ -0,0 +1,4 @@
|
|||||||
|
The executables in this directory are for internal use by the compiler
|
||||||
|
and may not operate correctly when used directly. This directory
|
||||||
|
should not be placed on your PATH. Instead, you should use the
|
||||||
|
executables in ../../bin/ and place that directory on your PATH.
|
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/ar.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/ar.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/as.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/as.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/c++.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/c++.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/g++.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/g++.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/gcc.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/gcc.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/ld.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/ld.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/nm.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/nm.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/objcopy.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/objcopy.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/objdump.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/objdump.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/ranlib.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/ranlib.exe
Normal file
Binary file not shown.
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/strip.exe
Normal file
BIN
hardware/tools/CodeSourcery_arm/arm-none-eabi/bin/strip.exe
Normal file
Binary file not shown.
133
hardware/tools/CodeSourcery_arm/arm-none-eabi/include/_ansi.h
Normal file
133
hardware/tools/CodeSourcery_arm/arm-none-eabi/include/_ansi.h
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
/* Provide support for both ANSI and non-ANSI environments. */
|
||||||
|
|
||||||
|
/* Some ANSI environments are "broken" in the sense that __STDC__ cannot be
|
||||||
|
relied upon to have it's intended meaning. Therefore we must use our own
|
||||||
|
concoction: _HAVE_STDC. Always use _HAVE_STDC instead of __STDC__ in newlib
|
||||||
|
sources!
|
||||||
|
|
||||||
|
To get a strict ANSI C environment, define macro __STRICT_ANSI__. This will
|
||||||
|
"comment out" the non-ANSI parts of the ANSI header files (non-ANSI header
|
||||||
|
files aren't affected). */
|
||||||
|
|
||||||
|
#ifndef _ANSIDECL_H_
|
||||||
|
#define _ANSIDECL_H_
|
||||||
|
|
||||||
|
#include <newlib.h>
|
||||||
|
#include <sys/config.h>
|
||||||
|
|
||||||
|
/* First try to figure out whether we really are in an ANSI C environment. */
|
||||||
|
/* FIXME: This probably needs some work. Perhaps sys/config.h can be
|
||||||
|
prevailed upon to give us a clue. */
|
||||||
|
|
||||||
|
#ifdef __STDC__
|
||||||
|
#define _HAVE_STDC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ISO C++. */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#if !(defined(_BEGIN_STD_C) && defined(_END_STD_C))
|
||||||
|
#ifdef _HAVE_STD_CXX
|
||||||
|
#define _BEGIN_STD_C namespace std { extern "C" {
|
||||||
|
#define _END_STD_C } }
|
||||||
|
#else
|
||||||
|
#define _BEGIN_STD_C extern "C" {
|
||||||
|
#define _END_STD_C }
|
||||||
|
#endif
|
||||||
|
#if defined(__GNUC__) && \
|
||||||
|
( (__GNUC__ >= 4) || \
|
||||||
|
( (__GNUC__ >= 3) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 3) ) )
|
||||||
|
#define _NOTHROW __attribute__ ((nothrow))
|
||||||
|
#else
|
||||||
|
#define _NOTHROW throw()
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define _BEGIN_STD_C
|
||||||
|
#define _END_STD_C
|
||||||
|
#define _NOTHROW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _HAVE_STDC
|
||||||
|
#define _PTR void *
|
||||||
|
#define _AND ,
|
||||||
|
#define _NOARGS void
|
||||||
|
#define _CONST const
|
||||||
|
#define _VOLATILE volatile
|
||||||
|
#define _SIGNED signed
|
||||||
|
#define _DOTS , ...
|
||||||
|
#define _VOID void
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
#define _EXFUN_NOTHROW(name, proto) __cdecl name proto _NOTHROW
|
||||||
|
#define _EXFUN(name, proto) __cdecl name proto
|
||||||
|
#define _EXPARM(name, proto) (* __cdecl name) proto
|
||||||
|
#define _EXFNPTR(name, proto) (__cdecl * name) proto
|
||||||
|
#else
|
||||||
|
#define _EXFUN_NOTHROW(name, proto) name proto _NOTHROW
|
||||||
|
#define _EXFUN(name, proto) name proto
|
||||||
|
#define _EXPARM(name, proto) (* name) proto
|
||||||
|
#define _EXFNPTR(name, proto) (* name) proto
|
||||||
|
#endif
|
||||||
|
#define _DEFUN(name, arglist, args) name(args)
|
||||||
|
#define _DEFUN_VOID(name) name(_NOARGS)
|
||||||
|
#define _CAST_VOID (void)
|
||||||
|
#ifndef _LONG_DOUBLE
|
||||||
|
#define _LONG_DOUBLE long double
|
||||||
|
#endif
|
||||||
|
#ifndef _LONG_LONG_TYPE
|
||||||
|
#define _LONG_LONG_TYPE long long
|
||||||
|
#endif
|
||||||
|
#ifndef _PARAMS
|
||||||
|
#define _PARAMS(paramlist) paramlist
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define _PTR char *
|
||||||
|
#define _AND ;
|
||||||
|
#define _NOARGS
|
||||||
|
#define _CONST
|
||||||
|
#define _VOLATILE
|
||||||
|
#define _SIGNED
|
||||||
|
#define _DOTS
|
||||||
|
#define _VOID void
|
||||||
|
#define _EXFUN(name, proto) name()
|
||||||
|
#define _EXFUN_NOTHROW(name, proto) name()
|
||||||
|
#define _DEFUN(name, arglist, args) name arglist args;
|
||||||
|
#define _DEFUN_VOID(name) name()
|
||||||
|
#define _CAST_VOID
|
||||||
|
#define _LONG_DOUBLE double
|
||||||
|
#define _LONG_LONG_TYPE long
|
||||||
|
#ifndef _PARAMS
|
||||||
|
#define _PARAMS(paramlist) ()
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Support gcc's __attribute__ facility. */
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#define _ATTRIBUTE(attrs) __attribute__ (attrs)
|
||||||
|
#else
|
||||||
|
#define _ATTRIBUTE(attrs)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The traditional meaning of 'extern inline' for GCC is not
|
||||||
|
to emit the function body unless the address is explicitly
|
||||||
|
taken. However this behaviour is changing to match the C99
|
||||||
|
standard, which uses 'extern inline' to indicate that the
|
||||||
|
function body *must* be emitted. If we are using GCC, but do
|
||||||
|
not have the new behaviour, we need to use extern inline; if
|
||||||
|
we are using a new GCC with the C99-compatible behaviour, or
|
||||||
|
a non-GCC compiler (which we will have to hope is C99, since
|
||||||
|
there is no other way to achieve the effect of omitting the
|
||||||
|
function if it isn't referenced) we just use plain 'inline',
|
||||||
|
which c99 defines to mean more-or-less the same as the Gnu C
|
||||||
|
'extern inline'. */
|
||||||
|
#if defined(__GNUC__) && !defined(__GNUC_STDC_INLINE__)
|
||||||
|
/* We're using GCC, but without the new C99-compatible behaviour. */
|
||||||
|
#define _ELIDABLE_INLINE extern __inline__ _ATTRIBUTE ((__always_inline__))
|
||||||
|
#else
|
||||||
|
/* We're using GCC in C99 mode, or an unknown compiler which
|
||||||
|
we just have to hope obeys the C99 semantics of inline. */
|
||||||
|
#define _ELIDABLE_INLINE __inline__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _ANSIDECL_H_ */
|
@ -0,0 +1,40 @@
|
|||||||
|
/* internal use only -- mapping of "system calls" for libraries that lose
|
||||||
|
and only provide C names, so that we end up in violation of ANSI */
|
||||||
|
#ifndef __SYSLIST_H
|
||||||
|
#define __SYSLIST_H
|
||||||
|
|
||||||
|
#ifdef MISSING_SYSCALL_NAMES
|
||||||
|
#define _close close
|
||||||
|
#define _execve execve
|
||||||
|
#define _fcntl fcntl
|
||||||
|
#define _fork fork
|
||||||
|
#define _fstat fstat
|
||||||
|
#define _getpid getpid
|
||||||
|
#define _gettimeofday gettimeofday
|
||||||
|
#define _isatty isatty
|
||||||
|
#define _kill kill
|
||||||
|
#define _link link
|
||||||
|
#define _lseek lseek
|
||||||
|
#define _mkdir mkdir
|
||||||
|
#define _open open
|
||||||
|
#define _read read
|
||||||
|
#define _sbrk sbrk
|
||||||
|
#define _stat stat
|
||||||
|
#define _times times
|
||||||
|
#define _unlink unlink
|
||||||
|
#define _wait wait
|
||||||
|
#define _write write
|
||||||
|
#endif /* MISSING_SYSCALL_NAMES */
|
||||||
|
|
||||||
|
#if defined MISSING_SYSCALL_NAMES || !defined HAVE_OPENDIR
|
||||||
|
/* If the system call interface is missing opendir, readdir, and
|
||||||
|
closedir, there is an implementation of these functions in
|
||||||
|
libc/posix that is implemented using open, getdents, and close.
|
||||||
|
Note, these functions are currently not in the libc/syscalls
|
||||||
|
directory. */
|
||||||
|
#define _opendir opendir
|
||||||
|
#define _readdir readdir
|
||||||
|
#define _closedir closedir
|
||||||
|
#endif /* MISSING_SYSCALL_NAMES || !HAVE_OPENDIR */
|
||||||
|
|
||||||
|
#endif /* !__SYSLIST_H_ */
|
@ -0,0 +1,21 @@
|
|||||||
|
/* libc/include/alloca.h - Allocate memory on stack */
|
||||||
|
|
||||||
|
/* Written 2000 by Werner Almesberger */
|
||||||
|
/* Rearranged for general inclusion by stdlib.h.
|
||||||
|
2001, Corinna Vinschen <vinschen@redhat.com> */
|
||||||
|
|
||||||
|
#ifndef _NEWLIB_ALLOCA_H
|
||||||
|
#define _NEWLIB_ALLOCA_H
|
||||||
|
|
||||||
|
#include "_ansi.h"
|
||||||
|
#include <sys/reent.h>
|
||||||
|
|
||||||
|
#undef alloca
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#define alloca(size) __builtin_alloca(size)
|
||||||
|
#else
|
||||||
|
void * _EXFUN(alloca,(size_t));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
69
hardware/tools/CodeSourcery_arm/arm-none-eabi/include/ar.h
Normal file
69
hardware/tools/CodeSourcery_arm/arm-none-eabi/include/ar.h
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/* $NetBSD: ar.h,v 1.4 1994/10/26 00:55:43 cgd Exp $ */
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1991, 1993
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
* (c) UNIX System Laboratories, Inc.
|
||||||
|
* All or some portions of this file are derived from material licensed
|
||||||
|
* to the University of California by American Telephone and Telegraph
|
||||||
|
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||||
|
* the permission of UNIX System Laboratories, Inc.
|
||||||
|
*
|
||||||
|
* This code is derived from software contributed to Berkeley by
|
||||||
|
* Hugh Smith at The University of Guelph.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 4. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* @(#)ar.h 8.2 (Berkeley) 1/21/94
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _AR_H_
|
||||||
|
#define _AR_H_
|
||||||
|
|
||||||
|
/* Pre-4BSD archives had these magic numbers in them. */
|
||||||
|
#define OARMAG1 0177555
|
||||||
|
#define OARMAG2 0177545
|
||||||
|
|
||||||
|
#define ARMAG "!<arch>\n" /* ar "magic number" */
|
||||||
|
#define SARMAG 8 /* strlen(ARMAG); */
|
||||||
|
|
||||||
|
#define AR_EFMT1 "#1/" /* extended format #1 */
|
||||||
|
|
||||||
|
struct ar_hdr {
|
||||||
|
char ar_name[16]; /* name */
|
||||||
|
char ar_date[12]; /* modification time */
|
||||||
|
char ar_uid[6]; /* user id */
|
||||||
|
char ar_gid[6]; /* group id */
|
||||||
|
char ar_mode[8]; /* octal file permissions */
|
||||||
|
char ar_size[10]; /* size in bytes */
|
||||||
|
#define ARFMAG "`\n"
|
||||||
|
char ar_fmag[2]; /* consistency check */
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* !_AR_H_ */
|
33
hardware/tools/CodeSourcery_arm/arm-none-eabi/include/argz.h
Normal file
33
hardware/tools/CodeSourcery_arm/arm-none-eabi/include/argz.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software
|
||||||
|
* is freely granted, provided that this notice is preserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ARGZ_H_
|
||||||
|
#define _ARGZ_H_
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include "_ansi.h"
|
||||||
|
|
||||||
|
_BEGIN_STD_C
|
||||||
|
|
||||||
|
/* The newlib implementation of these functions assumes that sizeof(char) == 1. */
|
||||||
|
error_t argz_create (char *const argv[], char **argz, size_t *argz_len);
|
||||||
|
error_t argz_create_sep (const char *string, int sep, char **argz, size_t *argz_len);
|
||||||
|
size_t argz_count (const char *argz, size_t argz_len);
|
||||||
|
void argz_extract (char *argz, size_t argz_len, char **argv);
|
||||||
|
void argz_stringify (char *argz, size_t argz_len, int sep);
|
||||||
|
error_t argz_add (char **argz, size_t *argz_len, const char *str);
|
||||||
|
error_t argz_add_sep (char **argz, size_t *argz_len, const char *str, int sep);
|
||||||
|
error_t argz_append (char **argz, size_t *argz_len, const char *buf, size_t buf_len);
|
||||||
|
error_t argz_delete (char **argz, size_t *argz_len, char *entry);
|
||||||
|
error_t argz_insert (char **argz, size_t *argz_len, char *before, const char *entry);
|
||||||
|
char * argz_next (char *argz, size_t argz_len, const char *entry);
|
||||||
|
error_t argz_replace (char **argz, size_t *argz_len, const char *str, const char *with, unsigned *replace_count);
|
||||||
|
|
||||||
|
_END_STD_C
|
||||||
|
|
||||||
|
#endif /* _ARGZ_H_ */
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
assert.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "_ansi.h"
|
||||||
|
|
||||||
|
#undef assert
|
||||||
|
|
||||||
|
/* Indicate that we honor AEABI portability if requested. */
|
||||||
|
#if defined _AEABI_PORTABILITY_LEVEL && _AEABI_PORTABILITY_LEVEL != 0 && !defined _AEABI_PORTABLE
|
||||||
|
# define _AEABI_PORTABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NDEBUG /* required by ANSI standard */
|
||||||
|
# define assert(__e) ((void)0)
|
||||||
|
#else
|
||||||
|
# if defined _AEABI_PORTABLE
|
||||||
|
void _EXFUN(__aeabi_assert, (const char *, const char *, int)
|
||||||
|
_ATTRIBUTE ((__noreturn__)));
|
||||||
|
# define assert(__e) ((__e) ? (void)0 : __aeabi_assert (#__e, __FILE__, __LINE__))
|
||||||
|
# else
|
||||||
|
# define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \
|
||||||
|
__ASSERT_FUNC, #__e))
|
||||||
|
# ifndef __ASSERT_FUNC
|
||||||
|
/* Use g++'s demangled names in C++. */
|
||||||
|
# if defined __cplusplus && defined __GNUC__
|
||||||
|
# define __ASSERT_FUNC __PRETTY_FUNCTION__
|
||||||
|
|
||||||
|
/* C99 requires the use of __func__. */
|
||||||
|
# elif __STDC_VERSION__ >= 199901L
|
||||||
|
# define __ASSERT_FUNC __func__
|
||||||
|
|
||||||
|
/* Older versions of gcc don't have __func__ but can use __FUNCTION__. */
|
||||||
|
# elif __GNUC__ >= 2
|
||||||
|
# define __ASSERT_FUNC __FUNCTION__
|
||||||
|
|
||||||
|
/* failed to detect __func__ support. */
|
||||||
|
# else
|
||||||
|
# define __ASSERT_FUNC ((char *) 0)
|
||||||
|
# endif /* !__cplusplus && __GNUC__ */
|
||||||
|
# endif /* !__ASSERT_FUNC */
|
||||||
|
# endif /* _AEABI_PORTABLE */
|
||||||
|
#endif /* !NDEBUG */
|
||||||
|
|
||||||
|
void _EXFUN(__assert, (const char *, int, const char *)
|
||||||
|
_ATTRIBUTE ((__noreturn__)));
|
||||||
|
void _EXFUN(__assert_func, (const char *, int, const char *, const char *)
|
||||||
|
_ATTRIBUTE ((__noreturn__)));
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -0,0 +1,69 @@
|
|||||||
|
// <algorithm> -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) 1994
|
||||||
|
* Hewlett-Packard Company
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute and sell this software
|
||||||
|
* and its documentation for any purpose is hereby granted without fee,
|
||||||
|
* provided that the above copyright notice appear in all copies and
|
||||||
|
* that both that copyright notice and this permission notice appear
|
||||||
|
* in supporting documentation. Hewlett-Packard Company makes no
|
||||||
|
* representations about the suitability of this software for any
|
||||||
|
* purpose. It is provided "as is" without express or implied warranty.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 1996,1997
|
||||||
|
* Silicon Graphics Computer Systems, Inc.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute and sell this software
|
||||||
|
* and its documentation for any purpose is hereby granted without fee,
|
||||||
|
* provided that the above copyright notice appear in all copies and
|
||||||
|
* that both that copyright notice and this permission notice appear
|
||||||
|
* in supporting documentation. Silicon Graphics makes no
|
||||||
|
* representations about the suitability of this software for any
|
||||||
|
* purpose. It is provided "as is" without express or implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @file include/algorithm
|
||||||
|
* This is a Standard C++ Library header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_ALGORITHM
|
||||||
|
#define _GLIBCXX_ALGORITHM 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <utility> // UK-300.
|
||||||
|
#include <bits/stl_algobase.h>
|
||||||
|
#include <bits/stl_algo.h>
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_PARALLEL
|
||||||
|
# include <parallel/algorithm>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _GLIBCXX_ALGORITHM */
|
@ -0,0 +1,47 @@
|
|||||||
|
// Low-level type for atomic operations -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file atomic_word.h
|
||||||
|
* This file is a GNU extension to the Standard C++ Library.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_ATOMIC_WORD_H
|
||||||
|
#define _GLIBCXX_ATOMIC_WORD_H 1
|
||||||
|
|
||||||
|
typedef int _Atomic_word;
|
||||||
|
|
||||||
|
// Define these two macros using the appropriate memory barrier for the target.
|
||||||
|
// The commented out versions below are the defaults.
|
||||||
|
// See ia64/atomic_word.h for an alternative approach.
|
||||||
|
|
||||||
|
// This one prevents loads from being hoisted across the barrier;
|
||||||
|
// in other words, this is a Load-Load acquire barrier.
|
||||||
|
// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h.
|
||||||
|
// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
|
||||||
|
|
||||||
|
// This one prevents stores from being sunk across the barrier; in other
|
||||||
|
// words, a Store-Store release barrier.
|
||||||
|
// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,108 @@
|
|||||||
|
// Wrapper of C-language FILE struct -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 27.8 File-based streams
|
||||||
|
//
|
||||||
|
|
||||||
|
/** @file basic_file.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_BASIC_FILE_STDIO_H
|
||||||
|
#define _GLIBCXX_BASIC_FILE_STDIO_H 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <bits/c++config.h>
|
||||||
|
#include <bits/c++io.h> // for __c_lock and __c_file
|
||||||
|
#include <ios>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
// Generic declaration.
|
||||||
|
template<typename _CharT>
|
||||||
|
class __basic_file;
|
||||||
|
|
||||||
|
// Specialization.
|
||||||
|
template<>
|
||||||
|
class __basic_file<char>
|
||||||
|
{
|
||||||
|
// Underlying data source/sink.
|
||||||
|
__c_file* _M_cfile;
|
||||||
|
|
||||||
|
// True iff we opened _M_cfile, and thus must close it ourselves.
|
||||||
|
bool _M_cfile_created;
|
||||||
|
|
||||||
|
public:
|
||||||
|
__basic_file(__c_lock* __lock = 0) throw ();
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
sys_open(__c_file* __file, ios_base::openmode);
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
sys_open(int __fd, ios_base::openmode __mode) throw ();
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
close();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE bool
|
||||||
|
is_open() const throw ();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE int
|
||||||
|
fd() throw ();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE __c_file*
|
||||||
|
file() throw ();
|
||||||
|
|
||||||
|
~__basic_file();
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsputn(const char* __s, streamsize __n);
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsputn_2(const char* __s1, streamsize __n1,
|
||||||
|
const char* __s2, streamsize __n2);
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsgetn(char* __s, streamsize __n);
|
||||||
|
|
||||||
|
streamoff
|
||||||
|
seekoff(streamoff __off, ios_base::seekdir __way) throw ();
|
||||||
|
|
||||||
|
int
|
||||||
|
sync();
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
showmanyc();
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,37 @@
|
|||||||
|
// Base to std::allocator -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++allocator.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_ALLOCATOR_H
|
||||||
|
#define _GLIBCXX_CXX_ALLOCATOR_H 1
|
||||||
|
|
||||||
|
// Define new_allocator as the base class to std::allocator.
|
||||||
|
#include <ext/new_allocator.h>
|
||||||
|
#define __glibcxx_base_allocator __gnu_cxx::new_allocator
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,1506 @@
|
|||||||
|
// Predefined symbols and macros -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
|
// 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++config.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_CONFIG_H
|
||||||
|
#define _GLIBCXX_CXX_CONFIG_H 1
|
||||||
|
|
||||||
|
// The current version of the C++ library in compressed ISO date format.
|
||||||
|
#define __GLIBCXX__ 20101216
|
||||||
|
|
||||||
|
// Macros for visibility.
|
||||||
|
// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
|
||||||
|
// _GLIBCXX_VISIBILITY_ATTR
|
||||||
|
# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1
|
||||||
|
|
||||||
|
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
|
||||||
|
# define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
|
||||||
|
#else
|
||||||
|
// If this is not supplied by the OS-specific or CPU-specific
|
||||||
|
// headers included below, it will be defined to an empty default.
|
||||||
|
# define _GLIBCXX_VISIBILITY_ATTR(V) _GLIBCXX_PSEUDO_VISIBILITY(V)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for deprecated.
|
||||||
|
// _GLIBCXX_DEPRECATED
|
||||||
|
// _GLIBCXX_DEPRECATED_ATTR
|
||||||
|
#ifndef _GLIBCXX_DEPRECATED
|
||||||
|
# define _GLIBCXX_DEPRECATED 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||||
|
# define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__))
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_DEPRECATED_ATTR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for activating various namespace association modes.
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
|
||||||
|
// Guide to libstdc++ namespaces.
|
||||||
|
/*
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __debug { }
|
||||||
|
namespace __parallel { }
|
||||||
|
namespace __norm { } // __normative, __shadow, __replaced
|
||||||
|
namespace __cxx1998 { }
|
||||||
|
|
||||||
|
namespace tr1 { }
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#if __cplusplus
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_DEBUG
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_PARALLEL
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace association for profile
|
||||||
|
#ifdef _GLIBCXX_PROFILE
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
|
||||||
|
|
||||||
|
// Defined if any namespace association modes are active.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
# define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for namespace scope. Either namespace std:: or the name
|
||||||
|
// of some nested namespace within it.
|
||||||
|
// _GLIBCXX_STD
|
||||||
|
// _GLIBCXX_STD_D
|
||||||
|
// _GLIBCXX_STD_P
|
||||||
|
//
|
||||||
|
// Macros for enclosing namespaces and possibly nested namespaces.
|
||||||
|
// _GLIBCXX_BEGIN_NAMESPACE
|
||||||
|
// _GLIBCXX_END_NAMESPACE
|
||||||
|
// _GLIBCXX_BEGIN_NESTED_NAMESPACE
|
||||||
|
// _GLIBCXX_END_NESTED_NAMESPACE
|
||||||
|
#ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_PR _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD std
|
||||||
|
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X)
|
||||||
|
# define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
#else
|
||||||
|
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD _6
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6)
|
||||||
|
# define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// debug
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE -1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// parallel
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// debug + parallel
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE -1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// profile
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL || _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
|
||||||
|
# error Cannot use -D_GLIBCXX_PROFILE with -D_GLIBCXX_DEBUG or \
|
||||||
|
-D_GLIBCXX_PARALLEL
|
||||||
|
# endif
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_PR __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __NO_INLINE__ && !__GXX_WEAK__
|
||||||
|
# warning currently using namespace associated mode which may fail \
|
||||||
|
without inlining due to lack of weak symbols
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NESTED_NAMESPACE } }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for debug mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __debug { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for parallel mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __parallel { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for profile mode
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __profile { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for versioning mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace __gnu_cxx
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace tr1
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// XXX GLIBCXX_ABI Deprecated
|
||||||
|
// Define if compatibility should be provided for -mlong-double-64
|
||||||
|
#undef _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||||
|
|
||||||
|
// Namespace associations for long double 128 mode.
|
||||||
|
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
inline namespace __gnu_cxx_ldbl128 { }
|
||||||
|
}
|
||||||
|
# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
|
||||||
|
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
|
||||||
|
# define _GLIBCXX_END_LDBL_NAMESPACE }
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_LDBL_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE
|
||||||
|
# define _GLIBCXX_END_LDBL_NAMESPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Defines for C compatibility. In particular, define extern "C"
|
||||||
|
// linkage only when using C++.
|
||||||
|
# define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
|
||||||
|
# define _GLIBCXX_END_EXTERN_C }
|
||||||
|
|
||||||
|
#else // !__cplusplus
|
||||||
|
# undef _GLIBCXX_BEGIN_NAMESPACE
|
||||||
|
# undef _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X)
|
||||||
|
# define _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_EXTERN_C
|
||||||
|
# define _GLIBCXX_END_EXTERN_C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// First includes.
|
||||||
|
|
||||||
|
// Pick up any OS-specific definitions.
|
||||||
|
#include <bits/os_defines.h>
|
||||||
|
|
||||||
|
// Pick up any CPU-specific definitions.
|
||||||
|
#include <bits/cpu_defines.h>
|
||||||
|
|
||||||
|
// If platform uses neither visibility nor psuedo-visibility,
|
||||||
|
// specify empty default for namespace annotation macros.
|
||||||
|
#ifndef _GLIBCXX_PSEUDO_VISIBILITY
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY(V)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Allow use of "export template." This is currently not a feature
|
||||||
|
// that g++ supports.
|
||||||
|
// #define _GLIBCXX_EXPORT_TEMPLATE 1
|
||||||
|
|
||||||
|
// Allow use of the GNU syntax extension, "extern template." This
|
||||||
|
// extension is fully documented in the g++ manual, but in a nutshell,
|
||||||
|
// it inhibits all implicit instantiations and is used throughout the
|
||||||
|
// library to avoid multiple weak definitions for required types that
|
||||||
|
// are already explicitly instantiated in the library binary. This
|
||||||
|
// substantially reduces the binary size of resulting executables.
|
||||||
|
|
||||||
|
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
|
||||||
|
// templates only in basic_string, thus activating its debug-mode
|
||||||
|
// checks even at -O0.
|
||||||
|
#ifndef _GLIBCXX_EXTERN_TEMPLATE
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Certain function definitions that are meant to be overridable from
|
||||||
|
// user code are decorated with this macro. For some targets, this
|
||||||
|
// macro causes these definitions to be weak.
|
||||||
|
#ifndef _GLIBCXX_WEAK_DEFINITION
|
||||||
|
# define _GLIBCXX_WEAK_DEFINITION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Assert.
|
||||||
|
// Avoid the use of assert, because we're trying to keep the <cassert>
|
||||||
|
// include out of the mix.
|
||||||
|
#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL)
|
||||||
|
#define __glibcxx_assert(_Condition)
|
||||||
|
#else
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
// Avoid the use of assert, because we're trying to keep the <cassert>
|
||||||
|
// include out of the mix.
|
||||||
|
inline void
|
||||||
|
__replacement_assert(const char* __file, int __line,
|
||||||
|
const char* __function, const char* __condition)
|
||||||
|
{
|
||||||
|
__builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line,
|
||||||
|
__function, __condition);
|
||||||
|
__builtin_abort();
|
||||||
|
}
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#define __glibcxx_assert(_Condition) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (! (_Condition)) \
|
||||||
|
std::__replacement_assert(__FILE__, __LINE__, \
|
||||||
|
__PRETTY_FUNCTION__, #_Condition); \
|
||||||
|
} while (false)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// The remainder of the prewritten config is automatic; all the
|
||||||
|
// user hooks are listed above.
|
||||||
|
|
||||||
|
// Create a boolean flag to be used to determine if --fast-math is set.
|
||||||
|
#ifdef __FAST_MATH__
|
||||||
|
# define _GLIBCXX_FAST_MATH 1
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_FAST_MATH 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// This marks string literals in header files to be extracted for eventual
|
||||||
|
// translation. It is primarily used for messages in thrown exceptions; see
|
||||||
|
// src/functexcept.cc. We use __N because the more traditional _N is used
|
||||||
|
// for something else under certain OSes (see BADNAMES).
|
||||||
|
#define __N(msgid) (msgid)
|
||||||
|
|
||||||
|
// For example, <windows.h> is known to #define min and max as macros...
|
||||||
|
#undef min
|
||||||
|
#undef max
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_PURE
|
||||||
|
# define _GLIBCXX_PURE __attribute__ ((__pure__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CONST
|
||||||
|
# define _GLIBCXX_CONST __attribute__ ((__const__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_NORETURN
|
||||||
|
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_NOTHROW
|
||||||
|
# ifdef __cplusplus
|
||||||
|
# define _GLIBCXX_NOTHROW throw()
|
||||||
|
# else
|
||||||
|
# define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// End of prewritten config; the discovered settings follow.
|
||||||
|
/* config.h. Generated from config.h.in by configure. */
|
||||||
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `acosf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ACOSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `acosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ACOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `asinf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ASINF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `asinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ASINL */
|
||||||
|
|
||||||
|
/* Define to 1 if the target assembler supports .symver directive. */
|
||||||
|
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atan2f' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ATAN2F 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atan2l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ATAN2L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atanf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ATANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ATANL */
|
||||||
|
|
||||||
|
/* Define to 1 if the target assembler supports thread-local storage. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_CC_TLS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ceilf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_CEILF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ceill' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_CEILL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <complex.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `cosf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_COSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `coshf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_COSHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `coshl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COSHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `cosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_DLFCN_H */
|
||||||
|
|
||||||
|
/* Define if EBADMSG exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EBADMSG 1
|
||||||
|
|
||||||
|
/* Define if ECANCELED exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ECANCELED 1
|
||||||
|
|
||||||
|
/* Define if EIDRM exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EIDRM 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <endian.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ENDIAN_H */
|
||||||
|
|
||||||
|
/* Define if ENODATA exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENODATA 1
|
||||||
|
|
||||||
|
/* Define if ENOLINK exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOLINK 1
|
||||||
|
|
||||||
|
/* Define if ENOSR exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOSR 1
|
||||||
|
|
||||||
|
/* Define if ENOSTR exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOSTR 1
|
||||||
|
|
||||||
|
/* Define if ENOTRECOVERABLE exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1
|
||||||
|
|
||||||
|
/* Define if ENOTSUP exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOTSUP 1
|
||||||
|
|
||||||
|
/* Define if EOVERFLOW exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EOVERFLOW 1
|
||||||
|
|
||||||
|
/* Define if EOWNERDEAD exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EOWNERDEAD 1
|
||||||
|
|
||||||
|
/* Define if EPROTO exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EPROTO 1
|
||||||
|
|
||||||
|
/* Define if ETIME exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ETIME 1
|
||||||
|
|
||||||
|
/* Define if ETXTBSY exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ETXTBSY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `expf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_EXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `expl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_EXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fabsf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FABSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fabsl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FABSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fenv.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FENV_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finite' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finitef' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITEF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finitel' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITEL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <float.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_FLOAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `floorf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FLOORF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `floorl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FLOORL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fmodf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FMODF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fmodl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FMODL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fp.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FP_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `frexpf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FREXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `frexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FREXPL */
|
||||||
|
|
||||||
|
/* Define if _Unwind_GetIPInfo is available. */
|
||||||
|
#define _GLIBCXX_HAVE_GETIPINFO 1
|
||||||
|
|
||||||
|
/* Define if gthr-default.h exists (meaning that threading support is
|
||||||
|
enabled). */
|
||||||
|
/* #undef _GLIBCXX_HAVE_GTHR_DEFAULT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypot' function. */
|
||||||
|
#define _GLIBCXX_HAVE_HYPOT 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypotf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_HYPOTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypotl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_HYPOTL */
|
||||||
|
|
||||||
|
/* Define if you have the iconv() function. */
|
||||||
|
#define _GLIBCXX_HAVE_ICONV 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ieeefp.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_IEEEFP_H 1
|
||||||
|
|
||||||
|
/* Define if int64_t is available in <stdint.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_INT64_T 1
|
||||||
|
|
||||||
|
/* Define if int64_t is a long. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_INT64_T_LONG */
|
||||||
|
|
||||||
|
/* Define if int64_t is a long long. */
|
||||||
|
#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnan' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNAN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNANL */
|
||||||
|
|
||||||
|
/* Defined if iswblank exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ISWBLANK 1
|
||||||
|
|
||||||
|
/* Define if LC_MESSAGES is available in <locale.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_LC_MESSAGES 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ldexpf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LDEXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ldexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LDEXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libintl.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_AS */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_DATA */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_RSS */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */
|
||||||
|
|
||||||
|
/* Define if futex syscall is available. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <locale.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_LOCALE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `log10f' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LOG10F 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `log10l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LOG10L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `logf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LOGF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `logl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LOGL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/endian.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/param.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define if mbstate_t exists in wchar.h. */
|
||||||
|
#define _GLIBCXX_HAVE_MBSTATE_T 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MEMORY_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modff' function. */
|
||||||
|
#define _GLIBCXX_HAVE_MODFF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MODFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <nan.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_NAN_H */
|
||||||
|
|
||||||
|
/* Define if poll is available in <poll.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_POLL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `powf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_POWF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `powl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_POWL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `qfpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_QFPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setenv' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SETENV */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincos' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SINF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinhf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SINHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sqrtf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SQRTF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sqrtl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SQRTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdbool.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDBOOL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define if strerror_l is available in <string.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRERROR_L */
|
||||||
|
|
||||||
|
/* Define if strerror_r is available in <string.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_STRERROR_R 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRINGS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtof' function. */
|
||||||
|
#define _GLIBCXX_HAVE_STRTOF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtold' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRTOLD */
|
||||||
|
|
||||||
|
/* Define if strxfrm_l is available in <string.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRXFRM_L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/filio.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ipc.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_IPC_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/isa_defs.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/machine.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/sem.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_SEM_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_TIME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/uio.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_UIO_H */
|
||||||
|
|
||||||
|
/* Define if S_IFREG is available in <sys/stat.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_S_IFREG */
|
||||||
|
|
||||||
|
/* Define if S_IFREG is available in <sys/stat.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_S_ISREG */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_TANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanhf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_TANHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TANHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <tgmath.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_TGMATH_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if the target supports thread-local storage. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TLS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Defined if vfwscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VFWSCANF 1
|
||||||
|
|
||||||
|
/* Defined if vswscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VSWSCANF 1
|
||||||
|
|
||||||
|
/* Defined if vwscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VWSCANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wchar.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_WCHAR_H 1
|
||||||
|
|
||||||
|
/* Defined if wcstof exists. */
|
||||||
|
#define _GLIBCXX_HAVE_WCSTOF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wctype.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_WCTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if writev is available in <sys/uio.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_WRITEV */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_acosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ACOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_acosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ACOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_asinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ASINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_asinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ASINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atan2f' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATAN2F */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atan2l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATAN2L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ceilf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__CEILF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ceill' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__CEILL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_cosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_coshf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_coshl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_cosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_expf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__EXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_expl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__EXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fabsf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FABSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fabsl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FABSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finite' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finitef' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITEF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finitel' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITEL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_floorf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FLOORF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_floorl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FLOORL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fmodf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FMODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fmodl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FMODL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_frexpf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FREXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_frexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FREXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypot' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypotf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypotl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnan' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNAN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ldexpf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LDEXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ldexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LDEXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_log10f' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOG10F */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_log10l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOG10L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_logf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOGF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_logl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOGL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_powf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__POWF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_powl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__POWL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_qfpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__QFPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincos' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinhf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sqrtf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SQRTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sqrtl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SQRTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanhf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANL */
|
||||||
|
|
||||||
|
/* Define as const if the declaration of iconv() needs const. */
|
||||||
|
/* #undef _GLIBCXX_ICONV_CONST */
|
||||||
|
|
||||||
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
#define LT_OBJDIR ".libs/"
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
/* #undef _GLIBCXX_PACKAGE */
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define _GLIBCXX_PACKAGE_BUGREPORT ""
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_NAME "package-unused"
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_URL ""
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
|
||||||
|
|
||||||
|
/* The size of `char', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_CHAR */
|
||||||
|
|
||||||
|
/* The size of `int', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_INT */
|
||||||
|
|
||||||
|
/* The size of `long', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_LONG */
|
||||||
|
|
||||||
|
/* The size of `short', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_SHORT */
|
||||||
|
|
||||||
|
/* The size of `void *', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_VOID_P */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
/* #undef _GLIBCXX_VERSION */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for bool are supported on this host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_1 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for short are supported on this host.
|
||||||
|
*/
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_2 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for int are supported on this host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_4 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for long long are supported on this
|
||||||
|
host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_8 */
|
||||||
|
|
||||||
|
/* Define to use concept checking code from the boost libraries. */
|
||||||
|
/* #undef _GLIBCXX_CONCEPT_CHECKS */
|
||||||
|
|
||||||
|
/* Define to 1 if building for use with CSLIBC, or 0 otherwise. */
|
||||||
|
#define _GLIBCXX_CSLIBC 0
|
||||||
|
|
||||||
|
/* Define if a fully dynamic basic_string is wanted. */
|
||||||
|
/* #undef _GLIBCXX_FULLY_DYNAMIC_STRING */
|
||||||
|
|
||||||
|
/* Define if gthreads library is available. */
|
||||||
|
/* #undef _GLIBCXX_HAS_GTHREADS */
|
||||||
|
|
||||||
|
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
|
||||||
|
#define _GLIBCXX_HOSTED 1
|
||||||
|
|
||||||
|
/* Define if compatibility should be provided for -mlong-double-64. */
|
||||||
|
|
||||||
|
/* Define if ptrdiff_t is int. */
|
||||||
|
#define _GLIBCXX_PTRDIFF_T_IS_INT 1
|
||||||
|
|
||||||
|
/* Define if using setrlimit to set resource limits during "make check" */
|
||||||
|
/* #undef _GLIBCXX_RES_LIMITS */
|
||||||
|
|
||||||
|
/* Define if size_t is unsigned int. */
|
||||||
|
#define _GLIBCXX_SIZE_T_IS_UINT 1
|
||||||
|
|
||||||
|
/* Define if the compiler is configured for setjmp/longjmp exceptions. */
|
||||||
|
/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */
|
||||||
|
|
||||||
|
/* Define if EOF == -1, SEEK_CUR == 1, SEEK_END == 2. */
|
||||||
|
#define _GLIBCXX_STDIO_MACROS 1
|
||||||
|
|
||||||
|
/* Define to use symbol versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER */
|
||||||
|
|
||||||
|
/* Define to use darwin versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_DARWIN */
|
||||||
|
|
||||||
|
/* Define to use GNU versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_GNU */
|
||||||
|
|
||||||
|
/* Define to use GNU namespace versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
|
||||||
|
<stdio.h>, and <stdlib.h> can be used or exposed. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <complex.h> should be used in <complex>. Using
|
||||||
|
compiler builtins for these functions requires corresponding C99 library
|
||||||
|
functions to be present. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_COMPLEX */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
|
||||||
|
Using compiler builtins for these functions requires corresponding C99
|
||||||
|
library functions to be present. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_CTYPE_TR1 1
|
||||||
|
|
||||||
|
/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_FENV_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <inttypes.h> should be imported in
|
||||||
|
<tr1/cinttypes> in namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_INTTYPES_TR1 1
|
||||||
|
|
||||||
|
/* Define if wchar_t C99 functions in <inttypes.h> should be imported in
|
||||||
|
<tr1/cinttypes> in namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
|
||||||
|
in namespace std. */
|
||||||
|
#define _GLIBCXX_USE_C99_MATH 1
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros in <math.h> should be imported in
|
||||||
|
<tr1/cmath> in namespace std::tr1. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_MATH_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_STDINT_TR1 1
|
||||||
|
|
||||||
|
/* Defined if clock_gettime has monotonic clock support. */
|
||||||
|
/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
|
||||||
|
|
||||||
|
/* Defined if clock_gettime has realtime clock support. */
|
||||||
|
/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
|
||||||
|
|
||||||
|
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
|
||||||
|
this host. */
|
||||||
|
/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */
|
||||||
|
|
||||||
|
/* Defined if gettimeofday is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
|
||||||
|
|
||||||
|
/* Define if LFS support is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_LFS */
|
||||||
|
|
||||||
|
/* Define if code specialized for long long should be used. */
|
||||||
|
#define _GLIBCXX_USE_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Defined if nanosleep is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_NANOSLEEP */
|
||||||
|
|
||||||
|
/* Define if NLS translations are to be used. */
|
||||||
|
/* #undef _GLIBCXX_USE_NLS */
|
||||||
|
|
||||||
|
/* Define if /dev/random and /dev/urandom are available for the random_device
|
||||||
|
of TR1 (Chapter 5.1). */
|
||||||
|
/* #undef _GLIBCXX_USE_RANDOM_TR1 */
|
||||||
|
|
||||||
|
/* Defined if sched_yield is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_SCHED_YIELD */
|
||||||
|
|
||||||
|
/* Define if code specialized for wchar_t should be used. */
|
||||||
|
#define _GLIBCXX_USE_WCHAR_T 1
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF)
|
||||||
|
# define _GLIBCXX_HAVE_ACOSF 1
|
||||||
|
# define acosf _acosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL)
|
||||||
|
# define _GLIBCXX_HAVE_ACOSL 1
|
||||||
|
# define acosl _acosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF)
|
||||||
|
# define _GLIBCXX_HAVE_ASINF 1
|
||||||
|
# define asinf _asinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL)
|
||||||
|
# define _GLIBCXX_HAVE_ASINL 1
|
||||||
|
# define asinl _asinl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F)
|
||||||
|
# define _GLIBCXX_HAVE_ATAN2F 1
|
||||||
|
# define atan2f _atan2f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L)
|
||||||
|
# define _GLIBCXX_HAVE_ATAN2L 1
|
||||||
|
# define atan2l _atan2l
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF)
|
||||||
|
# define _GLIBCXX_HAVE_ATANF 1
|
||||||
|
# define atanf _atanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL)
|
||||||
|
# define _GLIBCXX_HAVE_ATANL 1
|
||||||
|
# define atanl _atanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF)
|
||||||
|
# define _GLIBCXX_HAVE_CEILF 1
|
||||||
|
# define ceilf _ceilf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL)
|
||||||
|
# define _GLIBCXX_HAVE_CEILL 1
|
||||||
|
# define ceill _ceill
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF)
|
||||||
|
# define _GLIBCXX_HAVE_COSF 1
|
||||||
|
# define cosf _cosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF)
|
||||||
|
# define _GLIBCXX_HAVE_COSHF 1
|
||||||
|
# define coshf _coshf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL)
|
||||||
|
# define _GLIBCXX_HAVE_COSHL 1
|
||||||
|
# define coshl _coshl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL)
|
||||||
|
# define _GLIBCXX_HAVE_COSL 1
|
||||||
|
# define cosl _cosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF)
|
||||||
|
# define _GLIBCXX_HAVE_EXPF 1
|
||||||
|
# define expf _expf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL)
|
||||||
|
# define _GLIBCXX_HAVE_EXPL 1
|
||||||
|
# define expl _expl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF)
|
||||||
|
# define _GLIBCXX_HAVE_FABSF 1
|
||||||
|
# define fabsf _fabsf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL)
|
||||||
|
# define _GLIBCXX_HAVE_FABSL 1
|
||||||
|
# define fabsl _fabsl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE)
|
||||||
|
# define _GLIBCXX_HAVE_FINITE 1
|
||||||
|
# define finite _finite
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF)
|
||||||
|
# define _GLIBCXX_HAVE_FINITEF 1
|
||||||
|
# define finitef _finitef
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL)
|
||||||
|
# define _GLIBCXX_HAVE_FINITEL 1
|
||||||
|
# define finitel _finitel
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF)
|
||||||
|
# define _GLIBCXX_HAVE_FLOORF 1
|
||||||
|
# define floorf _floorf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL)
|
||||||
|
# define _GLIBCXX_HAVE_FLOORL 1
|
||||||
|
# define floorl _floorl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF)
|
||||||
|
# define _GLIBCXX_HAVE_FMODF 1
|
||||||
|
# define fmodf _fmodf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL)
|
||||||
|
# define _GLIBCXX_HAVE_FMODL 1
|
||||||
|
# define fmodl _fmodl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS)
|
||||||
|
# define _GLIBCXX_HAVE_FPCLASS 1
|
||||||
|
# define fpclass _fpclass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF)
|
||||||
|
# define _GLIBCXX_HAVE_FREXPF 1
|
||||||
|
# define frexpf _frexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL)
|
||||||
|
# define _GLIBCXX_HAVE_FREXPL 1
|
||||||
|
# define frexpl _frexpl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOT 1
|
||||||
|
# define hypot _hypot
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOTF 1
|
||||||
|
# define hypotf _hypotf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOTL 1
|
||||||
|
# define hypotl _hypotl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF)
|
||||||
|
# define _GLIBCXX_HAVE_ISINF 1
|
||||||
|
# define isinf _isinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF)
|
||||||
|
# define _GLIBCXX_HAVE_ISINFF 1
|
||||||
|
# define isinff _isinff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL)
|
||||||
|
# define _GLIBCXX_HAVE_ISINFL 1
|
||||||
|
# define isinfl _isinfl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN)
|
||||||
|
# define _GLIBCXX_HAVE_ISNAN 1
|
||||||
|
# define isnan _isnan
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF)
|
||||||
|
# define _GLIBCXX_HAVE_ISNANF 1
|
||||||
|
# define isnanf _isnanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL)
|
||||||
|
# define _GLIBCXX_HAVE_ISNANL 1
|
||||||
|
# define isnanl _isnanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF)
|
||||||
|
# define _GLIBCXX_HAVE_LDEXPF 1
|
||||||
|
# define ldexpf _ldexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL)
|
||||||
|
# define _GLIBCXX_HAVE_LDEXPL 1
|
||||||
|
# define ldexpl _ldexpl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F)
|
||||||
|
# define _GLIBCXX_HAVE_LOG10F 1
|
||||||
|
# define log10f _log10f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L)
|
||||||
|
# define _GLIBCXX_HAVE_LOG10L 1
|
||||||
|
# define log10l _log10l
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF)
|
||||||
|
# define _GLIBCXX_HAVE_LOGF 1
|
||||||
|
# define logf _logf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL)
|
||||||
|
# define _GLIBCXX_HAVE_LOGL 1
|
||||||
|
# define logl _logl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF)
|
||||||
|
# define _GLIBCXX_HAVE_MODF 1
|
||||||
|
# define modf _modf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF)
|
||||||
|
# define _GLIBCXX_HAVE_MODFF 1
|
||||||
|
# define modff _modff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL)
|
||||||
|
# define _GLIBCXX_HAVE_MODFL 1
|
||||||
|
# define modfl _modfl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF)
|
||||||
|
# define _GLIBCXX_HAVE_POWF 1
|
||||||
|
# define powf _powf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL)
|
||||||
|
# define _GLIBCXX_HAVE_POWL 1
|
||||||
|
# define powl _powl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS)
|
||||||
|
# define _GLIBCXX_HAVE_QFPCLASS 1
|
||||||
|
# define qfpclass _qfpclass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOS 1
|
||||||
|
# define sincos _sincos
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOSF 1
|
||||||
|
# define sincosf _sincosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOSL 1
|
||||||
|
# define sincosl _sincosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF)
|
||||||
|
# define _GLIBCXX_HAVE_SINF 1
|
||||||
|
# define sinf _sinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF)
|
||||||
|
# define _GLIBCXX_HAVE_SINHF 1
|
||||||
|
# define sinhf _sinhf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL)
|
||||||
|
# define _GLIBCXX_HAVE_SINHL 1
|
||||||
|
# define sinhl _sinhl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL)
|
||||||
|
# define _GLIBCXX_HAVE_SINL 1
|
||||||
|
# define sinl _sinl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF)
|
||||||
|
# define _GLIBCXX_HAVE_SQRTF 1
|
||||||
|
# define sqrtf _sqrtf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL)
|
||||||
|
# define _GLIBCXX_HAVE_SQRTL 1
|
||||||
|
# define sqrtl _sqrtl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF)
|
||||||
|
# define _GLIBCXX_HAVE_STRTOF 1
|
||||||
|
# define strtof _strtof
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD)
|
||||||
|
# define _GLIBCXX_HAVE_STRTOLD 1
|
||||||
|
# define strtold _strtold
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF)
|
||||||
|
# define _GLIBCXX_HAVE_TANF 1
|
||||||
|
# define tanf _tanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF)
|
||||||
|
# define _GLIBCXX_HAVE_TANHF 1
|
||||||
|
# define tanhf _tanhf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL)
|
||||||
|
# define _GLIBCXX_HAVE_TANHL 1
|
||||||
|
# define tanhl _tanhl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL)
|
||||||
|
# define _GLIBCXX_HAVE_TANL 1
|
||||||
|
# define tanl _tanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _GLIBCXX_CXX_CONFIG_H
|
@ -0,0 +1,49 @@
|
|||||||
|
// Underlying io library details -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++io.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// c_io_stdio.h - Defines for using "C" stdio.h
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_IO_H
|
||||||
|
#define _GLIBCXX_CXX_IO_H 1
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <bits/gthr.h>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
typedef __gthread_mutex_t __c_lock;
|
||||||
|
|
||||||
|
// for basic_file.h
|
||||||
|
typedef FILE __c_file;
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,91 @@
|
|||||||
|
// Wrapper for underlying C-language localization -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++locale.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.8 Standard locale categories.
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_LOCALE_H
|
||||||
|
#define _GLIBCXX_CXX_LOCALE_H 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <clocale>
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
#define _GLIBCXX_NUM_CATEGORIES 0
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
typedef int* __c_locale;
|
||||||
|
|
||||||
|
// Convert numeric value of type double and long double to string and
|
||||||
|
// return length of string. If vsnprintf is available use it, otherwise
|
||||||
|
// fall back to the unsafe vsprintf which, in general, can be dangerous
|
||||||
|
// and should be avoided.
|
||||||
|
inline int
|
||||||
|
__convert_from_v(const __c_locale&, char* __out,
|
||||||
|
const int __size __attribute__((__unused__)),
|
||||||
|
const char* __fmt, ...)
|
||||||
|
{
|
||||||
|
char* __old = std::setlocale(LC_NUMERIC, NULL);
|
||||||
|
char* __sav = NULL;
|
||||||
|
if (__builtin_strcmp(__old, "C"))
|
||||||
|
{
|
||||||
|
const size_t __len = __builtin_strlen(__old) + 1;
|
||||||
|
__sav = new char[__len];
|
||||||
|
__builtin_memcpy(__sav, __old, __len);
|
||||||
|
std::setlocale(LC_NUMERIC, "C");
|
||||||
|
}
|
||||||
|
|
||||||
|
__builtin_va_list __args;
|
||||||
|
__builtin_va_start(__args, __fmt);
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_USE_C99
|
||||||
|
const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
|
||||||
|
#else
|
||||||
|
const int __ret = __builtin_vsprintf(__out, __fmt, __args);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__builtin_va_end(__args);
|
||||||
|
|
||||||
|
if (__sav)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_NUMERIC, __sav);
|
||||||
|
delete [] __sav;
|
||||||
|
}
|
||||||
|
return __ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,33 @@
|
|||||||
|
// Specific definitions for generic platforms -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file cpu_defines.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CPU_DEFINES
|
||||||
|
#define _GLIBCXX_CPU_DEFINES 1
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,57 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
|
||||||
|
|
||||||
|
// Support for Solaris 2.5.1
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
/// @brief Base class for ctype.
|
||||||
|
struct ctype_base
|
||||||
|
{
|
||||||
|
// Non-standard typedefs.
|
||||||
|
typedef const int* __to_type;
|
||||||
|
|
||||||
|
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||||
|
// on the mask type. Because of this, we don't use an enum.
|
||||||
|
typedef char mask;
|
||||||
|
static const mask upper = _U;
|
||||||
|
static const mask lower = _L;
|
||||||
|
static const mask alpha = _U | _L;
|
||||||
|
static const mask digit = _N;
|
||||||
|
static const mask xdigit = _X | _N;
|
||||||
|
static const mask space = _S;
|
||||||
|
static const mask print = _P | _U | _L | _N | _B;
|
||||||
|
static const mask graph = _P | _U | _L | _N;
|
||||||
|
static const mask cntrl = _C;
|
||||||
|
static const mask punct = _P;
|
||||||
|
static const mask alnum = _U | _L | _N;
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,71 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file ctype_inline.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
|
||||||
|
// functions go in ctype.cc
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
bool
|
||||||
|
ctype<char>::
|
||||||
|
is(mask __m, char __c) const
|
||||||
|
{ return _M_table[static_cast<unsigned char>(__c)] & __m; }
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
is(const char* __low, const char* __high, mask* __vec) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
scan_is(mask __m, const char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high && !this->is(__m, *__low))
|
||||||
|
++__low;
|
||||||
|
return __low;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
scan_not(mask __m, const char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high && this->is(__m, *__low) != 0)
|
||||||
|
++__low;
|
||||||
|
return __low;
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,98 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file ctype_noninline.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// Information as gleaned from /usr/include/ctype.h
|
||||||
|
|
||||||
|
const ctype_base::mask*
|
||||||
|
ctype<char>::classic_table() throw()
|
||||||
|
{ return _ctype_ + 1; }
|
||||||
|
|
||||||
|
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
||||||
|
size_t __refs)
|
||||||
|
: facet(__refs), _M_del(__table != 0 && __del),
|
||||||
|
_M_toupper(NULL), _M_tolower(NULL),
|
||||||
|
_M_table(__table ? __table : classic_table())
|
||||||
|
{
|
||||||
|
memset(_M_widen, 0, sizeof(_M_widen));
|
||||||
|
_M_widen_ok = 0;
|
||||||
|
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||||
|
_M_narrow_ok = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
||||||
|
: facet(__refs), _M_del(__table != 0 && __del),
|
||||||
|
_M_toupper(NULL), _M_tolower(NULL),
|
||||||
|
_M_table(__table ? __table : classic_table())
|
||||||
|
{
|
||||||
|
memset(_M_widen, 0, sizeof(_M_widen));
|
||||||
|
_M_widen_ok = 0;
|
||||||
|
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||||
|
_M_narrow_ok = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char
|
||||||
|
ctype<char>::do_toupper(char __c) const
|
||||||
|
{
|
||||||
|
int __x = __c;
|
||||||
|
return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::do_toupper(char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
{
|
||||||
|
*__low = this->do_toupper(*__low);
|
||||||
|
++__low;
|
||||||
|
}
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
||||||
|
char
|
||||||
|
ctype<char>::do_tolower(char __c) const
|
||||||
|
{
|
||||||
|
int __x = __c;
|
||||||
|
return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::do_tolower(char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
{
|
||||||
|
*__low = this->do_tolower(*__low);
|
||||||
|
++__low;
|
||||||
|
}
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,81 @@
|
|||||||
|
// Control various target specific ABI tweaks. ARM version.
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file cxxabi_tweaks.h
|
||||||
|
* The header provides an CPU-variable interface to the C++ ABI.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CXXABI_TWEAKS_H
|
||||||
|
#define _CXXABI_TWEAKS_H 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
namespace __cxxabiv1
|
||||||
|
{
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
// The ARM EABI uses the least significant bit of a 32-bit
|
||||||
|
// guard variable. */
|
||||||
|
#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0)
|
||||||
|
#define _GLIBCXX_GUARD_SET(x) *(x) = 1
|
||||||
|
#define _GLIBCXX_GUARD_BIT 1
|
||||||
|
#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
|
||||||
|
#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
|
||||||
|
typedef int __guard;
|
||||||
|
|
||||||
|
// We also want the element size in array cookies.
|
||||||
|
#define _GLIBCXX_ELTSIZE_IN_COOKIE 1
|
||||||
|
|
||||||
|
// __cxa_vec_ctor should return a pointer to the array.
|
||||||
|
typedef void * __cxa_vec_ctor_return_type;
|
||||||
|
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x
|
||||||
|
// Constructors and destructors return the "this" pointer.
|
||||||
|
typedef void * __cxa_cdtor_return_type;
|
||||||
|
|
||||||
|
#else // __ARM_EABI__
|
||||||
|
|
||||||
|
// The generic ABI uses the first byte of a 64-bit guard variable.
|
||||||
|
#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0)
|
||||||
|
#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1
|
||||||
|
#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1)
|
||||||
|
#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
|
||||||
|
#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
|
||||||
|
__extension__ typedef int __guard __attribute__((mode (__DI__)));
|
||||||
|
|
||||||
|
// __cxa_vec_ctor has void return type.
|
||||||
|
typedef void __cxa_vec_ctor_return_type;
|
||||||
|
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return
|
||||||
|
// Constructors and destructors do not return a value.
|
||||||
|
typedef void __cxa_cdtor_return_type;
|
||||||
|
|
||||||
|
#endif //!__ARM_EABI__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
} // namespace __cxxabiv1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,175 @@
|
|||||||
|
// Specific definitions for generic platforms -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file error_constants.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_ERROR_CONSTANTS
|
||||||
|
#define _GLIBCXX_ERROR_CONSTANTS 1
|
||||||
|
|
||||||
|
#include <bits/c++config.h>
|
||||||
|
#include <cerrno>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
enum class errc
|
||||||
|
{
|
||||||
|
address_family_not_supported = EAFNOSUPPORT,
|
||||||
|
address_in_use = EADDRINUSE,
|
||||||
|
address_not_available = EADDRNOTAVAIL,
|
||||||
|
already_connected = EISCONN,
|
||||||
|
argument_list_too_long = E2BIG,
|
||||||
|
argument_out_of_domain = EDOM,
|
||||||
|
bad_address = EFAULT,
|
||||||
|
bad_file_descriptor = EBADF,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EBADMSG
|
||||||
|
bad_message = EBADMSG,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
broken_pipe = EPIPE,
|
||||||
|
connection_aborted = ECONNABORTED,
|
||||||
|
connection_already_in_progress = EALREADY,
|
||||||
|
connection_refused = ECONNREFUSED,
|
||||||
|
connection_reset = ECONNRESET,
|
||||||
|
cross_device_link = EXDEV,
|
||||||
|
destination_address_required = EDESTADDRREQ,
|
||||||
|
device_or_resource_busy = EBUSY,
|
||||||
|
directory_not_empty = ENOTEMPTY,
|
||||||
|
executable_format_error = ENOEXEC,
|
||||||
|
file_exists = EEXIST,
|
||||||
|
file_too_large = EFBIG,
|
||||||
|
filename_too_long = ENAMETOOLONG,
|
||||||
|
function_not_supported = ENOSYS,
|
||||||
|
host_unreachable = EHOSTUNREACH,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EIDRM
|
||||||
|
identifier_removed = EIDRM,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
illegal_byte_sequence = EILSEQ,
|
||||||
|
inappropriate_io_control_operation = ENOTTY,
|
||||||
|
interrupted = EINTR,
|
||||||
|
invalid_argument = EINVAL,
|
||||||
|
invalid_seek = ESPIPE,
|
||||||
|
io_error = EIO,
|
||||||
|
is_a_directory = EISDIR,
|
||||||
|
message_size = EMSGSIZE,
|
||||||
|
network_down = ENETDOWN,
|
||||||
|
network_reset = ENETRESET,
|
||||||
|
network_unreachable = ENETUNREACH,
|
||||||
|
no_buffer_space = ENOBUFS,
|
||||||
|
no_child_process = ECHILD,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOLINK
|
||||||
|
no_link = ENOLINK,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_lock_available = ENOLCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENODATA
|
||||||
|
no_message_available = ENODATA,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_message = ENOMSG,
|
||||||
|
no_protocol_option = ENOPROTOOPT,
|
||||||
|
no_space_on_device = ENOSPC,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOSR
|
||||||
|
no_stream_resources = ENOSR,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_such_device_or_address = ENXIO,
|
||||||
|
no_such_device = ENODEV,
|
||||||
|
no_such_file_or_directory = ENOENT,
|
||||||
|
no_such_process = ESRCH,
|
||||||
|
not_a_directory = ENOTDIR,
|
||||||
|
not_a_socket = ENOTSOCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOSTR
|
||||||
|
not_a_stream = ENOSTR,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
not_connected = ENOTCONN,
|
||||||
|
not_enough_memory = ENOMEM,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOTSUP
|
||||||
|
not_supported = ENOTSUP,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ECANCELED
|
||||||
|
operation_canceled = ECANCELED,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
operation_in_progress = EINPROGRESS,
|
||||||
|
operation_not_permitted = EPERM,
|
||||||
|
operation_not_supported = EOPNOTSUPP,
|
||||||
|
operation_would_block = EWOULDBLOCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EOWNERDEAD
|
||||||
|
owner_dead = EOWNERDEAD,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
permission_denied = EACCES,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EPROTO
|
||||||
|
protocol_error = EPROTO,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
protocol_not_supported = EPROTONOSUPPORT,
|
||||||
|
read_only_file_system = EROFS,
|
||||||
|
resource_deadlock_would_occur = EDEADLK,
|
||||||
|
resource_unavailable_try_again = EAGAIN,
|
||||||
|
result_out_of_range = ERANGE,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
|
||||||
|
state_not_recoverable = ENOTRECOVERABLE,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ETIME
|
||||||
|
stream_timeout = ETIME,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ETXTBSY
|
||||||
|
text_file_busy = ETXTBSY,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
timed_out = ETIMEDOUT,
|
||||||
|
too_many_files_open_in_system = ENFILE,
|
||||||
|
too_many_files_open = EMFILE,
|
||||||
|
too_many_links = EMLINK,
|
||||||
|
too_many_symbolic_link_levels = ELOOP,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EOVERFLOW
|
||||||
|
value_too_large = EOVERFLOW,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wrong_protocol_type = EPROTOTYPE
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,71 @@
|
|||||||
|
// C++ includes used for precompiling extensions -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file extc++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <bits/stdtr1c++.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <ext/algorithm>
|
||||||
|
#include <ext/array_allocator.h>
|
||||||
|
#include <ext/atomicity.h>
|
||||||
|
#include <ext/bitmap_allocator.h>
|
||||||
|
#include <ext/cast.h>
|
||||||
|
#include <ext/concurrence.h>
|
||||||
|
#include <ext/debug_allocator.h>
|
||||||
|
#include <ext/extptr_allocator.h>
|
||||||
|
#include <ext/functional>
|
||||||
|
#include <ext/iterator>
|
||||||
|
#include <ext/malloc_allocator.h>
|
||||||
|
#include <ext/memory>
|
||||||
|
#include <ext/mt_allocator.h>
|
||||||
|
#include <ext/new_allocator.h>
|
||||||
|
#include <ext/numeric>
|
||||||
|
#include <ext/pod_char_traits.h>
|
||||||
|
#include <ext/pointer.h>
|
||||||
|
#include <ext/pool_allocator.h>
|
||||||
|
#include <ext/rb_tree>
|
||||||
|
#include <ext/rope>
|
||||||
|
#include <ext/slist>
|
||||||
|
#include <ext/stdio_filebuf.h>
|
||||||
|
#include <ext/stdio_sync_filebuf.h>
|
||||||
|
#include <ext/throw_allocator.h>
|
||||||
|
#include <ext/typelist.h>
|
||||||
|
#include <ext/type_traits.h>
|
||||||
|
#include <ext/vstring.h>
|
||||||
|
#include <ext/pb_ds/assoc_container.hpp>
|
||||||
|
#include <ext/pb_ds/priority_queue.hpp>
|
||||||
|
#include <ext/pb_ds/exception.hpp>
|
||||||
|
#include <ext/pb_ds/hash_policy.hpp>
|
||||||
|
#include <ext/pb_ds/list_update_policy.hpp>
|
||||||
|
#include <ext/pb_ds/tree_policy.hpp>
|
||||||
|
#include <ext/pb_ds/trie_policy.hpp>
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ICONV
|
||||||
|
#include <ext/codecvt_specializations.h>
|
||||||
|
#include <ext/enc_filebuf.h>
|
||||||
|
#endif
|
@ -0,0 +1,292 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
|
||||||
|
/* Just provide compatibility for mutex handling. */
|
||||||
|
|
||||||
|
typedef int __gthread_key_t;
|
||||||
|
typedef int __gthread_once_t;
|
||||||
|
typedef int __gthread_mutex_t;
|
||||||
|
typedef int __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#define __GTHREAD_ONCE_INIT 0
|
||||||
|
#define __GTHREAD_MUTEX_INIT 0
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
|
||||||
|
|
||||||
|
#define _GLIBCXX_UNUSED __attribute__((unused))
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
/* Should we really exit the program */
|
||||||
|
/* exit (&__objc_thread_exit_status); */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
/* No thread support, use 1. */
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
|
||||||
|
objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#undef _GLIBCXX_UNUSED
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
|
@ -0,0 +1,895 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
||||||
|
2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_POSIX_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_POSIX_H
|
||||||
|
|
||||||
|
/* POSIX threads specific definitions.
|
||||||
|
Easy, since the interface is just one-to-one mapping. */
|
||||||
|
|
||||||
|
#define __GTHREADS 1
|
||||||
|
#define __GTHREADS_CXX0X 1
|
||||||
|
|
||||||
|
/* Some implementations of <pthread.h> require this to be defined. */
|
||||||
|
#if !defined(_REENTRANT) && defined(__osf__)
|
||||||
|
#define _REENTRANT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
typedef pthread_t __gthread_t;
|
||||||
|
typedef pthread_key_t __gthread_key_t;
|
||||||
|
typedef pthread_once_t __gthread_once_t;
|
||||||
|
typedef pthread_mutex_t __gthread_mutex_t;
|
||||||
|
typedef pthread_mutex_t __gthread_recursive_mutex_t;
|
||||||
|
typedef pthread_cond_t __gthread_cond_t;
|
||||||
|
typedef struct timespec __gthread_time_t;
|
||||||
|
|
||||||
|
/* POSIX like conditional variables are supported. Please look at comments
|
||||||
|
in gthr.h for details. */
|
||||||
|
#define __GTHREAD_HAS_COND 1
|
||||||
|
|
||||||
|
#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
|
||||||
|
#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
|
||||||
|
#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
|
||||||
|
#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
#else
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
|
||||||
|
#endif
|
||||||
|
#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
|
||||||
|
#define __GTHREAD_TIME_INIT {0,0}
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
# ifndef __gthrw_pragma
|
||||||
|
# define __gthrw_pragma(pragma)
|
||||||
|
# endif
|
||||||
|
# define __gthrw2(name,name2,type) \
|
||||||
|
static __typeof(type) name __attribute__ ((__weakref__(#name2))); \
|
||||||
|
__gthrw_pragma(weak type)
|
||||||
|
# define __gthrw_(name) __gthrw_ ## name
|
||||||
|
#else
|
||||||
|
# define __gthrw2(name,name2,type)
|
||||||
|
# define __gthrw_(name) name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Typically, __gthrw_foo is a weak reference to symbol foo. */
|
||||||
|
#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
|
||||||
|
|
||||||
|
/* On Tru64, /usr/include/pthread.h uses #pragma extern_prefix "__" to
|
||||||
|
map a subset of the POSIX pthread API to mangled versions of their
|
||||||
|
names. */
|
||||||
|
#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
|
||||||
|
#define __gthrw3(name) __gthrw2(__gthrw_ ## name, __ ## name, name)
|
||||||
|
__gthrw3(pthread_once)
|
||||||
|
__gthrw3(pthread_getspecific)
|
||||||
|
__gthrw3(pthread_setspecific)
|
||||||
|
|
||||||
|
__gthrw3(pthread_create)
|
||||||
|
__gthrw3(pthread_join)
|
||||||
|
__gthrw3(pthread_detach)
|
||||||
|
__gthrw3(pthread_equal)
|
||||||
|
__gthrw3(pthread_self)
|
||||||
|
__gthrw3(pthread_cancel)
|
||||||
|
__gthrw3(sched_yield)
|
||||||
|
|
||||||
|
__gthrw3(pthread_mutex_lock)
|
||||||
|
__gthrw3(pthread_mutex_trylock)
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
__gthrw3(pthread_mutex_timedlock)
|
||||||
|
#endif
|
||||||
|
#endif /* _POSIX_TIMEOUTS */
|
||||||
|
__gthrw3(pthread_mutex_unlock)
|
||||||
|
__gthrw3(pthread_mutex_init)
|
||||||
|
__gthrw3(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
__gthrw3(pthread_cond_broadcast)
|
||||||
|
__gthrw3(pthread_cond_signal)
|
||||||
|
__gthrw3(pthread_cond_wait)
|
||||||
|
__gthrw3(pthread_cond_timedwait)
|
||||||
|
__gthrw3(pthread_cond_destroy)
|
||||||
|
#else
|
||||||
|
__gthrw(pthread_once)
|
||||||
|
__gthrw(pthread_getspecific)
|
||||||
|
__gthrw(pthread_setspecific)
|
||||||
|
|
||||||
|
__gthrw(pthread_create)
|
||||||
|
__gthrw(pthread_join)
|
||||||
|
__gthrw(pthread_equal)
|
||||||
|
__gthrw(pthread_self)
|
||||||
|
__gthrw(pthread_detach)
|
||||||
|
__gthrw(pthread_cancel)
|
||||||
|
__gthrw(sched_yield)
|
||||||
|
|
||||||
|
__gthrw(pthread_mutex_lock)
|
||||||
|
__gthrw(pthread_mutex_trylock)
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
__gthrw(pthread_mutex_timedlock)
|
||||||
|
#endif
|
||||||
|
#endif /* _POSIX_TIMEOUTS */
|
||||||
|
__gthrw(pthread_mutex_unlock)
|
||||||
|
__gthrw(pthread_mutex_init)
|
||||||
|
__gthrw(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
__gthrw(pthread_cond_broadcast)
|
||||||
|
__gthrw(pthread_cond_signal)
|
||||||
|
__gthrw(pthread_cond_wait)
|
||||||
|
__gthrw(pthread_cond_timedwait)
|
||||||
|
__gthrw(pthread_cond_destroy)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__gthrw(pthread_key_create)
|
||||||
|
__gthrw(pthread_key_delete)
|
||||||
|
__gthrw(pthread_mutexattr_init)
|
||||||
|
__gthrw(pthread_mutexattr_settype)
|
||||||
|
__gthrw(pthread_mutexattr_destroy)
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)
|
||||||
|
/* Objective-C. */
|
||||||
|
#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
|
||||||
|
__gthrw3(pthread_cond_init)
|
||||||
|
__gthrw3(pthread_exit)
|
||||||
|
#else
|
||||||
|
__gthrw(pthread_cond_init)
|
||||||
|
__gthrw(pthread_exit)
|
||||||
|
#endif /* __osf__ && _PTHREAD_USE_MANGLED_NAMES_ */
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
__gthrw(sched_get_priority_max)
|
||||||
|
__gthrw(sched_get_priority_min)
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
__gthrw(pthread_attr_destroy)
|
||||||
|
__gthrw(pthread_attr_init)
|
||||||
|
__gthrw(pthread_attr_setdetachstate)
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
__gthrw(pthread_getschedparam)
|
||||||
|
__gthrw(pthread_setschedparam)
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _LIBOBJC || _LIBOBJC_WEAK */
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
|
||||||
|
/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if
|
||||||
|
-pthreads is not specified. The functions are dummies and most return an
|
||||||
|
error value. However pthread_once returns 0 without invoking the routine
|
||||||
|
it is passed so we cannot pretend that the interface is active if -pthreads
|
||||||
|
is not specified. On Solaris 2.5.1, the interface is not exposed at all so
|
||||||
|
we need to play the usual game with weak symbols. On Solaris 10 and up, a
|
||||||
|
working interface is always exposed. On FreeBSD 6 and later, libc also
|
||||||
|
exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up
|
||||||
|
to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc,
|
||||||
|
which means the alternate __gthread_active_p below cannot be used there. */
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__))
|
||||||
|
|
||||||
|
static volatile int __gthread_active = -1;
|
||||||
|
|
||||||
|
static void
|
||||||
|
__gthread_trigger (void)
|
||||||
|
{
|
||||||
|
__gthread_active = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT;
|
||||||
|
|
||||||
|
/* Avoid reading __gthread_active twice on the main code path. */
|
||||||
|
int __gthread_active_latest_value = __gthread_active;
|
||||||
|
|
||||||
|
/* This test is not protected to avoid taking a lock on the main code
|
||||||
|
path so every update of __gthread_active in a threaded program must
|
||||||
|
be atomic with regard to the result of the test. */
|
||||||
|
if (__builtin_expect (__gthread_active_latest_value < 0, 0))
|
||||||
|
{
|
||||||
|
if (__gthrw_(pthread_once))
|
||||||
|
{
|
||||||
|
/* If this really is a threaded program, then we must ensure that
|
||||||
|
__gthread_active has been set to 1 before exiting this block. */
|
||||||
|
__gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
|
||||||
|
__gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger);
|
||||||
|
__gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make sure we'll never enter this block again. */
|
||||||
|
if (__gthread_active < 0)
|
||||||
|
__gthread_active = 0;
|
||||||
|
|
||||||
|
__gthread_active_latest_value = __gthread_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
return __gthread_active_latest_value != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* neither FreeBSD nor Solaris */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
static void *const __gthread_active_ptr
|
||||||
|
= __extension__ (void *) &__gthrw_(pthread_cancel);
|
||||||
|
return __gthread_active_ptr != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* FreeBSD or Solaris */
|
||||||
|
|
||||||
|
#else /* not __GXX_WEAK__ */
|
||||||
|
|
||||||
|
/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread
|
||||||
|
calls in shared flavors of the HP-UX C library. Most of the stubs
|
||||||
|
have no functionality. The details are described in the "libc cumulative
|
||||||
|
patch" for each subversion of HP-UX 11. There are two special interfaces
|
||||||
|
provided for checking whether an application is linked to a pthread
|
||||||
|
library or not. However, these interfaces aren't available in early
|
||||||
|
libc versions. We also can't use pthread_once as some libc versions
|
||||||
|
call the init function. So, we use pthread_create to check whether it
|
||||||
|
is possible to create a thread or not. The stub implementation returns
|
||||||
|
the error number ENOSYS. */
|
||||||
|
|
||||||
|
#if defined(__hppa__) && defined(__hpux__)
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
static volatile int __gthread_active = -1;
|
||||||
|
|
||||||
|
static void *
|
||||||
|
__gthread_start (void *__arg __attribute__((unused)))
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __gthread_active_init (void) __attribute__((noinline));
|
||||||
|
static void
|
||||||
|
__gthread_active_init (void)
|
||||||
|
{
|
||||||
|
static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
pthread_t __t;
|
||||||
|
pthread_attr_t __a;
|
||||||
|
int __result;
|
||||||
|
|
||||||
|
__gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
|
||||||
|
if (__gthread_active < 0)
|
||||||
|
{
|
||||||
|
__gthrw_(pthread_attr_init) (&__a);
|
||||||
|
__gthrw_(pthread_attr_setdetachstate) (&__a, PTHREAD_CREATE_DETACHED);
|
||||||
|
__result = __gthrw_(pthread_create) (&__t, &__a, __gthread_start, NULL);
|
||||||
|
if (__result != ENOSYS)
|
||||||
|
__gthread_active = 1;
|
||||||
|
else
|
||||||
|
__gthread_active = 0;
|
||||||
|
__gthrw_(pthread_attr_destroy) (&__a);
|
||||||
|
}
|
||||||
|
__gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
/* Avoid reading __gthread_active twice on the main code path. */
|
||||||
|
int __gthread_active_latest_value = __gthread_active;
|
||||||
|
|
||||||
|
/* This test is not protected to avoid taking a lock on the main code
|
||||||
|
path so every update of __gthread_active in a threaded program must
|
||||||
|
be atomic with regard to the result of the test. */
|
||||||
|
if (__builtin_expect (__gthread_active_latest_value < 0, 0))
|
||||||
|
{
|
||||||
|
__gthread_active_init ();
|
||||||
|
__gthread_active_latest_value = __gthread_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
return __gthread_active_latest_value != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* not hppa-hpux */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* hppa-hpux */
|
||||||
|
|
||||||
|
#endif /* __GXX_WEAK__ */
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* This is the config.h file in libobjc/ */
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_SCHED_H
|
||||||
|
# include <sched.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Key structure for maintaining thread specific storage */
|
||||||
|
static pthread_key_t _objc_thread_storage;
|
||||||
|
static pthread_attr_t _objc_thread_attribs;
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
/* Initialize the thread storage key. */
|
||||||
|
if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0)
|
||||||
|
{
|
||||||
|
/* The normal default detach state for threads is
|
||||||
|
* PTHREAD_CREATE_JOINABLE which causes threads to not die
|
||||||
|
* when you think they should. */
|
||||||
|
if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0
|
||||||
|
&& __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs,
|
||||||
|
PTHREAD_CREATE_DETACHED) == 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0
|
||||||
|
&& __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (*func)(void *), void *arg)
|
||||||
|
{
|
||||||
|
objc_thread_t thread_id;
|
||||||
|
pthread_t new_thread_handle;
|
||||||
|
|
||||||
|
if (!__gthread_active_p ())
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!(__gthrw_(pthread_create) (&new_thread_handle, NULL, (void *) func, arg)))
|
||||||
|
thread_id = (objc_thread_t) new_thread_handle;
|
||||||
|
else
|
||||||
|
thread_id = NULL;
|
||||||
|
|
||||||
|
return thread_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority)
|
||||||
|
{
|
||||||
|
if (!__gthread_active_p ())
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
pthread_t thread_id = __gthrw_(pthread_self) ();
|
||||||
|
int policy;
|
||||||
|
struct sched_param params;
|
||||||
|
int priority_min, priority_max;
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0)
|
||||||
|
{
|
||||||
|
if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (priority > priority_max)
|
||||||
|
priority = priority_max;
|
||||||
|
else if (priority < priority_min)
|
||||||
|
priority = priority_min;
|
||||||
|
params.sched_priority = priority;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The solaris 7 and several other man pages incorrectly state that
|
||||||
|
* this should be a pointer to policy but pthread.h is universally
|
||||||
|
* at odds with this.
|
||||||
|
*/
|
||||||
|
if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
int policy;
|
||||||
|
struct sched_param params;
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0)
|
||||||
|
return params.sched_priority;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
__gthrw_(sched_yield) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
/* exit the thread */
|
||||||
|
__gthrw_(pthread_exit) (&__objc_thread_exit_status);
|
||||||
|
|
||||||
|
/* Failed if we reached here */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return (objc_thread_t) __gthrw_(pthread_self) ();
|
||||||
|
else
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_setspecific) (_objc_thread_storage, value);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_getspecific) (_objc_thread_storage);
|
||||||
|
else
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL))
|
||||||
|
{
|
||||||
|
objc_free (mutex->backend);
|
||||||
|
mutex->backend = NULL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Posix Threads specifically require that the thread be unlocked
|
||||||
|
* for __gthrw_(pthread_mutex_destroy) to work.
|
||||||
|
*/
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend);
|
||||||
|
if (count < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
while (count);
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
objc_free (mutex->backend);
|
||||||
|
mutex->backend = NULL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
condition->backend = objc_malloc (sizeof (pthread_cond_t));
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL))
|
||||||
|
{
|
||||||
|
objc_free (condition->backend);
|
||||||
|
condition->backend = NULL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
objc_free (condition->backend);
|
||||||
|
condition->backend = NULL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend,
|
||||||
|
(pthread_mutex_t *) mutex->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
|
||||||
|
void *__args)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_join (__gthread_t __threadid, void **__value_ptr)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_join) (__threadid, __value_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_detach (__gthread_t __threadid)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_detach) (__threadid);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_equal (__gthread_t __t1, __gthread_t __t2)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_equal) (__t1, __t2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline __gthread_t
|
||||||
|
__gthread_self (void)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_self) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_yield (void)
|
||||||
|
{
|
||||||
|
return __gthrw_(sched_yield) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once, void (*__func) (void))
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_once) (__once, __func);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_key_create) (__key, __dtor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_delete (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_key_delete) (__key);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_getspecific) (__key);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_setspecific) (__key, __ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_destroy) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_lock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_trylock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_unlock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
pthread_mutexattr_t __attr;
|
||||||
|
int __r;
|
||||||
|
|
||||||
|
__r = __gthrw_(pthread_mutexattr_init) (&__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_settype) (&__attr,
|
||||||
|
PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
|
||||||
|
return __r;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_timedlock (__mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_broadcast (__gthread_cond_t *__cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_broadcast) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_signal (__gthread_cond_t *__cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_signal) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_wait) (__cond, __mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
|
||||||
|
__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_cond_wait (__cond, __mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_timedwait_recursive (__gthread_cond_t *__cond,
|
||||||
|
__gthread_recursive_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthread_cond_timedwait (__cond, __mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_destroy (__gthread_cond_t* __cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_destroy) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */
|
@ -0,0 +1,292 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
|
||||||
|
/* Just provide compatibility for mutex handling. */
|
||||||
|
|
||||||
|
typedef int __gthread_key_t;
|
||||||
|
typedef int __gthread_once_t;
|
||||||
|
typedef int __gthread_mutex_t;
|
||||||
|
typedef int __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#define __GTHREAD_ONCE_INIT 0
|
||||||
|
#define __GTHREAD_MUTEX_INIT 0
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
|
||||||
|
|
||||||
|
#define _GLIBCXX_UNUSED __attribute__((unused))
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
/* Should we really exit the program */
|
||||||
|
/* exit (&__objc_thread_exit_status); */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
/* No thread support, use 1. */
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
|
||||||
|
objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#undef _GLIBCXX_UNUSED
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
|
@ -0,0 +1,229 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc.
|
||||||
|
Compile this one with gcc.
|
||||||
|
Copyright (C) 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* TPF needs its own version of gthr-*.h because TPF always links to
|
||||||
|
the thread library. However, for performance reasons we still do not
|
||||||
|
want to issue thread api calls unless a check is made to see that we
|
||||||
|
are running as a thread. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_TPF_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_TPF_H
|
||||||
|
|
||||||
|
/* POSIX threads specific definitions.
|
||||||
|
Easy, since the interface is just one-to-one mapping. */
|
||||||
|
|
||||||
|
#define __GTHREADS 1
|
||||||
|
|
||||||
|
/* Some implementations of <pthread.h> require this to be defined. */
|
||||||
|
#ifndef _REENTRANT
|
||||||
|
#define _REENTRANT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
typedef pthread_key_t __gthread_key_t;
|
||||||
|
typedef pthread_once_t __gthread_once_t;
|
||||||
|
typedef pthread_mutex_t __gthread_mutex_t;
|
||||||
|
typedef pthread_mutex_t __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
|
||||||
|
#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
|
||||||
|
#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
|
||||||
|
|
||||||
|
#define NOTATHREAD 00
|
||||||
|
#define ECBBASEPTR (unsigned long int) *(unsigned int *)0x00000514u
|
||||||
|
#define ECBPG2PTR ECBBASEPTR + 0x1000
|
||||||
|
#define CE2THRCPTR *((unsigned char *)(ECBPG2PTR + 16))
|
||||||
|
#define __tpf_pthread_active() (CE2THRCPTR != NOTATHREAD)
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
# define __gthrw(name) \
|
||||||
|
static __typeof(name) __gthrw_ ## name __attribute__ ((__weakref__(#name)));
|
||||||
|
# define __gthrw_(name) __gthrw_ ## name
|
||||||
|
#else
|
||||||
|
# define __gthrw(name)
|
||||||
|
# define __gthrw_(name) name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__gthrw(pthread_once)
|
||||||
|
__gthrw(pthread_key_create)
|
||||||
|
__gthrw(pthread_key_delete)
|
||||||
|
__gthrw(pthread_getspecific)
|
||||||
|
__gthrw(pthread_setspecific)
|
||||||
|
__gthrw(pthread_create)
|
||||||
|
|
||||||
|
__gthrw(pthread_mutex_lock)
|
||||||
|
__gthrw(pthread_mutex_trylock)
|
||||||
|
__gthrw(pthread_mutex_unlock)
|
||||||
|
__gthrw(pthread_mutexattr_init)
|
||||||
|
__gthrw(pthread_mutexattr_settype)
|
||||||
|
__gthrw(pthread_mutexattr_destroy)
|
||||||
|
__gthrw(pthread_mutex_init)
|
||||||
|
__gthrw(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once, void (*__func) (void))
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_once) (__once, __func);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_key_create) (__key, __dtor);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_delete (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_key_delete) (__key);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_getspecific) (__key);
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_setspecific) (__key, __ptr);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_destroy) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_lock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_trylock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_unlock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
{
|
||||||
|
pthread_mutexattr_t __attr;
|
||||||
|
int __r;
|
||||||
|
|
||||||
|
__r = __gthrw_(pthread_mutexattr_init) (&__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_settype) (&__attr,
|
||||||
|
PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
|
||||||
|
return __r;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_TPF_H */
|
@ -0,0 +1,173 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1998, 2004, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_H
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_HIDE_EXPORTS
|
||||||
|
#pragma GCC visibility push(default)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If this file is compiled with threads support, it must
|
||||||
|
#define __GTHREADS 1
|
||||||
|
to indicate that threads support is present. Also it has define
|
||||||
|
function
|
||||||
|
int __gthread_active_p ()
|
||||||
|
that returns 1 if thread system is active, 0 if not.
|
||||||
|
|
||||||
|
The threads interface must define the following types:
|
||||||
|
__gthread_key_t
|
||||||
|
__gthread_once_t
|
||||||
|
__gthread_mutex_t
|
||||||
|
__gthread_recursive_mutex_t
|
||||||
|
|
||||||
|
The threads interface must define the following macros:
|
||||||
|
|
||||||
|
__GTHREAD_ONCE_INIT
|
||||||
|
to initialize __gthread_once_t
|
||||||
|
__GTHREAD_MUTEX_INIT
|
||||||
|
to initialize __gthread_mutex_t to get a fast
|
||||||
|
non-recursive mutex.
|
||||||
|
__GTHREAD_MUTEX_INIT_FUNCTION
|
||||||
|
some systems can't initialize a mutex without a
|
||||||
|
function call. On such systems, define this to a
|
||||||
|
function which looks like this:
|
||||||
|
void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *)
|
||||||
|
Don't define __GTHREAD_MUTEX_INIT in this case
|
||||||
|
__GTHREAD_RECURSIVE_MUTEX_INIT
|
||||||
|
__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION
|
||||||
|
as above, but for a recursive mutex.
|
||||||
|
|
||||||
|
The threads interface must define the following static functions:
|
||||||
|
|
||||||
|
int __gthread_once (__gthread_once_t *once, void (*func) ())
|
||||||
|
|
||||||
|
int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *))
|
||||||
|
int __gthread_key_delete (__gthread_key_t key)
|
||||||
|
|
||||||
|
void *__gthread_getspecific (__gthread_key_t key)
|
||||||
|
int __gthread_setspecific (__gthread_key_t key, const void *ptr)
|
||||||
|
|
||||||
|
int __gthread_mutex_destroy (__gthread_mutex_t *mutex);
|
||||||
|
|
||||||
|
int __gthread_mutex_lock (__gthread_mutex_t *mutex);
|
||||||
|
int __gthread_mutex_trylock (__gthread_mutex_t *mutex);
|
||||||
|
int __gthread_mutex_unlock (__gthread_mutex_t *mutex);
|
||||||
|
|
||||||
|
int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
|
||||||
|
The following are supported in POSIX threads only. They are required to
|
||||||
|
fix a deadlock in static initialization inside libsupc++. The header file
|
||||||
|
gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra
|
||||||
|
features are supported.
|
||||||
|
|
||||||
|
Types:
|
||||||
|
__gthread_cond_t
|
||||||
|
|
||||||
|
Macros:
|
||||||
|
__GTHREAD_COND_INIT
|
||||||
|
__GTHREAD_COND_INIT_FUNCTION
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
int __gthread_cond_broadcast (__gthread_cond_t *cond);
|
||||||
|
int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex);
|
||||||
|
int __gthread_cond_wait_recursive (__gthread_cond_t *cond,
|
||||||
|
__gthread_recursive_mutex_t *mutex);
|
||||||
|
|
||||||
|
All functions returning int should return zero on success or the error
|
||||||
|
number. If the operation is not supported, -1 is returned.
|
||||||
|
|
||||||
|
If the following are also defined, you should
|
||||||
|
#define __GTHREADS_CXX0X 1
|
||||||
|
to enable the c++0x thread library.
|
||||||
|
|
||||||
|
Types:
|
||||||
|
__gthread_t
|
||||||
|
__gthread_time_t
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
int __gthread_create (__gthread_t *thread, void *(*func) (void*),
|
||||||
|
void *args);
|
||||||
|
int __gthread_join (__gthread_t thread, void **value_ptr);
|
||||||
|
int __gthread_detach (__gthread_t thread);
|
||||||
|
int __gthread_equal (__gthread_t t1, __gthread_t t2);
|
||||||
|
__gthread_t __gthread_self (void);
|
||||||
|
int __gthread_yield (void);
|
||||||
|
|
||||||
|
int __gthread_mutex_timedlock (__gthread_mutex_t *m,
|
||||||
|
const __gthread_time_t *abs_timeout);
|
||||||
|
int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m,
|
||||||
|
const __gthread_time_t *abs_time);
|
||||||
|
|
||||||
|
int __gthread_cond_signal (__gthread_cond_t *cond);
|
||||||
|
int __gthread_cond_timedwait (__gthread_cond_t *cond,
|
||||||
|
__gthread_mutex_t *mutex,
|
||||||
|
const __gthread_time_t *abs_timeout);
|
||||||
|
int __gthread_cond_timedwait_recursive (__gthread_cond_t *cond,
|
||||||
|
__gthread_recursive_mutex_t *mutex,
|
||||||
|
const __gthread_time_t *abs_time)
|
||||||
|
|
||||||
|
Currently supported threads packages are
|
||||||
|
TPF threads with -D__tpf__
|
||||||
|
POSIX/Unix98 threads with -D_PTHREADS
|
||||||
|
POSIX/Unix95 threads with -D_PTHREADS95
|
||||||
|
DCE threads with -D_DCE_THREADS
|
||||||
|
Solaris/UI threads with -D_SOLARIS_THREADS
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Check first for thread specific defines. */
|
||||||
|
#if defined (_GLIBCXX___tpf_GLIBCXX___)
|
||||||
|
#include <bits/gthr-tpf.h>
|
||||||
|
#elif _GLIBCXX__PTHREADS
|
||||||
|
#include <bits/gthr-posix.h>
|
||||||
|
#elif _GLIBCXX__PTHREADS95
|
||||||
|
#include <bits/gthr-posix95.h>
|
||||||
|
#elif _GLIBCXX__DCE_THREADS
|
||||||
|
#include <bits/gthr-dce.h>
|
||||||
|
#elif _GLIBCXX__SOLARIS_THREADS
|
||||||
|
#include <bits/gthr-solaris.h>
|
||||||
|
|
||||||
|
/* Include GTHREAD_FILE if one is defined. */
|
||||||
|
#elif defined(_GLIBCXX_HAVE_GTHR_DEFAULT)
|
||||||
|
#if __GXX_WEAK__
|
||||||
|
#ifndef _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
#define _GLIBCXX_GTHREAD_USE_WEAK 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#include <bits/gthr-default.h>
|
||||||
|
|
||||||
|
/* Fallback to single thread definitions. */
|
||||||
|
#else
|
||||||
|
#include <bits/gthr-single.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_HIDE_EXPORTS
|
||||||
|
#pragma GCC visibility pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_H */
|
@ -0,0 +1,90 @@
|
|||||||
|
// std::messages implementation details, generic version -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file messages_members.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.2.7.1.2 messages virtual functions
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
// Non-virtual member functions.
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::messages(size_t __refs)
|
||||||
|
: facet(__refs)
|
||||||
|
{ _M_c_locale_messages = _S_get_c_locale(); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::messages(__c_locale, const char*, size_t __refs)
|
||||||
|
: facet(__refs)
|
||||||
|
{ _M_c_locale_messages = _S_get_c_locale(); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::catalog
|
||||||
|
messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
|
||||||
|
const char*) const
|
||||||
|
{ return this->do_open(__s, __loc); }
|
||||||
|
|
||||||
|
// Virtual member functions.
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::~messages()
|
||||||
|
{ _S_destroy_c_locale(_M_c_locale_messages); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::catalog
|
||||||
|
messages<_CharT>::do_open(const basic_string<char>&, const locale&) const
|
||||||
|
{ return 0; }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::string_type
|
||||||
|
messages<_CharT>::do_get(catalog, int, int,
|
||||||
|
const string_type& __dfault) const
|
||||||
|
{ return __dfault; }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
void
|
||||||
|
messages<_CharT>::do_close(catalog) const
|
||||||
|
{ }
|
||||||
|
|
||||||
|
// messages_byname
|
||||||
|
template<typename _CharT>
|
||||||
|
messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
|
||||||
|
: messages<_CharT>(__refs)
|
||||||
|
{
|
||||||
|
if (__builtin_strcmp(__s, "C") != 0
|
||||||
|
&& __builtin_strcmp(__s, "POSIX") != 0)
|
||||||
|
{
|
||||||
|
this->_S_destroy_c_locale(this->_M_c_locale_messages);
|
||||||
|
this->_S_create_c_locale(this->_M_c_locale_messages, __s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,52 @@
|
|||||||
|
// Specific definitions for newlib -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file os_defines.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_OS_DEFINES
|
||||||
|
#define _GLIBCXX_OS_DEFINES 1
|
||||||
|
|
||||||
|
// System-specific #define, typedefs, corrections, etc, go here. This
|
||||||
|
// file will come before all others.
|
||||||
|
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
#define _GLIBCXX_GTHREAD_USE_WEAK 0
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_DLL)
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__))
|
||||||
|
#else
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_default
|
||||||
|
#endif
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_hidden
|
||||||
|
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V
|
||||||
|
|
||||||
|
// See libstdc++/20806.
|
||||||
|
#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,115 @@
|
|||||||
|
// C++ includes used for precompiling -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file stdc++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 17.4.1.2 Headers
|
||||||
|
|
||||||
|
// C
|
||||||
|
#ifndef _GLIBCXX_NO_ASSERT
|
||||||
|
#include <cassert>
|
||||||
|
#endif
|
||||||
|
#include <cctype>
|
||||||
|
#include <cerrno>
|
||||||
|
#include <cfloat>
|
||||||
|
#include <ciso646>
|
||||||
|
#include <climits>
|
||||||
|
#include <clocale>
|
||||||
|
#include <cmath>
|
||||||
|
#include <csetjmp>
|
||||||
|
#include <csignal>
|
||||||
|
#include <cstdarg>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <ccomplex>
|
||||||
|
#include <cfenv>
|
||||||
|
#include <cinttypes>
|
||||||
|
#include <cstdbool>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <ctgmath>
|
||||||
|
#include <cwchar>
|
||||||
|
#include <cwctype>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// C++
|
||||||
|
#include <algorithm>
|
||||||
|
#include <bitset>
|
||||||
|
#include <complex>
|
||||||
|
#include <deque>
|
||||||
|
#include <exception>
|
||||||
|
#include <fstream>
|
||||||
|
#include <functional>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <ios>
|
||||||
|
#include <iosfwd>
|
||||||
|
#include <iostream>
|
||||||
|
#include <istream>
|
||||||
|
#include <iterator>
|
||||||
|
#include <limits>
|
||||||
|
#include <list>
|
||||||
|
#include <locale>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
#include <new>
|
||||||
|
#include <numeric>
|
||||||
|
#include <ostream>
|
||||||
|
#include <queue>
|
||||||
|
#include <set>
|
||||||
|
#include <sstream>
|
||||||
|
#include <stack>
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <streambuf>
|
||||||
|
#include <string>
|
||||||
|
#include <typeinfo>
|
||||||
|
#include <utility>
|
||||||
|
#include <valarray>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <array>
|
||||||
|
#include <atomic>
|
||||||
|
#include <chrono>
|
||||||
|
#include <condition_variable>
|
||||||
|
#include <forward_list>
|
||||||
|
#include <future>
|
||||||
|
#include <initializer_list>
|
||||||
|
#include <mutex>
|
||||||
|
#include <random>
|
||||||
|
#include <ratio>
|
||||||
|
#include <regex>
|
||||||
|
#include <system_error>
|
||||||
|
#include <thread>
|
||||||
|
#include <tuple>
|
||||||
|
#include <type_traits>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <unordered_set>
|
||||||
|
#endif
|
@ -0,0 +1,53 @@
|
|||||||
|
// C++ includes used for precompiling TR1 -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file stdtr1c++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <bits/stdc++.h>
|
||||||
|
|
||||||
|
#include <tr1/array>
|
||||||
|
#include <tr1/cctype>
|
||||||
|
#include <tr1/cfenv>
|
||||||
|
#include <tr1/cfloat>
|
||||||
|
#include <tr1/cinttypes>
|
||||||
|
#include <tr1/climits>
|
||||||
|
#include <tr1/cmath>
|
||||||
|
#include <tr1/complex>
|
||||||
|
#include <tr1/cstdarg>
|
||||||
|
#include <tr1/cstdbool>
|
||||||
|
#include <tr1/cstdint>
|
||||||
|
#include <tr1/cstdio>
|
||||||
|
#include <tr1/cstdlib>
|
||||||
|
#include <tr1/ctgmath>
|
||||||
|
#include <tr1/ctime>
|
||||||
|
#include <tr1/cwchar>
|
||||||
|
#include <tr1/cwctype>
|
||||||
|
#include <tr1/functional>
|
||||||
|
#include <tr1/random>
|
||||||
|
#include <tr1/tuple>
|
||||||
|
#include <tr1/unordered_map>
|
||||||
|
#include <tr1/unordered_set>
|
||||||
|
#include <tr1/utility>
|
@ -0,0 +1,90 @@
|
|||||||
|
// std::time_get, std::time_put implementation, generic version -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file time_members.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.2.5.1.2 - time_get functions
|
||||||
|
// ISO C++ 14882: 22.2.5.3.2 - time_put functions
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(size_t __refs)
|
||||||
|
: facet(__refs), _M_data(NULL)
|
||||||
|
{
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
_M_initialize_timepunct();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
|
||||||
|
: facet(__refs), _M_data(__cache)
|
||||||
|
{
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
_M_initialize_timepunct();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
|
||||||
|
size_t __refs)
|
||||||
|
: facet(__refs), _M_data(NULL)
|
||||||
|
{
|
||||||
|
if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
|
||||||
|
{
|
||||||
|
const size_t __len = __builtin_strlen(__s) + 1;
|
||||||
|
char* __tmp = new char[__len];
|
||||||
|
__builtin_memcpy(__tmp, __s, __len);
|
||||||
|
_M_name_timepunct = __tmp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
|
||||||
|
__try
|
||||||
|
{ _M_initialize_timepunct(__cloc); }
|
||||||
|
__catch(...)
|
||||||
|
{
|
||||||
|
if (_M_name_timepunct != _S_get_c_name())
|
||||||
|
delete [] _M_name_timepunct;
|
||||||
|
__throw_exception_again;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::~__timepunct()
|
||||||
|
{
|
||||||
|
if (_M_name_timepunct != _S_get_c_name())
|
||||||
|
delete [] _M_name_timepunct;
|
||||||
|
delete _M_data;
|
||||||
|
_S_destroy_c_locale(_M_c_locale_timepunct);
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,47 @@
|
|||||||
|
// Low-level type for atomic operations -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file atomic_word.h
|
||||||
|
* This file is a GNU extension to the Standard C++ Library.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_ATOMIC_WORD_H
|
||||||
|
#define _GLIBCXX_ATOMIC_WORD_H 1
|
||||||
|
|
||||||
|
typedef int _Atomic_word;
|
||||||
|
|
||||||
|
// Define these two macros using the appropriate memory barrier for the target.
|
||||||
|
// The commented out versions below are the defaults.
|
||||||
|
// See ia64/atomic_word.h for an alternative approach.
|
||||||
|
|
||||||
|
// This one prevents loads from being hoisted across the barrier;
|
||||||
|
// in other words, this is a Load-Load acquire barrier.
|
||||||
|
// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h.
|
||||||
|
// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
|
||||||
|
|
||||||
|
// This one prevents stores from being sunk across the barrier; in other
|
||||||
|
// words, a Store-Store release barrier.
|
||||||
|
// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,108 @@
|
|||||||
|
// Wrapper of C-language FILE struct -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 27.8 File-based streams
|
||||||
|
//
|
||||||
|
|
||||||
|
/** @file basic_file.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_BASIC_FILE_STDIO_H
|
||||||
|
#define _GLIBCXX_BASIC_FILE_STDIO_H 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <bits/c++config.h>
|
||||||
|
#include <bits/c++io.h> // for __c_lock and __c_file
|
||||||
|
#include <ios>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
// Generic declaration.
|
||||||
|
template<typename _CharT>
|
||||||
|
class __basic_file;
|
||||||
|
|
||||||
|
// Specialization.
|
||||||
|
template<>
|
||||||
|
class __basic_file<char>
|
||||||
|
{
|
||||||
|
// Underlying data source/sink.
|
||||||
|
__c_file* _M_cfile;
|
||||||
|
|
||||||
|
// True iff we opened _M_cfile, and thus must close it ourselves.
|
||||||
|
bool _M_cfile_created;
|
||||||
|
|
||||||
|
public:
|
||||||
|
__basic_file(__c_lock* __lock = 0) throw ();
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
sys_open(__c_file* __file, ios_base::openmode);
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
sys_open(int __fd, ios_base::openmode __mode) throw ();
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
close();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE bool
|
||||||
|
is_open() const throw ();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE int
|
||||||
|
fd() throw ();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE __c_file*
|
||||||
|
file() throw ();
|
||||||
|
|
||||||
|
~__basic_file();
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsputn(const char* __s, streamsize __n);
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsputn_2(const char* __s1, streamsize __n1,
|
||||||
|
const char* __s2, streamsize __n2);
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsgetn(char* __s, streamsize __n);
|
||||||
|
|
||||||
|
streamoff
|
||||||
|
seekoff(streamoff __off, ios_base::seekdir __way) throw ();
|
||||||
|
|
||||||
|
int
|
||||||
|
sync();
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
showmanyc();
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,37 @@
|
|||||||
|
// Base to std::allocator -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++allocator.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_ALLOCATOR_H
|
||||||
|
#define _GLIBCXX_CXX_ALLOCATOR_H 1
|
||||||
|
|
||||||
|
// Define new_allocator as the base class to std::allocator.
|
||||||
|
#include <ext/new_allocator.h>
|
||||||
|
#define __glibcxx_base_allocator __gnu_cxx::new_allocator
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,1506 @@
|
|||||||
|
// Predefined symbols and macros -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
|
// 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++config.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_CONFIG_H
|
||||||
|
#define _GLIBCXX_CXX_CONFIG_H 1
|
||||||
|
|
||||||
|
// The current version of the C++ library in compressed ISO date format.
|
||||||
|
#define __GLIBCXX__ 20101216
|
||||||
|
|
||||||
|
// Macros for visibility.
|
||||||
|
// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
|
||||||
|
// _GLIBCXX_VISIBILITY_ATTR
|
||||||
|
# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1
|
||||||
|
|
||||||
|
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
|
||||||
|
# define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
|
||||||
|
#else
|
||||||
|
// If this is not supplied by the OS-specific or CPU-specific
|
||||||
|
// headers included below, it will be defined to an empty default.
|
||||||
|
# define _GLIBCXX_VISIBILITY_ATTR(V) _GLIBCXX_PSEUDO_VISIBILITY(V)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for deprecated.
|
||||||
|
// _GLIBCXX_DEPRECATED
|
||||||
|
// _GLIBCXX_DEPRECATED_ATTR
|
||||||
|
#ifndef _GLIBCXX_DEPRECATED
|
||||||
|
# define _GLIBCXX_DEPRECATED 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||||
|
# define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__))
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_DEPRECATED_ATTR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for activating various namespace association modes.
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
|
||||||
|
// Guide to libstdc++ namespaces.
|
||||||
|
/*
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __debug { }
|
||||||
|
namespace __parallel { }
|
||||||
|
namespace __norm { } // __normative, __shadow, __replaced
|
||||||
|
namespace __cxx1998 { }
|
||||||
|
|
||||||
|
namespace tr1 { }
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#if __cplusplus
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_DEBUG
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_PARALLEL
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace association for profile
|
||||||
|
#ifdef _GLIBCXX_PROFILE
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
|
||||||
|
|
||||||
|
// Defined if any namespace association modes are active.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
# define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for namespace scope. Either namespace std:: or the name
|
||||||
|
// of some nested namespace within it.
|
||||||
|
// _GLIBCXX_STD
|
||||||
|
// _GLIBCXX_STD_D
|
||||||
|
// _GLIBCXX_STD_P
|
||||||
|
//
|
||||||
|
// Macros for enclosing namespaces and possibly nested namespaces.
|
||||||
|
// _GLIBCXX_BEGIN_NAMESPACE
|
||||||
|
// _GLIBCXX_END_NAMESPACE
|
||||||
|
// _GLIBCXX_BEGIN_NESTED_NAMESPACE
|
||||||
|
// _GLIBCXX_END_NESTED_NAMESPACE
|
||||||
|
#ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_PR _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD std
|
||||||
|
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X)
|
||||||
|
# define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
#else
|
||||||
|
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD _6
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6)
|
||||||
|
# define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// debug
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE -1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// parallel
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// debug + parallel
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE -1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// profile
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL || _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
|
||||||
|
# error Cannot use -D_GLIBCXX_PROFILE with -D_GLIBCXX_DEBUG or \
|
||||||
|
-D_GLIBCXX_PARALLEL
|
||||||
|
# endif
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_PR __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __NO_INLINE__ && !__GXX_WEAK__
|
||||||
|
# warning currently using namespace associated mode which may fail \
|
||||||
|
without inlining due to lack of weak symbols
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NESTED_NAMESPACE } }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for debug mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __debug { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for parallel mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __parallel { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for profile mode
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __profile { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for versioning mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace __gnu_cxx
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace tr1
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// XXX GLIBCXX_ABI Deprecated
|
||||||
|
// Define if compatibility should be provided for -mlong-double-64
|
||||||
|
#undef _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||||
|
|
||||||
|
// Namespace associations for long double 128 mode.
|
||||||
|
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
inline namespace __gnu_cxx_ldbl128 { }
|
||||||
|
}
|
||||||
|
# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
|
||||||
|
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
|
||||||
|
# define _GLIBCXX_END_LDBL_NAMESPACE }
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_LDBL_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE
|
||||||
|
# define _GLIBCXX_END_LDBL_NAMESPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Defines for C compatibility. In particular, define extern "C"
|
||||||
|
// linkage only when using C++.
|
||||||
|
# define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
|
||||||
|
# define _GLIBCXX_END_EXTERN_C }
|
||||||
|
|
||||||
|
#else // !__cplusplus
|
||||||
|
# undef _GLIBCXX_BEGIN_NAMESPACE
|
||||||
|
# undef _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X)
|
||||||
|
# define _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_EXTERN_C
|
||||||
|
# define _GLIBCXX_END_EXTERN_C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// First includes.
|
||||||
|
|
||||||
|
// Pick up any OS-specific definitions.
|
||||||
|
#include <bits/os_defines.h>
|
||||||
|
|
||||||
|
// Pick up any CPU-specific definitions.
|
||||||
|
#include <bits/cpu_defines.h>
|
||||||
|
|
||||||
|
// If platform uses neither visibility nor psuedo-visibility,
|
||||||
|
// specify empty default for namespace annotation macros.
|
||||||
|
#ifndef _GLIBCXX_PSEUDO_VISIBILITY
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY(V)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Allow use of "export template." This is currently not a feature
|
||||||
|
// that g++ supports.
|
||||||
|
// #define _GLIBCXX_EXPORT_TEMPLATE 1
|
||||||
|
|
||||||
|
// Allow use of the GNU syntax extension, "extern template." This
|
||||||
|
// extension is fully documented in the g++ manual, but in a nutshell,
|
||||||
|
// it inhibits all implicit instantiations and is used throughout the
|
||||||
|
// library to avoid multiple weak definitions for required types that
|
||||||
|
// are already explicitly instantiated in the library binary. This
|
||||||
|
// substantially reduces the binary size of resulting executables.
|
||||||
|
|
||||||
|
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
|
||||||
|
// templates only in basic_string, thus activating its debug-mode
|
||||||
|
// checks even at -O0.
|
||||||
|
#ifndef _GLIBCXX_EXTERN_TEMPLATE
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Certain function definitions that are meant to be overridable from
|
||||||
|
// user code are decorated with this macro. For some targets, this
|
||||||
|
// macro causes these definitions to be weak.
|
||||||
|
#ifndef _GLIBCXX_WEAK_DEFINITION
|
||||||
|
# define _GLIBCXX_WEAK_DEFINITION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Assert.
|
||||||
|
// Avoid the use of assert, because we're trying to keep the <cassert>
|
||||||
|
// include out of the mix.
|
||||||
|
#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL)
|
||||||
|
#define __glibcxx_assert(_Condition)
|
||||||
|
#else
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
// Avoid the use of assert, because we're trying to keep the <cassert>
|
||||||
|
// include out of the mix.
|
||||||
|
inline void
|
||||||
|
__replacement_assert(const char* __file, int __line,
|
||||||
|
const char* __function, const char* __condition)
|
||||||
|
{
|
||||||
|
__builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line,
|
||||||
|
__function, __condition);
|
||||||
|
__builtin_abort();
|
||||||
|
}
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#define __glibcxx_assert(_Condition) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (! (_Condition)) \
|
||||||
|
std::__replacement_assert(__FILE__, __LINE__, \
|
||||||
|
__PRETTY_FUNCTION__, #_Condition); \
|
||||||
|
} while (false)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// The remainder of the prewritten config is automatic; all the
|
||||||
|
// user hooks are listed above.
|
||||||
|
|
||||||
|
// Create a boolean flag to be used to determine if --fast-math is set.
|
||||||
|
#ifdef __FAST_MATH__
|
||||||
|
# define _GLIBCXX_FAST_MATH 1
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_FAST_MATH 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// This marks string literals in header files to be extracted for eventual
|
||||||
|
// translation. It is primarily used for messages in thrown exceptions; see
|
||||||
|
// src/functexcept.cc. We use __N because the more traditional _N is used
|
||||||
|
// for something else under certain OSes (see BADNAMES).
|
||||||
|
#define __N(msgid) (msgid)
|
||||||
|
|
||||||
|
// For example, <windows.h> is known to #define min and max as macros...
|
||||||
|
#undef min
|
||||||
|
#undef max
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_PURE
|
||||||
|
# define _GLIBCXX_PURE __attribute__ ((__pure__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CONST
|
||||||
|
# define _GLIBCXX_CONST __attribute__ ((__const__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_NORETURN
|
||||||
|
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_NOTHROW
|
||||||
|
# ifdef __cplusplus
|
||||||
|
# define _GLIBCXX_NOTHROW throw()
|
||||||
|
# else
|
||||||
|
# define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// End of prewritten config; the discovered settings follow.
|
||||||
|
/* config.h. Generated from config.h.in by configure. */
|
||||||
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `acosf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ACOSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `acosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ACOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `asinf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ASINF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `asinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ASINL */
|
||||||
|
|
||||||
|
/* Define to 1 if the target assembler supports .symver directive. */
|
||||||
|
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atan2f' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ATAN2F 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atan2l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ATAN2L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atanf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ATANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ATANL */
|
||||||
|
|
||||||
|
/* Define to 1 if the target assembler supports thread-local storage. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_CC_TLS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ceilf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_CEILF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ceill' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_CEILL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <complex.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `cosf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_COSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `coshf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_COSHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `coshl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COSHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `cosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_DLFCN_H */
|
||||||
|
|
||||||
|
/* Define if EBADMSG exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EBADMSG 1
|
||||||
|
|
||||||
|
/* Define if ECANCELED exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ECANCELED 1
|
||||||
|
|
||||||
|
/* Define if EIDRM exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EIDRM 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <endian.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ENDIAN_H */
|
||||||
|
|
||||||
|
/* Define if ENODATA exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENODATA 1
|
||||||
|
|
||||||
|
/* Define if ENOLINK exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOLINK 1
|
||||||
|
|
||||||
|
/* Define if ENOSR exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOSR 1
|
||||||
|
|
||||||
|
/* Define if ENOSTR exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOSTR 1
|
||||||
|
|
||||||
|
/* Define if ENOTRECOVERABLE exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1
|
||||||
|
|
||||||
|
/* Define if ENOTSUP exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOTSUP 1
|
||||||
|
|
||||||
|
/* Define if EOVERFLOW exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EOVERFLOW 1
|
||||||
|
|
||||||
|
/* Define if EOWNERDEAD exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EOWNERDEAD 1
|
||||||
|
|
||||||
|
/* Define if EPROTO exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EPROTO 1
|
||||||
|
|
||||||
|
/* Define if ETIME exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ETIME 1
|
||||||
|
|
||||||
|
/* Define if ETXTBSY exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ETXTBSY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `expf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_EXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `expl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_EXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fabsf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FABSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fabsl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FABSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fenv.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FENV_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finite' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finitef' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITEF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finitel' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITEL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <float.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_FLOAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `floorf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FLOORF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `floorl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FLOORL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fmodf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FMODF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fmodl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FMODL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fp.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FP_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `frexpf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FREXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `frexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FREXPL */
|
||||||
|
|
||||||
|
/* Define if _Unwind_GetIPInfo is available. */
|
||||||
|
#define _GLIBCXX_HAVE_GETIPINFO 1
|
||||||
|
|
||||||
|
/* Define if gthr-default.h exists (meaning that threading support is
|
||||||
|
enabled). */
|
||||||
|
/* #undef _GLIBCXX_HAVE_GTHR_DEFAULT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypot' function. */
|
||||||
|
#define _GLIBCXX_HAVE_HYPOT 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypotf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_HYPOTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypotl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_HYPOTL */
|
||||||
|
|
||||||
|
/* Define if you have the iconv() function. */
|
||||||
|
#define _GLIBCXX_HAVE_ICONV 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ieeefp.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_IEEEFP_H 1
|
||||||
|
|
||||||
|
/* Define if int64_t is available in <stdint.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_INT64_T 1
|
||||||
|
|
||||||
|
/* Define if int64_t is a long. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_INT64_T_LONG */
|
||||||
|
|
||||||
|
/* Define if int64_t is a long long. */
|
||||||
|
#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnan' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNAN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNANL */
|
||||||
|
|
||||||
|
/* Defined if iswblank exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ISWBLANK 1
|
||||||
|
|
||||||
|
/* Define if LC_MESSAGES is available in <locale.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_LC_MESSAGES 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ldexpf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LDEXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ldexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LDEXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libintl.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_AS */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_DATA */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_RSS */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */
|
||||||
|
|
||||||
|
/* Define if futex syscall is available. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <locale.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_LOCALE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `log10f' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LOG10F 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `log10l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LOG10L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `logf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LOGF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `logl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LOGL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/endian.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/param.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define if mbstate_t exists in wchar.h. */
|
||||||
|
#define _GLIBCXX_HAVE_MBSTATE_T 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MEMORY_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modff' function. */
|
||||||
|
#define _GLIBCXX_HAVE_MODFF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MODFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <nan.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_NAN_H */
|
||||||
|
|
||||||
|
/* Define if poll is available in <poll.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_POLL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `powf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_POWF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `powl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_POWL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `qfpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_QFPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setenv' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SETENV */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincos' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SINF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinhf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SINHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sqrtf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SQRTF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sqrtl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SQRTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdbool.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDBOOL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define if strerror_l is available in <string.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRERROR_L */
|
||||||
|
|
||||||
|
/* Define if strerror_r is available in <string.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_STRERROR_R 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRINGS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtof' function. */
|
||||||
|
#define _GLIBCXX_HAVE_STRTOF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtold' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRTOLD */
|
||||||
|
|
||||||
|
/* Define if strxfrm_l is available in <string.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRXFRM_L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/filio.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ipc.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_IPC_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/isa_defs.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/machine.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/sem.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_SEM_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_TIME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/uio.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_UIO_H */
|
||||||
|
|
||||||
|
/* Define if S_IFREG is available in <sys/stat.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_S_IFREG */
|
||||||
|
|
||||||
|
/* Define if S_IFREG is available in <sys/stat.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_S_ISREG */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_TANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanhf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_TANHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TANHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <tgmath.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_TGMATH_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if the target supports thread-local storage. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TLS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Defined if vfwscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VFWSCANF 1
|
||||||
|
|
||||||
|
/* Defined if vswscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VSWSCANF 1
|
||||||
|
|
||||||
|
/* Defined if vwscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VWSCANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wchar.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_WCHAR_H 1
|
||||||
|
|
||||||
|
/* Defined if wcstof exists. */
|
||||||
|
#define _GLIBCXX_HAVE_WCSTOF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wctype.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_WCTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if writev is available in <sys/uio.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_WRITEV */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_acosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ACOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_acosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ACOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_asinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ASINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_asinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ASINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atan2f' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATAN2F */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atan2l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATAN2L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ceilf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__CEILF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ceill' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__CEILL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_cosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_coshf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_coshl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_cosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_expf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__EXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_expl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__EXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fabsf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FABSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fabsl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FABSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finite' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finitef' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITEF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finitel' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITEL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_floorf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FLOORF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_floorl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FLOORL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fmodf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FMODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fmodl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FMODL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_frexpf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FREXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_frexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FREXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypot' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypotf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypotl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnan' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNAN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ldexpf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LDEXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ldexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LDEXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_log10f' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOG10F */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_log10l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOG10L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_logf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOGF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_logl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOGL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_powf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__POWF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_powl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__POWL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_qfpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__QFPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincos' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinhf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sqrtf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SQRTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sqrtl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SQRTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanhf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANL */
|
||||||
|
|
||||||
|
/* Define as const if the declaration of iconv() needs const. */
|
||||||
|
/* #undef _GLIBCXX_ICONV_CONST */
|
||||||
|
|
||||||
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
#define LT_OBJDIR ".libs/"
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
/* #undef _GLIBCXX_PACKAGE */
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define _GLIBCXX_PACKAGE_BUGREPORT ""
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_NAME "package-unused"
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_URL ""
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
|
||||||
|
|
||||||
|
/* The size of `char', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_CHAR */
|
||||||
|
|
||||||
|
/* The size of `int', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_INT */
|
||||||
|
|
||||||
|
/* The size of `long', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_LONG */
|
||||||
|
|
||||||
|
/* The size of `short', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_SHORT */
|
||||||
|
|
||||||
|
/* The size of `void *', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_VOID_P */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
/* #undef _GLIBCXX_VERSION */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for bool are supported on this host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_1 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for short are supported on this host.
|
||||||
|
*/
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_2 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for int are supported on this host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_4 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for long long are supported on this
|
||||||
|
host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_8 */
|
||||||
|
|
||||||
|
/* Define to use concept checking code from the boost libraries. */
|
||||||
|
/* #undef _GLIBCXX_CONCEPT_CHECKS */
|
||||||
|
|
||||||
|
/* Define to 1 if building for use with CSLIBC, or 0 otherwise. */
|
||||||
|
#define _GLIBCXX_CSLIBC 0
|
||||||
|
|
||||||
|
/* Define if a fully dynamic basic_string is wanted. */
|
||||||
|
/* #undef _GLIBCXX_FULLY_DYNAMIC_STRING */
|
||||||
|
|
||||||
|
/* Define if gthreads library is available. */
|
||||||
|
/* #undef _GLIBCXX_HAS_GTHREADS */
|
||||||
|
|
||||||
|
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
|
||||||
|
#define _GLIBCXX_HOSTED 1
|
||||||
|
|
||||||
|
/* Define if compatibility should be provided for -mlong-double-64. */
|
||||||
|
|
||||||
|
/* Define if ptrdiff_t is int. */
|
||||||
|
#define _GLIBCXX_PTRDIFF_T_IS_INT 1
|
||||||
|
|
||||||
|
/* Define if using setrlimit to set resource limits during "make check" */
|
||||||
|
/* #undef _GLIBCXX_RES_LIMITS */
|
||||||
|
|
||||||
|
/* Define if size_t is unsigned int. */
|
||||||
|
#define _GLIBCXX_SIZE_T_IS_UINT 1
|
||||||
|
|
||||||
|
/* Define if the compiler is configured for setjmp/longjmp exceptions. */
|
||||||
|
/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */
|
||||||
|
|
||||||
|
/* Define if EOF == -1, SEEK_CUR == 1, SEEK_END == 2. */
|
||||||
|
#define _GLIBCXX_STDIO_MACROS 1
|
||||||
|
|
||||||
|
/* Define to use symbol versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER */
|
||||||
|
|
||||||
|
/* Define to use darwin versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_DARWIN */
|
||||||
|
|
||||||
|
/* Define to use GNU versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_GNU */
|
||||||
|
|
||||||
|
/* Define to use GNU namespace versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
|
||||||
|
<stdio.h>, and <stdlib.h> can be used or exposed. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <complex.h> should be used in <complex>. Using
|
||||||
|
compiler builtins for these functions requires corresponding C99 library
|
||||||
|
functions to be present. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_COMPLEX */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
|
||||||
|
Using compiler builtins for these functions requires corresponding C99
|
||||||
|
library functions to be present. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_CTYPE_TR1 1
|
||||||
|
|
||||||
|
/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_FENV_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <inttypes.h> should be imported in
|
||||||
|
<tr1/cinttypes> in namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_INTTYPES_TR1 1
|
||||||
|
|
||||||
|
/* Define if wchar_t C99 functions in <inttypes.h> should be imported in
|
||||||
|
<tr1/cinttypes> in namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
|
||||||
|
in namespace std. */
|
||||||
|
#define _GLIBCXX_USE_C99_MATH 1
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros in <math.h> should be imported in
|
||||||
|
<tr1/cmath> in namespace std::tr1. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_MATH_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_STDINT_TR1 1
|
||||||
|
|
||||||
|
/* Defined if clock_gettime has monotonic clock support. */
|
||||||
|
/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
|
||||||
|
|
||||||
|
/* Defined if clock_gettime has realtime clock support. */
|
||||||
|
/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
|
||||||
|
|
||||||
|
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
|
||||||
|
this host. */
|
||||||
|
/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */
|
||||||
|
|
||||||
|
/* Defined if gettimeofday is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
|
||||||
|
|
||||||
|
/* Define if LFS support is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_LFS */
|
||||||
|
|
||||||
|
/* Define if code specialized for long long should be used. */
|
||||||
|
#define _GLIBCXX_USE_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Defined if nanosleep is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_NANOSLEEP */
|
||||||
|
|
||||||
|
/* Define if NLS translations are to be used. */
|
||||||
|
/* #undef _GLIBCXX_USE_NLS */
|
||||||
|
|
||||||
|
/* Define if /dev/random and /dev/urandom are available for the random_device
|
||||||
|
of TR1 (Chapter 5.1). */
|
||||||
|
/* #undef _GLIBCXX_USE_RANDOM_TR1 */
|
||||||
|
|
||||||
|
/* Defined if sched_yield is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_SCHED_YIELD */
|
||||||
|
|
||||||
|
/* Define if code specialized for wchar_t should be used. */
|
||||||
|
#define _GLIBCXX_USE_WCHAR_T 1
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF)
|
||||||
|
# define _GLIBCXX_HAVE_ACOSF 1
|
||||||
|
# define acosf _acosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL)
|
||||||
|
# define _GLIBCXX_HAVE_ACOSL 1
|
||||||
|
# define acosl _acosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF)
|
||||||
|
# define _GLIBCXX_HAVE_ASINF 1
|
||||||
|
# define asinf _asinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL)
|
||||||
|
# define _GLIBCXX_HAVE_ASINL 1
|
||||||
|
# define asinl _asinl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F)
|
||||||
|
# define _GLIBCXX_HAVE_ATAN2F 1
|
||||||
|
# define atan2f _atan2f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L)
|
||||||
|
# define _GLIBCXX_HAVE_ATAN2L 1
|
||||||
|
# define atan2l _atan2l
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF)
|
||||||
|
# define _GLIBCXX_HAVE_ATANF 1
|
||||||
|
# define atanf _atanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL)
|
||||||
|
# define _GLIBCXX_HAVE_ATANL 1
|
||||||
|
# define atanl _atanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF)
|
||||||
|
# define _GLIBCXX_HAVE_CEILF 1
|
||||||
|
# define ceilf _ceilf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL)
|
||||||
|
# define _GLIBCXX_HAVE_CEILL 1
|
||||||
|
# define ceill _ceill
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF)
|
||||||
|
# define _GLIBCXX_HAVE_COSF 1
|
||||||
|
# define cosf _cosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF)
|
||||||
|
# define _GLIBCXX_HAVE_COSHF 1
|
||||||
|
# define coshf _coshf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL)
|
||||||
|
# define _GLIBCXX_HAVE_COSHL 1
|
||||||
|
# define coshl _coshl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL)
|
||||||
|
# define _GLIBCXX_HAVE_COSL 1
|
||||||
|
# define cosl _cosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF)
|
||||||
|
# define _GLIBCXX_HAVE_EXPF 1
|
||||||
|
# define expf _expf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL)
|
||||||
|
# define _GLIBCXX_HAVE_EXPL 1
|
||||||
|
# define expl _expl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF)
|
||||||
|
# define _GLIBCXX_HAVE_FABSF 1
|
||||||
|
# define fabsf _fabsf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL)
|
||||||
|
# define _GLIBCXX_HAVE_FABSL 1
|
||||||
|
# define fabsl _fabsl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE)
|
||||||
|
# define _GLIBCXX_HAVE_FINITE 1
|
||||||
|
# define finite _finite
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF)
|
||||||
|
# define _GLIBCXX_HAVE_FINITEF 1
|
||||||
|
# define finitef _finitef
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL)
|
||||||
|
# define _GLIBCXX_HAVE_FINITEL 1
|
||||||
|
# define finitel _finitel
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF)
|
||||||
|
# define _GLIBCXX_HAVE_FLOORF 1
|
||||||
|
# define floorf _floorf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL)
|
||||||
|
# define _GLIBCXX_HAVE_FLOORL 1
|
||||||
|
# define floorl _floorl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF)
|
||||||
|
# define _GLIBCXX_HAVE_FMODF 1
|
||||||
|
# define fmodf _fmodf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL)
|
||||||
|
# define _GLIBCXX_HAVE_FMODL 1
|
||||||
|
# define fmodl _fmodl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS)
|
||||||
|
# define _GLIBCXX_HAVE_FPCLASS 1
|
||||||
|
# define fpclass _fpclass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF)
|
||||||
|
# define _GLIBCXX_HAVE_FREXPF 1
|
||||||
|
# define frexpf _frexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL)
|
||||||
|
# define _GLIBCXX_HAVE_FREXPL 1
|
||||||
|
# define frexpl _frexpl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOT 1
|
||||||
|
# define hypot _hypot
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOTF 1
|
||||||
|
# define hypotf _hypotf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOTL 1
|
||||||
|
# define hypotl _hypotl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF)
|
||||||
|
# define _GLIBCXX_HAVE_ISINF 1
|
||||||
|
# define isinf _isinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF)
|
||||||
|
# define _GLIBCXX_HAVE_ISINFF 1
|
||||||
|
# define isinff _isinff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL)
|
||||||
|
# define _GLIBCXX_HAVE_ISINFL 1
|
||||||
|
# define isinfl _isinfl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN)
|
||||||
|
# define _GLIBCXX_HAVE_ISNAN 1
|
||||||
|
# define isnan _isnan
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF)
|
||||||
|
# define _GLIBCXX_HAVE_ISNANF 1
|
||||||
|
# define isnanf _isnanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL)
|
||||||
|
# define _GLIBCXX_HAVE_ISNANL 1
|
||||||
|
# define isnanl _isnanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF)
|
||||||
|
# define _GLIBCXX_HAVE_LDEXPF 1
|
||||||
|
# define ldexpf _ldexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL)
|
||||||
|
# define _GLIBCXX_HAVE_LDEXPL 1
|
||||||
|
# define ldexpl _ldexpl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F)
|
||||||
|
# define _GLIBCXX_HAVE_LOG10F 1
|
||||||
|
# define log10f _log10f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L)
|
||||||
|
# define _GLIBCXX_HAVE_LOG10L 1
|
||||||
|
# define log10l _log10l
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF)
|
||||||
|
# define _GLIBCXX_HAVE_LOGF 1
|
||||||
|
# define logf _logf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL)
|
||||||
|
# define _GLIBCXX_HAVE_LOGL 1
|
||||||
|
# define logl _logl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF)
|
||||||
|
# define _GLIBCXX_HAVE_MODF 1
|
||||||
|
# define modf _modf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF)
|
||||||
|
# define _GLIBCXX_HAVE_MODFF 1
|
||||||
|
# define modff _modff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL)
|
||||||
|
# define _GLIBCXX_HAVE_MODFL 1
|
||||||
|
# define modfl _modfl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF)
|
||||||
|
# define _GLIBCXX_HAVE_POWF 1
|
||||||
|
# define powf _powf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL)
|
||||||
|
# define _GLIBCXX_HAVE_POWL 1
|
||||||
|
# define powl _powl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS)
|
||||||
|
# define _GLIBCXX_HAVE_QFPCLASS 1
|
||||||
|
# define qfpclass _qfpclass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOS 1
|
||||||
|
# define sincos _sincos
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOSF 1
|
||||||
|
# define sincosf _sincosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOSL 1
|
||||||
|
# define sincosl _sincosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF)
|
||||||
|
# define _GLIBCXX_HAVE_SINF 1
|
||||||
|
# define sinf _sinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF)
|
||||||
|
# define _GLIBCXX_HAVE_SINHF 1
|
||||||
|
# define sinhf _sinhf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL)
|
||||||
|
# define _GLIBCXX_HAVE_SINHL 1
|
||||||
|
# define sinhl _sinhl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL)
|
||||||
|
# define _GLIBCXX_HAVE_SINL 1
|
||||||
|
# define sinl _sinl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF)
|
||||||
|
# define _GLIBCXX_HAVE_SQRTF 1
|
||||||
|
# define sqrtf _sqrtf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL)
|
||||||
|
# define _GLIBCXX_HAVE_SQRTL 1
|
||||||
|
# define sqrtl _sqrtl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF)
|
||||||
|
# define _GLIBCXX_HAVE_STRTOF 1
|
||||||
|
# define strtof _strtof
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD)
|
||||||
|
# define _GLIBCXX_HAVE_STRTOLD 1
|
||||||
|
# define strtold _strtold
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF)
|
||||||
|
# define _GLIBCXX_HAVE_TANF 1
|
||||||
|
# define tanf _tanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF)
|
||||||
|
# define _GLIBCXX_HAVE_TANHF 1
|
||||||
|
# define tanhf _tanhf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL)
|
||||||
|
# define _GLIBCXX_HAVE_TANHL 1
|
||||||
|
# define tanhl _tanhl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL)
|
||||||
|
# define _GLIBCXX_HAVE_TANL 1
|
||||||
|
# define tanl _tanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _GLIBCXX_CXX_CONFIG_H
|
@ -0,0 +1,49 @@
|
|||||||
|
// Underlying io library details -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++io.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// c_io_stdio.h - Defines for using "C" stdio.h
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_IO_H
|
||||||
|
#define _GLIBCXX_CXX_IO_H 1
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <bits/gthr.h>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
typedef __gthread_mutex_t __c_lock;
|
||||||
|
|
||||||
|
// for basic_file.h
|
||||||
|
typedef FILE __c_file;
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,91 @@
|
|||||||
|
// Wrapper for underlying C-language localization -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++locale.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.8 Standard locale categories.
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_LOCALE_H
|
||||||
|
#define _GLIBCXX_CXX_LOCALE_H 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <clocale>
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
#define _GLIBCXX_NUM_CATEGORIES 0
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
typedef int* __c_locale;
|
||||||
|
|
||||||
|
// Convert numeric value of type double and long double to string and
|
||||||
|
// return length of string. If vsnprintf is available use it, otherwise
|
||||||
|
// fall back to the unsafe vsprintf which, in general, can be dangerous
|
||||||
|
// and should be avoided.
|
||||||
|
inline int
|
||||||
|
__convert_from_v(const __c_locale&, char* __out,
|
||||||
|
const int __size __attribute__((__unused__)),
|
||||||
|
const char* __fmt, ...)
|
||||||
|
{
|
||||||
|
char* __old = std::setlocale(LC_NUMERIC, NULL);
|
||||||
|
char* __sav = NULL;
|
||||||
|
if (__builtin_strcmp(__old, "C"))
|
||||||
|
{
|
||||||
|
const size_t __len = __builtin_strlen(__old) + 1;
|
||||||
|
__sav = new char[__len];
|
||||||
|
__builtin_memcpy(__sav, __old, __len);
|
||||||
|
std::setlocale(LC_NUMERIC, "C");
|
||||||
|
}
|
||||||
|
|
||||||
|
__builtin_va_list __args;
|
||||||
|
__builtin_va_start(__args, __fmt);
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_USE_C99
|
||||||
|
const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
|
||||||
|
#else
|
||||||
|
const int __ret = __builtin_vsprintf(__out, __fmt, __args);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__builtin_va_end(__args);
|
||||||
|
|
||||||
|
if (__sav)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_NUMERIC, __sav);
|
||||||
|
delete [] __sav;
|
||||||
|
}
|
||||||
|
return __ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,33 @@
|
|||||||
|
// Specific definitions for generic platforms -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file cpu_defines.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CPU_DEFINES
|
||||||
|
#define _GLIBCXX_CPU_DEFINES 1
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,57 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
|
||||||
|
|
||||||
|
// Support for Solaris 2.5.1
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
/// @brief Base class for ctype.
|
||||||
|
struct ctype_base
|
||||||
|
{
|
||||||
|
// Non-standard typedefs.
|
||||||
|
typedef const int* __to_type;
|
||||||
|
|
||||||
|
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||||
|
// on the mask type. Because of this, we don't use an enum.
|
||||||
|
typedef char mask;
|
||||||
|
static const mask upper = _U;
|
||||||
|
static const mask lower = _L;
|
||||||
|
static const mask alpha = _U | _L;
|
||||||
|
static const mask digit = _N;
|
||||||
|
static const mask xdigit = _X | _N;
|
||||||
|
static const mask space = _S;
|
||||||
|
static const mask print = _P | _U | _L | _N | _B;
|
||||||
|
static const mask graph = _P | _U | _L | _N;
|
||||||
|
static const mask cntrl = _C;
|
||||||
|
static const mask punct = _P;
|
||||||
|
static const mask alnum = _U | _L | _N;
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,71 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file ctype_inline.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
|
||||||
|
// functions go in ctype.cc
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
bool
|
||||||
|
ctype<char>::
|
||||||
|
is(mask __m, char __c) const
|
||||||
|
{ return _M_table[static_cast<unsigned char>(__c)] & __m; }
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
is(const char* __low, const char* __high, mask* __vec) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
scan_is(mask __m, const char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high && !this->is(__m, *__low))
|
||||||
|
++__low;
|
||||||
|
return __low;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
scan_not(mask __m, const char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high && this->is(__m, *__low) != 0)
|
||||||
|
++__low;
|
||||||
|
return __low;
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,98 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file ctype_noninline.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// Information as gleaned from /usr/include/ctype.h
|
||||||
|
|
||||||
|
const ctype_base::mask*
|
||||||
|
ctype<char>::classic_table() throw()
|
||||||
|
{ return _ctype_ + 1; }
|
||||||
|
|
||||||
|
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
||||||
|
size_t __refs)
|
||||||
|
: facet(__refs), _M_del(__table != 0 && __del),
|
||||||
|
_M_toupper(NULL), _M_tolower(NULL),
|
||||||
|
_M_table(__table ? __table : classic_table())
|
||||||
|
{
|
||||||
|
memset(_M_widen, 0, sizeof(_M_widen));
|
||||||
|
_M_widen_ok = 0;
|
||||||
|
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||||
|
_M_narrow_ok = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
||||||
|
: facet(__refs), _M_del(__table != 0 && __del),
|
||||||
|
_M_toupper(NULL), _M_tolower(NULL),
|
||||||
|
_M_table(__table ? __table : classic_table())
|
||||||
|
{
|
||||||
|
memset(_M_widen, 0, sizeof(_M_widen));
|
||||||
|
_M_widen_ok = 0;
|
||||||
|
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||||
|
_M_narrow_ok = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char
|
||||||
|
ctype<char>::do_toupper(char __c) const
|
||||||
|
{
|
||||||
|
int __x = __c;
|
||||||
|
return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::do_toupper(char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
{
|
||||||
|
*__low = this->do_toupper(*__low);
|
||||||
|
++__low;
|
||||||
|
}
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
||||||
|
char
|
||||||
|
ctype<char>::do_tolower(char __c) const
|
||||||
|
{
|
||||||
|
int __x = __c;
|
||||||
|
return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::do_tolower(char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
{
|
||||||
|
*__low = this->do_tolower(*__low);
|
||||||
|
++__low;
|
||||||
|
}
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,81 @@
|
|||||||
|
// Control various target specific ABI tweaks. ARM version.
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file cxxabi_tweaks.h
|
||||||
|
* The header provides an CPU-variable interface to the C++ ABI.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CXXABI_TWEAKS_H
|
||||||
|
#define _CXXABI_TWEAKS_H 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
namespace __cxxabiv1
|
||||||
|
{
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
// The ARM EABI uses the least significant bit of a 32-bit
|
||||||
|
// guard variable. */
|
||||||
|
#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0)
|
||||||
|
#define _GLIBCXX_GUARD_SET(x) *(x) = 1
|
||||||
|
#define _GLIBCXX_GUARD_BIT 1
|
||||||
|
#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
|
||||||
|
#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
|
||||||
|
typedef int __guard;
|
||||||
|
|
||||||
|
// We also want the element size in array cookies.
|
||||||
|
#define _GLIBCXX_ELTSIZE_IN_COOKIE 1
|
||||||
|
|
||||||
|
// __cxa_vec_ctor should return a pointer to the array.
|
||||||
|
typedef void * __cxa_vec_ctor_return_type;
|
||||||
|
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x
|
||||||
|
// Constructors and destructors return the "this" pointer.
|
||||||
|
typedef void * __cxa_cdtor_return_type;
|
||||||
|
|
||||||
|
#else // __ARM_EABI__
|
||||||
|
|
||||||
|
// The generic ABI uses the first byte of a 64-bit guard variable.
|
||||||
|
#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0)
|
||||||
|
#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1
|
||||||
|
#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1)
|
||||||
|
#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
|
||||||
|
#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
|
||||||
|
__extension__ typedef int __guard __attribute__((mode (__DI__)));
|
||||||
|
|
||||||
|
// __cxa_vec_ctor has void return type.
|
||||||
|
typedef void __cxa_vec_ctor_return_type;
|
||||||
|
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return
|
||||||
|
// Constructors and destructors do not return a value.
|
||||||
|
typedef void __cxa_cdtor_return_type;
|
||||||
|
|
||||||
|
#endif //!__ARM_EABI__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
} // namespace __cxxabiv1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,175 @@
|
|||||||
|
// Specific definitions for generic platforms -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file error_constants.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_ERROR_CONSTANTS
|
||||||
|
#define _GLIBCXX_ERROR_CONSTANTS 1
|
||||||
|
|
||||||
|
#include <bits/c++config.h>
|
||||||
|
#include <cerrno>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
enum class errc
|
||||||
|
{
|
||||||
|
address_family_not_supported = EAFNOSUPPORT,
|
||||||
|
address_in_use = EADDRINUSE,
|
||||||
|
address_not_available = EADDRNOTAVAIL,
|
||||||
|
already_connected = EISCONN,
|
||||||
|
argument_list_too_long = E2BIG,
|
||||||
|
argument_out_of_domain = EDOM,
|
||||||
|
bad_address = EFAULT,
|
||||||
|
bad_file_descriptor = EBADF,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EBADMSG
|
||||||
|
bad_message = EBADMSG,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
broken_pipe = EPIPE,
|
||||||
|
connection_aborted = ECONNABORTED,
|
||||||
|
connection_already_in_progress = EALREADY,
|
||||||
|
connection_refused = ECONNREFUSED,
|
||||||
|
connection_reset = ECONNRESET,
|
||||||
|
cross_device_link = EXDEV,
|
||||||
|
destination_address_required = EDESTADDRREQ,
|
||||||
|
device_or_resource_busy = EBUSY,
|
||||||
|
directory_not_empty = ENOTEMPTY,
|
||||||
|
executable_format_error = ENOEXEC,
|
||||||
|
file_exists = EEXIST,
|
||||||
|
file_too_large = EFBIG,
|
||||||
|
filename_too_long = ENAMETOOLONG,
|
||||||
|
function_not_supported = ENOSYS,
|
||||||
|
host_unreachable = EHOSTUNREACH,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EIDRM
|
||||||
|
identifier_removed = EIDRM,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
illegal_byte_sequence = EILSEQ,
|
||||||
|
inappropriate_io_control_operation = ENOTTY,
|
||||||
|
interrupted = EINTR,
|
||||||
|
invalid_argument = EINVAL,
|
||||||
|
invalid_seek = ESPIPE,
|
||||||
|
io_error = EIO,
|
||||||
|
is_a_directory = EISDIR,
|
||||||
|
message_size = EMSGSIZE,
|
||||||
|
network_down = ENETDOWN,
|
||||||
|
network_reset = ENETRESET,
|
||||||
|
network_unreachable = ENETUNREACH,
|
||||||
|
no_buffer_space = ENOBUFS,
|
||||||
|
no_child_process = ECHILD,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOLINK
|
||||||
|
no_link = ENOLINK,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_lock_available = ENOLCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENODATA
|
||||||
|
no_message_available = ENODATA,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_message = ENOMSG,
|
||||||
|
no_protocol_option = ENOPROTOOPT,
|
||||||
|
no_space_on_device = ENOSPC,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOSR
|
||||||
|
no_stream_resources = ENOSR,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_such_device_or_address = ENXIO,
|
||||||
|
no_such_device = ENODEV,
|
||||||
|
no_such_file_or_directory = ENOENT,
|
||||||
|
no_such_process = ESRCH,
|
||||||
|
not_a_directory = ENOTDIR,
|
||||||
|
not_a_socket = ENOTSOCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOSTR
|
||||||
|
not_a_stream = ENOSTR,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
not_connected = ENOTCONN,
|
||||||
|
not_enough_memory = ENOMEM,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOTSUP
|
||||||
|
not_supported = ENOTSUP,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ECANCELED
|
||||||
|
operation_canceled = ECANCELED,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
operation_in_progress = EINPROGRESS,
|
||||||
|
operation_not_permitted = EPERM,
|
||||||
|
operation_not_supported = EOPNOTSUPP,
|
||||||
|
operation_would_block = EWOULDBLOCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EOWNERDEAD
|
||||||
|
owner_dead = EOWNERDEAD,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
permission_denied = EACCES,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EPROTO
|
||||||
|
protocol_error = EPROTO,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
protocol_not_supported = EPROTONOSUPPORT,
|
||||||
|
read_only_file_system = EROFS,
|
||||||
|
resource_deadlock_would_occur = EDEADLK,
|
||||||
|
resource_unavailable_try_again = EAGAIN,
|
||||||
|
result_out_of_range = ERANGE,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
|
||||||
|
state_not_recoverable = ENOTRECOVERABLE,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ETIME
|
||||||
|
stream_timeout = ETIME,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ETXTBSY
|
||||||
|
text_file_busy = ETXTBSY,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
timed_out = ETIMEDOUT,
|
||||||
|
too_many_files_open_in_system = ENFILE,
|
||||||
|
too_many_files_open = EMFILE,
|
||||||
|
too_many_links = EMLINK,
|
||||||
|
too_many_symbolic_link_levels = ELOOP,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EOVERFLOW
|
||||||
|
value_too_large = EOVERFLOW,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wrong_protocol_type = EPROTOTYPE
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,71 @@
|
|||||||
|
// C++ includes used for precompiling extensions -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file extc++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <bits/stdtr1c++.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <ext/algorithm>
|
||||||
|
#include <ext/array_allocator.h>
|
||||||
|
#include <ext/atomicity.h>
|
||||||
|
#include <ext/bitmap_allocator.h>
|
||||||
|
#include <ext/cast.h>
|
||||||
|
#include <ext/concurrence.h>
|
||||||
|
#include <ext/debug_allocator.h>
|
||||||
|
#include <ext/extptr_allocator.h>
|
||||||
|
#include <ext/functional>
|
||||||
|
#include <ext/iterator>
|
||||||
|
#include <ext/malloc_allocator.h>
|
||||||
|
#include <ext/memory>
|
||||||
|
#include <ext/mt_allocator.h>
|
||||||
|
#include <ext/new_allocator.h>
|
||||||
|
#include <ext/numeric>
|
||||||
|
#include <ext/pod_char_traits.h>
|
||||||
|
#include <ext/pointer.h>
|
||||||
|
#include <ext/pool_allocator.h>
|
||||||
|
#include <ext/rb_tree>
|
||||||
|
#include <ext/rope>
|
||||||
|
#include <ext/slist>
|
||||||
|
#include <ext/stdio_filebuf.h>
|
||||||
|
#include <ext/stdio_sync_filebuf.h>
|
||||||
|
#include <ext/throw_allocator.h>
|
||||||
|
#include <ext/typelist.h>
|
||||||
|
#include <ext/type_traits.h>
|
||||||
|
#include <ext/vstring.h>
|
||||||
|
#include <ext/pb_ds/assoc_container.hpp>
|
||||||
|
#include <ext/pb_ds/priority_queue.hpp>
|
||||||
|
#include <ext/pb_ds/exception.hpp>
|
||||||
|
#include <ext/pb_ds/hash_policy.hpp>
|
||||||
|
#include <ext/pb_ds/list_update_policy.hpp>
|
||||||
|
#include <ext/pb_ds/tree_policy.hpp>
|
||||||
|
#include <ext/pb_ds/trie_policy.hpp>
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ICONV
|
||||||
|
#include <ext/codecvt_specializations.h>
|
||||||
|
#include <ext/enc_filebuf.h>
|
||||||
|
#endif
|
@ -0,0 +1,292 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
|
||||||
|
/* Just provide compatibility for mutex handling. */
|
||||||
|
|
||||||
|
typedef int __gthread_key_t;
|
||||||
|
typedef int __gthread_once_t;
|
||||||
|
typedef int __gthread_mutex_t;
|
||||||
|
typedef int __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#define __GTHREAD_ONCE_INIT 0
|
||||||
|
#define __GTHREAD_MUTEX_INIT 0
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
|
||||||
|
|
||||||
|
#define _GLIBCXX_UNUSED __attribute__((unused))
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
/* Should we really exit the program */
|
||||||
|
/* exit (&__objc_thread_exit_status); */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
/* No thread support, use 1. */
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
|
||||||
|
objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#undef _GLIBCXX_UNUSED
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
|
@ -0,0 +1,895 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
||||||
|
2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_POSIX_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_POSIX_H
|
||||||
|
|
||||||
|
/* POSIX threads specific definitions.
|
||||||
|
Easy, since the interface is just one-to-one mapping. */
|
||||||
|
|
||||||
|
#define __GTHREADS 1
|
||||||
|
#define __GTHREADS_CXX0X 1
|
||||||
|
|
||||||
|
/* Some implementations of <pthread.h> require this to be defined. */
|
||||||
|
#if !defined(_REENTRANT) && defined(__osf__)
|
||||||
|
#define _REENTRANT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
typedef pthread_t __gthread_t;
|
||||||
|
typedef pthread_key_t __gthread_key_t;
|
||||||
|
typedef pthread_once_t __gthread_once_t;
|
||||||
|
typedef pthread_mutex_t __gthread_mutex_t;
|
||||||
|
typedef pthread_mutex_t __gthread_recursive_mutex_t;
|
||||||
|
typedef pthread_cond_t __gthread_cond_t;
|
||||||
|
typedef struct timespec __gthread_time_t;
|
||||||
|
|
||||||
|
/* POSIX like conditional variables are supported. Please look at comments
|
||||||
|
in gthr.h for details. */
|
||||||
|
#define __GTHREAD_HAS_COND 1
|
||||||
|
|
||||||
|
#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
|
||||||
|
#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
|
||||||
|
#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
|
||||||
|
#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
#else
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
|
||||||
|
#endif
|
||||||
|
#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
|
||||||
|
#define __GTHREAD_TIME_INIT {0,0}
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
# ifndef __gthrw_pragma
|
||||||
|
# define __gthrw_pragma(pragma)
|
||||||
|
# endif
|
||||||
|
# define __gthrw2(name,name2,type) \
|
||||||
|
static __typeof(type) name __attribute__ ((__weakref__(#name2))); \
|
||||||
|
__gthrw_pragma(weak type)
|
||||||
|
# define __gthrw_(name) __gthrw_ ## name
|
||||||
|
#else
|
||||||
|
# define __gthrw2(name,name2,type)
|
||||||
|
# define __gthrw_(name) name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Typically, __gthrw_foo is a weak reference to symbol foo. */
|
||||||
|
#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
|
||||||
|
|
||||||
|
/* On Tru64, /usr/include/pthread.h uses #pragma extern_prefix "__" to
|
||||||
|
map a subset of the POSIX pthread API to mangled versions of their
|
||||||
|
names. */
|
||||||
|
#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
|
||||||
|
#define __gthrw3(name) __gthrw2(__gthrw_ ## name, __ ## name, name)
|
||||||
|
__gthrw3(pthread_once)
|
||||||
|
__gthrw3(pthread_getspecific)
|
||||||
|
__gthrw3(pthread_setspecific)
|
||||||
|
|
||||||
|
__gthrw3(pthread_create)
|
||||||
|
__gthrw3(pthread_join)
|
||||||
|
__gthrw3(pthread_detach)
|
||||||
|
__gthrw3(pthread_equal)
|
||||||
|
__gthrw3(pthread_self)
|
||||||
|
__gthrw3(pthread_cancel)
|
||||||
|
__gthrw3(sched_yield)
|
||||||
|
|
||||||
|
__gthrw3(pthread_mutex_lock)
|
||||||
|
__gthrw3(pthread_mutex_trylock)
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
__gthrw3(pthread_mutex_timedlock)
|
||||||
|
#endif
|
||||||
|
#endif /* _POSIX_TIMEOUTS */
|
||||||
|
__gthrw3(pthread_mutex_unlock)
|
||||||
|
__gthrw3(pthread_mutex_init)
|
||||||
|
__gthrw3(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
__gthrw3(pthread_cond_broadcast)
|
||||||
|
__gthrw3(pthread_cond_signal)
|
||||||
|
__gthrw3(pthread_cond_wait)
|
||||||
|
__gthrw3(pthread_cond_timedwait)
|
||||||
|
__gthrw3(pthread_cond_destroy)
|
||||||
|
#else
|
||||||
|
__gthrw(pthread_once)
|
||||||
|
__gthrw(pthread_getspecific)
|
||||||
|
__gthrw(pthread_setspecific)
|
||||||
|
|
||||||
|
__gthrw(pthread_create)
|
||||||
|
__gthrw(pthread_join)
|
||||||
|
__gthrw(pthread_equal)
|
||||||
|
__gthrw(pthread_self)
|
||||||
|
__gthrw(pthread_detach)
|
||||||
|
__gthrw(pthread_cancel)
|
||||||
|
__gthrw(sched_yield)
|
||||||
|
|
||||||
|
__gthrw(pthread_mutex_lock)
|
||||||
|
__gthrw(pthread_mutex_trylock)
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
__gthrw(pthread_mutex_timedlock)
|
||||||
|
#endif
|
||||||
|
#endif /* _POSIX_TIMEOUTS */
|
||||||
|
__gthrw(pthread_mutex_unlock)
|
||||||
|
__gthrw(pthread_mutex_init)
|
||||||
|
__gthrw(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
__gthrw(pthread_cond_broadcast)
|
||||||
|
__gthrw(pthread_cond_signal)
|
||||||
|
__gthrw(pthread_cond_wait)
|
||||||
|
__gthrw(pthread_cond_timedwait)
|
||||||
|
__gthrw(pthread_cond_destroy)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__gthrw(pthread_key_create)
|
||||||
|
__gthrw(pthread_key_delete)
|
||||||
|
__gthrw(pthread_mutexattr_init)
|
||||||
|
__gthrw(pthread_mutexattr_settype)
|
||||||
|
__gthrw(pthread_mutexattr_destroy)
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)
|
||||||
|
/* Objective-C. */
|
||||||
|
#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
|
||||||
|
__gthrw3(pthread_cond_init)
|
||||||
|
__gthrw3(pthread_exit)
|
||||||
|
#else
|
||||||
|
__gthrw(pthread_cond_init)
|
||||||
|
__gthrw(pthread_exit)
|
||||||
|
#endif /* __osf__ && _PTHREAD_USE_MANGLED_NAMES_ */
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
__gthrw(sched_get_priority_max)
|
||||||
|
__gthrw(sched_get_priority_min)
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
__gthrw(pthread_attr_destroy)
|
||||||
|
__gthrw(pthread_attr_init)
|
||||||
|
__gthrw(pthread_attr_setdetachstate)
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
__gthrw(pthread_getschedparam)
|
||||||
|
__gthrw(pthread_setschedparam)
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _LIBOBJC || _LIBOBJC_WEAK */
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
|
||||||
|
/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if
|
||||||
|
-pthreads is not specified. The functions are dummies and most return an
|
||||||
|
error value. However pthread_once returns 0 without invoking the routine
|
||||||
|
it is passed so we cannot pretend that the interface is active if -pthreads
|
||||||
|
is not specified. On Solaris 2.5.1, the interface is not exposed at all so
|
||||||
|
we need to play the usual game with weak symbols. On Solaris 10 and up, a
|
||||||
|
working interface is always exposed. On FreeBSD 6 and later, libc also
|
||||||
|
exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up
|
||||||
|
to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc,
|
||||||
|
which means the alternate __gthread_active_p below cannot be used there. */
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__))
|
||||||
|
|
||||||
|
static volatile int __gthread_active = -1;
|
||||||
|
|
||||||
|
static void
|
||||||
|
__gthread_trigger (void)
|
||||||
|
{
|
||||||
|
__gthread_active = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT;
|
||||||
|
|
||||||
|
/* Avoid reading __gthread_active twice on the main code path. */
|
||||||
|
int __gthread_active_latest_value = __gthread_active;
|
||||||
|
|
||||||
|
/* This test is not protected to avoid taking a lock on the main code
|
||||||
|
path so every update of __gthread_active in a threaded program must
|
||||||
|
be atomic with regard to the result of the test. */
|
||||||
|
if (__builtin_expect (__gthread_active_latest_value < 0, 0))
|
||||||
|
{
|
||||||
|
if (__gthrw_(pthread_once))
|
||||||
|
{
|
||||||
|
/* If this really is a threaded program, then we must ensure that
|
||||||
|
__gthread_active has been set to 1 before exiting this block. */
|
||||||
|
__gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
|
||||||
|
__gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger);
|
||||||
|
__gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make sure we'll never enter this block again. */
|
||||||
|
if (__gthread_active < 0)
|
||||||
|
__gthread_active = 0;
|
||||||
|
|
||||||
|
__gthread_active_latest_value = __gthread_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
return __gthread_active_latest_value != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* neither FreeBSD nor Solaris */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
static void *const __gthread_active_ptr
|
||||||
|
= __extension__ (void *) &__gthrw_(pthread_cancel);
|
||||||
|
return __gthread_active_ptr != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* FreeBSD or Solaris */
|
||||||
|
|
||||||
|
#else /* not __GXX_WEAK__ */
|
||||||
|
|
||||||
|
/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread
|
||||||
|
calls in shared flavors of the HP-UX C library. Most of the stubs
|
||||||
|
have no functionality. The details are described in the "libc cumulative
|
||||||
|
patch" for each subversion of HP-UX 11. There are two special interfaces
|
||||||
|
provided for checking whether an application is linked to a pthread
|
||||||
|
library or not. However, these interfaces aren't available in early
|
||||||
|
libc versions. We also can't use pthread_once as some libc versions
|
||||||
|
call the init function. So, we use pthread_create to check whether it
|
||||||
|
is possible to create a thread or not. The stub implementation returns
|
||||||
|
the error number ENOSYS. */
|
||||||
|
|
||||||
|
#if defined(__hppa__) && defined(__hpux__)
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
static volatile int __gthread_active = -1;
|
||||||
|
|
||||||
|
static void *
|
||||||
|
__gthread_start (void *__arg __attribute__((unused)))
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __gthread_active_init (void) __attribute__((noinline));
|
||||||
|
static void
|
||||||
|
__gthread_active_init (void)
|
||||||
|
{
|
||||||
|
static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
pthread_t __t;
|
||||||
|
pthread_attr_t __a;
|
||||||
|
int __result;
|
||||||
|
|
||||||
|
__gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
|
||||||
|
if (__gthread_active < 0)
|
||||||
|
{
|
||||||
|
__gthrw_(pthread_attr_init) (&__a);
|
||||||
|
__gthrw_(pthread_attr_setdetachstate) (&__a, PTHREAD_CREATE_DETACHED);
|
||||||
|
__result = __gthrw_(pthread_create) (&__t, &__a, __gthread_start, NULL);
|
||||||
|
if (__result != ENOSYS)
|
||||||
|
__gthread_active = 1;
|
||||||
|
else
|
||||||
|
__gthread_active = 0;
|
||||||
|
__gthrw_(pthread_attr_destroy) (&__a);
|
||||||
|
}
|
||||||
|
__gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
/* Avoid reading __gthread_active twice on the main code path. */
|
||||||
|
int __gthread_active_latest_value = __gthread_active;
|
||||||
|
|
||||||
|
/* This test is not protected to avoid taking a lock on the main code
|
||||||
|
path so every update of __gthread_active in a threaded program must
|
||||||
|
be atomic with regard to the result of the test. */
|
||||||
|
if (__builtin_expect (__gthread_active_latest_value < 0, 0))
|
||||||
|
{
|
||||||
|
__gthread_active_init ();
|
||||||
|
__gthread_active_latest_value = __gthread_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
return __gthread_active_latest_value != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* not hppa-hpux */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* hppa-hpux */
|
||||||
|
|
||||||
|
#endif /* __GXX_WEAK__ */
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* This is the config.h file in libobjc/ */
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_SCHED_H
|
||||||
|
# include <sched.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Key structure for maintaining thread specific storage */
|
||||||
|
static pthread_key_t _objc_thread_storage;
|
||||||
|
static pthread_attr_t _objc_thread_attribs;
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
/* Initialize the thread storage key. */
|
||||||
|
if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0)
|
||||||
|
{
|
||||||
|
/* The normal default detach state for threads is
|
||||||
|
* PTHREAD_CREATE_JOINABLE which causes threads to not die
|
||||||
|
* when you think they should. */
|
||||||
|
if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0
|
||||||
|
&& __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs,
|
||||||
|
PTHREAD_CREATE_DETACHED) == 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0
|
||||||
|
&& __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (*func)(void *), void *arg)
|
||||||
|
{
|
||||||
|
objc_thread_t thread_id;
|
||||||
|
pthread_t new_thread_handle;
|
||||||
|
|
||||||
|
if (!__gthread_active_p ())
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!(__gthrw_(pthread_create) (&new_thread_handle, NULL, (void *) func, arg)))
|
||||||
|
thread_id = (objc_thread_t) new_thread_handle;
|
||||||
|
else
|
||||||
|
thread_id = NULL;
|
||||||
|
|
||||||
|
return thread_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority)
|
||||||
|
{
|
||||||
|
if (!__gthread_active_p ())
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
pthread_t thread_id = __gthrw_(pthread_self) ();
|
||||||
|
int policy;
|
||||||
|
struct sched_param params;
|
||||||
|
int priority_min, priority_max;
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0)
|
||||||
|
{
|
||||||
|
if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (priority > priority_max)
|
||||||
|
priority = priority_max;
|
||||||
|
else if (priority < priority_min)
|
||||||
|
priority = priority_min;
|
||||||
|
params.sched_priority = priority;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The solaris 7 and several other man pages incorrectly state that
|
||||||
|
* this should be a pointer to policy but pthread.h is universally
|
||||||
|
* at odds with this.
|
||||||
|
*/
|
||||||
|
if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
int policy;
|
||||||
|
struct sched_param params;
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0)
|
||||||
|
return params.sched_priority;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
__gthrw_(sched_yield) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
/* exit the thread */
|
||||||
|
__gthrw_(pthread_exit) (&__objc_thread_exit_status);
|
||||||
|
|
||||||
|
/* Failed if we reached here */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return (objc_thread_t) __gthrw_(pthread_self) ();
|
||||||
|
else
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_setspecific) (_objc_thread_storage, value);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_getspecific) (_objc_thread_storage);
|
||||||
|
else
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL))
|
||||||
|
{
|
||||||
|
objc_free (mutex->backend);
|
||||||
|
mutex->backend = NULL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Posix Threads specifically require that the thread be unlocked
|
||||||
|
* for __gthrw_(pthread_mutex_destroy) to work.
|
||||||
|
*/
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend);
|
||||||
|
if (count < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
while (count);
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
objc_free (mutex->backend);
|
||||||
|
mutex->backend = NULL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
condition->backend = objc_malloc (sizeof (pthread_cond_t));
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL))
|
||||||
|
{
|
||||||
|
objc_free (condition->backend);
|
||||||
|
condition->backend = NULL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
objc_free (condition->backend);
|
||||||
|
condition->backend = NULL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend,
|
||||||
|
(pthread_mutex_t *) mutex->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
|
||||||
|
void *__args)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_join (__gthread_t __threadid, void **__value_ptr)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_join) (__threadid, __value_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_detach (__gthread_t __threadid)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_detach) (__threadid);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_equal (__gthread_t __t1, __gthread_t __t2)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_equal) (__t1, __t2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline __gthread_t
|
||||||
|
__gthread_self (void)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_self) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_yield (void)
|
||||||
|
{
|
||||||
|
return __gthrw_(sched_yield) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once, void (*__func) (void))
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_once) (__once, __func);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_key_create) (__key, __dtor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_delete (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_key_delete) (__key);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_getspecific) (__key);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_setspecific) (__key, __ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_destroy) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_lock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_trylock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_unlock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
pthread_mutexattr_t __attr;
|
||||||
|
int __r;
|
||||||
|
|
||||||
|
__r = __gthrw_(pthread_mutexattr_init) (&__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_settype) (&__attr,
|
||||||
|
PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
|
||||||
|
return __r;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_timedlock (__mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_broadcast (__gthread_cond_t *__cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_broadcast) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_signal (__gthread_cond_t *__cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_signal) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_wait) (__cond, __mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
|
||||||
|
__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_cond_wait (__cond, __mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_timedwait_recursive (__gthread_cond_t *__cond,
|
||||||
|
__gthread_recursive_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthread_cond_timedwait (__cond, __mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_destroy (__gthread_cond_t* __cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_destroy) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */
|
@ -0,0 +1,292 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
|
||||||
|
/* Just provide compatibility for mutex handling. */
|
||||||
|
|
||||||
|
typedef int __gthread_key_t;
|
||||||
|
typedef int __gthread_once_t;
|
||||||
|
typedef int __gthread_mutex_t;
|
||||||
|
typedef int __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#define __GTHREAD_ONCE_INIT 0
|
||||||
|
#define __GTHREAD_MUTEX_INIT 0
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
|
||||||
|
|
||||||
|
#define _GLIBCXX_UNUSED __attribute__((unused))
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
/* Should we really exit the program */
|
||||||
|
/* exit (&__objc_thread_exit_status); */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
/* No thread support, use 1. */
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
|
||||||
|
objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#undef _GLIBCXX_UNUSED
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
|
@ -0,0 +1,229 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc.
|
||||||
|
Compile this one with gcc.
|
||||||
|
Copyright (C) 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* TPF needs its own version of gthr-*.h because TPF always links to
|
||||||
|
the thread library. However, for performance reasons we still do not
|
||||||
|
want to issue thread api calls unless a check is made to see that we
|
||||||
|
are running as a thread. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_TPF_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_TPF_H
|
||||||
|
|
||||||
|
/* POSIX threads specific definitions.
|
||||||
|
Easy, since the interface is just one-to-one mapping. */
|
||||||
|
|
||||||
|
#define __GTHREADS 1
|
||||||
|
|
||||||
|
/* Some implementations of <pthread.h> require this to be defined. */
|
||||||
|
#ifndef _REENTRANT
|
||||||
|
#define _REENTRANT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
typedef pthread_key_t __gthread_key_t;
|
||||||
|
typedef pthread_once_t __gthread_once_t;
|
||||||
|
typedef pthread_mutex_t __gthread_mutex_t;
|
||||||
|
typedef pthread_mutex_t __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
|
||||||
|
#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
|
||||||
|
#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
|
||||||
|
|
||||||
|
#define NOTATHREAD 00
|
||||||
|
#define ECBBASEPTR (unsigned long int) *(unsigned int *)0x00000514u
|
||||||
|
#define ECBPG2PTR ECBBASEPTR + 0x1000
|
||||||
|
#define CE2THRCPTR *((unsigned char *)(ECBPG2PTR + 16))
|
||||||
|
#define __tpf_pthread_active() (CE2THRCPTR != NOTATHREAD)
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
# define __gthrw(name) \
|
||||||
|
static __typeof(name) __gthrw_ ## name __attribute__ ((__weakref__(#name)));
|
||||||
|
# define __gthrw_(name) __gthrw_ ## name
|
||||||
|
#else
|
||||||
|
# define __gthrw(name)
|
||||||
|
# define __gthrw_(name) name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__gthrw(pthread_once)
|
||||||
|
__gthrw(pthread_key_create)
|
||||||
|
__gthrw(pthread_key_delete)
|
||||||
|
__gthrw(pthread_getspecific)
|
||||||
|
__gthrw(pthread_setspecific)
|
||||||
|
__gthrw(pthread_create)
|
||||||
|
|
||||||
|
__gthrw(pthread_mutex_lock)
|
||||||
|
__gthrw(pthread_mutex_trylock)
|
||||||
|
__gthrw(pthread_mutex_unlock)
|
||||||
|
__gthrw(pthread_mutexattr_init)
|
||||||
|
__gthrw(pthread_mutexattr_settype)
|
||||||
|
__gthrw(pthread_mutexattr_destroy)
|
||||||
|
__gthrw(pthread_mutex_init)
|
||||||
|
__gthrw(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once, void (*__func) (void))
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_once) (__once, __func);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_key_create) (__key, __dtor);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_delete (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_key_delete) (__key);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_getspecific) (__key);
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_setspecific) (__key, __ptr);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_destroy) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_lock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_trylock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_unlock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
{
|
||||||
|
pthread_mutexattr_t __attr;
|
||||||
|
int __r;
|
||||||
|
|
||||||
|
__r = __gthrw_(pthread_mutexattr_init) (&__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_settype) (&__attr,
|
||||||
|
PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
|
||||||
|
return __r;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_TPF_H */
|
@ -0,0 +1,173 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1998, 2004, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_H
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_HIDE_EXPORTS
|
||||||
|
#pragma GCC visibility push(default)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If this file is compiled with threads support, it must
|
||||||
|
#define __GTHREADS 1
|
||||||
|
to indicate that threads support is present. Also it has define
|
||||||
|
function
|
||||||
|
int __gthread_active_p ()
|
||||||
|
that returns 1 if thread system is active, 0 if not.
|
||||||
|
|
||||||
|
The threads interface must define the following types:
|
||||||
|
__gthread_key_t
|
||||||
|
__gthread_once_t
|
||||||
|
__gthread_mutex_t
|
||||||
|
__gthread_recursive_mutex_t
|
||||||
|
|
||||||
|
The threads interface must define the following macros:
|
||||||
|
|
||||||
|
__GTHREAD_ONCE_INIT
|
||||||
|
to initialize __gthread_once_t
|
||||||
|
__GTHREAD_MUTEX_INIT
|
||||||
|
to initialize __gthread_mutex_t to get a fast
|
||||||
|
non-recursive mutex.
|
||||||
|
__GTHREAD_MUTEX_INIT_FUNCTION
|
||||||
|
some systems can't initialize a mutex without a
|
||||||
|
function call. On such systems, define this to a
|
||||||
|
function which looks like this:
|
||||||
|
void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *)
|
||||||
|
Don't define __GTHREAD_MUTEX_INIT in this case
|
||||||
|
__GTHREAD_RECURSIVE_MUTEX_INIT
|
||||||
|
__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION
|
||||||
|
as above, but for a recursive mutex.
|
||||||
|
|
||||||
|
The threads interface must define the following static functions:
|
||||||
|
|
||||||
|
int __gthread_once (__gthread_once_t *once, void (*func) ())
|
||||||
|
|
||||||
|
int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *))
|
||||||
|
int __gthread_key_delete (__gthread_key_t key)
|
||||||
|
|
||||||
|
void *__gthread_getspecific (__gthread_key_t key)
|
||||||
|
int __gthread_setspecific (__gthread_key_t key, const void *ptr)
|
||||||
|
|
||||||
|
int __gthread_mutex_destroy (__gthread_mutex_t *mutex);
|
||||||
|
|
||||||
|
int __gthread_mutex_lock (__gthread_mutex_t *mutex);
|
||||||
|
int __gthread_mutex_trylock (__gthread_mutex_t *mutex);
|
||||||
|
int __gthread_mutex_unlock (__gthread_mutex_t *mutex);
|
||||||
|
|
||||||
|
int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
|
||||||
|
The following are supported in POSIX threads only. They are required to
|
||||||
|
fix a deadlock in static initialization inside libsupc++. The header file
|
||||||
|
gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra
|
||||||
|
features are supported.
|
||||||
|
|
||||||
|
Types:
|
||||||
|
__gthread_cond_t
|
||||||
|
|
||||||
|
Macros:
|
||||||
|
__GTHREAD_COND_INIT
|
||||||
|
__GTHREAD_COND_INIT_FUNCTION
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
int __gthread_cond_broadcast (__gthread_cond_t *cond);
|
||||||
|
int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex);
|
||||||
|
int __gthread_cond_wait_recursive (__gthread_cond_t *cond,
|
||||||
|
__gthread_recursive_mutex_t *mutex);
|
||||||
|
|
||||||
|
All functions returning int should return zero on success or the error
|
||||||
|
number. If the operation is not supported, -1 is returned.
|
||||||
|
|
||||||
|
If the following are also defined, you should
|
||||||
|
#define __GTHREADS_CXX0X 1
|
||||||
|
to enable the c++0x thread library.
|
||||||
|
|
||||||
|
Types:
|
||||||
|
__gthread_t
|
||||||
|
__gthread_time_t
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
int __gthread_create (__gthread_t *thread, void *(*func) (void*),
|
||||||
|
void *args);
|
||||||
|
int __gthread_join (__gthread_t thread, void **value_ptr);
|
||||||
|
int __gthread_detach (__gthread_t thread);
|
||||||
|
int __gthread_equal (__gthread_t t1, __gthread_t t2);
|
||||||
|
__gthread_t __gthread_self (void);
|
||||||
|
int __gthread_yield (void);
|
||||||
|
|
||||||
|
int __gthread_mutex_timedlock (__gthread_mutex_t *m,
|
||||||
|
const __gthread_time_t *abs_timeout);
|
||||||
|
int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m,
|
||||||
|
const __gthread_time_t *abs_time);
|
||||||
|
|
||||||
|
int __gthread_cond_signal (__gthread_cond_t *cond);
|
||||||
|
int __gthread_cond_timedwait (__gthread_cond_t *cond,
|
||||||
|
__gthread_mutex_t *mutex,
|
||||||
|
const __gthread_time_t *abs_timeout);
|
||||||
|
int __gthread_cond_timedwait_recursive (__gthread_cond_t *cond,
|
||||||
|
__gthread_recursive_mutex_t *mutex,
|
||||||
|
const __gthread_time_t *abs_time)
|
||||||
|
|
||||||
|
Currently supported threads packages are
|
||||||
|
TPF threads with -D__tpf__
|
||||||
|
POSIX/Unix98 threads with -D_PTHREADS
|
||||||
|
POSIX/Unix95 threads with -D_PTHREADS95
|
||||||
|
DCE threads with -D_DCE_THREADS
|
||||||
|
Solaris/UI threads with -D_SOLARIS_THREADS
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Check first for thread specific defines. */
|
||||||
|
#if defined (_GLIBCXX___tpf_GLIBCXX___)
|
||||||
|
#include <bits/gthr-tpf.h>
|
||||||
|
#elif _GLIBCXX__PTHREADS
|
||||||
|
#include <bits/gthr-posix.h>
|
||||||
|
#elif _GLIBCXX__PTHREADS95
|
||||||
|
#include <bits/gthr-posix95.h>
|
||||||
|
#elif _GLIBCXX__DCE_THREADS
|
||||||
|
#include <bits/gthr-dce.h>
|
||||||
|
#elif _GLIBCXX__SOLARIS_THREADS
|
||||||
|
#include <bits/gthr-solaris.h>
|
||||||
|
|
||||||
|
/* Include GTHREAD_FILE if one is defined. */
|
||||||
|
#elif defined(_GLIBCXX_HAVE_GTHR_DEFAULT)
|
||||||
|
#if __GXX_WEAK__
|
||||||
|
#ifndef _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
#define _GLIBCXX_GTHREAD_USE_WEAK 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#include <bits/gthr-default.h>
|
||||||
|
|
||||||
|
/* Fallback to single thread definitions. */
|
||||||
|
#else
|
||||||
|
#include <bits/gthr-single.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_HIDE_EXPORTS
|
||||||
|
#pragma GCC visibility pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_H */
|
@ -0,0 +1,90 @@
|
|||||||
|
// std::messages implementation details, generic version -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file messages_members.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.2.7.1.2 messages virtual functions
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
// Non-virtual member functions.
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::messages(size_t __refs)
|
||||||
|
: facet(__refs)
|
||||||
|
{ _M_c_locale_messages = _S_get_c_locale(); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::messages(__c_locale, const char*, size_t __refs)
|
||||||
|
: facet(__refs)
|
||||||
|
{ _M_c_locale_messages = _S_get_c_locale(); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::catalog
|
||||||
|
messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
|
||||||
|
const char*) const
|
||||||
|
{ return this->do_open(__s, __loc); }
|
||||||
|
|
||||||
|
// Virtual member functions.
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::~messages()
|
||||||
|
{ _S_destroy_c_locale(_M_c_locale_messages); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::catalog
|
||||||
|
messages<_CharT>::do_open(const basic_string<char>&, const locale&) const
|
||||||
|
{ return 0; }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::string_type
|
||||||
|
messages<_CharT>::do_get(catalog, int, int,
|
||||||
|
const string_type& __dfault) const
|
||||||
|
{ return __dfault; }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
void
|
||||||
|
messages<_CharT>::do_close(catalog) const
|
||||||
|
{ }
|
||||||
|
|
||||||
|
// messages_byname
|
||||||
|
template<typename _CharT>
|
||||||
|
messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
|
||||||
|
: messages<_CharT>(__refs)
|
||||||
|
{
|
||||||
|
if (__builtin_strcmp(__s, "C") != 0
|
||||||
|
&& __builtin_strcmp(__s, "POSIX") != 0)
|
||||||
|
{
|
||||||
|
this->_S_destroy_c_locale(this->_M_c_locale_messages);
|
||||||
|
this->_S_create_c_locale(this->_M_c_locale_messages, __s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,52 @@
|
|||||||
|
// Specific definitions for newlib -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file os_defines.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_OS_DEFINES
|
||||||
|
#define _GLIBCXX_OS_DEFINES 1
|
||||||
|
|
||||||
|
// System-specific #define, typedefs, corrections, etc, go here. This
|
||||||
|
// file will come before all others.
|
||||||
|
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
#define _GLIBCXX_GTHREAD_USE_WEAK 0
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_DLL)
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__))
|
||||||
|
#else
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_default
|
||||||
|
#endif
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_hidden
|
||||||
|
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V
|
||||||
|
|
||||||
|
// See libstdc++/20806.
|
||||||
|
#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,115 @@
|
|||||||
|
// C++ includes used for precompiling -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file stdc++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 17.4.1.2 Headers
|
||||||
|
|
||||||
|
// C
|
||||||
|
#ifndef _GLIBCXX_NO_ASSERT
|
||||||
|
#include <cassert>
|
||||||
|
#endif
|
||||||
|
#include <cctype>
|
||||||
|
#include <cerrno>
|
||||||
|
#include <cfloat>
|
||||||
|
#include <ciso646>
|
||||||
|
#include <climits>
|
||||||
|
#include <clocale>
|
||||||
|
#include <cmath>
|
||||||
|
#include <csetjmp>
|
||||||
|
#include <csignal>
|
||||||
|
#include <cstdarg>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <ccomplex>
|
||||||
|
#include <cfenv>
|
||||||
|
#include <cinttypes>
|
||||||
|
#include <cstdbool>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <ctgmath>
|
||||||
|
#include <cwchar>
|
||||||
|
#include <cwctype>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// C++
|
||||||
|
#include <algorithm>
|
||||||
|
#include <bitset>
|
||||||
|
#include <complex>
|
||||||
|
#include <deque>
|
||||||
|
#include <exception>
|
||||||
|
#include <fstream>
|
||||||
|
#include <functional>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <ios>
|
||||||
|
#include <iosfwd>
|
||||||
|
#include <iostream>
|
||||||
|
#include <istream>
|
||||||
|
#include <iterator>
|
||||||
|
#include <limits>
|
||||||
|
#include <list>
|
||||||
|
#include <locale>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
#include <new>
|
||||||
|
#include <numeric>
|
||||||
|
#include <ostream>
|
||||||
|
#include <queue>
|
||||||
|
#include <set>
|
||||||
|
#include <sstream>
|
||||||
|
#include <stack>
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <streambuf>
|
||||||
|
#include <string>
|
||||||
|
#include <typeinfo>
|
||||||
|
#include <utility>
|
||||||
|
#include <valarray>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <array>
|
||||||
|
#include <atomic>
|
||||||
|
#include <chrono>
|
||||||
|
#include <condition_variable>
|
||||||
|
#include <forward_list>
|
||||||
|
#include <future>
|
||||||
|
#include <initializer_list>
|
||||||
|
#include <mutex>
|
||||||
|
#include <random>
|
||||||
|
#include <ratio>
|
||||||
|
#include <regex>
|
||||||
|
#include <system_error>
|
||||||
|
#include <thread>
|
||||||
|
#include <tuple>
|
||||||
|
#include <type_traits>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <unordered_set>
|
||||||
|
#endif
|
@ -0,0 +1,53 @@
|
|||||||
|
// C++ includes used for precompiling TR1 -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file stdtr1c++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <bits/stdc++.h>
|
||||||
|
|
||||||
|
#include <tr1/array>
|
||||||
|
#include <tr1/cctype>
|
||||||
|
#include <tr1/cfenv>
|
||||||
|
#include <tr1/cfloat>
|
||||||
|
#include <tr1/cinttypes>
|
||||||
|
#include <tr1/climits>
|
||||||
|
#include <tr1/cmath>
|
||||||
|
#include <tr1/complex>
|
||||||
|
#include <tr1/cstdarg>
|
||||||
|
#include <tr1/cstdbool>
|
||||||
|
#include <tr1/cstdint>
|
||||||
|
#include <tr1/cstdio>
|
||||||
|
#include <tr1/cstdlib>
|
||||||
|
#include <tr1/ctgmath>
|
||||||
|
#include <tr1/ctime>
|
||||||
|
#include <tr1/cwchar>
|
||||||
|
#include <tr1/cwctype>
|
||||||
|
#include <tr1/functional>
|
||||||
|
#include <tr1/random>
|
||||||
|
#include <tr1/tuple>
|
||||||
|
#include <tr1/unordered_map>
|
||||||
|
#include <tr1/unordered_set>
|
||||||
|
#include <tr1/utility>
|
@ -0,0 +1,90 @@
|
|||||||
|
// std::time_get, std::time_put implementation, generic version -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file time_members.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.2.5.1.2 - time_get functions
|
||||||
|
// ISO C++ 14882: 22.2.5.3.2 - time_put functions
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(size_t __refs)
|
||||||
|
: facet(__refs), _M_data(NULL)
|
||||||
|
{
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
_M_initialize_timepunct();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
|
||||||
|
: facet(__refs), _M_data(__cache)
|
||||||
|
{
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
_M_initialize_timepunct();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
|
||||||
|
size_t __refs)
|
||||||
|
: facet(__refs), _M_data(NULL)
|
||||||
|
{
|
||||||
|
if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
|
||||||
|
{
|
||||||
|
const size_t __len = __builtin_strlen(__s) + 1;
|
||||||
|
char* __tmp = new char[__len];
|
||||||
|
__builtin_memcpy(__tmp, __s, __len);
|
||||||
|
_M_name_timepunct = __tmp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
|
||||||
|
__try
|
||||||
|
{ _M_initialize_timepunct(__cloc); }
|
||||||
|
__catch(...)
|
||||||
|
{
|
||||||
|
if (_M_name_timepunct != _S_get_c_name())
|
||||||
|
delete [] _M_name_timepunct;
|
||||||
|
__throw_exception_again;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::~__timepunct()
|
||||||
|
{
|
||||||
|
if (_M_name_timepunct != _S_get_c_name())
|
||||||
|
delete [] _M_name_timepunct;
|
||||||
|
delete _M_data;
|
||||||
|
_S_destroy_c_locale(_M_c_locale_timepunct);
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,47 @@
|
|||||||
|
// Low-level type for atomic operations -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file atomic_word.h
|
||||||
|
* This file is a GNU extension to the Standard C++ Library.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_ATOMIC_WORD_H
|
||||||
|
#define _GLIBCXX_ATOMIC_WORD_H 1
|
||||||
|
|
||||||
|
typedef int _Atomic_word;
|
||||||
|
|
||||||
|
// Define these two macros using the appropriate memory barrier for the target.
|
||||||
|
// The commented out versions below are the defaults.
|
||||||
|
// See ia64/atomic_word.h for an alternative approach.
|
||||||
|
|
||||||
|
// This one prevents loads from being hoisted across the barrier;
|
||||||
|
// in other words, this is a Load-Load acquire barrier.
|
||||||
|
// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h.
|
||||||
|
// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
|
||||||
|
|
||||||
|
// This one prevents stores from being sunk across the barrier; in other
|
||||||
|
// words, a Store-Store release barrier.
|
||||||
|
// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,108 @@
|
|||||||
|
// Wrapper of C-language FILE struct -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 27.8 File-based streams
|
||||||
|
//
|
||||||
|
|
||||||
|
/** @file basic_file.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_BASIC_FILE_STDIO_H
|
||||||
|
#define _GLIBCXX_BASIC_FILE_STDIO_H 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <bits/c++config.h>
|
||||||
|
#include <bits/c++io.h> // for __c_lock and __c_file
|
||||||
|
#include <ios>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
// Generic declaration.
|
||||||
|
template<typename _CharT>
|
||||||
|
class __basic_file;
|
||||||
|
|
||||||
|
// Specialization.
|
||||||
|
template<>
|
||||||
|
class __basic_file<char>
|
||||||
|
{
|
||||||
|
// Underlying data source/sink.
|
||||||
|
__c_file* _M_cfile;
|
||||||
|
|
||||||
|
// True iff we opened _M_cfile, and thus must close it ourselves.
|
||||||
|
bool _M_cfile_created;
|
||||||
|
|
||||||
|
public:
|
||||||
|
__basic_file(__c_lock* __lock = 0) throw ();
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
sys_open(__c_file* __file, ios_base::openmode);
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
sys_open(int __fd, ios_base::openmode __mode) throw ();
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
close();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE bool
|
||||||
|
is_open() const throw ();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE int
|
||||||
|
fd() throw ();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE __c_file*
|
||||||
|
file() throw ();
|
||||||
|
|
||||||
|
~__basic_file();
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsputn(const char* __s, streamsize __n);
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsputn_2(const char* __s1, streamsize __n1,
|
||||||
|
const char* __s2, streamsize __n2);
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsgetn(char* __s, streamsize __n);
|
||||||
|
|
||||||
|
streamoff
|
||||||
|
seekoff(streamoff __off, ios_base::seekdir __way) throw ();
|
||||||
|
|
||||||
|
int
|
||||||
|
sync();
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
showmanyc();
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,37 @@
|
|||||||
|
// Base to std::allocator -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++allocator.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_ALLOCATOR_H
|
||||||
|
#define _GLIBCXX_CXX_ALLOCATOR_H 1
|
||||||
|
|
||||||
|
// Define new_allocator as the base class to std::allocator.
|
||||||
|
#include <ext/new_allocator.h>
|
||||||
|
#define __glibcxx_base_allocator __gnu_cxx::new_allocator
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,1506 @@
|
|||||||
|
// Predefined symbols and macros -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
|
// 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++config.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_CONFIG_H
|
||||||
|
#define _GLIBCXX_CXX_CONFIG_H 1
|
||||||
|
|
||||||
|
// The current version of the C++ library in compressed ISO date format.
|
||||||
|
#define __GLIBCXX__ 20101216
|
||||||
|
|
||||||
|
// Macros for visibility.
|
||||||
|
// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
|
||||||
|
// _GLIBCXX_VISIBILITY_ATTR
|
||||||
|
# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1
|
||||||
|
|
||||||
|
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
|
||||||
|
# define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
|
||||||
|
#else
|
||||||
|
// If this is not supplied by the OS-specific or CPU-specific
|
||||||
|
// headers included below, it will be defined to an empty default.
|
||||||
|
# define _GLIBCXX_VISIBILITY_ATTR(V) _GLIBCXX_PSEUDO_VISIBILITY(V)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for deprecated.
|
||||||
|
// _GLIBCXX_DEPRECATED
|
||||||
|
// _GLIBCXX_DEPRECATED_ATTR
|
||||||
|
#ifndef _GLIBCXX_DEPRECATED
|
||||||
|
# define _GLIBCXX_DEPRECATED 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||||
|
# define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__))
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_DEPRECATED_ATTR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for activating various namespace association modes.
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
|
||||||
|
// Guide to libstdc++ namespaces.
|
||||||
|
/*
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __debug { }
|
||||||
|
namespace __parallel { }
|
||||||
|
namespace __norm { } // __normative, __shadow, __replaced
|
||||||
|
namespace __cxx1998 { }
|
||||||
|
|
||||||
|
namespace tr1 { }
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#if __cplusplus
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_DEBUG
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_PARALLEL
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace association for profile
|
||||||
|
#ifdef _GLIBCXX_PROFILE
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
|
||||||
|
|
||||||
|
// Defined if any namespace association modes are active.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
# define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for namespace scope. Either namespace std:: or the name
|
||||||
|
// of some nested namespace within it.
|
||||||
|
// _GLIBCXX_STD
|
||||||
|
// _GLIBCXX_STD_D
|
||||||
|
// _GLIBCXX_STD_P
|
||||||
|
//
|
||||||
|
// Macros for enclosing namespaces and possibly nested namespaces.
|
||||||
|
// _GLIBCXX_BEGIN_NAMESPACE
|
||||||
|
// _GLIBCXX_END_NAMESPACE
|
||||||
|
// _GLIBCXX_BEGIN_NESTED_NAMESPACE
|
||||||
|
// _GLIBCXX_END_NESTED_NAMESPACE
|
||||||
|
#ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_PR _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD std
|
||||||
|
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X)
|
||||||
|
# define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
#else
|
||||||
|
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD _6
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6)
|
||||||
|
# define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// debug
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE -1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// parallel
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// debug + parallel
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE -1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// profile
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL || _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
|
||||||
|
# error Cannot use -D_GLIBCXX_PROFILE with -D_GLIBCXX_DEBUG or \
|
||||||
|
-D_GLIBCXX_PARALLEL
|
||||||
|
# endif
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_PR __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __NO_INLINE__ && !__GXX_WEAK__
|
||||||
|
# warning currently using namespace associated mode which may fail \
|
||||||
|
without inlining due to lack of weak symbols
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NESTED_NAMESPACE } }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for debug mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __debug { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for parallel mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __parallel { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for profile mode
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __profile { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for versioning mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace __gnu_cxx
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace tr1
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// XXX GLIBCXX_ABI Deprecated
|
||||||
|
// Define if compatibility should be provided for -mlong-double-64
|
||||||
|
#undef _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||||
|
|
||||||
|
// Namespace associations for long double 128 mode.
|
||||||
|
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
inline namespace __gnu_cxx_ldbl128 { }
|
||||||
|
}
|
||||||
|
# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
|
||||||
|
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
|
||||||
|
# define _GLIBCXX_END_LDBL_NAMESPACE }
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_LDBL_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE
|
||||||
|
# define _GLIBCXX_END_LDBL_NAMESPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Defines for C compatibility. In particular, define extern "C"
|
||||||
|
// linkage only when using C++.
|
||||||
|
# define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
|
||||||
|
# define _GLIBCXX_END_EXTERN_C }
|
||||||
|
|
||||||
|
#else // !__cplusplus
|
||||||
|
# undef _GLIBCXX_BEGIN_NAMESPACE
|
||||||
|
# undef _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X)
|
||||||
|
# define _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_EXTERN_C
|
||||||
|
# define _GLIBCXX_END_EXTERN_C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// First includes.
|
||||||
|
|
||||||
|
// Pick up any OS-specific definitions.
|
||||||
|
#include <bits/os_defines.h>
|
||||||
|
|
||||||
|
// Pick up any CPU-specific definitions.
|
||||||
|
#include <bits/cpu_defines.h>
|
||||||
|
|
||||||
|
// If platform uses neither visibility nor psuedo-visibility,
|
||||||
|
// specify empty default for namespace annotation macros.
|
||||||
|
#ifndef _GLIBCXX_PSEUDO_VISIBILITY
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY(V)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Allow use of "export template." This is currently not a feature
|
||||||
|
// that g++ supports.
|
||||||
|
// #define _GLIBCXX_EXPORT_TEMPLATE 1
|
||||||
|
|
||||||
|
// Allow use of the GNU syntax extension, "extern template." This
|
||||||
|
// extension is fully documented in the g++ manual, but in a nutshell,
|
||||||
|
// it inhibits all implicit instantiations and is used throughout the
|
||||||
|
// library to avoid multiple weak definitions for required types that
|
||||||
|
// are already explicitly instantiated in the library binary. This
|
||||||
|
// substantially reduces the binary size of resulting executables.
|
||||||
|
|
||||||
|
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
|
||||||
|
// templates only in basic_string, thus activating its debug-mode
|
||||||
|
// checks even at -O0.
|
||||||
|
#ifndef _GLIBCXX_EXTERN_TEMPLATE
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Certain function definitions that are meant to be overridable from
|
||||||
|
// user code are decorated with this macro. For some targets, this
|
||||||
|
// macro causes these definitions to be weak.
|
||||||
|
#ifndef _GLIBCXX_WEAK_DEFINITION
|
||||||
|
# define _GLIBCXX_WEAK_DEFINITION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Assert.
|
||||||
|
// Avoid the use of assert, because we're trying to keep the <cassert>
|
||||||
|
// include out of the mix.
|
||||||
|
#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL)
|
||||||
|
#define __glibcxx_assert(_Condition)
|
||||||
|
#else
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
// Avoid the use of assert, because we're trying to keep the <cassert>
|
||||||
|
// include out of the mix.
|
||||||
|
inline void
|
||||||
|
__replacement_assert(const char* __file, int __line,
|
||||||
|
const char* __function, const char* __condition)
|
||||||
|
{
|
||||||
|
__builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line,
|
||||||
|
__function, __condition);
|
||||||
|
__builtin_abort();
|
||||||
|
}
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#define __glibcxx_assert(_Condition) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (! (_Condition)) \
|
||||||
|
std::__replacement_assert(__FILE__, __LINE__, \
|
||||||
|
__PRETTY_FUNCTION__, #_Condition); \
|
||||||
|
} while (false)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// The remainder of the prewritten config is automatic; all the
|
||||||
|
// user hooks are listed above.
|
||||||
|
|
||||||
|
// Create a boolean flag to be used to determine if --fast-math is set.
|
||||||
|
#ifdef __FAST_MATH__
|
||||||
|
# define _GLIBCXX_FAST_MATH 1
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_FAST_MATH 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// This marks string literals in header files to be extracted for eventual
|
||||||
|
// translation. It is primarily used for messages in thrown exceptions; see
|
||||||
|
// src/functexcept.cc. We use __N because the more traditional _N is used
|
||||||
|
// for something else under certain OSes (see BADNAMES).
|
||||||
|
#define __N(msgid) (msgid)
|
||||||
|
|
||||||
|
// For example, <windows.h> is known to #define min and max as macros...
|
||||||
|
#undef min
|
||||||
|
#undef max
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_PURE
|
||||||
|
# define _GLIBCXX_PURE __attribute__ ((__pure__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CONST
|
||||||
|
# define _GLIBCXX_CONST __attribute__ ((__const__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_NORETURN
|
||||||
|
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_NOTHROW
|
||||||
|
# ifdef __cplusplus
|
||||||
|
# define _GLIBCXX_NOTHROW throw()
|
||||||
|
# else
|
||||||
|
# define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// End of prewritten config; the discovered settings follow.
|
||||||
|
/* config.h. Generated from config.h.in by configure. */
|
||||||
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `acosf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ACOSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `acosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ACOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `asinf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ASINF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `asinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ASINL */
|
||||||
|
|
||||||
|
/* Define to 1 if the target assembler supports .symver directive. */
|
||||||
|
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atan2f' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ATAN2F 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atan2l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ATAN2L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atanf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ATANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ATANL */
|
||||||
|
|
||||||
|
/* Define to 1 if the target assembler supports thread-local storage. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_CC_TLS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ceilf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_CEILF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ceill' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_CEILL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <complex.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `cosf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_COSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `coshf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_COSHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `coshl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COSHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `cosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_DLFCN_H */
|
||||||
|
|
||||||
|
/* Define if EBADMSG exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EBADMSG 1
|
||||||
|
|
||||||
|
/* Define if ECANCELED exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ECANCELED 1
|
||||||
|
|
||||||
|
/* Define if EIDRM exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EIDRM 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <endian.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ENDIAN_H */
|
||||||
|
|
||||||
|
/* Define if ENODATA exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENODATA 1
|
||||||
|
|
||||||
|
/* Define if ENOLINK exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOLINK 1
|
||||||
|
|
||||||
|
/* Define if ENOSR exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOSR 1
|
||||||
|
|
||||||
|
/* Define if ENOSTR exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOSTR 1
|
||||||
|
|
||||||
|
/* Define if ENOTRECOVERABLE exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1
|
||||||
|
|
||||||
|
/* Define if ENOTSUP exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOTSUP 1
|
||||||
|
|
||||||
|
/* Define if EOVERFLOW exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EOVERFLOW 1
|
||||||
|
|
||||||
|
/* Define if EOWNERDEAD exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EOWNERDEAD 1
|
||||||
|
|
||||||
|
/* Define if EPROTO exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EPROTO 1
|
||||||
|
|
||||||
|
/* Define if ETIME exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ETIME 1
|
||||||
|
|
||||||
|
/* Define if ETXTBSY exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ETXTBSY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `expf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_EXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `expl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_EXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fabsf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FABSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fabsl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FABSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fenv.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FENV_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finite' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finitef' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITEF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finitel' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITEL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <float.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_FLOAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `floorf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FLOORF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `floorl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FLOORL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fmodf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FMODF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fmodl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FMODL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fp.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FP_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `frexpf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FREXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `frexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FREXPL */
|
||||||
|
|
||||||
|
/* Define if _Unwind_GetIPInfo is available. */
|
||||||
|
#define _GLIBCXX_HAVE_GETIPINFO 1
|
||||||
|
|
||||||
|
/* Define if gthr-default.h exists (meaning that threading support is
|
||||||
|
enabled). */
|
||||||
|
/* #undef _GLIBCXX_HAVE_GTHR_DEFAULT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypot' function. */
|
||||||
|
#define _GLIBCXX_HAVE_HYPOT 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypotf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_HYPOTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypotl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_HYPOTL */
|
||||||
|
|
||||||
|
/* Define if you have the iconv() function. */
|
||||||
|
#define _GLIBCXX_HAVE_ICONV 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ieeefp.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_IEEEFP_H 1
|
||||||
|
|
||||||
|
/* Define if int64_t is available in <stdint.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_INT64_T 1
|
||||||
|
|
||||||
|
/* Define if int64_t is a long. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_INT64_T_LONG */
|
||||||
|
|
||||||
|
/* Define if int64_t is a long long. */
|
||||||
|
#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnan' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNAN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNANL */
|
||||||
|
|
||||||
|
/* Defined if iswblank exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ISWBLANK 1
|
||||||
|
|
||||||
|
/* Define if LC_MESSAGES is available in <locale.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_LC_MESSAGES 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ldexpf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LDEXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ldexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LDEXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libintl.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_AS */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_DATA */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_RSS */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */
|
||||||
|
|
||||||
|
/* Define if futex syscall is available. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <locale.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_LOCALE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `log10f' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LOG10F 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `log10l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LOG10L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `logf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LOGF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `logl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LOGL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/endian.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/param.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define if mbstate_t exists in wchar.h. */
|
||||||
|
#define _GLIBCXX_HAVE_MBSTATE_T 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MEMORY_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modff' function. */
|
||||||
|
#define _GLIBCXX_HAVE_MODFF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MODFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <nan.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_NAN_H */
|
||||||
|
|
||||||
|
/* Define if poll is available in <poll.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_POLL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `powf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_POWF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `powl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_POWL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `qfpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_QFPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setenv' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SETENV */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincos' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SINF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinhf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SINHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sqrtf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SQRTF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sqrtl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SQRTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdbool.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDBOOL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define if strerror_l is available in <string.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRERROR_L */
|
||||||
|
|
||||||
|
/* Define if strerror_r is available in <string.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_STRERROR_R 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRINGS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtof' function. */
|
||||||
|
#define _GLIBCXX_HAVE_STRTOF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtold' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRTOLD */
|
||||||
|
|
||||||
|
/* Define if strxfrm_l is available in <string.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRXFRM_L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/filio.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ipc.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_IPC_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/isa_defs.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/machine.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/sem.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_SEM_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_TIME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/uio.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_UIO_H */
|
||||||
|
|
||||||
|
/* Define if S_IFREG is available in <sys/stat.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_S_IFREG */
|
||||||
|
|
||||||
|
/* Define if S_IFREG is available in <sys/stat.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_S_ISREG */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_TANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanhf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_TANHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TANHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <tgmath.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_TGMATH_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if the target supports thread-local storage. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TLS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Defined if vfwscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VFWSCANF 1
|
||||||
|
|
||||||
|
/* Defined if vswscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VSWSCANF 1
|
||||||
|
|
||||||
|
/* Defined if vwscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VWSCANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wchar.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_WCHAR_H 1
|
||||||
|
|
||||||
|
/* Defined if wcstof exists. */
|
||||||
|
#define _GLIBCXX_HAVE_WCSTOF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wctype.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_WCTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if writev is available in <sys/uio.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_WRITEV */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_acosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ACOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_acosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ACOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_asinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ASINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_asinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ASINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atan2f' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATAN2F */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atan2l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATAN2L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ceilf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__CEILF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ceill' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__CEILL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_cosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_coshf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_coshl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_cosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_expf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__EXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_expl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__EXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fabsf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FABSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fabsl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FABSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finite' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finitef' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITEF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finitel' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITEL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_floorf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FLOORF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_floorl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FLOORL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fmodf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FMODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fmodl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FMODL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_frexpf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FREXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_frexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FREXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypot' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypotf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypotl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnan' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNAN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ldexpf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LDEXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ldexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LDEXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_log10f' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOG10F */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_log10l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOG10L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_logf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOGF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_logl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOGL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_powf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__POWF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_powl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__POWL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_qfpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__QFPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincos' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinhf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sqrtf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SQRTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sqrtl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SQRTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanhf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANL */
|
||||||
|
|
||||||
|
/* Define as const if the declaration of iconv() needs const. */
|
||||||
|
/* #undef _GLIBCXX_ICONV_CONST */
|
||||||
|
|
||||||
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
#define LT_OBJDIR ".libs/"
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
/* #undef _GLIBCXX_PACKAGE */
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define _GLIBCXX_PACKAGE_BUGREPORT ""
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_NAME "package-unused"
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_URL ""
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
|
||||||
|
|
||||||
|
/* The size of `char', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_CHAR */
|
||||||
|
|
||||||
|
/* The size of `int', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_INT */
|
||||||
|
|
||||||
|
/* The size of `long', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_LONG */
|
||||||
|
|
||||||
|
/* The size of `short', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_SHORT */
|
||||||
|
|
||||||
|
/* The size of `void *', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_VOID_P */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
/* #undef _GLIBCXX_VERSION */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for bool are supported on this host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_1 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for short are supported on this host.
|
||||||
|
*/
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_2 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for int are supported on this host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_4 */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for long long are supported on this
|
||||||
|
host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_8 */
|
||||||
|
|
||||||
|
/* Define to use concept checking code from the boost libraries. */
|
||||||
|
/* #undef _GLIBCXX_CONCEPT_CHECKS */
|
||||||
|
|
||||||
|
/* Define to 1 if building for use with CSLIBC, or 0 otherwise. */
|
||||||
|
#define _GLIBCXX_CSLIBC 0
|
||||||
|
|
||||||
|
/* Define if a fully dynamic basic_string is wanted. */
|
||||||
|
/* #undef _GLIBCXX_FULLY_DYNAMIC_STRING */
|
||||||
|
|
||||||
|
/* Define if gthreads library is available. */
|
||||||
|
/* #undef _GLIBCXX_HAS_GTHREADS */
|
||||||
|
|
||||||
|
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
|
||||||
|
#define _GLIBCXX_HOSTED 1
|
||||||
|
|
||||||
|
/* Define if compatibility should be provided for -mlong-double-64. */
|
||||||
|
|
||||||
|
/* Define if ptrdiff_t is int. */
|
||||||
|
#define _GLIBCXX_PTRDIFF_T_IS_INT 1
|
||||||
|
|
||||||
|
/* Define if using setrlimit to set resource limits during "make check" */
|
||||||
|
/* #undef _GLIBCXX_RES_LIMITS */
|
||||||
|
|
||||||
|
/* Define if size_t is unsigned int. */
|
||||||
|
#define _GLIBCXX_SIZE_T_IS_UINT 1
|
||||||
|
|
||||||
|
/* Define if the compiler is configured for setjmp/longjmp exceptions. */
|
||||||
|
/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */
|
||||||
|
|
||||||
|
/* Define if EOF == -1, SEEK_CUR == 1, SEEK_END == 2. */
|
||||||
|
#define _GLIBCXX_STDIO_MACROS 1
|
||||||
|
|
||||||
|
/* Define to use symbol versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER */
|
||||||
|
|
||||||
|
/* Define to use darwin versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_DARWIN */
|
||||||
|
|
||||||
|
/* Define to use GNU versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_GNU */
|
||||||
|
|
||||||
|
/* Define to use GNU namespace versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
|
||||||
|
<stdio.h>, and <stdlib.h> can be used or exposed. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <complex.h> should be used in <complex>. Using
|
||||||
|
compiler builtins for these functions requires corresponding C99 library
|
||||||
|
functions to be present. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_COMPLEX */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
|
||||||
|
Using compiler builtins for these functions requires corresponding C99
|
||||||
|
library functions to be present. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_CTYPE_TR1 1
|
||||||
|
|
||||||
|
/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_FENV_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <inttypes.h> should be imported in
|
||||||
|
<tr1/cinttypes> in namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_INTTYPES_TR1 1
|
||||||
|
|
||||||
|
/* Define if wchar_t C99 functions in <inttypes.h> should be imported in
|
||||||
|
<tr1/cinttypes> in namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
|
||||||
|
in namespace std. */
|
||||||
|
#define _GLIBCXX_USE_C99_MATH 1
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros in <math.h> should be imported in
|
||||||
|
<tr1/cmath> in namespace std::tr1. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_MATH_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_STDINT_TR1 1
|
||||||
|
|
||||||
|
/* Defined if clock_gettime has monotonic clock support. */
|
||||||
|
/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
|
||||||
|
|
||||||
|
/* Defined if clock_gettime has realtime clock support. */
|
||||||
|
/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
|
||||||
|
|
||||||
|
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
|
||||||
|
this host. */
|
||||||
|
/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */
|
||||||
|
|
||||||
|
/* Defined if gettimeofday is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
|
||||||
|
|
||||||
|
/* Define if LFS support is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_LFS */
|
||||||
|
|
||||||
|
/* Define if code specialized for long long should be used. */
|
||||||
|
#define _GLIBCXX_USE_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Defined if nanosleep is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_NANOSLEEP */
|
||||||
|
|
||||||
|
/* Define if NLS translations are to be used. */
|
||||||
|
/* #undef _GLIBCXX_USE_NLS */
|
||||||
|
|
||||||
|
/* Define if /dev/random and /dev/urandom are available for the random_device
|
||||||
|
of TR1 (Chapter 5.1). */
|
||||||
|
/* #undef _GLIBCXX_USE_RANDOM_TR1 */
|
||||||
|
|
||||||
|
/* Defined if sched_yield is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_SCHED_YIELD */
|
||||||
|
|
||||||
|
/* Define if code specialized for wchar_t should be used. */
|
||||||
|
#define _GLIBCXX_USE_WCHAR_T 1
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF)
|
||||||
|
# define _GLIBCXX_HAVE_ACOSF 1
|
||||||
|
# define acosf _acosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL)
|
||||||
|
# define _GLIBCXX_HAVE_ACOSL 1
|
||||||
|
# define acosl _acosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF)
|
||||||
|
# define _GLIBCXX_HAVE_ASINF 1
|
||||||
|
# define asinf _asinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL)
|
||||||
|
# define _GLIBCXX_HAVE_ASINL 1
|
||||||
|
# define asinl _asinl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F)
|
||||||
|
# define _GLIBCXX_HAVE_ATAN2F 1
|
||||||
|
# define atan2f _atan2f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L)
|
||||||
|
# define _GLIBCXX_HAVE_ATAN2L 1
|
||||||
|
# define atan2l _atan2l
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF)
|
||||||
|
# define _GLIBCXX_HAVE_ATANF 1
|
||||||
|
# define atanf _atanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL)
|
||||||
|
# define _GLIBCXX_HAVE_ATANL 1
|
||||||
|
# define atanl _atanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF)
|
||||||
|
# define _GLIBCXX_HAVE_CEILF 1
|
||||||
|
# define ceilf _ceilf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL)
|
||||||
|
# define _GLIBCXX_HAVE_CEILL 1
|
||||||
|
# define ceill _ceill
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF)
|
||||||
|
# define _GLIBCXX_HAVE_COSF 1
|
||||||
|
# define cosf _cosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF)
|
||||||
|
# define _GLIBCXX_HAVE_COSHF 1
|
||||||
|
# define coshf _coshf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL)
|
||||||
|
# define _GLIBCXX_HAVE_COSHL 1
|
||||||
|
# define coshl _coshl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL)
|
||||||
|
# define _GLIBCXX_HAVE_COSL 1
|
||||||
|
# define cosl _cosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF)
|
||||||
|
# define _GLIBCXX_HAVE_EXPF 1
|
||||||
|
# define expf _expf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL)
|
||||||
|
# define _GLIBCXX_HAVE_EXPL 1
|
||||||
|
# define expl _expl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF)
|
||||||
|
# define _GLIBCXX_HAVE_FABSF 1
|
||||||
|
# define fabsf _fabsf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL)
|
||||||
|
# define _GLIBCXX_HAVE_FABSL 1
|
||||||
|
# define fabsl _fabsl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE)
|
||||||
|
# define _GLIBCXX_HAVE_FINITE 1
|
||||||
|
# define finite _finite
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF)
|
||||||
|
# define _GLIBCXX_HAVE_FINITEF 1
|
||||||
|
# define finitef _finitef
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL)
|
||||||
|
# define _GLIBCXX_HAVE_FINITEL 1
|
||||||
|
# define finitel _finitel
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF)
|
||||||
|
# define _GLIBCXX_HAVE_FLOORF 1
|
||||||
|
# define floorf _floorf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL)
|
||||||
|
# define _GLIBCXX_HAVE_FLOORL 1
|
||||||
|
# define floorl _floorl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF)
|
||||||
|
# define _GLIBCXX_HAVE_FMODF 1
|
||||||
|
# define fmodf _fmodf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL)
|
||||||
|
# define _GLIBCXX_HAVE_FMODL 1
|
||||||
|
# define fmodl _fmodl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS)
|
||||||
|
# define _GLIBCXX_HAVE_FPCLASS 1
|
||||||
|
# define fpclass _fpclass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF)
|
||||||
|
# define _GLIBCXX_HAVE_FREXPF 1
|
||||||
|
# define frexpf _frexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL)
|
||||||
|
# define _GLIBCXX_HAVE_FREXPL 1
|
||||||
|
# define frexpl _frexpl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOT 1
|
||||||
|
# define hypot _hypot
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOTF 1
|
||||||
|
# define hypotf _hypotf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOTL 1
|
||||||
|
# define hypotl _hypotl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF)
|
||||||
|
# define _GLIBCXX_HAVE_ISINF 1
|
||||||
|
# define isinf _isinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF)
|
||||||
|
# define _GLIBCXX_HAVE_ISINFF 1
|
||||||
|
# define isinff _isinff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL)
|
||||||
|
# define _GLIBCXX_HAVE_ISINFL 1
|
||||||
|
# define isinfl _isinfl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN)
|
||||||
|
# define _GLIBCXX_HAVE_ISNAN 1
|
||||||
|
# define isnan _isnan
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF)
|
||||||
|
# define _GLIBCXX_HAVE_ISNANF 1
|
||||||
|
# define isnanf _isnanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL)
|
||||||
|
# define _GLIBCXX_HAVE_ISNANL 1
|
||||||
|
# define isnanl _isnanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF)
|
||||||
|
# define _GLIBCXX_HAVE_LDEXPF 1
|
||||||
|
# define ldexpf _ldexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL)
|
||||||
|
# define _GLIBCXX_HAVE_LDEXPL 1
|
||||||
|
# define ldexpl _ldexpl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F)
|
||||||
|
# define _GLIBCXX_HAVE_LOG10F 1
|
||||||
|
# define log10f _log10f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L)
|
||||||
|
# define _GLIBCXX_HAVE_LOG10L 1
|
||||||
|
# define log10l _log10l
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF)
|
||||||
|
# define _GLIBCXX_HAVE_LOGF 1
|
||||||
|
# define logf _logf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL)
|
||||||
|
# define _GLIBCXX_HAVE_LOGL 1
|
||||||
|
# define logl _logl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF)
|
||||||
|
# define _GLIBCXX_HAVE_MODF 1
|
||||||
|
# define modf _modf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF)
|
||||||
|
# define _GLIBCXX_HAVE_MODFF 1
|
||||||
|
# define modff _modff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL)
|
||||||
|
# define _GLIBCXX_HAVE_MODFL 1
|
||||||
|
# define modfl _modfl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF)
|
||||||
|
# define _GLIBCXX_HAVE_POWF 1
|
||||||
|
# define powf _powf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL)
|
||||||
|
# define _GLIBCXX_HAVE_POWL 1
|
||||||
|
# define powl _powl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS)
|
||||||
|
# define _GLIBCXX_HAVE_QFPCLASS 1
|
||||||
|
# define qfpclass _qfpclass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOS 1
|
||||||
|
# define sincos _sincos
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOSF 1
|
||||||
|
# define sincosf _sincosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOSL 1
|
||||||
|
# define sincosl _sincosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF)
|
||||||
|
# define _GLIBCXX_HAVE_SINF 1
|
||||||
|
# define sinf _sinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF)
|
||||||
|
# define _GLIBCXX_HAVE_SINHF 1
|
||||||
|
# define sinhf _sinhf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL)
|
||||||
|
# define _GLIBCXX_HAVE_SINHL 1
|
||||||
|
# define sinhl _sinhl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL)
|
||||||
|
# define _GLIBCXX_HAVE_SINL 1
|
||||||
|
# define sinl _sinl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF)
|
||||||
|
# define _GLIBCXX_HAVE_SQRTF 1
|
||||||
|
# define sqrtf _sqrtf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL)
|
||||||
|
# define _GLIBCXX_HAVE_SQRTL 1
|
||||||
|
# define sqrtl _sqrtl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF)
|
||||||
|
# define _GLIBCXX_HAVE_STRTOF 1
|
||||||
|
# define strtof _strtof
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD)
|
||||||
|
# define _GLIBCXX_HAVE_STRTOLD 1
|
||||||
|
# define strtold _strtold
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF)
|
||||||
|
# define _GLIBCXX_HAVE_TANF 1
|
||||||
|
# define tanf _tanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF)
|
||||||
|
# define _GLIBCXX_HAVE_TANHF 1
|
||||||
|
# define tanhf _tanhf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL)
|
||||||
|
# define _GLIBCXX_HAVE_TANHL 1
|
||||||
|
# define tanhl _tanhl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL)
|
||||||
|
# define _GLIBCXX_HAVE_TANL 1
|
||||||
|
# define tanl _tanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _GLIBCXX_CXX_CONFIG_H
|
@ -0,0 +1,49 @@
|
|||||||
|
// Underlying io library details -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++io.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// c_io_stdio.h - Defines for using "C" stdio.h
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_IO_H
|
||||||
|
#define _GLIBCXX_CXX_IO_H 1
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <bits/gthr.h>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
typedef __gthread_mutex_t __c_lock;
|
||||||
|
|
||||||
|
// for basic_file.h
|
||||||
|
typedef FILE __c_file;
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,91 @@
|
|||||||
|
// Wrapper for underlying C-language localization -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++locale.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.8 Standard locale categories.
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_LOCALE_H
|
||||||
|
#define _GLIBCXX_CXX_LOCALE_H 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <clocale>
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
#define _GLIBCXX_NUM_CATEGORIES 0
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
typedef int* __c_locale;
|
||||||
|
|
||||||
|
// Convert numeric value of type double and long double to string and
|
||||||
|
// return length of string. If vsnprintf is available use it, otherwise
|
||||||
|
// fall back to the unsafe vsprintf which, in general, can be dangerous
|
||||||
|
// and should be avoided.
|
||||||
|
inline int
|
||||||
|
__convert_from_v(const __c_locale&, char* __out,
|
||||||
|
const int __size __attribute__((__unused__)),
|
||||||
|
const char* __fmt, ...)
|
||||||
|
{
|
||||||
|
char* __old = std::setlocale(LC_NUMERIC, NULL);
|
||||||
|
char* __sav = NULL;
|
||||||
|
if (__builtin_strcmp(__old, "C"))
|
||||||
|
{
|
||||||
|
const size_t __len = __builtin_strlen(__old) + 1;
|
||||||
|
__sav = new char[__len];
|
||||||
|
__builtin_memcpy(__sav, __old, __len);
|
||||||
|
std::setlocale(LC_NUMERIC, "C");
|
||||||
|
}
|
||||||
|
|
||||||
|
__builtin_va_list __args;
|
||||||
|
__builtin_va_start(__args, __fmt);
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_USE_C99
|
||||||
|
const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
|
||||||
|
#else
|
||||||
|
const int __ret = __builtin_vsprintf(__out, __fmt, __args);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__builtin_va_end(__args);
|
||||||
|
|
||||||
|
if (__sav)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_NUMERIC, __sav);
|
||||||
|
delete [] __sav;
|
||||||
|
}
|
||||||
|
return __ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,33 @@
|
|||||||
|
// Specific definitions for generic platforms -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file cpu_defines.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CPU_DEFINES
|
||||||
|
#define _GLIBCXX_CPU_DEFINES 1
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,57 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
|
||||||
|
|
||||||
|
// Support for Solaris 2.5.1
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
/// @brief Base class for ctype.
|
||||||
|
struct ctype_base
|
||||||
|
{
|
||||||
|
// Non-standard typedefs.
|
||||||
|
typedef const int* __to_type;
|
||||||
|
|
||||||
|
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||||
|
// on the mask type. Because of this, we don't use an enum.
|
||||||
|
typedef char mask;
|
||||||
|
static const mask upper = _U;
|
||||||
|
static const mask lower = _L;
|
||||||
|
static const mask alpha = _U | _L;
|
||||||
|
static const mask digit = _N;
|
||||||
|
static const mask xdigit = _X | _N;
|
||||||
|
static const mask space = _S;
|
||||||
|
static const mask print = _P | _U | _L | _N | _B;
|
||||||
|
static const mask graph = _P | _U | _L | _N;
|
||||||
|
static const mask cntrl = _C;
|
||||||
|
static const mask punct = _P;
|
||||||
|
static const mask alnum = _U | _L | _N;
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,71 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file ctype_inline.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
|
||||||
|
// functions go in ctype.cc
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
bool
|
||||||
|
ctype<char>::
|
||||||
|
is(mask __m, char __c) const
|
||||||
|
{ return _M_table[static_cast<unsigned char>(__c)] & __m; }
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
is(const char* __low, const char* __high, mask* __vec) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
scan_is(mask __m, const char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high && !this->is(__m, *__low))
|
||||||
|
++__low;
|
||||||
|
return __low;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
scan_not(mask __m, const char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high && this->is(__m, *__low) != 0)
|
||||||
|
++__low;
|
||||||
|
return __low;
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,98 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file ctype_noninline.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// Information as gleaned from /usr/include/ctype.h
|
||||||
|
|
||||||
|
const ctype_base::mask*
|
||||||
|
ctype<char>::classic_table() throw()
|
||||||
|
{ return _ctype_ + 1; }
|
||||||
|
|
||||||
|
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
||||||
|
size_t __refs)
|
||||||
|
: facet(__refs), _M_del(__table != 0 && __del),
|
||||||
|
_M_toupper(NULL), _M_tolower(NULL),
|
||||||
|
_M_table(__table ? __table : classic_table())
|
||||||
|
{
|
||||||
|
memset(_M_widen, 0, sizeof(_M_widen));
|
||||||
|
_M_widen_ok = 0;
|
||||||
|
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||||
|
_M_narrow_ok = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
||||||
|
: facet(__refs), _M_del(__table != 0 && __del),
|
||||||
|
_M_toupper(NULL), _M_tolower(NULL),
|
||||||
|
_M_table(__table ? __table : classic_table())
|
||||||
|
{
|
||||||
|
memset(_M_widen, 0, sizeof(_M_widen));
|
||||||
|
_M_widen_ok = 0;
|
||||||
|
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||||
|
_M_narrow_ok = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char
|
||||||
|
ctype<char>::do_toupper(char __c) const
|
||||||
|
{
|
||||||
|
int __x = __c;
|
||||||
|
return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::do_toupper(char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
{
|
||||||
|
*__low = this->do_toupper(*__low);
|
||||||
|
++__low;
|
||||||
|
}
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
||||||
|
char
|
||||||
|
ctype<char>::do_tolower(char __c) const
|
||||||
|
{
|
||||||
|
int __x = __c;
|
||||||
|
return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::do_tolower(char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
{
|
||||||
|
*__low = this->do_tolower(*__low);
|
||||||
|
++__low;
|
||||||
|
}
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,81 @@
|
|||||||
|
// Control various target specific ABI tweaks. ARM version.
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file cxxabi_tweaks.h
|
||||||
|
* The header provides an CPU-variable interface to the C++ ABI.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CXXABI_TWEAKS_H
|
||||||
|
#define _CXXABI_TWEAKS_H 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
namespace __cxxabiv1
|
||||||
|
{
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
// The ARM EABI uses the least significant bit of a 32-bit
|
||||||
|
// guard variable. */
|
||||||
|
#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0)
|
||||||
|
#define _GLIBCXX_GUARD_SET(x) *(x) = 1
|
||||||
|
#define _GLIBCXX_GUARD_BIT 1
|
||||||
|
#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
|
||||||
|
#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
|
||||||
|
typedef int __guard;
|
||||||
|
|
||||||
|
// We also want the element size in array cookies.
|
||||||
|
#define _GLIBCXX_ELTSIZE_IN_COOKIE 1
|
||||||
|
|
||||||
|
// __cxa_vec_ctor should return a pointer to the array.
|
||||||
|
typedef void * __cxa_vec_ctor_return_type;
|
||||||
|
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x
|
||||||
|
// Constructors and destructors return the "this" pointer.
|
||||||
|
typedef void * __cxa_cdtor_return_type;
|
||||||
|
|
||||||
|
#else // __ARM_EABI__
|
||||||
|
|
||||||
|
// The generic ABI uses the first byte of a 64-bit guard variable.
|
||||||
|
#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0)
|
||||||
|
#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1
|
||||||
|
#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1)
|
||||||
|
#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1)
|
||||||
|
#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1)
|
||||||
|
__extension__ typedef int __guard __attribute__((mode (__DI__)));
|
||||||
|
|
||||||
|
// __cxa_vec_ctor has void return type.
|
||||||
|
typedef void __cxa_vec_ctor_return_type;
|
||||||
|
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return
|
||||||
|
// Constructors and destructors do not return a value.
|
||||||
|
typedef void __cxa_cdtor_return_type;
|
||||||
|
|
||||||
|
#endif //!__ARM_EABI__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
} // namespace __cxxabiv1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,175 @@
|
|||||||
|
// Specific definitions for generic platforms -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file error_constants.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_ERROR_CONSTANTS
|
||||||
|
#define _GLIBCXX_ERROR_CONSTANTS 1
|
||||||
|
|
||||||
|
#include <bits/c++config.h>
|
||||||
|
#include <cerrno>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
enum class errc
|
||||||
|
{
|
||||||
|
address_family_not_supported = EAFNOSUPPORT,
|
||||||
|
address_in_use = EADDRINUSE,
|
||||||
|
address_not_available = EADDRNOTAVAIL,
|
||||||
|
already_connected = EISCONN,
|
||||||
|
argument_list_too_long = E2BIG,
|
||||||
|
argument_out_of_domain = EDOM,
|
||||||
|
bad_address = EFAULT,
|
||||||
|
bad_file_descriptor = EBADF,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EBADMSG
|
||||||
|
bad_message = EBADMSG,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
broken_pipe = EPIPE,
|
||||||
|
connection_aborted = ECONNABORTED,
|
||||||
|
connection_already_in_progress = EALREADY,
|
||||||
|
connection_refused = ECONNREFUSED,
|
||||||
|
connection_reset = ECONNRESET,
|
||||||
|
cross_device_link = EXDEV,
|
||||||
|
destination_address_required = EDESTADDRREQ,
|
||||||
|
device_or_resource_busy = EBUSY,
|
||||||
|
directory_not_empty = ENOTEMPTY,
|
||||||
|
executable_format_error = ENOEXEC,
|
||||||
|
file_exists = EEXIST,
|
||||||
|
file_too_large = EFBIG,
|
||||||
|
filename_too_long = ENAMETOOLONG,
|
||||||
|
function_not_supported = ENOSYS,
|
||||||
|
host_unreachable = EHOSTUNREACH,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EIDRM
|
||||||
|
identifier_removed = EIDRM,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
illegal_byte_sequence = EILSEQ,
|
||||||
|
inappropriate_io_control_operation = ENOTTY,
|
||||||
|
interrupted = EINTR,
|
||||||
|
invalid_argument = EINVAL,
|
||||||
|
invalid_seek = ESPIPE,
|
||||||
|
io_error = EIO,
|
||||||
|
is_a_directory = EISDIR,
|
||||||
|
message_size = EMSGSIZE,
|
||||||
|
network_down = ENETDOWN,
|
||||||
|
network_reset = ENETRESET,
|
||||||
|
network_unreachable = ENETUNREACH,
|
||||||
|
no_buffer_space = ENOBUFS,
|
||||||
|
no_child_process = ECHILD,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOLINK
|
||||||
|
no_link = ENOLINK,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_lock_available = ENOLCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENODATA
|
||||||
|
no_message_available = ENODATA,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_message = ENOMSG,
|
||||||
|
no_protocol_option = ENOPROTOOPT,
|
||||||
|
no_space_on_device = ENOSPC,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOSR
|
||||||
|
no_stream_resources = ENOSR,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
no_such_device_or_address = ENXIO,
|
||||||
|
no_such_device = ENODEV,
|
||||||
|
no_such_file_or_directory = ENOENT,
|
||||||
|
no_such_process = ESRCH,
|
||||||
|
not_a_directory = ENOTDIR,
|
||||||
|
not_a_socket = ENOTSOCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOSTR
|
||||||
|
not_a_stream = ENOSTR,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
not_connected = ENOTCONN,
|
||||||
|
not_enough_memory = ENOMEM,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOTSUP
|
||||||
|
not_supported = ENOTSUP,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ECANCELED
|
||||||
|
operation_canceled = ECANCELED,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
operation_in_progress = EINPROGRESS,
|
||||||
|
operation_not_permitted = EPERM,
|
||||||
|
operation_not_supported = EOPNOTSUPP,
|
||||||
|
operation_would_block = EWOULDBLOCK,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EOWNERDEAD
|
||||||
|
owner_dead = EOWNERDEAD,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
permission_denied = EACCES,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EPROTO
|
||||||
|
protocol_error = EPROTO,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
protocol_not_supported = EPROTONOSUPPORT,
|
||||||
|
read_only_file_system = EROFS,
|
||||||
|
resource_deadlock_would_occur = EDEADLK,
|
||||||
|
resource_unavailable_try_again = EAGAIN,
|
||||||
|
result_out_of_range = ERANGE,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
|
||||||
|
state_not_recoverable = ENOTRECOVERABLE,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ETIME
|
||||||
|
stream_timeout = ETIME,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ETXTBSY
|
||||||
|
text_file_busy = ETXTBSY,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
timed_out = ETIMEDOUT,
|
||||||
|
too_many_files_open_in_system = ENFILE,
|
||||||
|
too_many_files_open = EMFILE,
|
||||||
|
too_many_links = EMLINK,
|
||||||
|
too_many_symbolic_link_levels = ELOOP,
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_EOVERFLOW
|
||||||
|
value_too_large = EOVERFLOW,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wrong_protocol_type = EPROTOTYPE
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,71 @@
|
|||||||
|
// C++ includes used for precompiling extensions -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file extc++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <bits/stdtr1c++.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <ext/algorithm>
|
||||||
|
#include <ext/array_allocator.h>
|
||||||
|
#include <ext/atomicity.h>
|
||||||
|
#include <ext/bitmap_allocator.h>
|
||||||
|
#include <ext/cast.h>
|
||||||
|
#include <ext/concurrence.h>
|
||||||
|
#include <ext/debug_allocator.h>
|
||||||
|
#include <ext/extptr_allocator.h>
|
||||||
|
#include <ext/functional>
|
||||||
|
#include <ext/iterator>
|
||||||
|
#include <ext/malloc_allocator.h>
|
||||||
|
#include <ext/memory>
|
||||||
|
#include <ext/mt_allocator.h>
|
||||||
|
#include <ext/new_allocator.h>
|
||||||
|
#include <ext/numeric>
|
||||||
|
#include <ext/pod_char_traits.h>
|
||||||
|
#include <ext/pointer.h>
|
||||||
|
#include <ext/pool_allocator.h>
|
||||||
|
#include <ext/rb_tree>
|
||||||
|
#include <ext/rope>
|
||||||
|
#include <ext/slist>
|
||||||
|
#include <ext/stdio_filebuf.h>
|
||||||
|
#include <ext/stdio_sync_filebuf.h>
|
||||||
|
#include <ext/throw_allocator.h>
|
||||||
|
#include <ext/typelist.h>
|
||||||
|
#include <ext/type_traits.h>
|
||||||
|
#include <ext/vstring.h>
|
||||||
|
#include <ext/pb_ds/assoc_container.hpp>
|
||||||
|
#include <ext/pb_ds/priority_queue.hpp>
|
||||||
|
#include <ext/pb_ds/exception.hpp>
|
||||||
|
#include <ext/pb_ds/hash_policy.hpp>
|
||||||
|
#include <ext/pb_ds/list_update_policy.hpp>
|
||||||
|
#include <ext/pb_ds/tree_policy.hpp>
|
||||||
|
#include <ext/pb_ds/trie_policy.hpp>
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_HAVE_ICONV
|
||||||
|
#include <ext/codecvt_specializations.h>
|
||||||
|
#include <ext/enc_filebuf.h>
|
||||||
|
#endif
|
@ -0,0 +1,292 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
|
||||||
|
/* Just provide compatibility for mutex handling. */
|
||||||
|
|
||||||
|
typedef int __gthread_key_t;
|
||||||
|
typedef int __gthread_once_t;
|
||||||
|
typedef int __gthread_mutex_t;
|
||||||
|
typedef int __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#define __GTHREAD_ONCE_INIT 0
|
||||||
|
#define __GTHREAD_MUTEX_INIT 0
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
|
||||||
|
|
||||||
|
#define _GLIBCXX_UNUSED __attribute__((unused))
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
/* Should we really exit the program */
|
||||||
|
/* exit (&__objc_thread_exit_status); */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
/* No thread support, use 1. */
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
|
||||||
|
objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#undef _GLIBCXX_UNUSED
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
|
@ -0,0 +1,895 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
||||||
|
2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_POSIX_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_POSIX_H
|
||||||
|
|
||||||
|
/* POSIX threads specific definitions.
|
||||||
|
Easy, since the interface is just one-to-one mapping. */
|
||||||
|
|
||||||
|
#define __GTHREADS 1
|
||||||
|
#define __GTHREADS_CXX0X 1
|
||||||
|
|
||||||
|
/* Some implementations of <pthread.h> require this to be defined. */
|
||||||
|
#if !defined(_REENTRANT) && defined(__osf__)
|
||||||
|
#define _REENTRANT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
typedef pthread_t __gthread_t;
|
||||||
|
typedef pthread_key_t __gthread_key_t;
|
||||||
|
typedef pthread_once_t __gthread_once_t;
|
||||||
|
typedef pthread_mutex_t __gthread_mutex_t;
|
||||||
|
typedef pthread_mutex_t __gthread_recursive_mutex_t;
|
||||||
|
typedef pthread_cond_t __gthread_cond_t;
|
||||||
|
typedef struct timespec __gthread_time_t;
|
||||||
|
|
||||||
|
/* POSIX like conditional variables are supported. Please look at comments
|
||||||
|
in gthr.h for details. */
|
||||||
|
#define __GTHREAD_HAS_COND 1
|
||||||
|
|
||||||
|
#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
|
||||||
|
#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
|
||||||
|
#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
|
||||||
|
#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
#else
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
|
||||||
|
#endif
|
||||||
|
#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
|
||||||
|
#define __GTHREAD_TIME_INIT {0,0}
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
# ifndef __gthrw_pragma
|
||||||
|
# define __gthrw_pragma(pragma)
|
||||||
|
# endif
|
||||||
|
# define __gthrw2(name,name2,type) \
|
||||||
|
static __typeof(type) name __attribute__ ((__weakref__(#name2))); \
|
||||||
|
__gthrw_pragma(weak type)
|
||||||
|
# define __gthrw_(name) __gthrw_ ## name
|
||||||
|
#else
|
||||||
|
# define __gthrw2(name,name2,type)
|
||||||
|
# define __gthrw_(name) name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Typically, __gthrw_foo is a weak reference to symbol foo. */
|
||||||
|
#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
|
||||||
|
|
||||||
|
/* On Tru64, /usr/include/pthread.h uses #pragma extern_prefix "__" to
|
||||||
|
map a subset of the POSIX pthread API to mangled versions of their
|
||||||
|
names. */
|
||||||
|
#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
|
||||||
|
#define __gthrw3(name) __gthrw2(__gthrw_ ## name, __ ## name, name)
|
||||||
|
__gthrw3(pthread_once)
|
||||||
|
__gthrw3(pthread_getspecific)
|
||||||
|
__gthrw3(pthread_setspecific)
|
||||||
|
|
||||||
|
__gthrw3(pthread_create)
|
||||||
|
__gthrw3(pthread_join)
|
||||||
|
__gthrw3(pthread_detach)
|
||||||
|
__gthrw3(pthread_equal)
|
||||||
|
__gthrw3(pthread_self)
|
||||||
|
__gthrw3(pthread_cancel)
|
||||||
|
__gthrw3(sched_yield)
|
||||||
|
|
||||||
|
__gthrw3(pthread_mutex_lock)
|
||||||
|
__gthrw3(pthread_mutex_trylock)
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
__gthrw3(pthread_mutex_timedlock)
|
||||||
|
#endif
|
||||||
|
#endif /* _POSIX_TIMEOUTS */
|
||||||
|
__gthrw3(pthread_mutex_unlock)
|
||||||
|
__gthrw3(pthread_mutex_init)
|
||||||
|
__gthrw3(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
__gthrw3(pthread_cond_broadcast)
|
||||||
|
__gthrw3(pthread_cond_signal)
|
||||||
|
__gthrw3(pthread_cond_wait)
|
||||||
|
__gthrw3(pthread_cond_timedwait)
|
||||||
|
__gthrw3(pthread_cond_destroy)
|
||||||
|
#else
|
||||||
|
__gthrw(pthread_once)
|
||||||
|
__gthrw(pthread_getspecific)
|
||||||
|
__gthrw(pthread_setspecific)
|
||||||
|
|
||||||
|
__gthrw(pthread_create)
|
||||||
|
__gthrw(pthread_join)
|
||||||
|
__gthrw(pthread_equal)
|
||||||
|
__gthrw(pthread_self)
|
||||||
|
__gthrw(pthread_detach)
|
||||||
|
__gthrw(pthread_cancel)
|
||||||
|
__gthrw(sched_yield)
|
||||||
|
|
||||||
|
__gthrw(pthread_mutex_lock)
|
||||||
|
__gthrw(pthread_mutex_trylock)
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
__gthrw(pthread_mutex_timedlock)
|
||||||
|
#endif
|
||||||
|
#endif /* _POSIX_TIMEOUTS */
|
||||||
|
__gthrw(pthread_mutex_unlock)
|
||||||
|
__gthrw(pthread_mutex_init)
|
||||||
|
__gthrw(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
__gthrw(pthread_cond_broadcast)
|
||||||
|
__gthrw(pthread_cond_signal)
|
||||||
|
__gthrw(pthread_cond_wait)
|
||||||
|
__gthrw(pthread_cond_timedwait)
|
||||||
|
__gthrw(pthread_cond_destroy)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__gthrw(pthread_key_create)
|
||||||
|
__gthrw(pthread_key_delete)
|
||||||
|
__gthrw(pthread_mutexattr_init)
|
||||||
|
__gthrw(pthread_mutexattr_settype)
|
||||||
|
__gthrw(pthread_mutexattr_destroy)
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)
|
||||||
|
/* Objective-C. */
|
||||||
|
#if defined(__osf__) && defined(_PTHREAD_USE_MANGLED_NAMES_)
|
||||||
|
__gthrw3(pthread_cond_init)
|
||||||
|
__gthrw3(pthread_exit)
|
||||||
|
#else
|
||||||
|
__gthrw(pthread_cond_init)
|
||||||
|
__gthrw(pthread_exit)
|
||||||
|
#endif /* __osf__ && _PTHREAD_USE_MANGLED_NAMES_ */
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
__gthrw(sched_get_priority_max)
|
||||||
|
__gthrw(sched_get_priority_min)
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
__gthrw(pthread_attr_destroy)
|
||||||
|
__gthrw(pthread_attr_init)
|
||||||
|
__gthrw(pthread_attr_setdetachstate)
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
__gthrw(pthread_getschedparam)
|
||||||
|
__gthrw(pthread_setschedparam)
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _LIBOBJC || _LIBOBJC_WEAK */
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
|
||||||
|
/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if
|
||||||
|
-pthreads is not specified. The functions are dummies and most return an
|
||||||
|
error value. However pthread_once returns 0 without invoking the routine
|
||||||
|
it is passed so we cannot pretend that the interface is active if -pthreads
|
||||||
|
is not specified. On Solaris 2.5.1, the interface is not exposed at all so
|
||||||
|
we need to play the usual game with weak symbols. On Solaris 10 and up, a
|
||||||
|
working interface is always exposed. On FreeBSD 6 and later, libc also
|
||||||
|
exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up
|
||||||
|
to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc,
|
||||||
|
which means the alternate __gthread_active_p below cannot be used there. */
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__))
|
||||||
|
|
||||||
|
static volatile int __gthread_active = -1;
|
||||||
|
|
||||||
|
static void
|
||||||
|
__gthread_trigger (void)
|
||||||
|
{
|
||||||
|
__gthread_active = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT;
|
||||||
|
|
||||||
|
/* Avoid reading __gthread_active twice on the main code path. */
|
||||||
|
int __gthread_active_latest_value = __gthread_active;
|
||||||
|
|
||||||
|
/* This test is not protected to avoid taking a lock on the main code
|
||||||
|
path so every update of __gthread_active in a threaded program must
|
||||||
|
be atomic with regard to the result of the test. */
|
||||||
|
if (__builtin_expect (__gthread_active_latest_value < 0, 0))
|
||||||
|
{
|
||||||
|
if (__gthrw_(pthread_once))
|
||||||
|
{
|
||||||
|
/* If this really is a threaded program, then we must ensure that
|
||||||
|
__gthread_active has been set to 1 before exiting this block. */
|
||||||
|
__gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
|
||||||
|
__gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger);
|
||||||
|
__gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make sure we'll never enter this block again. */
|
||||||
|
if (__gthread_active < 0)
|
||||||
|
__gthread_active = 0;
|
||||||
|
|
||||||
|
__gthread_active_latest_value = __gthread_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
return __gthread_active_latest_value != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* neither FreeBSD nor Solaris */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
static void *const __gthread_active_ptr
|
||||||
|
= __extension__ (void *) &__gthrw_(pthread_cancel);
|
||||||
|
return __gthread_active_ptr != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* FreeBSD or Solaris */
|
||||||
|
|
||||||
|
#else /* not __GXX_WEAK__ */
|
||||||
|
|
||||||
|
/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread
|
||||||
|
calls in shared flavors of the HP-UX C library. Most of the stubs
|
||||||
|
have no functionality. The details are described in the "libc cumulative
|
||||||
|
patch" for each subversion of HP-UX 11. There are two special interfaces
|
||||||
|
provided for checking whether an application is linked to a pthread
|
||||||
|
library or not. However, these interfaces aren't available in early
|
||||||
|
libc versions. We also can't use pthread_once as some libc versions
|
||||||
|
call the init function. So, we use pthread_create to check whether it
|
||||||
|
is possible to create a thread or not. The stub implementation returns
|
||||||
|
the error number ENOSYS. */
|
||||||
|
|
||||||
|
#if defined(__hppa__) && defined(__hpux__)
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
static volatile int __gthread_active = -1;
|
||||||
|
|
||||||
|
static void *
|
||||||
|
__gthread_start (void *__arg __attribute__((unused)))
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __gthread_active_init (void) __attribute__((noinline));
|
||||||
|
static void
|
||||||
|
__gthread_active_init (void)
|
||||||
|
{
|
||||||
|
static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
pthread_t __t;
|
||||||
|
pthread_attr_t __a;
|
||||||
|
int __result;
|
||||||
|
|
||||||
|
__gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
|
||||||
|
if (__gthread_active < 0)
|
||||||
|
{
|
||||||
|
__gthrw_(pthread_attr_init) (&__a);
|
||||||
|
__gthrw_(pthread_attr_setdetachstate) (&__a, PTHREAD_CREATE_DETACHED);
|
||||||
|
__result = __gthrw_(pthread_create) (&__t, &__a, __gthread_start, NULL);
|
||||||
|
if (__result != ENOSYS)
|
||||||
|
__gthread_active = 1;
|
||||||
|
else
|
||||||
|
__gthread_active = 0;
|
||||||
|
__gthrw_(pthread_attr_destroy) (&__a);
|
||||||
|
}
|
||||||
|
__gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
/* Avoid reading __gthread_active twice on the main code path. */
|
||||||
|
int __gthread_active_latest_value = __gthread_active;
|
||||||
|
|
||||||
|
/* This test is not protected to avoid taking a lock on the main code
|
||||||
|
path so every update of __gthread_active in a threaded program must
|
||||||
|
be atomic with regard to the result of the test. */
|
||||||
|
if (__builtin_expect (__gthread_active_latest_value < 0, 0))
|
||||||
|
{
|
||||||
|
__gthread_active_init ();
|
||||||
|
__gthread_active_latest_value = __gthread_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
return __gthread_active_latest_value != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* not hppa-hpux */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* hppa-hpux */
|
||||||
|
|
||||||
|
#endif /* __GXX_WEAK__ */
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* This is the config.h file in libobjc/ */
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_SCHED_H
|
||||||
|
# include <sched.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Key structure for maintaining thread specific storage */
|
||||||
|
static pthread_key_t _objc_thread_storage;
|
||||||
|
static pthread_attr_t _objc_thread_attribs;
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
/* Initialize the thread storage key. */
|
||||||
|
if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0)
|
||||||
|
{
|
||||||
|
/* The normal default detach state for threads is
|
||||||
|
* PTHREAD_CREATE_JOINABLE which causes threads to not die
|
||||||
|
* when you think they should. */
|
||||||
|
if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0
|
||||||
|
&& __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs,
|
||||||
|
PTHREAD_CREATE_DETACHED) == 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0
|
||||||
|
&& __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (*func)(void *), void *arg)
|
||||||
|
{
|
||||||
|
objc_thread_t thread_id;
|
||||||
|
pthread_t new_thread_handle;
|
||||||
|
|
||||||
|
if (!__gthread_active_p ())
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!(__gthrw_(pthread_create) (&new_thread_handle, NULL, (void *) func, arg)))
|
||||||
|
thread_id = (objc_thread_t) new_thread_handle;
|
||||||
|
else
|
||||||
|
thread_id = NULL;
|
||||||
|
|
||||||
|
return thread_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority)
|
||||||
|
{
|
||||||
|
if (!__gthread_active_p ())
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
pthread_t thread_id = __gthrw_(pthread_self) ();
|
||||||
|
int policy;
|
||||||
|
struct sched_param params;
|
||||||
|
int priority_min, priority_max;
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0)
|
||||||
|
{
|
||||||
|
if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (priority > priority_max)
|
||||||
|
priority = priority_max;
|
||||||
|
else if (priority < priority_min)
|
||||||
|
priority = priority_min;
|
||||||
|
params.sched_priority = priority;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The solaris 7 and several other man pages incorrectly state that
|
||||||
|
* this should be a pointer to policy but pthread.h is universally
|
||||||
|
* at odds with this.
|
||||||
|
*/
|
||||||
|
if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
#ifdef _POSIX_PRIORITY_SCHEDULING
|
||||||
|
#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
int policy;
|
||||||
|
struct sched_param params;
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0)
|
||||||
|
return params.sched_priority;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
|
||||||
|
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
__gthrw_(sched_yield) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
/* exit the thread */
|
||||||
|
__gthrw_(pthread_exit) (&__objc_thread_exit_status);
|
||||||
|
|
||||||
|
/* Failed if we reached here */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return (objc_thread_t) __gthrw_(pthread_self) ();
|
||||||
|
else
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_setspecific) (_objc_thread_storage, value);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_getspecific) (_objc_thread_storage);
|
||||||
|
else
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL))
|
||||||
|
{
|
||||||
|
objc_free (mutex->backend);
|
||||||
|
mutex->backend = NULL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Posix Threads specifically require that the thread be unlocked
|
||||||
|
* for __gthrw_(pthread_mutex_destroy) to work.
|
||||||
|
*/
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend);
|
||||||
|
if (count < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
while (count);
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
objc_free (mutex->backend);
|
||||||
|
mutex->backend = NULL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ()
|
||||||
|
&& __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
condition->backend = objc_malloc (sizeof (pthread_cond_t));
|
||||||
|
|
||||||
|
if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL))
|
||||||
|
{
|
||||||
|
objc_free (condition->backend);
|
||||||
|
condition->backend = NULL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
objc_free (condition->backend);
|
||||||
|
condition->backend = NULL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend,
|
||||||
|
(pthread_mutex_t *) mutex->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
|
||||||
|
void *__args)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_join (__gthread_t __threadid, void **__value_ptr)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_join) (__threadid, __value_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_detach (__gthread_t __threadid)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_detach) (__threadid);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_equal (__gthread_t __t1, __gthread_t __t2)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_equal) (__t1, __t2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline __gthread_t
|
||||||
|
__gthread_self (void)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_self) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_yield (void)
|
||||||
|
{
|
||||||
|
return __gthrw_(sched_yield) ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once, void (*__func) (void))
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_once) (__once, __func);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_key_create) (__key, __dtor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_delete (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_key_delete) (__key);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_getspecific) (__key);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_setspecific) (__key, __ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_destroy) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_lock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_trylock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
return __gthrw_(pthread_mutex_unlock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__gthread_active_p ())
|
||||||
|
{
|
||||||
|
pthread_mutexattr_t __attr;
|
||||||
|
int __r;
|
||||||
|
|
||||||
|
__r = __gthrw_(pthread_mutexattr_init) (&__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_settype) (&__attr,
|
||||||
|
PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
|
||||||
|
return __r;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _POSIX_TIMEOUTS
|
||||||
|
#if _POSIX_TIMEOUTS >= 0
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_timedlock (__mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_broadcast (__gthread_cond_t *__cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_broadcast) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_signal (__gthread_cond_t *__cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_signal) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_wait) (__cond, __mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
|
||||||
|
__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_cond_wait (__cond, __mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_timedwait_recursive (__gthread_cond_t *__cond,
|
||||||
|
__gthread_recursive_mutex_t *__mutex,
|
||||||
|
const __gthread_time_t *__abs_timeout)
|
||||||
|
{
|
||||||
|
return __gthread_cond_timedwait (__cond, __mutex, __abs_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_cond_destroy (__gthread_cond_t* __cond)
|
||||||
|
{
|
||||||
|
return __gthrw_(pthread_cond_destroy) (__cond);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */
|
@ -0,0 +1,292 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1999, 2000, 2004, 2008, 2009
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||||
|
|
||||||
|
/* Just provide compatibility for mutex handling. */
|
||||||
|
|
||||||
|
typedef int __gthread_key_t;
|
||||||
|
typedef int __gthread_once_t;
|
||||||
|
typedef int __gthread_mutex_t;
|
||||||
|
typedef int __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#define __GTHREAD_ONCE_INIT 0
|
||||||
|
#define __GTHREAD_MUTEX_INIT 0
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
|
||||||
|
|
||||||
|
#define _GLIBCXX_UNUSED __attribute__((unused))
|
||||||
|
|
||||||
|
#ifdef _LIBOBJC
|
||||||
|
|
||||||
|
/* Thread local storage for a single thread */
|
||||||
|
static void *thread_local_storage = NULL;
|
||||||
|
|
||||||
|
/* Backend initialization functions */
|
||||||
|
|
||||||
|
/* Initialize the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_init_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the threads subsystem. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_close_thread_system (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend thread functions */
|
||||||
|
|
||||||
|
/* Create a new thread of execution. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the current thread's priority. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_get_priority (void)
|
||||||
|
{
|
||||||
|
return OBJC_THREAD_INTERACTIVE_PRIORITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Yield our process time to another thread. */
|
||||||
|
static inline void
|
||||||
|
__gthread_objc_thread_yield (void)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Terminate the current thread. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_exit (void)
|
||||||
|
{
|
||||||
|
/* No thread support available */
|
||||||
|
/* Should we really exit the program */
|
||||||
|
/* exit (&__objc_thread_exit_status); */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns an integer value which uniquely describes a thread. */
|
||||||
|
static inline objc_thread_t
|
||||||
|
__gthread_objc_thread_id (void)
|
||||||
|
{
|
||||||
|
/* No thread support, use 1. */
|
||||||
|
return (objc_thread_t) 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sets the thread's local storage pointer. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_thread_set_data (void *value)
|
||||||
|
{
|
||||||
|
thread_local_storage = value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the thread's local storage pointer. */
|
||||||
|
static inline void *
|
||||||
|
__gthread_objc_thread_get_data (void)
|
||||||
|
{
|
||||||
|
return thread_local_storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to grab a lock on a mutex. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
/* There can only be one thread, so we always get the lock */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the mutex */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backend condition mutex functions */
|
||||||
|
|
||||||
|
/* Allocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Deallocate a condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait on the condition */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
|
||||||
|
objc_mutex_t mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up all threads waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wake up one thread waiting on this condition. */
|
||||||
|
static inline int
|
||||||
|
__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* _LIBOBJC */
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _GLIBCXX_UNUSED
|
||||||
|
__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBOBJC */
|
||||||
|
|
||||||
|
#undef _GLIBCXX_UNUSED
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
|
@ -0,0 +1,229 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2 and libobjc.
|
||||||
|
Compile this one with gcc.
|
||||||
|
Copyright (C) 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/* TPF needs its own version of gthr-*.h because TPF always links to
|
||||||
|
the thread library. However, for performance reasons we still do not
|
||||||
|
want to issue thread api calls unless a check is made to see that we
|
||||||
|
are running as a thread. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_TPF_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_TPF_H
|
||||||
|
|
||||||
|
/* POSIX threads specific definitions.
|
||||||
|
Easy, since the interface is just one-to-one mapping. */
|
||||||
|
|
||||||
|
#define __GTHREADS 1
|
||||||
|
|
||||||
|
/* Some implementations of <pthread.h> require this to be defined. */
|
||||||
|
#ifndef _REENTRANT
|
||||||
|
#define _REENTRANT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
typedef pthread_key_t __gthread_key_t;
|
||||||
|
typedef pthread_once_t __gthread_once_t;
|
||||||
|
typedef pthread_mutex_t __gthread_mutex_t;
|
||||||
|
typedef pthread_mutex_t __gthread_recursive_mutex_t;
|
||||||
|
|
||||||
|
#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
|
||||||
|
#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
|
||||||
|
#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
|
||||||
|
#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
|
||||||
|
|
||||||
|
#define NOTATHREAD 00
|
||||||
|
#define ECBBASEPTR (unsigned long int) *(unsigned int *)0x00000514u
|
||||||
|
#define ECBPG2PTR ECBBASEPTR + 0x1000
|
||||||
|
#define CE2THRCPTR *((unsigned char *)(ECBPG2PTR + 16))
|
||||||
|
#define __tpf_pthread_active() (CE2THRCPTR != NOTATHREAD)
|
||||||
|
|
||||||
|
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
# define __gthrw(name) \
|
||||||
|
static __typeof(name) __gthrw_ ## name __attribute__ ((__weakref__(#name)));
|
||||||
|
# define __gthrw_(name) __gthrw_ ## name
|
||||||
|
#else
|
||||||
|
# define __gthrw(name)
|
||||||
|
# define __gthrw_(name) name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__gthrw(pthread_once)
|
||||||
|
__gthrw(pthread_key_create)
|
||||||
|
__gthrw(pthread_key_delete)
|
||||||
|
__gthrw(pthread_getspecific)
|
||||||
|
__gthrw(pthread_setspecific)
|
||||||
|
__gthrw(pthread_create)
|
||||||
|
|
||||||
|
__gthrw(pthread_mutex_lock)
|
||||||
|
__gthrw(pthread_mutex_trylock)
|
||||||
|
__gthrw(pthread_mutex_unlock)
|
||||||
|
__gthrw(pthread_mutexattr_init)
|
||||||
|
__gthrw(pthread_mutexattr_settype)
|
||||||
|
__gthrw(pthread_mutexattr_destroy)
|
||||||
|
__gthrw(pthread_mutex_init)
|
||||||
|
__gthrw(pthread_mutex_destroy)
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_active_p (void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_once (__gthread_once_t *__once, void (*__func) (void))
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_once) (__once, __func);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_key_create) (__key, __dtor);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_key_delete (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_key_delete) (__key);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
__gthread_getspecific (__gthread_key_t __key)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_getspecific) (__key);
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_setspecific) (__key, __ptr);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_destroy) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_lock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_lock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_trylock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthrw_(pthread_mutex_unlock) (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_lock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_trylock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
return __gthread_mutex_unlock (__mutex);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
|
||||||
|
{
|
||||||
|
if (__tpf_pthread_active ())
|
||||||
|
{
|
||||||
|
pthread_mutexattr_t __attr;
|
||||||
|
int __r;
|
||||||
|
|
||||||
|
__r = __gthrw_(pthread_mutexattr_init) (&__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_settype) (&__attr,
|
||||||
|
PTHREAD_MUTEX_RECURSIVE);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutex_init) (__mutex, &__attr);
|
||||||
|
if (!__r)
|
||||||
|
__r = __gthrw_(pthread_mutexattr_destroy) (&__attr);
|
||||||
|
return __r;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_TPF_H */
|
@ -0,0 +1,173 @@
|
|||||||
|
/* Threads compatibility routines for libgcc2. */
|
||||||
|
/* Compile this one with gcc. */
|
||||||
|
/* Copyright (C) 1997, 1998, 2004, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of GCC.
|
||||||
|
|
||||||
|
GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 3, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
permissions described in the GCC Runtime Library Exception, version
|
||||||
|
3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License and
|
||||||
|
a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_GCC_GTHR_H
|
||||||
|
#define _GLIBCXX_GCC_GTHR_H
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_HIDE_EXPORTS
|
||||||
|
#pragma GCC visibility push(default)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If this file is compiled with threads support, it must
|
||||||
|
#define __GTHREADS 1
|
||||||
|
to indicate that threads support is present. Also it has define
|
||||||
|
function
|
||||||
|
int __gthread_active_p ()
|
||||||
|
that returns 1 if thread system is active, 0 if not.
|
||||||
|
|
||||||
|
The threads interface must define the following types:
|
||||||
|
__gthread_key_t
|
||||||
|
__gthread_once_t
|
||||||
|
__gthread_mutex_t
|
||||||
|
__gthread_recursive_mutex_t
|
||||||
|
|
||||||
|
The threads interface must define the following macros:
|
||||||
|
|
||||||
|
__GTHREAD_ONCE_INIT
|
||||||
|
to initialize __gthread_once_t
|
||||||
|
__GTHREAD_MUTEX_INIT
|
||||||
|
to initialize __gthread_mutex_t to get a fast
|
||||||
|
non-recursive mutex.
|
||||||
|
__GTHREAD_MUTEX_INIT_FUNCTION
|
||||||
|
some systems can't initialize a mutex without a
|
||||||
|
function call. On such systems, define this to a
|
||||||
|
function which looks like this:
|
||||||
|
void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *)
|
||||||
|
Don't define __GTHREAD_MUTEX_INIT in this case
|
||||||
|
__GTHREAD_RECURSIVE_MUTEX_INIT
|
||||||
|
__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION
|
||||||
|
as above, but for a recursive mutex.
|
||||||
|
|
||||||
|
The threads interface must define the following static functions:
|
||||||
|
|
||||||
|
int __gthread_once (__gthread_once_t *once, void (*func) ())
|
||||||
|
|
||||||
|
int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *))
|
||||||
|
int __gthread_key_delete (__gthread_key_t key)
|
||||||
|
|
||||||
|
void *__gthread_getspecific (__gthread_key_t key)
|
||||||
|
int __gthread_setspecific (__gthread_key_t key, const void *ptr)
|
||||||
|
|
||||||
|
int __gthread_mutex_destroy (__gthread_mutex_t *mutex);
|
||||||
|
|
||||||
|
int __gthread_mutex_lock (__gthread_mutex_t *mutex);
|
||||||
|
int __gthread_mutex_trylock (__gthread_mutex_t *mutex);
|
||||||
|
int __gthread_mutex_unlock (__gthread_mutex_t *mutex);
|
||||||
|
|
||||||
|
int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex);
|
||||||
|
|
||||||
|
The following are supported in POSIX threads only. They are required to
|
||||||
|
fix a deadlock in static initialization inside libsupc++. The header file
|
||||||
|
gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra
|
||||||
|
features are supported.
|
||||||
|
|
||||||
|
Types:
|
||||||
|
__gthread_cond_t
|
||||||
|
|
||||||
|
Macros:
|
||||||
|
__GTHREAD_COND_INIT
|
||||||
|
__GTHREAD_COND_INIT_FUNCTION
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
int __gthread_cond_broadcast (__gthread_cond_t *cond);
|
||||||
|
int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex);
|
||||||
|
int __gthread_cond_wait_recursive (__gthread_cond_t *cond,
|
||||||
|
__gthread_recursive_mutex_t *mutex);
|
||||||
|
|
||||||
|
All functions returning int should return zero on success or the error
|
||||||
|
number. If the operation is not supported, -1 is returned.
|
||||||
|
|
||||||
|
If the following are also defined, you should
|
||||||
|
#define __GTHREADS_CXX0X 1
|
||||||
|
to enable the c++0x thread library.
|
||||||
|
|
||||||
|
Types:
|
||||||
|
__gthread_t
|
||||||
|
__gthread_time_t
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
int __gthread_create (__gthread_t *thread, void *(*func) (void*),
|
||||||
|
void *args);
|
||||||
|
int __gthread_join (__gthread_t thread, void **value_ptr);
|
||||||
|
int __gthread_detach (__gthread_t thread);
|
||||||
|
int __gthread_equal (__gthread_t t1, __gthread_t t2);
|
||||||
|
__gthread_t __gthread_self (void);
|
||||||
|
int __gthread_yield (void);
|
||||||
|
|
||||||
|
int __gthread_mutex_timedlock (__gthread_mutex_t *m,
|
||||||
|
const __gthread_time_t *abs_timeout);
|
||||||
|
int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m,
|
||||||
|
const __gthread_time_t *abs_time);
|
||||||
|
|
||||||
|
int __gthread_cond_signal (__gthread_cond_t *cond);
|
||||||
|
int __gthread_cond_timedwait (__gthread_cond_t *cond,
|
||||||
|
__gthread_mutex_t *mutex,
|
||||||
|
const __gthread_time_t *abs_timeout);
|
||||||
|
int __gthread_cond_timedwait_recursive (__gthread_cond_t *cond,
|
||||||
|
__gthread_recursive_mutex_t *mutex,
|
||||||
|
const __gthread_time_t *abs_time)
|
||||||
|
|
||||||
|
Currently supported threads packages are
|
||||||
|
TPF threads with -D__tpf__
|
||||||
|
POSIX/Unix98 threads with -D_PTHREADS
|
||||||
|
POSIX/Unix95 threads with -D_PTHREADS95
|
||||||
|
DCE threads with -D_DCE_THREADS
|
||||||
|
Solaris/UI threads with -D_SOLARIS_THREADS
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Check first for thread specific defines. */
|
||||||
|
#if defined (_GLIBCXX___tpf_GLIBCXX___)
|
||||||
|
#include <bits/gthr-tpf.h>
|
||||||
|
#elif _GLIBCXX__PTHREADS
|
||||||
|
#include <bits/gthr-posix.h>
|
||||||
|
#elif _GLIBCXX__PTHREADS95
|
||||||
|
#include <bits/gthr-posix95.h>
|
||||||
|
#elif _GLIBCXX__DCE_THREADS
|
||||||
|
#include <bits/gthr-dce.h>
|
||||||
|
#elif _GLIBCXX__SOLARIS_THREADS
|
||||||
|
#include <bits/gthr-solaris.h>
|
||||||
|
|
||||||
|
/* Include GTHREAD_FILE if one is defined. */
|
||||||
|
#elif defined(_GLIBCXX_HAVE_GTHR_DEFAULT)
|
||||||
|
#if __GXX_WEAK__
|
||||||
|
#ifndef _GLIBCXX_GTHREAD_USE_WEAK
|
||||||
|
#define _GLIBCXX_GTHREAD_USE_WEAK 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#include <bits/gthr-default.h>
|
||||||
|
|
||||||
|
/* Fallback to single thread definitions. */
|
||||||
|
#else
|
||||||
|
#include <bits/gthr-single.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_HIDE_EXPORTS
|
||||||
|
#pragma GCC visibility pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* ! _GLIBCXX_GCC_GTHR_H */
|
@ -0,0 +1,90 @@
|
|||||||
|
// std::messages implementation details, generic version -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file messages_members.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.2.7.1.2 messages virtual functions
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
// Non-virtual member functions.
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::messages(size_t __refs)
|
||||||
|
: facet(__refs)
|
||||||
|
{ _M_c_locale_messages = _S_get_c_locale(); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::messages(__c_locale, const char*, size_t __refs)
|
||||||
|
: facet(__refs)
|
||||||
|
{ _M_c_locale_messages = _S_get_c_locale(); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::catalog
|
||||||
|
messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
|
||||||
|
const char*) const
|
||||||
|
{ return this->do_open(__s, __loc); }
|
||||||
|
|
||||||
|
// Virtual member functions.
|
||||||
|
template<typename _CharT>
|
||||||
|
messages<_CharT>::~messages()
|
||||||
|
{ _S_destroy_c_locale(_M_c_locale_messages); }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::catalog
|
||||||
|
messages<_CharT>::do_open(const basic_string<char>&, const locale&) const
|
||||||
|
{ return 0; }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
typename messages<_CharT>::string_type
|
||||||
|
messages<_CharT>::do_get(catalog, int, int,
|
||||||
|
const string_type& __dfault) const
|
||||||
|
{ return __dfault; }
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
void
|
||||||
|
messages<_CharT>::do_close(catalog) const
|
||||||
|
{ }
|
||||||
|
|
||||||
|
// messages_byname
|
||||||
|
template<typename _CharT>
|
||||||
|
messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
|
||||||
|
: messages<_CharT>(__refs)
|
||||||
|
{
|
||||||
|
if (__builtin_strcmp(__s, "C") != 0
|
||||||
|
&& __builtin_strcmp(__s, "POSIX") != 0)
|
||||||
|
{
|
||||||
|
this->_S_destroy_c_locale(this->_M_c_locale_messages);
|
||||||
|
this->_S_create_c_locale(this->_M_c_locale_messages, __s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,52 @@
|
|||||||
|
// Specific definitions for newlib -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file os_defines.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_OS_DEFINES
|
||||||
|
#define _GLIBCXX_OS_DEFINES 1
|
||||||
|
|
||||||
|
// System-specific #define, typedefs, corrections, etc, go here. This
|
||||||
|
// file will come before all others.
|
||||||
|
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
#define _GLIBCXX_GTHREAD_USE_WEAK 0
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_DLL)
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__))
|
||||||
|
#else
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_default
|
||||||
|
#endif
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY_hidden
|
||||||
|
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V
|
||||||
|
|
||||||
|
// See libstdc++/20806.
|
||||||
|
#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,115 @@
|
|||||||
|
// C++ includes used for precompiling -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file stdc++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 17.4.1.2 Headers
|
||||||
|
|
||||||
|
// C
|
||||||
|
#ifndef _GLIBCXX_NO_ASSERT
|
||||||
|
#include <cassert>
|
||||||
|
#endif
|
||||||
|
#include <cctype>
|
||||||
|
#include <cerrno>
|
||||||
|
#include <cfloat>
|
||||||
|
#include <ciso646>
|
||||||
|
#include <climits>
|
||||||
|
#include <clocale>
|
||||||
|
#include <cmath>
|
||||||
|
#include <csetjmp>
|
||||||
|
#include <csignal>
|
||||||
|
#include <cstdarg>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <ccomplex>
|
||||||
|
#include <cfenv>
|
||||||
|
#include <cinttypes>
|
||||||
|
#include <cstdbool>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <ctgmath>
|
||||||
|
#include <cwchar>
|
||||||
|
#include <cwctype>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// C++
|
||||||
|
#include <algorithm>
|
||||||
|
#include <bitset>
|
||||||
|
#include <complex>
|
||||||
|
#include <deque>
|
||||||
|
#include <exception>
|
||||||
|
#include <fstream>
|
||||||
|
#include <functional>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <ios>
|
||||||
|
#include <iosfwd>
|
||||||
|
#include <iostream>
|
||||||
|
#include <istream>
|
||||||
|
#include <iterator>
|
||||||
|
#include <limits>
|
||||||
|
#include <list>
|
||||||
|
#include <locale>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
#include <new>
|
||||||
|
#include <numeric>
|
||||||
|
#include <ostream>
|
||||||
|
#include <queue>
|
||||||
|
#include <set>
|
||||||
|
#include <sstream>
|
||||||
|
#include <stack>
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <streambuf>
|
||||||
|
#include <string>
|
||||||
|
#include <typeinfo>
|
||||||
|
#include <utility>
|
||||||
|
#include <valarray>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
#include <array>
|
||||||
|
#include <atomic>
|
||||||
|
#include <chrono>
|
||||||
|
#include <condition_variable>
|
||||||
|
#include <forward_list>
|
||||||
|
#include <future>
|
||||||
|
#include <initializer_list>
|
||||||
|
#include <mutex>
|
||||||
|
#include <random>
|
||||||
|
#include <ratio>
|
||||||
|
#include <regex>
|
||||||
|
#include <system_error>
|
||||||
|
#include <thread>
|
||||||
|
#include <tuple>
|
||||||
|
#include <type_traits>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <unordered_set>
|
||||||
|
#endif
|
@ -0,0 +1,53 @@
|
|||||||
|
// C++ includes used for precompiling TR1 -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2006, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file stdtr1c++.h
|
||||||
|
* This is an implementation file for a precompiled header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <bits/stdc++.h>
|
||||||
|
|
||||||
|
#include <tr1/array>
|
||||||
|
#include <tr1/cctype>
|
||||||
|
#include <tr1/cfenv>
|
||||||
|
#include <tr1/cfloat>
|
||||||
|
#include <tr1/cinttypes>
|
||||||
|
#include <tr1/climits>
|
||||||
|
#include <tr1/cmath>
|
||||||
|
#include <tr1/complex>
|
||||||
|
#include <tr1/cstdarg>
|
||||||
|
#include <tr1/cstdbool>
|
||||||
|
#include <tr1/cstdint>
|
||||||
|
#include <tr1/cstdio>
|
||||||
|
#include <tr1/cstdlib>
|
||||||
|
#include <tr1/ctgmath>
|
||||||
|
#include <tr1/ctime>
|
||||||
|
#include <tr1/cwchar>
|
||||||
|
#include <tr1/cwctype>
|
||||||
|
#include <tr1/functional>
|
||||||
|
#include <tr1/random>
|
||||||
|
#include <tr1/tuple>
|
||||||
|
#include <tr1/unordered_map>
|
||||||
|
#include <tr1/unordered_set>
|
||||||
|
#include <tr1/utility>
|
@ -0,0 +1,90 @@
|
|||||||
|
// std::time_get, std::time_put implementation, generic version -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file time_members.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.2.5.1.2 - time_get functions
|
||||||
|
// ISO C++ 14882: 22.2.5.3.2 - time_put functions
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(size_t __refs)
|
||||||
|
: facet(__refs), _M_data(NULL)
|
||||||
|
{
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
_M_initialize_timepunct();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
|
||||||
|
: facet(__refs), _M_data(__cache)
|
||||||
|
{
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
_M_initialize_timepunct();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
|
||||||
|
size_t __refs)
|
||||||
|
: facet(__refs), _M_data(NULL)
|
||||||
|
{
|
||||||
|
if (__builtin_strcmp(__s, _S_get_c_name()) != 0)
|
||||||
|
{
|
||||||
|
const size_t __len = __builtin_strlen(__s) + 1;
|
||||||
|
char* __tmp = new char[__len];
|
||||||
|
__builtin_memcpy(__tmp, __s, __len);
|
||||||
|
_M_name_timepunct = __tmp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_M_name_timepunct = _S_get_c_name();
|
||||||
|
|
||||||
|
__try
|
||||||
|
{ _M_initialize_timepunct(__cloc); }
|
||||||
|
__catch(...)
|
||||||
|
{
|
||||||
|
if (_M_name_timepunct != _S_get_c_name())
|
||||||
|
delete [] _M_name_timepunct;
|
||||||
|
__throw_exception_again;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename _CharT>
|
||||||
|
__timepunct<_CharT>::~__timepunct()
|
||||||
|
{
|
||||||
|
if (_M_name_timepunct != _S_get_c_name())
|
||||||
|
delete [] _M_name_timepunct;
|
||||||
|
delete _M_data;
|
||||||
|
_S_destroy_c_locale(_M_c_locale_timepunct);
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,47 @@
|
|||||||
|
// Low-level type for atomic operations -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file atomic_word.h
|
||||||
|
* This file is a GNU extension to the Standard C++ Library.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_ATOMIC_WORD_H
|
||||||
|
#define _GLIBCXX_ATOMIC_WORD_H 1
|
||||||
|
|
||||||
|
typedef int _Atomic_word;
|
||||||
|
|
||||||
|
// Define these two macros using the appropriate memory barrier for the target.
|
||||||
|
// The commented out versions below are the defaults.
|
||||||
|
// See ia64/atomic_word.h for an alternative approach.
|
||||||
|
|
||||||
|
// This one prevents loads from being hoisted across the barrier;
|
||||||
|
// in other words, this is a Load-Load acquire barrier.
|
||||||
|
// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h.
|
||||||
|
// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
|
||||||
|
|
||||||
|
// This one prevents stores from being sunk across the barrier; in other
|
||||||
|
// words, a Store-Store release barrier.
|
||||||
|
// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,108 @@
|
|||||||
|
// Wrapper of C-language FILE struct -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 27.8 File-based streams
|
||||||
|
//
|
||||||
|
|
||||||
|
/** @file basic_file.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_BASIC_FILE_STDIO_H
|
||||||
|
#define _GLIBCXX_BASIC_FILE_STDIO_H 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <bits/c++config.h>
|
||||||
|
#include <bits/c++io.h> // for __c_lock and __c_file
|
||||||
|
#include <ios>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
// Generic declaration.
|
||||||
|
template<typename _CharT>
|
||||||
|
class __basic_file;
|
||||||
|
|
||||||
|
// Specialization.
|
||||||
|
template<>
|
||||||
|
class __basic_file<char>
|
||||||
|
{
|
||||||
|
// Underlying data source/sink.
|
||||||
|
__c_file* _M_cfile;
|
||||||
|
|
||||||
|
// True iff we opened _M_cfile, and thus must close it ourselves.
|
||||||
|
bool _M_cfile_created;
|
||||||
|
|
||||||
|
public:
|
||||||
|
__basic_file(__c_lock* __lock = 0) throw ();
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
sys_open(__c_file* __file, ios_base::openmode);
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
sys_open(int __fd, ios_base::openmode __mode) throw ();
|
||||||
|
|
||||||
|
__basic_file*
|
||||||
|
close();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE bool
|
||||||
|
is_open() const throw ();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE int
|
||||||
|
fd() throw ();
|
||||||
|
|
||||||
|
_GLIBCXX_PURE __c_file*
|
||||||
|
file() throw ();
|
||||||
|
|
||||||
|
~__basic_file();
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsputn(const char* __s, streamsize __n);
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsputn_2(const char* __s1, streamsize __n1,
|
||||||
|
const char* __s2, streamsize __n2);
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
xsgetn(char* __s, streamsize __n);
|
||||||
|
|
||||||
|
streamoff
|
||||||
|
seekoff(streamoff __off, ios_base::seekdir __way) throw ();
|
||||||
|
|
||||||
|
int
|
||||||
|
sync();
|
||||||
|
|
||||||
|
streamsize
|
||||||
|
showmanyc();
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,37 @@
|
|||||||
|
// Base to std::allocator -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++allocator.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_ALLOCATOR_H
|
||||||
|
#define _GLIBCXX_CXX_ALLOCATOR_H 1
|
||||||
|
|
||||||
|
// Define new_allocator as the base class to std::allocator.
|
||||||
|
#include <ext/new_allocator.h>
|
||||||
|
#define __glibcxx_base_allocator __gnu_cxx::new_allocator
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,1506 @@
|
|||||||
|
// Predefined symbols and macros -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
|
// 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++config.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_CONFIG_H
|
||||||
|
#define _GLIBCXX_CXX_CONFIG_H 1
|
||||||
|
|
||||||
|
// The current version of the C++ library in compressed ISO date format.
|
||||||
|
#define __GLIBCXX__ 20101216
|
||||||
|
|
||||||
|
// Macros for visibility.
|
||||||
|
// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
|
||||||
|
// _GLIBCXX_VISIBILITY_ATTR
|
||||||
|
# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1
|
||||||
|
|
||||||
|
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
|
||||||
|
# define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
|
||||||
|
#else
|
||||||
|
// If this is not supplied by the OS-specific or CPU-specific
|
||||||
|
// headers included below, it will be defined to an empty default.
|
||||||
|
# define _GLIBCXX_VISIBILITY_ATTR(V) _GLIBCXX_PSEUDO_VISIBILITY(V)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for deprecated.
|
||||||
|
// _GLIBCXX_DEPRECATED
|
||||||
|
// _GLIBCXX_DEPRECATED_ATTR
|
||||||
|
#ifndef _GLIBCXX_DEPRECATED
|
||||||
|
# define _GLIBCXX_DEPRECATED 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||||
|
# define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__))
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_DEPRECATED_ATTR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for activating various namespace association modes.
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
|
||||||
|
// _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
|
||||||
|
// Guide to libstdc++ namespaces.
|
||||||
|
/*
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __debug { }
|
||||||
|
namespace __parallel { }
|
||||||
|
namespace __norm { } // __normative, __shadow, __replaced
|
||||||
|
namespace __cxx1998 { }
|
||||||
|
|
||||||
|
namespace tr1 { }
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#if __cplusplus
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_DEBUG
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_PARALLEL
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace association for profile
|
||||||
|
#ifdef _GLIBCXX_PROFILE
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
|
||||||
|
|
||||||
|
// Defined if any namespace association modes are active.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE \
|
||||||
|
|| _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
# define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Macros for namespace scope. Either namespace std:: or the name
|
||||||
|
// of some nested namespace within it.
|
||||||
|
// _GLIBCXX_STD
|
||||||
|
// _GLIBCXX_STD_D
|
||||||
|
// _GLIBCXX_STD_P
|
||||||
|
//
|
||||||
|
// Macros for enclosing namespaces and possibly nested namespaces.
|
||||||
|
// _GLIBCXX_BEGIN_NAMESPACE
|
||||||
|
// _GLIBCXX_END_NAMESPACE
|
||||||
|
// _GLIBCXX_BEGIN_NESTED_NAMESPACE
|
||||||
|
// _GLIBCXX_END_NESTED_NAMESPACE
|
||||||
|
#ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_PR _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD std
|
||||||
|
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X)
|
||||||
|
# define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
#else
|
||||||
|
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD _6
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6)
|
||||||
|
# define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// debug
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE -1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// parallel
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_P __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// debug + parallel
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE -1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// profile
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL || _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG
|
||||||
|
# error Cannot use -D_GLIBCXX_PROFILE with -D_GLIBCXX_DEBUG or \
|
||||||
|
-D_GLIBCXX_PARALLEL
|
||||||
|
# endif
|
||||||
|
# define _GLIBCXX_STD_D __norm
|
||||||
|
# define _GLIBCXX_STD_P _GLIBCXX_STD
|
||||||
|
# define _GLIBCXX_STD_PR __norm
|
||||||
|
# define _GLIBCXX_STD __cxx1998
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NAMESPACE }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __NO_INLINE__ && !__GXX_WEAK__
|
||||||
|
# warning currently using namespace associated mode which may fail \
|
||||||
|
without inlining due to lack of weak symbols
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) {
|
||||||
|
# define _GLIBCXX_END_NESTED_NAMESPACE } }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for debug mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __debug { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for parallel mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __parallel { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for profile mode
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace __norm { }
|
||||||
|
inline namespace __profile { }
|
||||||
|
inline namespace __cxx1998 { }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Namespace associations for versioning mode.
|
||||||
|
#if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace __gnu_cxx
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
namespace tr1
|
||||||
|
{
|
||||||
|
inline namespace _6 { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// XXX GLIBCXX_ABI Deprecated
|
||||||
|
// Define if compatibility should be provided for -mlong-double-64
|
||||||
|
#undef _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||||
|
|
||||||
|
// Namespace associations for long double 128 mode.
|
||||||
|
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
inline namespace __gnu_cxx_ldbl128 { }
|
||||||
|
}
|
||||||
|
# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
|
||||||
|
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
|
||||||
|
# define _GLIBCXX_END_LDBL_NAMESPACE }
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_LDBL_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_LDBL_NAMESPACE
|
||||||
|
# define _GLIBCXX_END_LDBL_NAMESPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Defines for C compatibility. In particular, define extern "C"
|
||||||
|
// linkage only when using C++.
|
||||||
|
# define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
|
||||||
|
# define _GLIBCXX_END_EXTERN_C }
|
||||||
|
|
||||||
|
#else // !__cplusplus
|
||||||
|
# undef _GLIBCXX_BEGIN_NAMESPACE
|
||||||
|
# undef _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_NAMESPACE(X)
|
||||||
|
# define _GLIBCXX_END_NAMESPACE
|
||||||
|
# define _GLIBCXX_BEGIN_EXTERN_C
|
||||||
|
# define _GLIBCXX_END_EXTERN_C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// First includes.
|
||||||
|
|
||||||
|
// Pick up any OS-specific definitions.
|
||||||
|
#include <bits/os_defines.h>
|
||||||
|
|
||||||
|
// Pick up any CPU-specific definitions.
|
||||||
|
#include <bits/cpu_defines.h>
|
||||||
|
|
||||||
|
// If platform uses neither visibility nor psuedo-visibility,
|
||||||
|
// specify empty default for namespace annotation macros.
|
||||||
|
#ifndef _GLIBCXX_PSEUDO_VISIBILITY
|
||||||
|
#define _GLIBCXX_PSEUDO_VISIBILITY(V)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Allow use of "export template." This is currently not a feature
|
||||||
|
// that g++ supports.
|
||||||
|
// #define _GLIBCXX_EXPORT_TEMPLATE 1
|
||||||
|
|
||||||
|
// Allow use of the GNU syntax extension, "extern template." This
|
||||||
|
// extension is fully documented in the g++ manual, but in a nutshell,
|
||||||
|
// it inhibits all implicit instantiations and is used throughout the
|
||||||
|
// library to avoid multiple weak definitions for required types that
|
||||||
|
// are already explicitly instantiated in the library binary. This
|
||||||
|
// substantially reduces the binary size of resulting executables.
|
||||||
|
|
||||||
|
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
|
||||||
|
// templates only in basic_string, thus activating its debug-mode
|
||||||
|
// checks even at -O0.
|
||||||
|
#ifndef _GLIBCXX_EXTERN_TEMPLATE
|
||||||
|
# define _GLIBCXX_EXTERN_TEMPLATE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Certain function definitions that are meant to be overridable from
|
||||||
|
// user code are decorated with this macro. For some targets, this
|
||||||
|
// macro causes these definitions to be weak.
|
||||||
|
#ifndef _GLIBCXX_WEAK_DEFINITION
|
||||||
|
# define _GLIBCXX_WEAK_DEFINITION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Assert.
|
||||||
|
// Avoid the use of assert, because we're trying to keep the <cassert>
|
||||||
|
// include out of the mix.
|
||||||
|
#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL)
|
||||||
|
#define __glibcxx_assert(_Condition)
|
||||||
|
#else
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
// Avoid the use of assert, because we're trying to keep the <cassert>
|
||||||
|
// include out of the mix.
|
||||||
|
inline void
|
||||||
|
__replacement_assert(const char* __file, int __line,
|
||||||
|
const char* __function, const char* __condition)
|
||||||
|
{
|
||||||
|
__builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line,
|
||||||
|
__function, __condition);
|
||||||
|
__builtin_abort();
|
||||||
|
}
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#define __glibcxx_assert(_Condition) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (! (_Condition)) \
|
||||||
|
std::__replacement_assert(__FILE__, __LINE__, \
|
||||||
|
__PRETTY_FUNCTION__, #_Condition); \
|
||||||
|
} while (false)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// The remainder of the prewritten config is automatic; all the
|
||||||
|
// user hooks are listed above.
|
||||||
|
|
||||||
|
// Create a boolean flag to be used to determine if --fast-math is set.
|
||||||
|
#ifdef __FAST_MATH__
|
||||||
|
# define _GLIBCXX_FAST_MATH 1
|
||||||
|
#else
|
||||||
|
# define _GLIBCXX_FAST_MATH 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// This marks string literals in header files to be extracted for eventual
|
||||||
|
// translation. It is primarily used for messages in thrown exceptions; see
|
||||||
|
// src/functexcept.cc. We use __N because the more traditional _N is used
|
||||||
|
// for something else under certain OSes (see BADNAMES).
|
||||||
|
#define __N(msgid) (msgid)
|
||||||
|
|
||||||
|
// For example, <windows.h> is known to #define min and max as macros...
|
||||||
|
#undef min
|
||||||
|
#undef max
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_PURE
|
||||||
|
# define _GLIBCXX_PURE __attribute__ ((__pure__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CONST
|
||||||
|
# define _GLIBCXX_CONST __attribute__ ((__const__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_NORETURN
|
||||||
|
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_NOTHROW
|
||||||
|
# ifdef __cplusplus
|
||||||
|
# define _GLIBCXX_NOTHROW throw()
|
||||||
|
# else
|
||||||
|
# define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// End of prewritten config; the discovered settings follow.
|
||||||
|
/* config.h. Generated from config.h.in by configure. */
|
||||||
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `acosf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ACOSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `acosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ACOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `asinf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ASINF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `asinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ASINL */
|
||||||
|
|
||||||
|
/* Define to 1 if the target assembler supports .symver directive. */
|
||||||
|
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atan2f' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ATAN2F 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atan2l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ATAN2L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atanf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_ATANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `atanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ATANL */
|
||||||
|
|
||||||
|
/* Define to 1 if the target assembler supports thread-local storage. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_CC_TLS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ceilf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_CEILF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ceill' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_CEILL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <complex.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COMPLEX_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `cosf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_COSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `coshf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_COSHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `coshl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COSHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `cosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_COSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_DLFCN_H */
|
||||||
|
|
||||||
|
/* Define if EBADMSG exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EBADMSG 1
|
||||||
|
|
||||||
|
/* Define if ECANCELED exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ECANCELED 1
|
||||||
|
|
||||||
|
/* Define if EIDRM exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EIDRM 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <endian.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ENDIAN_H */
|
||||||
|
|
||||||
|
/* Define if ENODATA exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENODATA 1
|
||||||
|
|
||||||
|
/* Define if ENOLINK exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOLINK 1
|
||||||
|
|
||||||
|
/* Define if ENOSR exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOSR 1
|
||||||
|
|
||||||
|
/* Define if ENOSTR exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOSTR 1
|
||||||
|
|
||||||
|
/* Define if ENOTRECOVERABLE exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1
|
||||||
|
|
||||||
|
/* Define if ENOTSUP exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ENOTSUP 1
|
||||||
|
|
||||||
|
/* Define if EOVERFLOW exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EOVERFLOW 1
|
||||||
|
|
||||||
|
/* Define if EOWNERDEAD exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EOWNERDEAD 1
|
||||||
|
|
||||||
|
/* Define if EPROTO exists. */
|
||||||
|
#define _GLIBCXX_HAVE_EPROTO 1
|
||||||
|
|
||||||
|
/* Define if ETIME exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ETIME 1
|
||||||
|
|
||||||
|
/* Define if ETXTBSY exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ETXTBSY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_EXECINFO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `expf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_EXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `expl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_EXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fabsf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FABSF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fabsl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FABSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fenv.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FENV_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finite' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finitef' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITEF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `finitel' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FINITEL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <float.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_FLOAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `floorf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FLOORF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `floorl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FLOORL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fmodf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FMODF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fmodl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FMODL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fp.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FP_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `frexpf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_FREXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `frexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_FREXPL */
|
||||||
|
|
||||||
|
/* Define if _Unwind_GetIPInfo is available. */
|
||||||
|
#define _GLIBCXX_HAVE_GETIPINFO 1
|
||||||
|
|
||||||
|
/* Define if gthr-default.h exists (meaning that threading support is
|
||||||
|
enabled). */
|
||||||
|
/* #undef _GLIBCXX_HAVE_GTHR_DEFAULT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypot' function. */
|
||||||
|
#define _GLIBCXX_HAVE_HYPOT 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypotf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_HYPOTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `hypotl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_HYPOTL */
|
||||||
|
|
||||||
|
/* Define if you have the iconv() function. */
|
||||||
|
#define _GLIBCXX_HAVE_ICONV 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ieeefp.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_IEEEFP_H 1
|
||||||
|
|
||||||
|
/* Define if int64_t is available in <stdint.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_INT64_T 1
|
||||||
|
|
||||||
|
/* Define if int64_t is a long. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_INT64_T_LONG */
|
||||||
|
|
||||||
|
/* Define if int64_t is a long long. */
|
||||||
|
#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isinfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISINFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnan' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNAN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `isnanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_ISNANL */
|
||||||
|
|
||||||
|
/* Defined if iswblank exists. */
|
||||||
|
#define _GLIBCXX_HAVE_ISWBLANK 1
|
||||||
|
|
||||||
|
/* Define if LC_MESSAGES is available in <locale.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_LC_MESSAGES 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ldexpf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LDEXPF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ldexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LDEXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libintl.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIBINTL_H */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_AS */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_DATA */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_FSIZE */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_RSS */
|
||||||
|
|
||||||
|
/* Only used in build directory testsuite_hooks.h. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LIMIT_VMEM */
|
||||||
|
|
||||||
|
/* Define if futex syscall is available. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <locale.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_LOCALE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `log10f' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LOG10F 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `log10l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LOG10L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `logf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_LOGF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `logl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_LOGL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/endian.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/param.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define if mbstate_t exists in wchar.h. */
|
||||||
|
#define _GLIBCXX_HAVE_MBSTATE_T 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MEMORY_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modff' function. */
|
||||||
|
#define _GLIBCXX_HAVE_MODFF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `modfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_MODFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <nan.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_NAN_H */
|
||||||
|
|
||||||
|
/* Define if poll is available in <poll.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_POLL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `powf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_POWF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `powl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_POWL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `qfpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_QFPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setenv' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SETENV */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincos' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sincosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINCOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SINF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinhf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SINHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sqrtf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_SQRTF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sqrtl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SQRTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdbool.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDBOOL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define if strerror_l is available in <string.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRERROR_L */
|
||||||
|
|
||||||
|
/* Define if strerror_r is available in <string.h>. */
|
||||||
|
#define _GLIBCXX_HAVE_STRERROR_R 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRINGS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtof' function. */
|
||||||
|
#define _GLIBCXX_HAVE_STRTOF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtold' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRTOLD */
|
||||||
|
|
||||||
|
/* Define if strxfrm_l is available in <string.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_STRXFRM_L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/filio.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ipc.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_IPC_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/isa_defs.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/machine.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/sem.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_SEM_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_TIME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/uio.h> header file. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_SYS_UIO_H */
|
||||||
|
|
||||||
|
/* Define if S_IFREG is available in <sys/stat.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_S_IFREG */
|
||||||
|
|
||||||
|
/* Define if S_IFREG is available in <sys/stat.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_S_ISREG */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_TANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanhf' function. */
|
||||||
|
#define _GLIBCXX_HAVE_TANHF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TANHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `tanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <tgmath.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_TGMATH_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if the target supports thread-local storage. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_TLS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Defined if vfwscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VFWSCANF 1
|
||||||
|
|
||||||
|
/* Defined if vswscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VSWSCANF 1
|
||||||
|
|
||||||
|
/* Defined if vwscanf exists. */
|
||||||
|
#define _GLIBCXX_HAVE_VWSCANF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wchar.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_WCHAR_H 1
|
||||||
|
|
||||||
|
/* Defined if wcstof exists. */
|
||||||
|
#define _GLIBCXX_HAVE_WCSTOF 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wctype.h> header file. */
|
||||||
|
#define _GLIBCXX_HAVE_WCTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if writev is available in <sys/uio.h>. */
|
||||||
|
/* #undef _GLIBCXX_HAVE_WRITEV */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_acosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ACOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_acosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ACOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_asinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ASINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_asinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ASINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atan2f' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATAN2F */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atan2l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATAN2L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_atanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ATANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ceilf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__CEILF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ceill' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__CEILL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_cosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_coshf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_coshl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_cosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__COSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_expf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__EXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_expl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__EXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fabsf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FABSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fabsl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FABSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finite' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finitef' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITEF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_finitel' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FINITEL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_floorf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FLOORF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_floorl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FLOORL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fmodf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FMODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fmodl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FMODL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_fpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_frexpf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FREXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_frexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__FREXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypot' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypotf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_hypotl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__HYPOTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isinfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISINFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnan' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNAN */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_isnanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__ISNANL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ldexpf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LDEXPF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_ldexpl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LDEXPL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_log10f' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOG10F */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_log10l' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOG10L */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_logf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOGF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_logl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__LOGL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modff' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODFF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_modfl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__MODFL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_powf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__POWF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_powl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__POWL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_qfpclass' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__QFPCLASS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincos' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOS */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincosf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOSF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sincosl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINCOSL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinhf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sinl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SINL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sqrtf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SQRTF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_sqrtl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__SQRTL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanhf' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANHF */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanhl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANHL */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_tanl' function. */
|
||||||
|
/* #undef _GLIBCXX_HAVE__TANL */
|
||||||
|
|
||||||
|
/* Define as const if the declaration of iconv() needs const. */
|
||||||
|
/* #undef _GLIBCXX_ICONV_CONST */
|
||||||
|
|
||||||
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||||
|
*/
|
||||||
|
#define LT_OBJDIR ".libs/"
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
/* #undef _GLIBCXX_PACKAGE */
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define _GLIBCXX_PACKAGE_BUGREPORT ""
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_NAME "package-unused"
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE_URL ""
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
|
||||||
|
|
||||||
|
/* The size of `char', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_CHAR */
|
||||||
|
|
||||||
|
/* The size of `int', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_INT */
|
||||||
|
|
||||||
|
/* The size of `long', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_LONG */
|
||||||
|
|
||||||
|
/* The size of `short', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_SHORT */
|
||||||
|
|
||||||
|
/* The size of `void *', as computed by sizeof. */
|
||||||
|
/* #undef SIZEOF_VOID_P */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
/* #undef _GLIBCXX_VERSION */
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for bool are supported on this host. */
|
||||||
|
#define _GLIBCXX_ATOMIC_BUILTINS_1 1
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for short are supported on this host.
|
||||||
|
*/
|
||||||
|
#define _GLIBCXX_ATOMIC_BUILTINS_2 1
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for int are supported on this host. */
|
||||||
|
#define _GLIBCXX_ATOMIC_BUILTINS_4 1
|
||||||
|
|
||||||
|
/* Define if builtin atomic operations for long long are supported on this
|
||||||
|
host. */
|
||||||
|
/* #undef _GLIBCXX_ATOMIC_BUILTINS_8 */
|
||||||
|
|
||||||
|
/* Define to use concept checking code from the boost libraries. */
|
||||||
|
/* #undef _GLIBCXX_CONCEPT_CHECKS */
|
||||||
|
|
||||||
|
/* Define to 1 if building for use with CSLIBC, or 0 otherwise. */
|
||||||
|
#define _GLIBCXX_CSLIBC 0
|
||||||
|
|
||||||
|
/* Define if a fully dynamic basic_string is wanted. */
|
||||||
|
/* #undef _GLIBCXX_FULLY_DYNAMIC_STRING */
|
||||||
|
|
||||||
|
/* Define if gthreads library is available. */
|
||||||
|
/* #undef _GLIBCXX_HAS_GTHREADS */
|
||||||
|
|
||||||
|
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
|
||||||
|
#define _GLIBCXX_HOSTED 1
|
||||||
|
|
||||||
|
/* Define if compatibility should be provided for -mlong-double-64. */
|
||||||
|
|
||||||
|
/* Define if ptrdiff_t is int. */
|
||||||
|
#define _GLIBCXX_PTRDIFF_T_IS_INT 1
|
||||||
|
|
||||||
|
/* Define if using setrlimit to set resource limits during "make check" */
|
||||||
|
/* #undef _GLIBCXX_RES_LIMITS */
|
||||||
|
|
||||||
|
/* Define if size_t is unsigned int. */
|
||||||
|
#define _GLIBCXX_SIZE_T_IS_UINT 1
|
||||||
|
|
||||||
|
/* Define if the compiler is configured for setjmp/longjmp exceptions. */
|
||||||
|
/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */
|
||||||
|
|
||||||
|
/* Define if EOF == -1, SEEK_CUR == 1, SEEK_END == 2. */
|
||||||
|
#define _GLIBCXX_STDIO_MACROS 1
|
||||||
|
|
||||||
|
/* Define to use symbol versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER */
|
||||||
|
|
||||||
|
/* Define to use darwin versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_DARWIN */
|
||||||
|
|
||||||
|
/* Define to use GNU versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_GNU */
|
||||||
|
|
||||||
|
/* Define to use GNU namespace versioning in the shared library. */
|
||||||
|
/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
|
||||||
|
<stdio.h>, and <stdlib.h> can be used or exposed. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <complex.h> should be used in <complex>. Using
|
||||||
|
compiler builtins for these functions requires corresponding C99 library
|
||||||
|
functions to be present. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_COMPLEX */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
|
||||||
|
Using compiler builtins for these functions requires corresponding C99
|
||||||
|
library functions to be present. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_CTYPE_TR1 1
|
||||||
|
|
||||||
|
/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_FENV_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 functions in <inttypes.h> should be imported in
|
||||||
|
<tr1/cinttypes> in namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_INTTYPES_TR1 1
|
||||||
|
|
||||||
|
/* Define if wchar_t C99 functions in <inttypes.h> should be imported in
|
||||||
|
<tr1/cinttypes> in namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
|
||||||
|
in namespace std. */
|
||||||
|
#define _GLIBCXX_USE_C99_MATH 1
|
||||||
|
|
||||||
|
/* Define if C99 functions or macros in <math.h> should be imported in
|
||||||
|
<tr1/cmath> in namespace std::tr1. */
|
||||||
|
/* #undef _GLIBCXX_USE_C99_MATH_TR1 */
|
||||||
|
|
||||||
|
/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
|
||||||
|
namespace std::tr1. */
|
||||||
|
#define _GLIBCXX_USE_C99_STDINT_TR1 1
|
||||||
|
|
||||||
|
/* Defined if clock_gettime has monotonic clock support. */
|
||||||
|
/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
|
||||||
|
|
||||||
|
/* Defined if clock_gettime has realtime clock support. */
|
||||||
|
/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
|
||||||
|
|
||||||
|
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
|
||||||
|
this host. */
|
||||||
|
/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */
|
||||||
|
|
||||||
|
/* Defined if gettimeofday is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_GETTIMEOFDAY */
|
||||||
|
|
||||||
|
/* Define if LFS support is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_LFS */
|
||||||
|
|
||||||
|
/* Define if code specialized for long long should be used. */
|
||||||
|
#define _GLIBCXX_USE_LONG_LONG 1
|
||||||
|
|
||||||
|
/* Defined if nanosleep is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_NANOSLEEP */
|
||||||
|
|
||||||
|
/* Define if NLS translations are to be used. */
|
||||||
|
/* #undef _GLIBCXX_USE_NLS */
|
||||||
|
|
||||||
|
/* Define if /dev/random and /dev/urandom are available for the random_device
|
||||||
|
of TR1 (Chapter 5.1). */
|
||||||
|
/* #undef _GLIBCXX_USE_RANDOM_TR1 */
|
||||||
|
|
||||||
|
/* Defined if sched_yield is available. */
|
||||||
|
/* #undef _GLIBCXX_USE_SCHED_YIELD */
|
||||||
|
|
||||||
|
/* Define if code specialized for wchar_t should be used. */
|
||||||
|
#define _GLIBCXX_USE_WCHAR_T 1
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF)
|
||||||
|
# define _GLIBCXX_HAVE_ACOSF 1
|
||||||
|
# define acosf _acosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL)
|
||||||
|
# define _GLIBCXX_HAVE_ACOSL 1
|
||||||
|
# define acosl _acosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF)
|
||||||
|
# define _GLIBCXX_HAVE_ASINF 1
|
||||||
|
# define asinf _asinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL)
|
||||||
|
# define _GLIBCXX_HAVE_ASINL 1
|
||||||
|
# define asinl _asinl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F)
|
||||||
|
# define _GLIBCXX_HAVE_ATAN2F 1
|
||||||
|
# define atan2f _atan2f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L)
|
||||||
|
# define _GLIBCXX_HAVE_ATAN2L 1
|
||||||
|
# define atan2l _atan2l
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF)
|
||||||
|
# define _GLIBCXX_HAVE_ATANF 1
|
||||||
|
# define atanf _atanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL)
|
||||||
|
# define _GLIBCXX_HAVE_ATANL 1
|
||||||
|
# define atanl _atanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF)
|
||||||
|
# define _GLIBCXX_HAVE_CEILF 1
|
||||||
|
# define ceilf _ceilf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL)
|
||||||
|
# define _GLIBCXX_HAVE_CEILL 1
|
||||||
|
# define ceill _ceill
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF)
|
||||||
|
# define _GLIBCXX_HAVE_COSF 1
|
||||||
|
# define cosf _cosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF)
|
||||||
|
# define _GLIBCXX_HAVE_COSHF 1
|
||||||
|
# define coshf _coshf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL)
|
||||||
|
# define _GLIBCXX_HAVE_COSHL 1
|
||||||
|
# define coshl _coshl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL)
|
||||||
|
# define _GLIBCXX_HAVE_COSL 1
|
||||||
|
# define cosl _cosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF)
|
||||||
|
# define _GLIBCXX_HAVE_EXPF 1
|
||||||
|
# define expf _expf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL)
|
||||||
|
# define _GLIBCXX_HAVE_EXPL 1
|
||||||
|
# define expl _expl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF)
|
||||||
|
# define _GLIBCXX_HAVE_FABSF 1
|
||||||
|
# define fabsf _fabsf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL)
|
||||||
|
# define _GLIBCXX_HAVE_FABSL 1
|
||||||
|
# define fabsl _fabsl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE)
|
||||||
|
# define _GLIBCXX_HAVE_FINITE 1
|
||||||
|
# define finite _finite
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF)
|
||||||
|
# define _GLIBCXX_HAVE_FINITEF 1
|
||||||
|
# define finitef _finitef
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL)
|
||||||
|
# define _GLIBCXX_HAVE_FINITEL 1
|
||||||
|
# define finitel _finitel
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF)
|
||||||
|
# define _GLIBCXX_HAVE_FLOORF 1
|
||||||
|
# define floorf _floorf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL)
|
||||||
|
# define _GLIBCXX_HAVE_FLOORL 1
|
||||||
|
# define floorl _floorl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF)
|
||||||
|
# define _GLIBCXX_HAVE_FMODF 1
|
||||||
|
# define fmodf _fmodf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL)
|
||||||
|
# define _GLIBCXX_HAVE_FMODL 1
|
||||||
|
# define fmodl _fmodl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS)
|
||||||
|
# define _GLIBCXX_HAVE_FPCLASS 1
|
||||||
|
# define fpclass _fpclass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF)
|
||||||
|
# define _GLIBCXX_HAVE_FREXPF 1
|
||||||
|
# define frexpf _frexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL)
|
||||||
|
# define _GLIBCXX_HAVE_FREXPL 1
|
||||||
|
# define frexpl _frexpl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOT 1
|
||||||
|
# define hypot _hypot
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOTF 1
|
||||||
|
# define hypotf _hypotf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL)
|
||||||
|
# define _GLIBCXX_HAVE_HYPOTL 1
|
||||||
|
# define hypotl _hypotl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF)
|
||||||
|
# define _GLIBCXX_HAVE_ISINF 1
|
||||||
|
# define isinf _isinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF)
|
||||||
|
# define _GLIBCXX_HAVE_ISINFF 1
|
||||||
|
# define isinff _isinff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL)
|
||||||
|
# define _GLIBCXX_HAVE_ISINFL 1
|
||||||
|
# define isinfl _isinfl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN)
|
||||||
|
# define _GLIBCXX_HAVE_ISNAN 1
|
||||||
|
# define isnan _isnan
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF)
|
||||||
|
# define _GLIBCXX_HAVE_ISNANF 1
|
||||||
|
# define isnanf _isnanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL)
|
||||||
|
# define _GLIBCXX_HAVE_ISNANL 1
|
||||||
|
# define isnanl _isnanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF)
|
||||||
|
# define _GLIBCXX_HAVE_LDEXPF 1
|
||||||
|
# define ldexpf _ldexpf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL)
|
||||||
|
# define _GLIBCXX_HAVE_LDEXPL 1
|
||||||
|
# define ldexpl _ldexpl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F)
|
||||||
|
# define _GLIBCXX_HAVE_LOG10F 1
|
||||||
|
# define log10f _log10f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L)
|
||||||
|
# define _GLIBCXX_HAVE_LOG10L 1
|
||||||
|
# define log10l _log10l
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF)
|
||||||
|
# define _GLIBCXX_HAVE_LOGF 1
|
||||||
|
# define logf _logf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL)
|
||||||
|
# define _GLIBCXX_HAVE_LOGL 1
|
||||||
|
# define logl _logl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF)
|
||||||
|
# define _GLIBCXX_HAVE_MODF 1
|
||||||
|
# define modf _modf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF)
|
||||||
|
# define _GLIBCXX_HAVE_MODFF 1
|
||||||
|
# define modff _modff
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL)
|
||||||
|
# define _GLIBCXX_HAVE_MODFL 1
|
||||||
|
# define modfl _modfl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF)
|
||||||
|
# define _GLIBCXX_HAVE_POWF 1
|
||||||
|
# define powf _powf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL)
|
||||||
|
# define _GLIBCXX_HAVE_POWL 1
|
||||||
|
# define powl _powl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS)
|
||||||
|
# define _GLIBCXX_HAVE_QFPCLASS 1
|
||||||
|
# define qfpclass _qfpclass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOS 1
|
||||||
|
# define sincos _sincos
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOSF 1
|
||||||
|
# define sincosf _sincosf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL)
|
||||||
|
# define _GLIBCXX_HAVE_SINCOSL 1
|
||||||
|
# define sincosl _sincosl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF)
|
||||||
|
# define _GLIBCXX_HAVE_SINF 1
|
||||||
|
# define sinf _sinf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF)
|
||||||
|
# define _GLIBCXX_HAVE_SINHF 1
|
||||||
|
# define sinhf _sinhf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL)
|
||||||
|
# define _GLIBCXX_HAVE_SINHL 1
|
||||||
|
# define sinhl _sinhl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL)
|
||||||
|
# define _GLIBCXX_HAVE_SINL 1
|
||||||
|
# define sinl _sinl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF)
|
||||||
|
# define _GLIBCXX_HAVE_SQRTF 1
|
||||||
|
# define sqrtf _sqrtf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL)
|
||||||
|
# define _GLIBCXX_HAVE_SQRTL 1
|
||||||
|
# define sqrtl _sqrtl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF)
|
||||||
|
# define _GLIBCXX_HAVE_STRTOF 1
|
||||||
|
# define strtof _strtof
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD)
|
||||||
|
# define _GLIBCXX_HAVE_STRTOLD 1
|
||||||
|
# define strtold _strtold
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF)
|
||||||
|
# define _GLIBCXX_HAVE_TANF 1
|
||||||
|
# define tanf _tanf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF)
|
||||||
|
# define _GLIBCXX_HAVE_TANHF 1
|
||||||
|
# define tanhf _tanhf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL)
|
||||||
|
# define _GLIBCXX_HAVE_TANHL 1
|
||||||
|
# define tanhl _tanhl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL)
|
||||||
|
# define _GLIBCXX_HAVE_TANL 1
|
||||||
|
# define tanl _tanl
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _GLIBCXX_CXX_CONFIG_H
|
@ -0,0 +1,49 @@
|
|||||||
|
// Underlying io library details -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++io.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// c_io_stdio.h - Defines for using "C" stdio.h
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_IO_H
|
||||||
|
#define _GLIBCXX_CXX_IO_H 1
|
||||||
|
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <bits/gthr.h>
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
typedef __gthread_mutex_t __c_lock;
|
||||||
|
|
||||||
|
// for basic_file.h
|
||||||
|
typedef FILE __c_file;
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,91 @@
|
|||||||
|
// Wrapper for underlying C-language localization -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
||||||
|
// Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file c++locale.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.8 Standard locale categories.
|
||||||
|
//
|
||||||
|
|
||||||
|
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CXX_LOCALE_H
|
||||||
|
#define _GLIBCXX_CXX_LOCALE_H 1
|
||||||
|
|
||||||
|
#pragma GCC system_header
|
||||||
|
|
||||||
|
#include <clocale>
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
#define _GLIBCXX_NUM_CATEGORIES 0
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
typedef int* __c_locale;
|
||||||
|
|
||||||
|
// Convert numeric value of type double and long double to string and
|
||||||
|
// return length of string. If vsnprintf is available use it, otherwise
|
||||||
|
// fall back to the unsafe vsprintf which, in general, can be dangerous
|
||||||
|
// and should be avoided.
|
||||||
|
inline int
|
||||||
|
__convert_from_v(const __c_locale&, char* __out,
|
||||||
|
const int __size __attribute__((__unused__)),
|
||||||
|
const char* __fmt, ...)
|
||||||
|
{
|
||||||
|
char* __old = std::setlocale(LC_NUMERIC, NULL);
|
||||||
|
char* __sav = NULL;
|
||||||
|
if (__builtin_strcmp(__old, "C"))
|
||||||
|
{
|
||||||
|
const size_t __len = __builtin_strlen(__old) + 1;
|
||||||
|
__sav = new char[__len];
|
||||||
|
__builtin_memcpy(__sav, __old, __len);
|
||||||
|
std::setlocale(LC_NUMERIC, "C");
|
||||||
|
}
|
||||||
|
|
||||||
|
__builtin_va_list __args;
|
||||||
|
__builtin_va_start(__args, __fmt);
|
||||||
|
|
||||||
|
#ifdef _GLIBCXX_USE_C99
|
||||||
|
const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
|
||||||
|
#else
|
||||||
|
const int __ret = __builtin_vsprintf(__out, __fmt, __args);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__builtin_va_end(__args);
|
||||||
|
|
||||||
|
if (__sav)
|
||||||
|
{
|
||||||
|
std::setlocale(LC_NUMERIC, __sav);
|
||||||
|
delete [] __sav;
|
||||||
|
}
|
||||||
|
return __ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,33 @@
|
|||||||
|
// Specific definitions for generic platforms -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2005, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file cpu_defines.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _GLIBCXX_CPU_DEFINES
|
||||||
|
#define _GLIBCXX_CPU_DEFINES 1
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,57 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
|
||||||
|
|
||||||
|
// Support for Solaris 2.5.1
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
/// @brief Base class for ctype.
|
||||||
|
struct ctype_base
|
||||||
|
{
|
||||||
|
// Non-standard typedefs.
|
||||||
|
typedef const int* __to_type;
|
||||||
|
|
||||||
|
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||||
|
// on the mask type. Because of this, we don't use an enum.
|
||||||
|
typedef char mask;
|
||||||
|
static const mask upper = _U;
|
||||||
|
static const mask lower = _L;
|
||||||
|
static const mask alpha = _U | _L;
|
||||||
|
static const mask digit = _N;
|
||||||
|
static const mask xdigit = _X | _N;
|
||||||
|
static const mask space = _S;
|
||||||
|
static const mask print = _P | _U | _L | _N | _B;
|
||||||
|
static const mask graph = _P | _U | _L | _N;
|
||||||
|
static const mask cntrl = _C;
|
||||||
|
static const mask punct = _P;
|
||||||
|
static const mask alnum = _U | _L | _N;
|
||||||
|
};
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,71 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file ctype_inline.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
|
||||||
|
// functions go in ctype.cc
|
||||||
|
|
||||||
|
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
|
|
||||||
|
bool
|
||||||
|
ctype<char>::
|
||||||
|
is(mask __m, char __c) const
|
||||||
|
{ return _M_table[static_cast<unsigned char>(__c)] & __m; }
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
is(const char* __low, const char* __high, mask* __vec) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
scan_is(mask __m, const char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high && !this->is(__m, *__low))
|
||||||
|
++__low;
|
||||||
|
return __low;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::
|
||||||
|
scan_not(mask __m, const char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high && this->is(__m, *__low) != 0)
|
||||||
|
++__low;
|
||||||
|
return __low;
|
||||||
|
}
|
||||||
|
|
||||||
|
_GLIBCXX_END_NAMESPACE
|
@ -0,0 +1,98 @@
|
|||||||
|
// Locale support -*- C++ -*-
|
||||||
|
|
||||||
|
// Copyright (C) 2000, 2001, 2002, 2009 Free Software Foundation, Inc.
|
||||||
|
//
|
||||||
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
// terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 3, or (at your option)
|
||||||
|
// any later version.
|
||||||
|
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
// permissions described in the GCC Runtime Library Exception, version
|
||||||
|
// 3.1, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License and
|
||||||
|
// a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
// <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
/** @file ctype_noninline.h
|
||||||
|
* This is an internal header file, included by other library headers.
|
||||||
|
* You should not attempt to use it directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISO C++ 14882: 22.1 Locales
|
||||||
|
//
|
||||||
|
|
||||||
|
// Information as gleaned from /usr/include/ctype.h
|
||||||
|
|
||||||
|
const ctype_base::mask*
|
||||||
|
ctype<char>::classic_table() throw()
|
||||||
|
{ return _ctype_ + 1; }
|
||||||
|
|
||||||
|
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
||||||
|
size_t __refs)
|
||||||
|
: facet(__refs), _M_del(__table != 0 && __del),
|
||||||
|
_M_toupper(NULL), _M_tolower(NULL),
|
||||||
|
_M_table(__table ? __table : classic_table())
|
||||||
|
{
|
||||||
|
memset(_M_widen, 0, sizeof(_M_widen));
|
||||||
|
_M_widen_ok = 0;
|
||||||
|
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||||
|
_M_narrow_ok = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
||||||
|
: facet(__refs), _M_del(__table != 0 && __del),
|
||||||
|
_M_toupper(NULL), _M_tolower(NULL),
|
||||||
|
_M_table(__table ? __table : classic_table())
|
||||||
|
{
|
||||||
|
memset(_M_widen, 0, sizeof(_M_widen));
|
||||||
|
_M_widen_ok = 0;
|
||||||
|
memset(_M_narrow, 0, sizeof(_M_narrow));
|
||||||
|
_M_narrow_ok = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char
|
||||||
|
ctype<char>::do_toupper(char __c) const
|
||||||
|
{
|
||||||
|
int __x = __c;
|
||||||
|
return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::do_toupper(char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
{
|
||||||
|
*__low = this->do_toupper(*__low);
|
||||||
|
++__low;
|
||||||
|
}
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
||||||
|
char
|
||||||
|
ctype<char>::do_tolower(char __c) const
|
||||||
|
{
|
||||||
|
int __x = __c;
|
||||||
|
return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
ctype<char>::do_tolower(char* __low, const char* __high) const
|
||||||
|
{
|
||||||
|
while (__low < __high)
|
||||||
|
{
|
||||||
|
*__low = this->do_tolower(*__low);
|
||||||
|
++__low;
|
||||||
|
}
|
||||||
|
return __high;
|
||||||
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user