generated mknative files for amd64 and GCC4. not tested but a release
build completes.
This commit is contained in:
parent
c5fb260e70
commit
173e1af775
|
@ -0,0 +1,10 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp
|
||||
# and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp
|
||||
#
|
||||
G_INCLUDES=-I. -I. -I${GNUHOSTDIST}/gcc -I${GNUHOSTDIST}/gcc/. -I${GNUHOSTDIST}/gcc/../include -I${GNUHOSTDIST}/gcc/../libcpp/include
|
||||
G_CRTSTUFF_CFLAGS=-O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -I. -I. -I${GNUHOSTDIST}/gcc -I${GNUHOSTDIST}/gcc/. -I${GNUHOSTDIST}/gcc/../include -I${GNUHOSTDIST}/gcc/../libcpp/include -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-unit-at-a-time
|
||||
G_CRTSTUFF_T_CFLAGS=-fPIC
|
||||
G_tm_defines=NETBSD_ENABLE_PTHREADS
|
||||
G_xm_file=
|
||||
G_xm_defines=
|
|
@ -0,0 +1,22 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp
|
||||
# and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp
|
||||
#
|
||||
G_INCLUDES=-I. -I. -I${GNUHOSTDIST}/gcc -I${GNUHOSTDIST}/gcc/. -I${GNUHOSTDIST}/gcc/../include -I${GNUHOSTDIST}/gcc/../libcpp/include
|
||||
G_LIB2ADD=
|
||||
G_LIB2ADDEH=${GNUHOSTDIST}/gcc/unwind-dw2.c ${GNUHOSTDIST}/gcc/unwind-dw2-fde.c ${GNUHOSTDIST}/gcc/unwind-sjlj.c ${GNUHOSTDIST}/gcc/gthr-gnat.c ${GNUHOSTDIST}/gcc/unwind-c.c
|
||||
G_LIB1ASMFUNCS=
|
||||
G_LIB1ASMSRC=
|
||||
G_LIB2_DIVMOD_FUNCS=_divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
|
||||
G_LIB2FUNCS_ST=_eprintf __gcc_bcmp
|
||||
G_LIBGCC2_CFLAGS=-O2 -DIN_GCC -W -Wall -Wwrite-strings -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
|
||||
G_SHLIB_NM_FLAGS=-pg
|
||||
G_EXTRA_HEADERS=${GNUHOSTDIST}/gcc/config/i386/mmintrin.h ${GNUHOSTDIST}/gcc/config/i386/mm3dnow.h ${GNUHOSTDIST}/gcc/config/i386/xmmintrin.h ${GNUHOSTDIST}/gcc/config/i386/emmintrin.h ${GNUHOSTDIST}/gcc/config/i386/pmmintrin.h mm_malloc.h
|
||||
G_xm_defines=
|
||||
G_tm_defines=NETBSD_ENABLE_PTHREADS
|
||||
G_COLLECT2=collect2
|
||||
G_UNWIND_H=${GNUHOSTDIST}/gcc/unwind-generic.h
|
||||
G_xm_include_list=auto-host.h ansidecl.h
|
|
@ -0,0 +1,41 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
// Base to std::allocator -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2004, 2005 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 2, 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.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
// USA.
|
||||
|
||||
// As a special exception, you may use this file as part of a free software
|
||||
// library without restriction. Specifically, if other files instantiate
|
||||
// templates or use macros or inline functions from this file, or you compile
|
||||
// this file and link it with other files to produce an executable, this
|
||||
// file does not by itself cause the resulting executable to be covered by
|
||||
// the GNU General Public License. This exception does not however
|
||||
// invalidate any other reasons why the executable file might be covered by
|
||||
// the GNU General Public License.
|
||||
|
||||
#ifndef _CXX_ALLOCATOR_H
|
||||
#define _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,57 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
// Control various target specific ABI tweaks. Generic version.
|
||||
|
||||
// Copyright (C) 2004 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 2, 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.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
// USA.
|
||||
|
||||
// As a special exception, you may use this file as part of a free software
|
||||
// library without restriction. Specifically, if other files instantiate
|
||||
// templates or use macros or inline functions from this file, or you compile
|
||||
// this file and link it with other files to produce an executable, this
|
||||
// file does not by itself cause the resulting executable to be covered by
|
||||
// the GNU General Public License. This exception does not however
|
||||
// invalidate any other reasons why the executable file might be covered by
|
||||
// the GNU General Public License.
|
||||
|
||||
#ifndef _CXXABI_TWEAKS_H
|
||||
#define _CXXABI_TWEAKS_H 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace __cxxabiv1
|
||||
{
|
||||
#endif
|
||||
|
||||
// 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
|
||||
__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;
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // namespace __cxxabiv1
|
||||
#endif
|
||||
|
||||
#endif // __cxxabiv1
|
|
@ -0,0 +1,33 @@
|
|||
# This file is automatically generated. DO NOT EDIT!
|
||||
# Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp
|
||||
# and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp
|
||||
#
|
||||
G_libmath_la_SOURCES=stubs.c
|
||||
G_libmath_la_LIBADD=signbit.lo
|
||||
G_LIBSUPCXX_SOURCES=del_op.cc del_opnt.cc del_opv.cc del_opvnt.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_term_handler.cc eh_terminate.cc eh_throw.cc eh_type.cc eh_unex_handler.cc guard.cc new_handler.cc new_op.cc new_opnt.cc new_opv.cc new_opvnt.cc pure.cc tinfo.cc tinfo2.cc vec.cc vterminate.cc
|
||||
G_LIBSUPCXX_C_SOURCES=cp-demangle.c
|
||||
G_SRC_SOURCES=bitmap_allocator.cc pool_allocator.cc mt_allocator.cc codecvt.cc compatibility.cc complex_io.cc ctype.cc debug.cc debug_list.cc functexcept.cc globals_locale.cc globals_io.cc ios.cc ios_failure.cc ios_init.cc ios_locale.cc limits.cc list.cc locale.cc locale_init.cc locale_facets.cc localename.cc stdexcept.cc strstream.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 locale-misc-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 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
|
||||
G_atomicity_file=${GNUHOSTDIST}/libstdc++-v3/config/cpu/i486/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
|
||||
G_c_base_headers_rename=cassert cctype cerrno cfloat ciso646 climits clocale cmath csetjmp csignal cstdarg cstddef cstdio cstdlib cstring ctime cwchar cwctype
|
||||
G_std_headers_rename=algorithm bitset complex deque fstream functional iomanip ios iosfwd iostream istream iterator limits list locale map memory numeric ostream queue set sstream stack stdexcept streambuf string utility valarray vector
|
||||
G_bits_headers=allocator.h atomicity.h basic_ios.h basic_ios.tcc basic_string.h basic_string.tcc boost_concept_check.h char_traits.h codecvt.h concept_check.h concurrence.h cpp_type_traits.h deque.tcc fstream.tcc functexcept.h gslice.h gslice_array.h indirect_array.h ios_base.h istream.tcc list.tcc locale_classes.h locale_facets.h locale_facets.tcc localefwd.h mask_array.h ostream.tcc postypes.h stream_iterator.h streambuf_iterator.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 valarray_array.h valarray_array.tcc valarray_before.h valarray_after.h vector.tcc
|
||||
G_backward_headers=complex.h iomanip.h istream.h ostream.h stream.h streambuf.h algo.h algobase.h alloc.h bvector.h defalloc.h deque.h function.h hash_map.h hash_set.h hashtable.h heap.h iostream.h iterator.h list.h map.h multimap.h new.h multiset.h pair.h queue.h rope.h set.h slist.h stack.h tempbuf.h tree.h vector.h fstream.h strstream backward_warning.h
|
||||
G_ext_headers=algorithm array_allocator.h bitmap_allocator.h codecvt_specializations.h debug_allocator.h stdio_filebuf.h stdio_sync_filebuf.h functional hash_map hash_set hash_fun.h hashtable.h iterator malloc_allocator.h memory mt_allocator.h new_allocator.h numeric pod_char_traits.h pool_allocator.h rb_tree rope ropeimpl.h slist typelist.h rc_string_base.h sso_string_base.h vstring.h vstring.tcc vstring_fwd.h vstring_util.h
|
||||
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
|
||||
G_debug_headers=bitset debug.h deque formatter.h functions.h hash_map hash_map.h hash_multimap.h hash_multiset.h hash_set hash_set.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 vector
|
||||
G_tr1_headers=array bind_repeat.h bind_iterate.h boost_shared_ptr.h mu_iterate.h functional functional_iterate.h memory ref_fwd.h ref_wrap_iterate.h repeat.h tuple tuple_iterate.h utility type_traits type_traits_fwd.h hashtable unordered_set unordered_map
|
||||
G_c_compatibility_headers_extra=
|
||||
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
|
||||
G_UNWIND_H=${GNUHOSTDIST}/gcc/unwind-generic.h
|
|
@ -0,0 +1,618 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||
/* Compile this one with gcc. */
|
||||
/* Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
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 2, 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
/* As a special exception, if you link this library with other files,
|
||||
some of which are compiled with GCC, to produce an executable,
|
||||
this library does not by itself cause the resulting executable
|
||||
to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why
|
||||
the executable file might be covered by the GNU General Public License. */
|
||||
|
||||
#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
|
||||
|
||||
/* 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;
|
||||
|
||||
#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
|
||||
|
||||
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||
# define __gthrw2(name,name2,type) \
|
||||
extern __typeof(type) name __attribute__ ((__weakref__(#name2)));
|
||||
# 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_cancel)
|
||||
__gthrw3(pthread_mutex_lock)
|
||||
__gthrw3(pthread_mutex_trylock)
|
||||
__gthrw3(pthread_mutex_unlock)
|
||||
__gthrw3(pthread_mutex_init)
|
||||
#else
|
||||
__gthrw(pthread_once)
|
||||
__gthrw(pthread_getspecific)
|
||||
__gthrw(pthread_setspecific)
|
||||
__gthrw(pthread_create)
|
||||
__gthrw(pthread_cancel)
|
||||
__gthrw(pthread_mutex_lock)
|
||||
__gthrw(pthread_mutex_trylock)
|
||||
__gthrw(pthread_mutex_unlock)
|
||||
__gthrw(pthread_mutex_init)
|
||||
#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_broadcast)
|
||||
__gthrw3(pthread_cond_destroy)
|
||||
__gthrw3(pthread_cond_init)
|
||||
__gthrw3(pthread_cond_signal)
|
||||
__gthrw3(pthread_cond_wait)
|
||||
__gthrw3(pthread_exit)
|
||||
__gthrw3(pthread_mutex_destroy)
|
||||
__gthrw3(pthread_self)
|
||||
#else
|
||||
__gthrw(pthread_cond_broadcast)
|
||||
__gthrw(pthread_cond_destroy)
|
||||
__gthrw(pthread_cond_init)
|
||||
__gthrw(pthread_cond_signal)
|
||||
__gthrw(pthread_cond_wait)
|
||||
__gthrw(pthread_exit)
|
||||
__gthrw(pthread_mutex_destroy)
|
||||
__gthrw(pthread_self)
|
||||
#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(sched_yield)
|
||||
__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
|
||||
|
||||
static inline int
|
||||
__gthread_active_p (void)
|
||||
{
|
||||
static void *const __gthread_active_ptr
|
||||
= __extension__ (void *) &__gthrw_(pthread_cancel);
|
||||
return __gthread_active_ptr != 0;
|
||||
}
|
||||
|
||||
#else /* not __GXX_WEAK__ */
|
||||
|
||||
static inline int
|
||||
__gthread_active_p (void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
#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_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_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;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex)
|
||||
{
|
||||
return __gthread_mutex_unlock (mutex);
|
||||
}
|
||||
|
||||
#endif /* _LIBOBJC */
|
||||
|
||||
#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */
|
|
@ -0,0 +1,618 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||
/* Compile this one with gcc. */
|
||||
/* Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
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 2, 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
/* As a special exception, if you link this library with other files,
|
||||
some of which are compiled with GCC, to produce an executable,
|
||||
this library does not by itself cause the resulting executable
|
||||
to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why
|
||||
the executable file might be covered by the GNU General Public License. */
|
||||
|
||||
#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
|
||||
|
||||
/* 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;
|
||||
|
||||
#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
|
||||
|
||||
#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK
|
||||
# define __gthrw2(name,name2,type) \
|
||||
extern __typeof(type) name __attribute__ ((__weakref__(#name2)));
|
||||
# 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_cancel)
|
||||
__gthrw3(pthread_mutex_lock)
|
||||
__gthrw3(pthread_mutex_trylock)
|
||||
__gthrw3(pthread_mutex_unlock)
|
||||
__gthrw3(pthread_mutex_init)
|
||||
#else
|
||||
__gthrw(pthread_once)
|
||||
__gthrw(pthread_getspecific)
|
||||
__gthrw(pthread_setspecific)
|
||||
__gthrw(pthread_create)
|
||||
__gthrw(pthread_cancel)
|
||||
__gthrw(pthread_mutex_lock)
|
||||
__gthrw(pthread_mutex_trylock)
|
||||
__gthrw(pthread_mutex_unlock)
|
||||
__gthrw(pthread_mutex_init)
|
||||
#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_broadcast)
|
||||
__gthrw3(pthread_cond_destroy)
|
||||
__gthrw3(pthread_cond_init)
|
||||
__gthrw3(pthread_cond_signal)
|
||||
__gthrw3(pthread_cond_wait)
|
||||
__gthrw3(pthread_exit)
|
||||
__gthrw3(pthread_mutex_destroy)
|
||||
__gthrw3(pthread_self)
|
||||
#else
|
||||
__gthrw(pthread_cond_broadcast)
|
||||
__gthrw(pthread_cond_destroy)
|
||||
__gthrw(pthread_cond_init)
|
||||
__gthrw(pthread_cond_signal)
|
||||
__gthrw(pthread_cond_wait)
|
||||
__gthrw(pthread_exit)
|
||||
__gthrw(pthread_mutex_destroy)
|
||||
__gthrw(pthread_self)
|
||||
#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(sched_yield)
|
||||
__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
|
||||
|
||||
static inline int
|
||||
__gthread_active_p (void)
|
||||
{
|
||||
static void *const __gthread_active_ptr
|
||||
= __extension__ (void *) &__gthrw_(pthread_cancel);
|
||||
return __gthread_active_ptr != 0;
|
||||
}
|
||||
|
||||
#else /* not __GXX_WEAK__ */
|
||||
|
||||
static inline int
|
||||
__gthread_active_p (void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
#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_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_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;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex)
|
||||
{
|
||||
return __gthread_mutex_unlock (mutex);
|
||||
}
|
||||
|
||||
#endif /* _LIBOBJC */
|
||||
|
||||
#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */
|
|
@ -0,0 +1,262 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
/* Threads compatibility routines for libgcc2 and libobjc. */
|
||||
/* Compile this one with gcc. */
|
||||
/* Copyright (C) 1997, 1999, 2000, 2004 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 2, 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
/* As a special exception, if you link this library with other files,
|
||||
some of which are compiled with GCC, to produce an executable,
|
||||
this library does not by itself cause the resulting executable
|
||||
to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why
|
||||
the executable file might be covered by the GNU General Public License. */
|
||||
|
||||
#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||
#define _GLIBCXX_GCC_GTHR_SINGLE_H
|
||||
|
||||
/* Just provide compatibility for mutex handling. */
|
||||
|
||||
typedef int __gthread_mutex_t;
|
||||
typedef int __gthread_recursive_mutex_t;
|
||||
|
||||
#define __GTHREAD_MUTEX_INIT 0
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define _GLIBCXX_UNUSED(x)
|
||||
#else
|
||||
#define _GLIBCXX_UNUSED(x) x __attribute__((unused))
|
||||
#endif
|
||||
|
||||
#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 * _GLIBCXX_UNUSED(arg))
|
||||
{
|
||||
/* No thread support available */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Set the current thread's priority. */
|
||||
static inline int
|
||||
__gthread_objc_thread_set_priority (int _GLIBCXX_UNUSED(priority))
|
||||
{
|
||||
/* 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 _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Deallocate a mutex. */
|
||||
static inline int
|
||||
__gthread_objc_mutex_deallocate (objc_mutex_t _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Grab a lock on a mutex. */
|
||||
static inline int
|
||||
__gthread_objc_mutex_lock (objc_mutex_t _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
/* 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 _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
/* 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 _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Backend condition mutex functions */
|
||||
|
||||
/* Allocate a condition. */
|
||||
static inline int
|
||||
__gthread_objc_condition_allocate (objc_condition_t _GLIBCXX_UNUSED(condition))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Deallocate a condition. */
|
||||
static inline int
|
||||
__gthread_objc_condition_deallocate (objc_condition_t _GLIBCXX_UNUSED(condition))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Wait on the condition */
|
||||
static inline int
|
||||
__gthread_objc_condition_wait (objc_condition_t _GLIBCXX_UNUSED(condition),
|
||||
objc_mutex_t _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Wake up all threads waiting on this condition. */
|
||||
static inline int
|
||||
__gthread_objc_condition_broadcast (objc_condition_t _GLIBCXX_UNUSED(condition))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Wake up one thread waiting on this condition. */
|
||||
static inline int
|
||||
__gthread_objc_condition_signal (objc_condition_t _GLIBCXX_UNUSED(condition))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else /* _LIBOBJC */
|
||||
|
||||
static inline int
|
||||
__gthread_active_p (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_mutex_lock (__gthread_mutex_t * _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_mutex_trylock (__gthread_mutex_t * _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
__gthread_mutex_unlock (__gthread_mutex_t * _GLIBCXX_UNUSED(mutex))
|
||||
{
|
||||
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,200 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
/* Threads compatibility routines for libgcc2 and libobjc.
|
||||
Compile this one with gcc.
|
||||
Copyright (C) 2004, 2005 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 2, 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
/* As a special exception, if you link this library with other files,
|
||||
some of which are compiled with GCC, to produce an executable,
|
||||
this library does not by itself cause the resulting executable
|
||||
to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why
|
||||
the executable file might be covered by the GNU General Public License. */
|
||||
|
||||
|
||||
/* 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 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) \
|
||||
extern __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)
|
||||
|
||||
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_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;
|
||||
}
|
||||
|
||||
#endif /* ! _GLIBCXX_GCC_GTHR_TPF_H */
|
|
@ -0,0 +1,129 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
/* Threads compatibility routines for libgcc2. */
|
||||
/* Compile this one with gcc. */
|
||||
/* Copyright (C) 1997, 1998, 2004 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 2, 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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
/* As a special exception, if you link this library with other files,
|
||||
some of which are compiled with GCC, to produce an executable,
|
||||
this library does not by itself cause the resulting executable
|
||||
to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why
|
||||
the executable file might be covered by the GNU General Public License. */
|
||||
|
||||
#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_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);
|
||||
|
||||
All functions returning int should return zero on success or the error
|
||||
number. If the operation is not supported, -1 is returned.
|
||||
|
||||
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,287 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
/* config.h. Generated 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. */
|
||||
/* #undef ENABLE_NLS */
|
||||
|
||||
/* 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 <iconv.h> header file. */
|
||||
#define HAVE_ICONV_H 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
|
||||
|
||||
/* 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 version of this package. */
|
||||
#define PACKAGE_VERSION " "
|
||||
|
||||
/* The size of a `int', as computed by sizeof. */
|
||||
#define SIZEOF_INT 4
|
||||
|
||||
/* The size of a `long', as computed by sizeof. */
|
||||
#define SIZEOF_LONG 8
|
||||
|
||||
/* 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 run-time.
|
||||
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' if <sys/types.h> does not define. */
|
||||
/* #undef off_t */
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||
/* #undef size_t */
|
|
@ -0,0 +1,449 @@
|
|||
/* This file is automatically generated. DO NOT EDIT! */
|
||||
/* Generated from: NetBSD: mknative-gcc,v 1.17 2006/05/15 22:03:03 mrg Exp */
|
||||
/* and from: NetBSD: mknative.common,v 1.7 2006/05/17 03:27:19 mrg Exp */
|
||||
|
||||
/* config.h. Generated 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 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 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 `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. */
|
||||
/* #undef HAVE_STPCPY */
|
||||
|
||||
/* Define to 1 if you have the `stpncpy' function. */
|
||||
/* #undef HAVE_STPNCPY */
|
||||
|
||||
/* 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. */
|
||||
/* #undef HAVE_STRNDUP */
|
||||
|
||||
/* 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 version of this package. */
|
||||
#define PACKAGE_VERSION ""
|
||||
|
||||
/* The size of a `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 to 1 if your processor stores words with the most significant byte
|
||||
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||
/* #undef WORDS_BIGENDIAN */
|
||||
|
||||
/* 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 `int' if <sys/types.h> does not define. */
|
||||
/* #undef pid_t */
|
||||
|
||||
/* Define to `unsigned long' if <sys/types.h> does not define. */
|
||||
/* #undef uintptr_t */
|
||||
|
||||
/* Define as `fork' if `vfork' does not work. */
|
||||
/* #undef vfork */
|
Loading…
Reference in New Issue