earmv7eb gcc configury
This commit is contained in:
parent
c75f20af22
commit
dc121a0d2a
|
@ -0,0 +1,13 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.71 2013/06/28 08:30:10 mrg Exp
|
||||
# Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp
|
||||
#
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_INCLUDES=-I. -I. -I${GNUHOSTDIST}/gcc -I${GNUHOSTDIST}/gcc/. -I${GNUHOSTDIST}/gcc/../include -I./../intl -I${GNUHOSTDIST}/gcc/../libcpp/include -I${GNUHOSTDIST}/gcc/../libdecnumber -I${GNUHOSTDIST}/gcc/../libdecnumber/dpd -I../libdecnumber
|
||||
G_CRTSTUFF_CFLAGS=-O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -I. -I. -I${GNUHOSTDIST}/gcc -I${GNUHOSTDIST}/gcc/. -I${GNUHOSTDIST}/gcc/../include -I./../intl -I${GNUHOSTDIST}/gcc/../libcpp/include -I${GNUHOSTDIST}/gcc/../libdecnumber -I${GNUHOSTDIST}/gcc/../libdecnumber/dpd -I../libdecnumber -g0 -finhibit-size-directive -fno-inline -fno-exceptions -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize
|
||||
G_CRTSTUFF_T_CFLAGS=
|
||||
G_CRTSTUFF_T_CFLAGS_S= -fPIC
|
||||
G_tm_defines=NETBSD_ENABLE_PTHREADS TARGET_BIG_ENDIAN_DEFAULT=1
|
||||
G_xm_file=
|
||||
G_xm_defines=
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
|
@ -0,0 +1,26 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.71 2013/06/28 08:30:10 mrg Exp
|
||||
# Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp
|
||||
#
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_INCLUDES=-I. -I. -I${GNUHOSTDIST}/gcc -I${GNUHOSTDIST}/gcc/. -I${GNUHOSTDIST}/gcc/../include -I./../intl -I${GNUHOSTDIST}/gcc/../libcpp/include -I${GNUHOSTDIST}/gcc/../libdecnumber -I${GNUHOSTDIST}/gcc/../libdecnumber/dpd -I../libdecnumber
|
||||
G_LIB2ADD=${GNUHOSTDIST}/gcc/config/arm/unaligned-funcs.c
|
||||
G_LIB2ADDEH=${GNUHOSTDIST}/gcc/config/arm/unwind-arm.c ${GNUHOSTDIST}/gcc/config/arm/libunwind.S ${GNUHOSTDIST}/gcc/config/arm/pr-support.c ${GNUHOSTDIST}/gcc/unwind-c.c
|
||||
G_LIB2ADD_ST=
|
||||
G_LIB1ASMFUNCS=_thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi _thumb1_case_uhi _thumb1_case_si _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2
|
||||
G_LIB1ASMSRC=arm/lib1funcs.asm
|
||||
G_LIB2_DIVMOD_FUNCS=_divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
|
||||
G_LIB2FUNCS_ST=_eprintf __gcc_bcmp
|
||||
G_LIB2FUNCS_EXTRA=${GNUHOSTDIST}/gcc/config/arm/unaligned-funcs.c
|
||||
G_LIBGCC2_CFLAGS=-O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED
|
||||
G_SHLIB_MKMAP=${GNUHOSTDIST}/gcc/mkmap-symver.awk
|
||||
G_SHLIB_MKMAP_OPTS=
|
||||
G_SHLIB_MAPFILES=${GNUHOSTDIST}/gcc/libgcc-std.ver ${GNUHOSTDIST}/gcc/config/arm/libgcc-bpabi.ver
|
||||
G_SHLIB_NM_FLAGS=-pg
|
||||
G_EXTRA_HEADERS=${GNUHOSTDIST}/gcc/config/arm/mmintrin.h ${GNUHOSTDIST}/gcc/config/arm/arm_neon.h ${GNUHOSTDIST}/gcc/ginclude/tgmath.h
|
||||
G_xm_defines=
|
||||
G_tm_defines=NETBSD_ENABLE_PTHREADS TARGET_BIG_ENDIAN_DEFAULT=1
|
||||
G_COLLECT2=collect2
|
||||
G_UNWIND_H=${GNUHOSTDIST}/gcc/config/arm/unwind-arm.h
|
||||
G_xm_include_list=auto-host.h ansidecl.h
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
|
@ -0,0 +1,7 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.71 2013/06/28 08:30:10 mrg Exp
|
||||
# Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp
|
||||
#
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_LIBGCOV=_gcov _gcov_merge_add _gcov_merge_single _gcov_merge_delta _gcov_fork _gcov_execl _gcov_execlp _gcov_execle _gcov_execv _gcov_execvp _gcov_execve _gcov_interval_profiler _gcov_pow2_profiler _gcov_one_value_profiler _gcov_indirect_call_profiler _gcov_average_profiler _gcov_ior_profiler _gcov_merge_ior
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
|
@ -0,0 +1,8 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* Generated automatically by the program `build/gcov-iov'
|
||||
from `4.5.4 (4 5) and (*)'. */
|
||||
|
||||
#define GCOV_VERSION ((gcov_unsigned_t)0x3430352a) /* 405* */
|
|
@ -0,0 +1,136 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.69 2013/04/25 16:18:43 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* config.h. Generated from config.h.in by configure. */
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if the target assembler supports .symver directive. */
|
||||
#define HAVE_AS_SYMVER_DIRECTIVE 1
|
||||
|
||||
/* Define to 1 if the target supports __attribute__((alias(...))). */
|
||||
#define HAVE_ATTRIBUTE_ALIAS 1
|
||||
|
||||
/* Define to 1 if the target supports __attribute__((dllexport)). */
|
||||
/* #undef HAVE_ATTRIBUTE_DLLEXPORT */
|
||||
|
||||
/* Define to 1 if the target supports __attribute__((visibility(...))). */
|
||||
#define HAVE_ATTRIBUTE_VISIBILITY 1
|
||||
|
||||
/* Define if the POSIX Semaphores do not work on your system. */
|
||||
/* #undef HAVE_BROKEN_POSIX_SEMAPHORES */
|
||||
|
||||
/* Define to 1 if the target assembler supports thread-local storage. */
|
||||
/* #undef HAVE_CC_TLS */
|
||||
|
||||
/* Define to 1 if you have the `clock_gettime' function. */
|
||||
#define HAVE_CLOCK_GETTIME 1
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define to 1 if you have the `getloadavg' function. */
|
||||
#define HAVE_GETLOADAVG 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define if pthread_{,attr_}{g,s}etaffinity_np is supported. */
|
||||
/* #undef HAVE_PTHREAD_AFFINITY_NP */
|
||||
|
||||
/* Define to 1 if you have the <semaphore.h> header file. */
|
||||
#define HAVE_SEMAPHORE_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the `strtoull' function. */
|
||||
#define HAVE_STRTOULL 1
|
||||
|
||||
/* Define to 1 if the target supports __sync_*_compare_and_swap */
|
||||
/* #undef HAVE_SYNC_BUILTINS */
|
||||
|
||||
/* Define to 1 if you have the <sys/loadavg.h> header file. */
|
||||
/* #undef HAVE_SYS_LOADAVG_H */
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if the target supports thread-local storage. */
|
||||
#define HAVE_TLS 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to 1 if GNU symbol versioning is used for libgomp. */
|
||||
/* #undef LIBGOMP_GNU_SYMBOL_VERSIONING */
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#define LT_OBJDIR ".libs/"
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "libgomp"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT ""
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "GNU OpenMP Runtime Library"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "GNU OpenMP Runtime Library 1.0"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "libgomp"
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL "http://www.gnu.org/software/libgomp/"
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "1.0"
|
||||
|
||||
/* 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
|
||||
|
||||
/* Define if you can safely include both <string.h> and <strings.h>. */
|
||||
#define STRING_WITH_STRINGS 1
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#define TIME_WITH_SYS_TIME 1
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "1.0"
|
|
@ -0,0 +1,7 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp
|
||||
# Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp
|
||||
#
|
||||
# This spec file is read by gcc when linking. It is used to specify the
|
||||
# standard libraries we need in order to link with -fopenmp.
|
||||
*link_gomp: -lgomp %{static: -lintl}
|
|
@ -0,0 +1,97 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* Copyright (C) 2005, 2008, 2009 Free Software Foundation, Inc.
|
||||
Contributed by Jakub Jelinek <jakub@redhat.com>.
|
||||
|
||||
This file is part of the GNU OpenMP Library (libgomp).
|
||||
|
||||
Libgomp 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.
|
||||
|
||||
Libgomp 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/>. */
|
||||
|
||||
/* This file contains prototypes of functions in the external ABI.
|
||||
This file is included by files in the testsuite. */
|
||||
|
||||
#ifndef LIBGOMP_F_H
|
||||
#define LIBGOMP_F_H 1
|
||||
|
||||
#include "libgomp.h"
|
||||
|
||||
#if (4 == 4) \
|
||||
&& (4 <= 4)
|
||||
# define OMP_LOCK_DIRECT
|
||||
typedef omp_lock_t *omp_lock_arg_t;
|
||||
# define omp_lock_arg(arg) (arg)
|
||||
#else
|
||||
typedef union { omp_lock_t *lock; uint64_t u; } *omp_lock_arg_t;
|
||||
# define omp_lock_arg(arg) ((arg)->lock)
|
||||
# endif
|
||||
|
||||
#if (12 == 8) \
|
||||
&& (4 <= 12)
|
||||
# define OMP_NEST_LOCK_DIRECT
|
||||
typedef omp_nest_lock_t *omp_nest_lock_arg_t;
|
||||
# define omp_nest_lock_arg(arg) (arg)
|
||||
#else
|
||||
typedef union { omp_nest_lock_t *lock; uint64_t u; } *omp_nest_lock_arg_t;
|
||||
# define omp_nest_lock_arg(arg) ((arg)->lock)
|
||||
# endif
|
||||
|
||||
#if (28 == 8) \
|
||||
&& (4 <= 28)
|
||||
# define OMP_LOCK_25_DIRECT
|
||||
typedef omp_lock_25_t *omp_lock_25_arg_t;
|
||||
# define omp_lock_25_arg(arg) (arg)
|
||||
#else
|
||||
typedef union { omp_lock_25_t *lock; uint64_t u; } *omp_lock_25_arg_t;
|
||||
# define omp_lock_25_arg(arg) ((arg)->lock)
|
||||
# endif
|
||||
|
||||
#if (32 == 8) \
|
||||
&& (4 <= 32)
|
||||
# define OMP_NEST_LOCK_25_DIRECT
|
||||
typedef omp_nest_lock_25_t *omp_nest_lock_25_arg_t;
|
||||
# define omp_nest_lock_25_arg(arg) (arg)
|
||||
#else
|
||||
typedef union { omp_nest_lock_25_t *lock; uint64_t u; } *omp_nest_lock_25_arg_t;
|
||||
# define omp_nest_lock_25_arg(arg) ((arg)->lock)
|
||||
# endif
|
||||
|
||||
static inline void
|
||||
omp_check_defines (void)
|
||||
{
|
||||
char test[(4 != sizeof (omp_lock_t)
|
||||
|| 4 != __alignof (omp_lock_t)
|
||||
|| 12 != sizeof (omp_nest_lock_t)
|
||||
|| 4 != __alignof (omp_nest_lock_t)
|
||||
|| 4 != sizeof (*(omp_lock_arg_t) 0)
|
||||
|| 8 != sizeof (*(omp_nest_lock_arg_t) 0))
|
||||
? -1 : 1] __attribute__ ((__unused__));
|
||||
char test2[(28 != sizeof (omp_lock_25_t)
|
||||
|| 4 != __alignof (omp_lock_25_t)
|
||||
|| 32 != sizeof (omp_nest_lock_25_t)
|
||||
|| 4 != __alignof (omp_nest_lock_25_t)
|
||||
|| 8 != sizeof (*(omp_lock_25_arg_t) 0)
|
||||
|| 8
|
||||
!= sizeof (*(omp_nest_lock_25_arg_t) 0))
|
||||
? -1 : 1] __attribute__ ((__unused__));
|
||||
}
|
||||
|
||||
#endif /* LIBGOMP_F_H */
|
|
@ -0,0 +1,109 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
Contributed by Richard Henderson <rth@redhat.com>.
|
||||
|
||||
This file is part of the GNU OpenMP Library (libgomp).
|
||||
|
||||
Libgomp 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.
|
||||
|
||||
Libgomp 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 OMP_H
|
||||
#define OMP_H 1
|
||||
|
||||
#ifndef _LIBGOMP_OMP_LOCK_DEFINED
|
||||
#define _LIBGOMP_OMP_LOCK_DEFINED 1
|
||||
/* These two structures get edited by the libgomp build process to
|
||||
reflect the shape of the two types. Their internals are private
|
||||
to the library. */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char _x[4]
|
||||
__attribute__((__aligned__(4)));
|
||||
} omp_lock_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char _x[12]
|
||||
__attribute__((__aligned__(4)));
|
||||
} omp_nest_lock_t;
|
||||
#endif
|
||||
|
||||
typedef enum omp_sched_t
|
||||
{
|
||||
omp_sched_static = 1,
|
||||
omp_sched_dynamic = 2,
|
||||
omp_sched_guided = 3,
|
||||
omp_sched_auto = 4
|
||||
} omp_sched_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
# define __GOMP_NOTHROW throw ()
|
||||
#else
|
||||
# define __GOMP_NOTHROW __attribute__((__nothrow__))
|
||||
#endif
|
||||
|
||||
extern void omp_set_num_threads (int) __GOMP_NOTHROW;
|
||||
extern int omp_get_num_threads (void) __GOMP_NOTHROW;
|
||||
extern int omp_get_max_threads (void) __GOMP_NOTHROW;
|
||||
extern int omp_get_thread_num (void) __GOMP_NOTHROW;
|
||||
extern int omp_get_num_procs (void) __GOMP_NOTHROW;
|
||||
|
||||
extern int omp_in_parallel (void) __GOMP_NOTHROW;
|
||||
|
||||
extern void omp_set_dynamic (int) __GOMP_NOTHROW;
|
||||
extern int omp_get_dynamic (void) __GOMP_NOTHROW;
|
||||
|
||||
extern void omp_set_nested (int) __GOMP_NOTHROW;
|
||||
extern int omp_get_nested (void) __GOMP_NOTHROW;
|
||||
|
||||
extern void omp_init_lock (omp_lock_t *) __GOMP_NOTHROW;
|
||||
extern void omp_destroy_lock (omp_lock_t *) __GOMP_NOTHROW;
|
||||
extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
|
||||
extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
|
||||
extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW;
|
||||
|
||||
extern void omp_init_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
|
||||
extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
|
||||
extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
|
||||
extern void omp_unset_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
|
||||
extern int omp_test_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
|
||||
|
||||
extern double omp_get_wtime (void) __GOMP_NOTHROW;
|
||||
extern double omp_get_wtick (void) __GOMP_NOTHROW;
|
||||
|
||||
void omp_set_schedule (omp_sched_t, int) __GOMP_NOTHROW;
|
||||
void omp_get_schedule (omp_sched_t *, int *) __GOMP_NOTHROW;
|
||||
int omp_get_thread_limit (void) __GOMP_NOTHROW;
|
||||
void omp_set_max_active_levels (int) __GOMP_NOTHROW;
|
||||
int omp_get_max_active_levels (void) __GOMP_NOTHROW;
|
||||
int omp_get_level (void) __GOMP_NOTHROW;
|
||||
int omp_get_ancestor_thread_num (int) __GOMP_NOTHROW;
|
||||
int omp_get_team_size (int) __GOMP_NOTHROW;
|
||||
int omp_get_active_level (void) __GOMP_NOTHROW;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* OMP_H */
|
|
@ -0,0 +1,480 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.69 2013/04/25 16:18:43 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* config.h. Generated from config.in by configure. */
|
||||
/* config.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define if building universal (internal helper macro) */
|
||||
/* #undef AC_APPLE_UNIVERSAL_BUILD */
|
||||
|
||||
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
|
||||
This function is required for alloca.c support on those systems. */
|
||||
/* #undef CRAY_STACKSEG_END */
|
||||
|
||||
/* Define to 1 if you have the <alloca.h> header file. */
|
||||
/* #undef HAVE_ALLOCA_H */
|
||||
|
||||
/* Define to 1 if you have the `asprintf' function. */
|
||||
#define HAVE_ASPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the `atexit' function. */
|
||||
#define HAVE_ATEXIT 1
|
||||
|
||||
/* Define to 1 if you have the `basename' function. */
|
||||
#define HAVE_BASENAME 1
|
||||
|
||||
/* Define to 1 if you have the `bcmp' function. */
|
||||
#define HAVE_BCMP 1
|
||||
|
||||
/* Define to 1 if you have the `bcopy' function. */
|
||||
#define HAVE_BCOPY 1
|
||||
|
||||
/* Define to 1 if you have the `bsearch' function. */
|
||||
#define HAVE_BSEARCH 1
|
||||
|
||||
/* Define to 1 if you have the `bzero' function. */
|
||||
#define HAVE_BZERO 1
|
||||
|
||||
/* Define to 1 if you have the `calloc' function. */
|
||||
#define HAVE_CALLOC 1
|
||||
|
||||
/* Define to 1 if you have the `canonicalize_file_name' function. */
|
||||
/* #undef HAVE_CANONICALIZE_FILE_NAME */
|
||||
|
||||
/* Define to 1 if you have the `clock' function. */
|
||||
#define HAVE_CLOCK 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_ASPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `basename', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_BASENAME 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `calloc', and to 0 if you don't.
|
||||
*/
|
||||
#define HAVE_DECL_CALLOC 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
|
||||
#define HAVE_DECL_FFS 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
|
||||
*/
|
||||
#define HAVE_DECL_GETENV 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `getopt', and to 0 if you don't.
|
||||
*/
|
||||
#define HAVE_DECL_GETOPT 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
|
||||
*/
|
||||
#define HAVE_DECL_MALLOC 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `realloc', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_REALLOC 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `sbrk', and to 0 if you don't.
|
||||
*/
|
||||
#define HAVE_DECL_SBRK 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_SNPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `strverscmp', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_STRVERSCMP 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_VASPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_VSNPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#define HAVE_FCNTL_H 1
|
||||
|
||||
/* Define to 1 if you have the `ffs' function. */
|
||||
#define HAVE_FFS 1
|
||||
|
||||
/* Define to 1 if you have the `fork' function. */
|
||||
#define HAVE_FORK 1
|
||||
|
||||
/* Define to 1 if you have the `getcwd' function. */
|
||||
#define HAVE_GETCWD 1
|
||||
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#define HAVE_GETPAGESIZE 1
|
||||
|
||||
/* Define to 1 if you have the `getrusage' function. */
|
||||
#define HAVE_GETRUSAGE 1
|
||||
|
||||
/* Define to 1 if you have the `getsysinfo' function. */
|
||||
/* #undef HAVE_GETSYSINFO */
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
|
||||
/* Define to 1 if you have the `index' function. */
|
||||
#define HAVE_INDEX 1
|
||||
|
||||
/* Define to 1 if you have the `insque' function. */
|
||||
#define HAVE_INSQUE 1
|
||||
|
||||
/* Define to 1 if the system has the type `intptr_t'. */
|
||||
#define HAVE_INTPTR_T 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#define HAVE_LIMITS_H 1
|
||||
|
||||
/* Define to 1 if you have the <machine/hal_sysinfo.h> header file. */
|
||||
/* #undef HAVE_MACHINE_HAL_SYSINFO_H */
|
||||
|
||||
/* Define to 1 if you have the <malloc.h> header file. */
|
||||
#define HAVE_MALLOC_H 1
|
||||
|
||||
/* Define to 1 if you have the `memchr' function. */
|
||||
#define HAVE_MEMCHR 1
|
||||
|
||||
/* Define to 1 if you have the `memcmp' function. */
|
||||
#define HAVE_MEMCMP 1
|
||||
|
||||
/* Define to 1 if you have the `memcpy' function. */
|
||||
#define HAVE_MEMCPY 1
|
||||
|
||||
/* Define to 1 if you have the `memmem' function. */
|
||||
#define HAVE_MEMMEM 1
|
||||
|
||||
/* Define to 1 if you have the `memmove' function. */
|
||||
#define HAVE_MEMMOVE 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the `mempcpy' function. */
|
||||
/* #undef HAVE_MEMPCPY */
|
||||
|
||||
/* Define to 1 if you have the `memset' function. */
|
||||
#define HAVE_MEMSET 1
|
||||
|
||||
/* Define to 1 if you have the `mkstemps' function. */
|
||||
/* #undef HAVE_MKSTEMPS */
|
||||
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#define HAVE_MMAP 1
|
||||
|
||||
/* Define to 1 if you have the `on_exit' function. */
|
||||
/* #undef HAVE_ON_EXIT */
|
||||
|
||||
/* Define to 1 if you have the `psignal' function. */
|
||||
#define HAVE_PSIGNAL 1
|
||||
|
||||
/* Define to 1 if you have the `pstat_getdynamic' function. */
|
||||
/* #undef HAVE_PSTAT_GETDYNAMIC */
|
||||
|
||||
/* Define to 1 if you have the `pstat_getstatic' function. */
|
||||
/* #undef HAVE_PSTAT_GETSTATIC */
|
||||
|
||||
/* Define to 1 if you have the `putenv' function. */
|
||||
#define HAVE_PUTENV 1
|
||||
|
||||
/* Define to 1 if you have the `random' function. */
|
||||
#define HAVE_RANDOM 1
|
||||
|
||||
/* Define to 1 if you have the `realpath' function. */
|
||||
#define HAVE_REALPATH 1
|
||||
|
||||
/* Define to 1 if you have the `rename' function. */
|
||||
#define HAVE_RENAME 1
|
||||
|
||||
/* Define to 1 if you have the `rindex' function. */
|
||||
#define HAVE_RINDEX 1
|
||||
|
||||
/* Define to 1 if you have the `sbrk' function. */
|
||||
#define HAVE_SBRK 1
|
||||
|
||||
/* Define to 1 if you have the `setenv' function. */
|
||||
#define HAVE_SETENV 1
|
||||
|
||||
/* Define to 1 if you have the `sigsetmask' function. */
|
||||
#define HAVE_SIGSETMASK 1
|
||||
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#define HAVE_SNPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdio_ext.h> header file. */
|
||||
/* #undef HAVE_STDIO_EXT_H */
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the `stpcpy' function. */
|
||||
#define HAVE_STPCPY 1
|
||||
|
||||
/* Define to 1 if you have the `stpncpy' function. */
|
||||
#define HAVE_STPNCPY 1
|
||||
|
||||
/* Define to 1 if you have the `strcasecmp' function. */
|
||||
#define HAVE_STRCASECMP 1
|
||||
|
||||
/* Define to 1 if you have the `strchr' function. */
|
||||
#define HAVE_STRCHR 1
|
||||
|
||||
/* Define to 1 if you have the `strdup' function. */
|
||||
#define HAVE_STRDUP 1
|
||||
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#define HAVE_STRERROR 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the `strncasecmp' function. */
|
||||
#define HAVE_STRNCASECMP 1
|
||||
|
||||
/* Define to 1 if you have the `strndup' function. */
|
||||
#define HAVE_STRNDUP 1
|
||||
|
||||
/* Define to 1 if you have the `strrchr' function. */
|
||||
#define HAVE_STRRCHR 1
|
||||
|
||||
/* Define to 1 if you have the `strsignal' function. */
|
||||
#define HAVE_STRSIGNAL 1
|
||||
|
||||
/* Define to 1 if you have the `strstr' function. */
|
||||
#define HAVE_STRSTR 1
|
||||
|
||||
/* Define to 1 if you have the `strtod' function. */
|
||||
#define HAVE_STRTOD 1
|
||||
|
||||
/* Define to 1 if you have the `strtol' function. */
|
||||
#define HAVE_STRTOL 1
|
||||
|
||||
/* Define to 1 if you have the `strtoul' function. */
|
||||
#define HAVE_STRTOUL 1
|
||||
|
||||
/* Define to 1 if you have the `strverscmp' function. */
|
||||
/* #undef HAVE_STRVERSCMP */
|
||||
|
||||
/* Define to 1 if you have the `sysconf' function. */
|
||||
#define HAVE_SYSCONF 1
|
||||
|
||||
/* Define to 1 if you have the `sysctl' function. */
|
||||
#define HAVE_SYSCTL 1
|
||||
|
||||
/* Define to 1 if you have the `sysmp' function. */
|
||||
/* #undef HAVE_SYSMP */
|
||||
|
||||
/* Define if you have the sys_errlist variable. */
|
||||
#define HAVE_SYS_ERRLIST 1
|
||||
|
||||
/* Define to 1 if you have the <sys/file.h> header file. */
|
||||
#define HAVE_SYS_FILE_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||
#define HAVE_SYS_MMAN_H 1
|
||||
|
||||
/* Define if you have the sys_nerr variable. */
|
||||
#define HAVE_SYS_NERR 1
|
||||
|
||||
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||
#define HAVE_SYS_PARAM_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/pstat.h> header file. */
|
||||
/* #undef HAVE_SYS_PSTAT_H */
|
||||
|
||||
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||
#define HAVE_SYS_RESOURCE_H 1
|
||||
|
||||
/* Define if you have the sys_siglist variable. */
|
||||
#define HAVE_SYS_SIGLIST 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/sysctl.h> header file. */
|
||||
#define HAVE_SYS_SYSCTL_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/sysinfo.h> header file. */
|
||||
/* #undef HAVE_SYS_SYSINFO_H */
|
||||
|
||||
/* Define to 1 if you have the <sys/sysmp.h> header file. */
|
||||
/* #undef HAVE_SYS_SYSMP_H */
|
||||
|
||||
/* Define to 1 if you have the <sys/systemcfg.h> header file. */
|
||||
/* #undef HAVE_SYS_SYSTEMCFG_H */
|
||||
|
||||
/* Define to 1 if you have the <sys/table.h> header file. */
|
||||
/* #undef HAVE_SYS_TABLE_H */
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
|
||||
#define HAVE_SYS_WAIT_H 1
|
||||
|
||||
/* Define to 1 if you have the `table' function. */
|
||||
/* #undef HAVE_TABLE */
|
||||
|
||||
/* Define to 1 if you have the `times' function. */
|
||||
#define HAVE_TIMES 1
|
||||
|
||||
/* Define to 1 if you have the <time.h> header file. */
|
||||
#define HAVE_TIME_H 1
|
||||
|
||||
/* Define to 1 if you have the `tmpnam' function. */
|
||||
#define HAVE_TMPNAM 1
|
||||
|
||||
/* Define if you have the \`uintptr_t' type. */
|
||||
#define HAVE_UINTPTR_T 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to 1 if you have the `vasprintf' function. */
|
||||
#define HAVE_VASPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the `vfork' function. */
|
||||
#define HAVE_VFORK 1
|
||||
|
||||
/* Define to 1 if you have the <vfork.h> header file. */
|
||||
/* #undef HAVE_VFORK_H */
|
||||
|
||||
/* Define to 1 if you have the `vfprintf' function. */
|
||||
#define HAVE_VFPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the `vprintf' function. */
|
||||
#define HAVE_VPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the `vsnprintf' function. */
|
||||
#define HAVE_VSNPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the `vsprintf' function. */
|
||||
#define HAVE_VSPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the `wait3' function. */
|
||||
#define HAVE_WAIT3 1
|
||||
|
||||
/* Define to 1 if you have the `wait4' function. */
|
||||
#define HAVE_WAIT4 1
|
||||
|
||||
/* Define to 1 if you have the `waitpid' function. */
|
||||
#define HAVE_WAITPID 1
|
||||
|
||||
/* Define to 1 if `fork' works. */
|
||||
#define HAVE_WORKING_FORK 1
|
||||
|
||||
/* Define to 1 if `vfork' works. */
|
||||
#define HAVE_WORKING_VFORK 1
|
||||
|
||||
/* Define to 1 if you have the `_doprnt' function. */
|
||||
/* #undef HAVE__DOPRNT */
|
||||
|
||||
/* Define if you have the _system_configuration variable. */
|
||||
/* #undef HAVE__SYSTEM_CONFIGURATION */
|
||||
|
||||
/* Define to 1 if you have the `__fsetlocking' function. */
|
||||
/* #undef HAVE___FSETLOCKING */
|
||||
|
||||
/* Define if canonicalize_file_name is not declared in system header files. */
|
||||
#define NEED_DECLARATION_CANONICALIZE_FILE_NAME 1
|
||||
|
||||
/* Define if errno must be declared even when <errno.h> is included. */
|
||||
/* #undef NEED_DECLARATION_ERRNO */
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
/* #undef NO_MINUS_C_MINUS_O */
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT ""
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME ""
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING ""
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME ""
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION ""
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#define SIZEOF_INT 4
|
||||
|
||||
/* Define if you know the direction of stack growth for your system; otherwise
|
||||
it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows
|
||||
toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
#define STACK_DIRECTION 0
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#define TIME_WITH_SYS_TIME 1
|
||||
|
||||
/* Define to an unsigned 64-bit type available in the compiler. */
|
||||
#define UNSIGNED_64BIT_TYPE uint64_t
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||
/* #undef _FILE_OFFSET_BITS */
|
||||
|
||||
/* Define for large files, on AIX-style hosts. */
|
||||
/* #undef _LARGE_FILES */
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
/* #undef const */
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
/* #undef inline */
|
||||
#endif
|
||||
|
||||
/* Define to the type of a signed integer type wide enough to hold a pointer,
|
||||
if such a type exists, and if the system does not define it. */
|
||||
/* #undef intptr_t */
|
||||
|
||||
/* Define to `int' if <sys/types.h> does not define. */
|
||||
/* #undef pid_t */
|
||||
|
||||
/* Define to the type of an unsigned integer type wide enough to hold a
|
||||
pointer, if such a type exists, and if the system does not define it. */
|
||||
/* #undef uintptr_t */
|
||||
|
||||
/* Define as `fork' if `vfork' does not work. */
|
||||
/* #undef vfork */
|
|
@ -0,0 +1,73 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* 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 <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define if the compiler has a thread header that is non single. */
|
||||
#define HAVE_GTHR_DEFAULT 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the <sched.h> header file. */
|
||||
#define HAVE_SCHED_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#define LT_OBJDIR ".libs/"
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
/* #undef NO_MINUS_C_MINUS_O */
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT ""
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "package-unused"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "package-unused version-unused"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "libobjc"
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "version-unused"
|
||||
|
||||
/* Define if the compiler is configured for setjmp/longjmp exceptions. */
|
||||
/* #undef SJLJ_EXCEPTIONS */
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
|
@ -0,0 +1,16 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.71 2013/06/28 08:30:10 mrg Exp
|
||||
# Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp
|
||||
#
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_ALL_OPT_FILES=${GNUHOSTDIST}/gcc/lto/lang.opt ${GNUHOSTDIST}/gcc/c.opt ${GNUHOSTDIST}/gcc/common.opt ${GNUHOSTDIST}/gcc/config/arm/arm.opt
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_ALL_CFLAGS=-I. -I${GNUHOSTDIST}/libobjc -g -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions
|
||||
G_INCLUDES=-I${GNUHOSTDIST}/libobjc/objc -I${GNUHOSTDIST}/libobjc/../gcc -I${GNUHOSTDIST}/libobjc/../gcc/config -I../.././gcc -I${GNUHOSTDIST}/libobjc/../include
|
||||
G_OBJS=archive.lo class.lo encoding.lo gc.lo hash.lo init.lo linking.lo misc.lo nil_method.lo NXConstStr.lo Object.lo objects.lo Protocol.lo sarray.lo selector.lo sendmsg.lo thr.lo thr-objc.lo exception.lo
|
||||
G_OBJC_H=hash.h objc-list.h sarray.h objc.h objc-api.h NXConstStr.h Object.h Protocol.h encoding.h typedstream.h thr.h objc-decls.h
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_UNWIND_H=${GNUHOSTDIST}/gcc/config/arm/unwind-arm.h
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
|
@ -0,0 +1,41 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
// 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
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,85 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
// 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,48 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.71 2013/06/28 08:30:10 mrg Exp
|
||||
# Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp
|
||||
#
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_LIBSUPCXX_SOURCES=array_type_info.cc atexit_arm.cc bad_cast.cc bad_typeid.cc class_type_info.cc del_op.cc del_opnt.cc del_opv.cc del_opvnt.cc dyncast.cc eh_alloc.cc eh_arm.cc eh_aux_runtime.cc eh_call.cc eh_catch.cc eh_exception.cc eh_globals.cc eh_personality.cc eh_ptr.cc eh_term_handler.cc eh_terminate.cc eh_throw.cc eh_type.cc eh_unex_handler.cc enum_type_info.cc function_type_info.cc fundamental_type_info.cc guard.cc new_handler.cc new_op.cc new_opnt.cc new_opv.cc new_opvnt.cc pbase_type_info.cc pmem_type_info.cc pointer_type_info.cc pure.cc si_class_type_info.cc tinfo.cc tinfo2.cc vec.cc vmi_class_type_info.cc vterminate.cc
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_LIBSUPCXX_C_SOURCES=cp-demangle.c
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_SRC_SOURCES=atomic.cc bitmap_allocator.cc pool_allocator.cc mt_allocator.cc codecvt.cc compatibility.cc compatibility-c++0x.cc compatibility-debug_list.cc compatibility-list.cc complex_io.cc ctype.cc debug.cc functexcept.cc globals_io.cc hash_c++0x.cc hash_tr1.cc hashtable_c++0x.cc hashtable_tr1.cc ios.cc ios_failure.cc ios_init.cc ios_locale.cc limits.cc list.cc debug_list.cc locale.cc locale_init.cc locale_facets.cc localename.cc math_stubs_float.cc math_stubs_long_double.cc stdexcept.cc strstream.cc system_error.cc tree.cc allocator-inst.cc concept-inst.cc fstream-inst.cc ext-inst.cc ios-inst.cc iostream-inst.cc istream-inst.cc istream.cc locale-inst.cc misc-inst.cc ostream-inst.cc sstream-inst.cc streambuf-inst.cc streambuf.cc string-inst.cc valarray-inst.cc wlocale-inst.cc wstring-inst.cc mutex.cc condition_variable.cc chrono.cc thread.cc future.cc atomicity.cc codecvt_members.cc collate_members.cc ctype_members.cc messages_members.cc monetary_members.cc numeric_members.cc time_members.cc basic_file.cc c++locale.cc parallel_list.cc parallel_settings.cc compatibility-parallel_list.cc
|
||||
G_atomicity_file=${GNUHOSTDIST}/libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
|
||||
G_CCODECVT_CC=config/locale/generic/codecvt_members.cc
|
||||
G_CCOLLATE_CC=config/locale/generic/collate_members.cc
|
||||
G_CCTYPE_CC=config/locale/generic/ctype_members.cc
|
||||
G_CMESSAGES_CC=config/locale/generic/messages_members.cc
|
||||
G_CMONEY_CC=config/locale/generic/monetary_members.cc
|
||||
G_CNUMERIC_CC=config/locale/generic/numeric_members.cc
|
||||
G_CTIME_CC=config/locale/generic/time_members.cc
|
||||
G_CLOCALE_CC=config/locale/generic/c_locale.cc
|
||||
G_BASIC_FILE_CC=config/io/basic_file_stdio.cc
|
||||
G_SECTION_FLAGS=-ffunction-sections -fdata-sections
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
nbgmake[1]: Entering directory `gcc'
|
||||
G_c_base_headers=cassert ccomplex cctype cerrno cfenv cfloat cinttypes ciso646 climits clocale cmath csetjmp csignal cstdarg cstdbool cstddef cstdint cstdio cstdlib cstring ctgmath ctime cwchar cwctype
|
||||
G_std_headers=algorithm array atomic bitset chrono complex condition_variable deque forward_list fstream functional future iomanip ios iosfwd iostream istream iterator limits list locale map memory mutex numeric ostream queue random ratio regex set sstream stack stdexcept streambuf string system_error thread tuple type_traits unordered_map unordered_set utility valarray vector
|
||||
nbgmake[1]: Leaving directory `gcc'
|
||||
nbgmake[1]: Entering directory `gcc'
|
||||
G_bits_headers=algorithmfwd.h allocator.h atomic_base.h atomicfwd_c.h atomicfwd_cxx.h atomic_0.h atomic_2.h basic_ios.h basic_ios.tcc basic_string.h basic_string.tcc boost_concept_check.h c++0x_warning.h char_traits.h codecvt.h concept_check.h cpp_type_traits.h deque.tcc forward_list.h forward_list.tcc fstream.tcc functexcept.h functional_hash.h gslice.h gslice_array.h hashtable.h hashtable_policy.h indirect_array.h ios_base.h istream.tcc list.tcc locale_classes.h locale_classes.tcc locale_facets.h locale_facets.tcc locale_facets_nonio.h locale_facets_nonio.tcc localefwd.h mask_array.h move.h ostream.tcc ostream_insert.h postypes.h random.h random.tcc stream_iterator.h streambuf_iterator.h shared_ptr.h shared_ptr_base.h slice_array.h sstream.tcc stl_algo.h stl_algobase.h stl_bvector.h stl_construct.h stl_deque.h stl_function.h stl_heap.h stl_iterator.h stl_iterator_base_funcs.h stl_iterator_base_types.h stl_list.h stl_map.h stl_multimap.h stl_multiset.h stl_numeric.h stl_pair.h stl_queue.h stl_raw_storage_iter.h stl_relops.h stl_set.h stl_stack.h stl_tempbuf.h stl_tree.h stl_uninitialized.h stl_vector.h streambuf.tcc stringfwd.h unique_ptr.h unordered_map.h unordered_set.h valarray_array.h valarray_array.tcc valarray_before.h valarray_after.h vector.tcc
|
||||
G_backward_headers=auto_ptr.h backward_warning.h binders.h hash_map hash_set hash_fun.h hashtable.h strstream
|
||||
G_ext_headers=algorithm atomicity.h array_allocator.h bitmap_allocator.h cast.h codecvt_specializations.h concurrence.h debug_allocator.h enc_filebuf.h extptr_allocator.h stdio_filebuf.h stdio_sync_filebuf.h functional iterator malloc_allocator.h memory mt_allocator.h new_allocator.h numeric numeric_traits.h pod_char_traits.h pointer.h pool_allocator.h rb_tree rope ropeimpl.h slist string_conversions.h throw_allocator.h typelist.h type_traits.h rc_string_base.h sso_string_base.h vstring.h vstring.tcc vstring_fwd.h vstring_util.h hash_set hash_map
|
||||
G_c_base_headers_extra=cmath.tcc
|
||||
G_host_headers=ctype_base.h ctype_inline.h ctype_noninline.h os_defines.h atomic_word.h cxxabi_tweaks.h cpu_defines.h error_constants.h stdc++.h stdtr1c++.h extc++.h
|
||||
G_debug_headers=bitset debug.h deque formatter.h functions.h list map macros.h map.h multimap.h multiset.h safe_base.h safe_iterator.h safe_iterator.tcc safe_sequence.h set set.h string unordered_map unordered_set vector
|
||||
G_tr1_headers=array bessel_function.tcc beta_function.tcc ccomplex cctype cfenv cfloat cinttypes climits cmath complex complex.h cstdarg cstdbool cstdint cstdio cstdlib ctgmath ctime ctype.h cwchar cwctype ell_integral.tcc exp_integral.tcc fenv.h float.h functional functional_hash.h gamma.tcc hypergeometric.tcc hashtable.h hashtable_policy.h inttypes.h limits.h math.h memory modified_bessel_func.tcc poly_hermite.tcc poly_laguerre.tcc legendre_function.tcc random random.h random.tcc regex riemann_zeta.tcc shared_ptr.h special_function_util.h stdarg.h stdbool.h stdint.h stdio.h stdlib.h tgmath.h tuple type_traits unordered_map unordered_map.h unordered_set unordered_set.h utility wchar.h wctype.h
|
||||
G_c_compatibility_headers_extra=complex.h fenv.h tgmath.h stdatomic.h
|
||||
G_tr1_impl_headers=array boost_sp_counted_base.h cctype cfenv cinttypes cmath complex cstdint cstdio cstdlib cwchar cwctype regex type_traits utility
|
||||
G_parallel_headers=algo.h algobase.h algorithm algorithmfwd.h balanced_quicksort.h base.h basic_iterator.h checkers.h compatibility.h compiletime_settings.h equally_split.h features.h find.h find_selectors.h for_each.h for_each_selectors.h iterator.h list_partition.h losertree.h merge.h multiseq_selection.h multiway_merge.h multiway_mergesort.h numeric numericfwd.h omp_loop.h omp_loop_static.h par_loop.h parallel.h partial_sum.h partition.h queue.h quicksort.h random_number.h random_shuffle.h search.h set_operations.h settings.h sort.h tags.h types.h unique_copy.h workstealing.h
|
||||
G_decimal_headers=decimal decimal.h
|
||||
nbgmake[1]: Leaving directory `gcc'
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_thread_host_headers=gthr.h gthr-single.h gthr-posix.h gthr-tpf.h gthr-default.h
|
||||
G_host_headers_extra=basic_file.h c++config.h c++allocator.h c++io.h c++locale.h messages_members.h time_members.h
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
nbgmake[1]: Entering directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
||||
G_UNWIND_H=${GNUHOSTDIST}/gcc/config/arm/unwind-arm.h
|
||||
nbgmake[1]: Leaving directory `/u2/netbsd-HEAD/evbearmv7-eb/obj/tools/gcc'
|
|
@ -0,0 +1,51 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.71 2013/06/28 08:30:10 mrg Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* generated for armv7eb--netbsdelf-eabi-gcc (NetBSD nb1 20120916) 4.5.4 */
|
||||
|
||||
#ifndef GCC_GENERATED_STDINT_H
|
||||
#define GCC_GENERATED_STDINT_H 1
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
/* glibc uses these symbols as guards to prevent redefinitions. */
|
||||
#ifdef __int8_t_defined
|
||||
#define _INT8_T
|
||||
#define _INT16_T
|
||||
#define _INT32_T
|
||||
#endif
|
||||
#ifdef __uint32_t_defined
|
||||
#define _UINT32_T
|
||||
#endif
|
||||
|
||||
|
||||
/* Some systems have guard macros to prevent redefinitions, define them. */
|
||||
#ifndef _INT8_T
|
||||
#define _INT8_T
|
||||
#endif
|
||||
#ifndef _INT16_T
|
||||
#define _INT16_T
|
||||
#endif
|
||||
#ifndef _INT32_T
|
||||
#define _INT32_T
|
||||
#endif
|
||||
#ifndef _UINT8_T
|
||||
#define _UINT8_T
|
||||
#endif
|
||||
#ifndef _UINT16_T
|
||||
#define _UINT16_T
|
||||
#endif
|
||||
#ifndef _UINT32_T
|
||||
#define _UINT32_T
|
||||
#endif
|
||||
|
||||
/* system headers have good uint64_t and int64_t */
|
||||
#ifndef _INT64_T
|
||||
#define _INT64_T
|
||||
#endif
|
||||
#ifndef _UINT64_T
|
||||
#define _UINT64_T
|
||||
#endif
|
||||
|
||||
#endif /* GCC_GENERATED_STDINT_H */
|
|
@ -0,0 +1,872 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* 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, 2011 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 shared pthread
|
||||
library or not. However, these interfaces aren't available in early
|
||||
libpthread libraries. We also need a test that works for archive
|
||||
libraries. We can't use pthread_once as some libc versions call the
|
||||
init function. We also can't use pthread_create or pthread_attr_init
|
||||
as these create a thread and thereby prevent changing the default stack
|
||||
size. The function pthread_default_stacksize_np is available in both
|
||||
the archive and shared versions of libpthread. It can be used to
|
||||
determine the default pthread stack size. There is a stub in some
|
||||
shared libc versions which returns a zero size if pthreads are not
|
||||
active. We provide an equivalent stub to handle cases where libc
|
||||
doesn't provide one. */
|
||||
|
||||
#if defined(__hppa__) && defined(__hpux__)
|
||||
|
||||
static volatile int __gthread_active = -1;
|
||||
|
||||
static inline int
|
||||
__gthread_active_p (void)
|
||||
{
|
||||
/* Avoid reading __gthread_active twice on the main code path. */
|
||||
int __gthread_active_latest_value = __gthread_active;
|
||||
size_t __s;
|
||||
|
||||
if (__builtin_expect (__gthread_active_latest_value < 0, 0))
|
||||
{
|
||||
pthread_default_stacksize_np (0, &__s);
|
||||
__gthread_active = __s ? 1 : 0;
|
||||
__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,872 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* 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, 2011 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 shared pthread
|
||||
library or not. However, these interfaces aren't available in early
|
||||
libpthread libraries. We also need a test that works for archive
|
||||
libraries. We can't use pthread_once as some libc versions call the
|
||||
init function. We also can't use pthread_create or pthread_attr_init
|
||||
as these create a thread and thereby prevent changing the default stack
|
||||
size. The function pthread_default_stacksize_np is available in both
|
||||
the archive and shared versions of libpthread. It can be used to
|
||||
determine the default pthread stack size. There is a stub in some
|
||||
shared libc versions which returns a zero size if pthreads are not
|
||||
active. We provide an equivalent stub to handle cases where libc
|
||||
doesn't provide one. */
|
||||
|
||||
#if defined(__hppa__) && defined(__hpux__)
|
||||
|
||||
static volatile int __gthread_active = -1;
|
||||
|
||||
static inline int
|
||||
__gthread_active_p (void)
|
||||
{
|
||||
/* Avoid reading __gthread_active twice on the main code path. */
|
||||
int __gthread_active_latest_value = __gthread_active;
|
||||
size_t __s;
|
||||
|
||||
if (__builtin_expect (__gthread_active_latest_value < 0, 0))
|
||||
{
|
||||
pthread_default_stacksize_np (0, &__s);
|
||||
__gthread_active = __s ? 1 : 0;
|
||||
__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,296 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* 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,233 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* 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,177 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* 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,5 @@
|
|||
#include "tree.def"
|
||||
END_OF_BASE_TREE_CODES
|
||||
#include "c-common.def"
|
||||
#include "cp/cp-tree.def"
|
||||
#include "objc/objc-tree.def"
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,11 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
#ifndef GCC_BCONFIG_H
|
||||
#define GCC_BCONFIG_H
|
||||
#include "auto-build.h"
|
||||
#ifdef IN_GCC
|
||||
# include "ansidecl.h"
|
||||
#endif
|
||||
#endif /* GCC_BCONFIG_H */
|
|
@ -0,0 +1,8 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
#define BUILDING_GCC_MAJOR 4
|
||||
#define BUILDING_GCC_MINOR 5
|
||||
#define BUILDING_GCC_PATCHLEVEL 4
|
||||
#define BUILDING_GCC_VERSION (BUILDING_GCC_MAJOR * 1000 + BUILDING_GCC_MINOR)
|
|
@ -0,0 +1,14 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
#ifndef GCC_CONFIG_H
|
||||
#define GCC_CONFIG_H
|
||||
#ifdef GENERATOR_FILE
|
||||
#error config.h is for the host, not build, machine.
|
||||
#endif
|
||||
#include "auto-host.h"
|
||||
#ifdef IN_GCC
|
||||
# include "ansidecl.h"
|
||||
#endif
|
||||
#endif /* GCC_CONFIG_H */
|
|
@ -0,0 +1,11 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.71 2013/06/28 08:30:10 mrg Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* Generated automatically. */
|
||||
static const char configuration_arguments[] = "/u1/netbsd-HEAD/src/tools/gcc/../../external/gpl3/gcc/dist/configure --target=armv7eb--netbsdelf-eabi --enable-long-long --enable-threads --with-bugurl=http://www.NetBSD.org/Misc/send-pr.html --with-pkgversion='NetBSD nb1 20120916' --with-system-zlib --enable-__cxa_atexit --with-mpc-lib=/u2/netbsd-HEAD/evbearmv7-eb/obj/external/lgpl2/mpc/lib/libmpc --with-mpfr-lib=/u2/netbsd-HEAD/evbearmv7-eb/obj/external/lgpl3/mpfr/lib/libmpfr --with-gmp-lib=/u2/netbsd-HEAD/evbearmv7-eb/obj/external/lgpl3/gmp/lib/libgmp --with-mpc-include=/u1/netbsd-HEAD/src/external/lgpl2/mpc/dist/src --with-mpfr-include=/u1/netbsd-HEAD/src/external/lgpl3/mpfr/dist --with-gmp-include=/u1/netbsd-HEAD/src/external/lgpl3/gmp/lib/libgmp/arch/earmv7eb --enable-tls --disable-multilib --disable-symvers --disable-libstdcxx-pch --build=x86_64-unknown-netbsd6.1. --host=armv7eb--netbsdelf-eabi";
|
||||
static const char thread_model[] = "posix";
|
||||
|
||||
static const struct {
|
||||
const char *name, *value;
|
||||
} configure_default_options[] = { { "cpu", "cortex-a8" } };
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
#include "gthr-posix.h"
|
|
@ -0,0 +1,189 @@
|
|||
SRCDIR/gcc/../libcpp/include/line-map.h
|
||||
SRCDIR/gcc/../libcpp/include/cpplib.h
|
||||
SRCDIR/gcc/../libcpp/include/cpp-id-data.h
|
||||
SRCDIR/gcc/input.h
|
||||
SRCDIR/gcc/coretypes.h
|
||||
auto-host.h
|
||||
SRCDIR/gcc/../include/ansidecl.h
|
||||
options.h
|
||||
SRCDIR/gcc/config/dbxelf.h
|
||||
SRCDIR/gcc/config/elfos.h
|
||||
SRCDIR/gcc/config/netbsd.h
|
||||
SRCDIR/gcc/config/netbsd-elf.h
|
||||
SRCDIR/gcc/config/arm/elf.h
|
||||
SRCDIR/gcc/config/arm/aout.h
|
||||
SRCDIR/gcc/config/arm/arm.h
|
||||
SRCDIR/gcc/config/arm/bpabi.h
|
||||
SRCDIR/gcc/config/arm/netbsd-elf.h
|
||||
SRCDIR/gcc/config/arm/netbsd-eabi.h
|
||||
SRCDIR/gcc/defaults.h
|
||||
SRCDIR/gcc/../include/hashtab.h
|
||||
SRCDIR/gcc/../include/splay-tree.h
|
||||
SRCDIR/gcc/bitmap.h
|
||||
SRCDIR/gcc/alias.h
|
||||
SRCDIR/gcc/coverage.c
|
||||
SRCDIR/gcc/rtl.h
|
||||
SRCDIR/gcc/vecprim.h
|
||||
SRCDIR/gcc/optabs.h
|
||||
SRCDIR/gcc/tree.h
|
||||
SRCDIR/gcc/varray.h
|
||||
SRCDIR/gcc/libfuncs.h
|
||||
SRCDIR/gcc/../libcpp/include/symtab.h
|
||||
SRCDIR/gcc/../include/obstack.h
|
||||
SRCDIR/gcc/real.h
|
||||
SRCDIR/gcc/function.h
|
||||
SRCDIR/gcc/insn-addr.h
|
||||
SRCDIR/gcc/hwint.h
|
||||
SRCDIR/gcc/fixed-value.h
|
||||
SRCDIR/gcc/ipa-reference.h
|
||||
SRCDIR/gcc/output.h
|
||||
SRCDIR/gcc/cfgloop.h
|
||||
SRCDIR/gcc/cselib.h
|
||||
SRCDIR/gcc/basic-block.h
|
||||
|
||||
SRCDIR/gcc/cgraph.h
|
||||
SRCDIR/gcc/reload.h
|
||||
SRCDIR/gcc/caller-save.c
|
||||
SRCDIR/gcc/alias.c
|
||||
SRCDIR/gcc/bitmap.c
|
||||
SRCDIR/gcc/cselib.c
|
||||
SRCDIR/gcc/cgraph.c
|
||||
SRCDIR/gcc/ipa-prop.c
|
||||
SRCDIR/gcc/ipa-cp.c
|
||||
SRCDIR/gcc/ipa-inline.c
|
||||
SRCDIR/gcc/matrix-reorg.c
|
||||
SRCDIR/gcc/dbxout.c
|
||||
SRCDIR/gcc/ipa-struct-reorg.c
|
||||
SRCDIR/gcc/dwarf2out.c
|
||||
SRCDIR/gcc/dwarf2asm.c
|
||||
SRCDIR/gcc/tree-vect-generic.c
|
||||
SRCDIR/gcc/dojump.c
|
||||
SRCDIR/gcc/emit-rtl.c
|
||||
SRCDIR/gcc/except.h
|
||||
SRCDIR/gcc/explow.c
|
||||
SRCDIR/gcc/expr.c
|
||||
SRCDIR/gcc/expr.h
|
||||
SRCDIR/gcc/function.c
|
||||
SRCDIR/gcc/except.c
|
||||
SRCDIR/gcc/gcse.c
|
||||
SRCDIR/gcc/integrate.c
|
||||
SRCDIR/gcc/lists.c
|
||||
SRCDIR/gcc/optabs.c
|
||||
SRCDIR/gcc/profile.c
|
||||
SRCDIR/gcc/reginfo.c
|
||||
SRCDIR/gcc/mcf.c
|
||||
SRCDIR/gcc/reg-stack.c
|
||||
SRCDIR/gcc/cfglayout.c
|
||||
SRCDIR/gcc/cfglayout.h
|
||||
SRCDIR/gcc/sdbout.c
|
||||
SRCDIR/gcc/stor-layout.c
|
||||
SRCDIR/gcc/stringpool.c
|
||||
SRCDIR/gcc/tree.c
|
||||
SRCDIR/gcc/varasm.c
|
||||
SRCDIR/gcc/gimple.h
|
||||
SRCDIR/gcc/gimple.c
|
||||
SRCDIR/gcc/tree-mudflap.c
|
||||
SRCDIR/gcc/tree-flow.h
|
||||
SRCDIR/gcc/tree-ssanames.c
|
||||
SRCDIR/gcc/tree-eh.c
|
||||
SRCDIR/gcc/tree-ssa-address.c
|
||||
SRCDIR/gcc/tree-cfg.c
|
||||
SRCDIR/gcc/tree-dfa.c
|
||||
SRCDIR/gcc/tree-iterator.c
|
||||
SRCDIR/gcc/gimplify.c
|
||||
SRCDIR/gcc/tree-chrec.h
|
||||
SRCDIR/gcc/tree-scalar-evolution.c
|
||||
SRCDIR/gcc/tree-ssa-operands.h
|
||||
SRCDIR/gcc/tree-profile.c
|
||||
SRCDIR/gcc/tree-nested.c
|
||||
SRCDIR/gcc/varpool.c
|
||||
SRCDIR/gcc/tree-parloops.c
|
||||
SRCDIR/gcc/omp-low.c
|
||||
SRCDIR/gcc/targhooks.c
|
||||
SRCDIR/gcc/config/arm/arm.c
|
||||
SRCDIR/gcc/passes.c
|
||||
SRCDIR/gcc/cgraphunit.c
|
||||
SRCDIR/gcc/tree-ssa-propagate.c
|
||||
SRCDIR/gcc/tree-phinodes.c
|
||||
SRCDIR/gcc/ipa-reference.c
|
||||
SRCDIR/gcc/tree-ssa-structalias.c
|
||||
SRCDIR/gcc/lto-symtab.c
|
||||
SRCDIR/gcc/tree-ssa-alias.h
|
||||
SRCDIR/gcc/ipa-prop.h
|
||||
[cp]
|
||||
SRCDIR/gcc/cp/rtti.c
|
||||
SRCDIR/gcc/cp/mangle.c
|
||||
SRCDIR/gcc/cp/name-lookup.h
|
||||
SRCDIR/gcc/cp/name-lookup.c
|
||||
SRCDIR/gcc/cp/cp-tree.h
|
||||
SRCDIR/gcc/cp/decl.h
|
||||
SRCDIR/gcc/cp/call.c
|
||||
SRCDIR/gcc/cp/decl.c
|
||||
SRCDIR/gcc/cp/decl2.c
|
||||
SRCDIR/gcc/cp/pt.c
|
||||
SRCDIR/gcc/cp/repo.c
|
||||
SRCDIR/gcc/cp/semantics.c
|
||||
SRCDIR/gcc/cp/tree.c
|
||||
SRCDIR/gcc/cp/parser.c
|
||||
SRCDIR/gcc/cp/method.c
|
||||
SRCDIR/gcc/cp/typeck2.c
|
||||
SRCDIR/gcc/c-common.c
|
||||
SRCDIR/gcc/c-common.h
|
||||
SRCDIR/gcc/c-lex.c
|
||||
SRCDIR/gcc/c-pragma.h
|
||||
SRCDIR/gcc/c-pragma.c
|
||||
SRCDIR/gcc/cp/class.c
|
||||
SRCDIR/gcc/cp/cp-objcp-common.c
|
||||
SRCDIR/gcc/cp/cp-lang.c
|
||||
[lto]
|
||||
SRCDIR/gcc/lto/lto-tree.h
|
||||
SRCDIR/gcc/lto/lto-lang.c
|
||||
SRCDIR/gcc/lto/lto.c
|
||||
[objc]
|
||||
SRCDIR/gcc/objc/objc-act.h
|
||||
SRCDIR/gcc/c-parser.c
|
||||
SRCDIR/gcc/c-tree.h
|
||||
SRCDIR/gcc/c-decl.c
|
||||
SRCDIR/gcc/c-objc-common.c
|
||||
SRCDIR/gcc/c-common.c
|
||||
SRCDIR/gcc/c-common.h
|
||||
SRCDIR/gcc/c-pragma.h
|
||||
SRCDIR/gcc/c-pragma.c
|
||||
SRCDIR/gcc/objc/objc-act.c
|
||||
[objcp]
|
||||
SRCDIR/gcc/objcp/objcp-decl.c
|
||||
SRCDIR/gcc/objc/objc-act.c
|
||||
SRCDIR/gcc/objc/objc-act.h
|
||||
SRCDIR/gcc/cp/rtti.c
|
||||
SRCDIR/gcc/cp/mangle.c
|
||||
SRCDIR/gcc/cp/name-lookup.h
|
||||
SRCDIR/gcc/cp/name-lookup.c
|
||||
SRCDIR/gcc/cp/cp-tree.h
|
||||
SRCDIR/gcc/cp/decl.h
|
||||
SRCDIR/gcc/cp/call.c
|
||||
SRCDIR/gcc/cp/decl.c
|
||||
SRCDIR/gcc/cp/decl2.c
|
||||
SRCDIR/gcc/cp/pt.c
|
||||
SRCDIR/gcc/cp/repo.c
|
||||
SRCDIR/gcc/cp/semantics.c
|
||||
SRCDIR/gcc/cp/tree.c
|
||||
SRCDIR/gcc/cp/parser.c
|
||||
SRCDIR/gcc/cp/method.c
|
||||
SRCDIR/gcc/cp/typeck2.c
|
||||
SRCDIR/gcc/c-common.c
|
||||
SRCDIR/gcc/c-common.h
|
||||
SRCDIR/gcc/c-lex.c
|
||||
SRCDIR/gcc/c-pragma.h
|
||||
SRCDIR/gcc/c-pragma.c
|
||||
SRCDIR/gcc/cp/cp-objcp-common.c
|
||||
[c]
|
||||
SRCDIR/gcc/c-lang.c
|
||||
SRCDIR/gcc/c-tree.h
|
||||
SRCDIR/gcc/c-decl.c
|
||||
SRCDIR/gcc/c-common.c
|
||||
SRCDIR/gcc/c-common.h
|
||||
SRCDIR/gcc/c-pragma.h
|
||||
SRCDIR/gcc/c-pragma.c
|
||||
SRCDIR/gcc/c-objc-common.c
|
||||
SRCDIR/gcc/c-parser.c
|
||||
SRCDIR/gcc/c-lang.h
|
|
@ -0,0 +1,32 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.69 2013/04/25 16:18:43 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
static const char *const multilib_raw[] = {
|
||||
". !mabi=aapcs-linux !mabi=aapcs !mabi=atpcs !mabi=apcs-gnu !mabi=iwmmxt;",
|
||||
".:. mabi=aapcs-linux !mabi=aapcs !mabi=atpcs !mabi=apcs-gnu !mabi=iwmmxt;",
|
||||
".:../lib/aapcs !mabi=aapcs-linux mabi=aapcs !mabi=atpcs !mabi=apcs-gnu !mabi=iwmmxt;",
|
||||
".:../lib/atpcs !mabi=aapcs-linux !mabi=aapcs mabi=atpcs !mabi=apcs-gnu !mabi=iwmmxt;",
|
||||
".:../lib/oabi !mabi=aapcs-linux !mabi=aapcs !mabi=atpcs mabi=apcs-gnu !mabi=iwmmxt;",
|
||||
".:../lib/iwmmxt !mabi=aapcs-linux !mabi=aapcs !mabi=atpcs !mabi=apcs-gnu mabi=iwmmxt;",
|
||||
NULL
|
||||
};
|
||||
|
||||
static const char *const multilib_matches_raw[] = {
|
||||
"mabi=aapcs-linux mabi=aapcs-linux;",
|
||||
"mabi=aapcs mabi=aapcs;",
|
||||
"mabi=atpcs mabi=atpcs;",
|
||||
"mabi=apcs-gnu mabi=apcs-gnu;",
|
||||
"mabi=iwmmxt mabi=iwmmxt;",
|
||||
NULL
|
||||
};
|
||||
|
||||
static const char *multilib_extra = "";
|
||||
|
||||
static const char *const multilib_exclusions_raw[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
static const char *multilib_options = "mabi=aapcs-linux/mabi=aapcs/mabi=atpcs/mabi=apcs-gnu/mabi=iwmmxt";
|
||||
|
||||
#define DISABLE_MULTILIB 1
|
|
@ -0,0 +1,17 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
#include "configargs.h"
|
||||
|
||||
static char basever[] = "4.5.4";
|
||||
static char datestamp[] = "20120702";
|
||||
static char devphase[] = "";
|
||||
static char revision[] = "";
|
||||
|
||||
/* FIXME plugins: We should make the version information more precise.
|
||||
One way to do is to add a checksum. */
|
||||
|
||||
static struct plugin_gcc_version gcc_version = {basever, datestamp,
|
||||
devphase, revision,
|
||||
configuration_arguments};
|
|
@ -0,0 +1,32 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.71 2013/06/28 08:30:10 mrg Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
#ifndef GCC_TM_H
|
||||
#define GCC_TM_H
|
||||
#define TARGET_CPU_DEFAULT (TARGET_CPU_cortexa8)
|
||||
#ifndef NETBSD_ENABLE_PTHREADS
|
||||
# define NETBSD_ENABLE_PTHREADS
|
||||
#endif
|
||||
#ifndef TARGET_BIG_ENDIAN_DEFAULT
|
||||
# define TARGET_BIG_ENDIAN_DEFAULT 1
|
||||
#endif
|
||||
#ifdef IN_GCC
|
||||
# include "options.h"
|
||||
# include "config/dbxelf.h"
|
||||
# include "config/elfos.h"
|
||||
# include "config/netbsd.h"
|
||||
# include "config/netbsd-elf.h"
|
||||
# include "config/arm/elf.h"
|
||||
# include "config/arm/aout.h"
|
||||
# include "config/arm/arm.h"
|
||||
# include "config/arm/bpabi.h"
|
||||
# include "config/arm/netbsd-elf.h"
|
||||
# include "config/arm/netbsd-eabi.h"
|
||||
# include "defaults.h"
|
||||
#endif
|
||||
#if defined IN_GCC && !defined GENERATOR_FILE && !defined USED_FOR_TARGET
|
||||
# include "insn-constants.h"
|
||||
# include "insn-flags.h"
|
||||
#endif
|
||||
#endif /* GCC_TM_H */
|
|
@ -0,0 +1,290 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* config.h. Generated from config.in by configure. */
|
||||
/* config.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for `alloca.c' support on those systems.
|
||||
*/
|
||||
/* #undef CRAY_STACKSEG_END */
|
||||
|
||||
/* Define to 1 if using `alloca.c'. */
|
||||
/* #undef C_ALLOCA */
|
||||
|
||||
/* Define if you want more run-time sanity checks. */
|
||||
/* #undef ENABLE_CHECKING */
|
||||
|
||||
/* Define to 1 if translation of program messages to the user's native
|
||||
language is requested. */
|
||||
#define ENABLE_NLS 1
|
||||
|
||||
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||
#define HAVE_ALLOCA 1
|
||||
|
||||
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||
*/
|
||||
/* #undef HAVE_ALLOCA_H */
|
||||
|
||||
/* Define to 1 if you have the `clearerr_unlocked' function. */
|
||||
/* #undef HAVE_CLEARERR_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the declaration of `abort', and to 0 if you don't.
|
||||
*/
|
||||
#define HAVE_DECL_ABORT 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_ASPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `basename', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_BASENAME 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_CLEARERR_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `errno', and to 0 if you don't.
|
||||
*/
|
||||
#define HAVE_DECL_ERRNO 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_FEOF_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FERROR_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FFLUSH_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fgetc_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FGETC_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FGETS_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fileno_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FILENO_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fprintf_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FPRINTF_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FPUTC_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FPUTS_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FREAD_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_FWRITE_UNLOCKED 0
|
||||
|
||||
/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_GETCHAR_UNLOCKED 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_GETC_UNLOCKED 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `getopt', and to 0 if you don't.
|
||||
*/
|
||||
#define HAVE_DECL_GETOPT 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#define HAVE_DECL_PUTCHAR_UNLOCKED 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_PUTC_UNLOCKED 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_VASPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#define HAVE_FCNTL_H 1
|
||||
|
||||
/* Define to 1 if you have the `feof_unlocked' function. */
|
||||
/* #undef HAVE_FEOF_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `ferror_unlocked' function. */
|
||||
/* #undef HAVE_FERROR_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fflush_unlocked' function. */
|
||||
/* #undef HAVE_FFLUSH_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fgetc_unlocked' function. */
|
||||
/* #undef HAVE_FGETC_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fgets_unlocked' function. */
|
||||
/* #undef HAVE_FGETS_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fileno_unlocked' function. */
|
||||
/* #undef HAVE_FILENO_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fprintf_unlocked' function. */
|
||||
/* #undef HAVE_FPRINTF_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fputc_unlocked' function. */
|
||||
/* #undef HAVE_FPUTC_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fputs_unlocked' function. */
|
||||
/* #undef HAVE_FPUTS_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fread_unlocked' function. */
|
||||
/* #undef HAVE_FREAD_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `fwrite_unlocked' function. */
|
||||
/* #undef HAVE_FWRITE_UNLOCKED */
|
||||
|
||||
/* Define to 1 if you have the `getchar_unlocked' function. */
|
||||
#define HAVE_GETCHAR_UNLOCKED 1
|
||||
|
||||
/* Define to 1 if you have the `getc_unlocked' function. */
|
||||
#define HAVE_GETC_UNLOCKED 1
|
||||
|
||||
/* Define if you have the iconv() function. */
|
||||
#define HAVE_ICONV 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
|
||||
#define HAVE_LANGINFO_CODESET 1
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#define HAVE_LIMITS_H 1
|
||||
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#define HAVE_LOCALE_H 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if libc includes obstacks. */
|
||||
/* #undef HAVE_OBSTACK */
|
||||
|
||||
/* Define to 1 if you have the `putchar_unlocked' function. */
|
||||
#define HAVE_PUTCHAR_UNLOCKED 1
|
||||
|
||||
/* Define to 1 if you have the `putc_unlocked' function. */
|
||||
#define HAVE_PUTC_UNLOCKED 1
|
||||
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#define HAVE_STDDEF_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/file.h> header file. */
|
||||
#define HAVE_SYS_FILE_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define if <sys/types.h> defines \`uchar'. */
|
||||
/* #undef HAVE_UCHAR */
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to the widest efficient host integer type at least as wide as the
|
||||
target's size_t type. */
|
||||
#define HOST_WIDE_INT long long
|
||||
|
||||
/* Define as const if the declaration of iconv() needs const. */
|
||||
#define ICONV_CONST const
|
||||
|
||||
/* Define to the name of this package. */
|
||||
#define PACKAGE "cpplib"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT "gcc-bugs@gcc.gnu.org"
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "cpplib"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "cpplib "
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "cpplib"
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION " "
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#define SIZEOF_INT 4
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#define SIZEOF_LONG 4
|
||||
|
||||
/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at runtime.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
/* #undef STACK_DIRECTION */
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Define if you can safely include both <string.h> and <strings.h>. */
|
||||
#define STRING_WITH_STRINGS 1
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#define TIME_WITH_SYS_TIME 1
|
||||
|
||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||
/* #undef TM_IN_SYS_TIME */
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
/* #undef const */
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
/* #undef inline */
|
||||
#endif
|
||||
|
||||
/* Define to `long int' if <sys/types.h> does not define. */
|
||||
/* #undef off_t */
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
/* #undef size_t */
|
||||
|
||||
/* Define to `int' if <sys/types.h> does not define. */
|
||||
/* #undef ssize_t */
|
|
@ -0,0 +1,99 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.68 2012/09/25 06:55:10 skrll Exp */
|
||||
/* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp */
|
||||
|
||||
/* config.h. Generated from config.in by configure. */
|
||||
/* config.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define if building universal (internal helper macro) */
|
||||
/* #undef AC_APPLE_UNIVERSAL_BUILD */
|
||||
|
||||
/* Define to 1 if you have the <ctype.h> header file. */
|
||||
#define HAVE_CTYPE_H 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#define HAVE_STDDEF_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdio.h> header file. */
|
||||
#define HAVE_STDIO_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT "gcc-bugs@gcc.gnu.org"
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "libdecnumber"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "libdecnumber "
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "libdecnumber"
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION " "
|
||||
|
||||
/* The size of `char', as computed by sizeof. */
|
||||
/* #undef SIZEOF_CHAR */
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#define SIZEOF_INT 4
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#define SIZEOF_LONG 4
|
||||
|
||||
/* 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
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
/* #undef const */
|
||||
|
||||
/* Define to `long int' if <sys/types.h> does not define. */
|
||||
/* #undef off_t */
|
Loading…
Reference in New Issue