[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [LIBGCC/LIBGCOV PATCH v2] Port libgcov library to add PGO (Profile-Guided Optimization) support to Unikraft.



Hi Razvan,

Thanks a lot for the review.

Yeah, all the header files are generated including the gcov-iov.h file.

I will add a README.md file and check out your comments.

Thanks,
Alice

În sâm., 21 nov. 2020 la 17:57, Razvan Deaconescu <razvan.deaconescu@xxxxxxxxx> a scris:
Hi, Alice.

I tested this, together with the other patches for PGO and it works.

Are all header files generated? I saw the gcov-io.h file in the gcc
sources, not gcov-iov.h.

I recommend you add a README.md file that states the order in which
libraries are included in the Makefile, as this matters. Felipe did
something similar for libicu:
---
icu for Unikraft
===========

This is the port of icu as a Unikraft external library; it depends on
the following libraries that need to be added to `Makefile` in this
order:

* `pthreads`, e.g. `pthread-embedded`
* CXX standard library, e.g. `libunwind`, `compiler-rt`, `libcxxabi`, `libcxx`
* `libc`, e.g. `newlib`
---

See some minor comments below.

On Sun, May 24, 2020 at 6:10 PM Alice Suiu <alicesuiu17@xxxxxxxxx> wrote:
> This port also adds generated headers which are located in include/ directory.
> These headers were generated using configuration scripts from GCC sources.
> Several libraries (newlib, pthread-embedded, compiler-rt, libunwind, libcxx and libcxxabi)
> were needed in order to configure libgcov in Unikraft.
>
> Signed-off-by: Alice Suiu <alicesuiu17@xxxxxxxxx>
> ---
>  Config.uk                      |   11 +
>  Makefile.uk                    |   22 +
>  libgcov/include/auto-host.h    | 2419 ++++++++++++++++++++++++++++++++
>  libgcov/include/auto-target.h  |   80 ++
>  libgcov/include/gcov-iov.h     |    4 +
>  libgcov/include/gthr-default.h |  889 ++++++++++++
>  libgcov/include/libgcc_tm.h    |    6 +
>  libgcov/include/tconfig.h      |   10 +
>  libgcov/include/tm.h           |   52 +
>  9 files changed, 3493 insertions(+)
>  create mode 100644 libgcov/include/auto-host.h
>  create mode 100644 libgcov/include/auto-target.h
>  create mode 100644 libgcov/include/gcov-iov.h
>  create mode 100644 libgcov/include/gthr-default.h
>  create mode 100644 libgcov/include/libgcc_tm.h
>  create mode 100644 libgcov/include/tconfig.h
>  create mode 100644 libgcov/include/tm.h
>
> diff --git a/Config.uk b/Config.uk
> index 5aaca7c..111bdb2 100644
> --- a/Config.uk
> +++ b/Config.uk
> @@ -26,4 +26,15 @@ config LIBFFI
>  if LIBFFI
>  endif
>
> +config LIBGCOV
> +       bool "libgcov - A Profiling Library"
> +       default n
> +       select LIBPTHREAD_EMBEDDED
> +       select LIBCOMPILER_RT
> +       select LIBCXX
> +       select LIBCXXABI
> +       select LIBUNWIND
> +if LIBGCOV
> +endif
> +
>  endif
> diff --git a/Makefile.uk b/Makefile.uk
> index d5901e2..435b098 100644
> --- a/Makefile.uk
> +++ b/Makefile.uk
> @@ -42,6 +42,7 @@
>  $(eval $(call addlib_s,libgcc,$(CONFIG_LIBGCC)))
>  $(eval $(call addlib_s,libbacktrace,$(CONFIG_LIBBACKTRACE)))
>  $(eval $(call addlib_s,libffi,$(CONFIG_LIBFFI)))
> +$(eval $(call addlib_s,libgcov,$(CONFIG_LIBGCOV)))
>
>  ################################################################################
>  # Original sources
> @@ -70,6 +71,9 @@ CXXINCLUDES-$(CONFIG_LIBBACKTRACE) += -I$(LIBGCC_BASE)/libbacktrace/include
>  CINCLUDES-$(CONFIG_LIBFFI)   += -I$(LIBGCC_BASE)/libffi/include
>  CXXINCLUDES-$(CONFIG_LIBFFI) += -I$(LIBGCC_BASE)/libffi/include
>
> +CINCLUDES-$(CONFIG_LIBGCOV)   += -I$(LIBGCC_BASE)/libgcov/include
> +CXXINCLUDES-$(CONFIG_LIBGCOV) += -I$(LIBGCC_BASE)/libgcov/include
> +
>  ################################################################################
>  # libbacktrace code
>  ################################################################################
> @@ -119,3 +123,21 @@ LIBFFI_SRCS-y += $(LIBFFI_EXTRACTED)/src/raw_api.c
>  LIBFFI_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBFFI_EXTRACTED)/src/x86/ffi64.c
>  LIBFFI_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBFFI_EXTRACTED)/src/x86/unix64.S
>
> +################################################################################
> +# libgcov code
> +################################################################################
> +LIBGCOV_CINCLUDES-y = -I$(LIBGCC_BASE)/libgcov/include  -I$(LIBGCC_EXTRACTED)/include \
> +               -I$(LIBGCC_EXTRACTED)/gcc -I$(LIBGCC_EXTRACTED)/libgcc
> +

There should be a comment here telling about the -DL_gcov_... symbols
and why they are defined / added like this.

> +LIBGCOV_CFLAGS-y += -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector \
> +       -DHAVE_CC_TLS -DL_gcov_merge_add -DL_gcov_merge_single -DL_gcov_merge_ior -DL_gcov_merge_time_profile -DL_gcov_merge_icall_topn \
> +       -DL_gcov_interval_profiler -DL_gcov_interval_profiler_atomic -DL_gcov_pow2_profiler -DL_gcov_pow2_profiler_atomic \
> +       -DL_gcov_one_value_profiler -DL_gcov_one_value_profiler_atomic -DL_gcov_average_profiler -DL_gcov_average_profiler_atomic       \
> +       -DL_gcov_ior_profiler -DL_gcov_ior_profiler_atomic -DL_gcov_indirect_call_profiler_v2 -DL_gcov_time_profiler \
> +       -DL_gcov_indirect_call_topn_profiler -DL_gcov_dump -DL_gcov_flush -DL_gcov_fork -DL_gcov_execl -DL_gcov_execlp -DL_gcov_execle \

There is an extra blank and backspace at the end of the line that is
not required.

> +       -DL_gcov_execv -DL_gcov_execvp -DL_gcov_execve -DL_gcov_reset -DL_gcov \
> +
> +LIBGCOV_SRCS-y += $(LIBGCC_EXTRACTED)/libgcc/libgcov-merge.c
> +LIBGCOV_SRCS-y += $(LIBGCC_EXTRACTED)/libgcc/libgcov-profiler.c
> +LIBGCOV_SRCS-y += $(LIBGCC_EXTRACTED)/libgcc/libgcov-interface.c
> +LIBGCOV_SRCS-y += $(LIBGCC_EXTRACTED)/libgcc/libgcov-driver.c
> diff --git a/libgcov/include/auto-host.h b/libgcov/include/auto-host.h
> new file mode 100644
> index 0000000..9b81bf2
> --- /dev/null
> +++ b/libgcov/include/auto-host.h
> @@ -0,0 +1,2419 @@
> +/* auto-host.h.  Generated from config.in by configure.  */
> +/* config.in.  Generated from configure.ac by autoheader.  */
> +
> +/* Define if this compiler should be built as the offload target compiler. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ACCEL_COMPILER */
> +#endif
> +
> +
> +/* Define if building universal (internal helper macro) */
> +#ifndef USED_FOR_TARGET
> +/* #undef AC_APPLE_UNIVERSAL_BUILD */
> +#endif
> +
> +
> +/* Define to the assembler option to enable compressed debug sections. */
> +#ifndef USED_FOR_TARGET
> +#define AS_COMPRESS_DEBUG_OPTION ""
> +#endif
> +
> +
> +/* Define to the assembler option to disable compressed debug sections. */
> +#ifndef USED_FOR_TARGET
> +#define AS_NO_COMPRESS_DEBUG_OPTION ""
> +#endif
> +
> +
> +/* Define as the number of bits in a byte, if `limits.h' doesn't. */
> +#ifndef USED_FOR_TARGET
> +/* #undef CHAR_BIT */
> +#endif
> +
> +
> +/* Define to 0/1 if you want more run-time sanity checks. This one gets a grab
> +   bag of miscellaneous but relatively cheap checks. */
> +#ifndef USED_FOR_TARGET
> +#define CHECKING_P 0
> +#endif
> +
> +
> +/* Define 0/1 to force the choice for exception handling model. */
> +#ifndef USED_FOR_TARGET
> +/* #undef CONFIG_SJLJ_EXCEPTIONS */
> +#endif
> +
> +
> +/* Define to enable the use of a default assembler. */
> +#ifndef USED_FOR_TARGET
> +/* #undef DEFAULT_ASSEMBLER */
> +#endif
> +
> +
> +/* Define to enable the use of a default linker. */
> +#ifndef USED_FOR_TARGET
> +/* #undef DEFAULT_LINKER */
> +#endif
> +
> +
> +/* Define if you want to use __cxa_atexit, rather than atexit, to register C++
> +   destructors for local statics and global objects. This is essential for
> +   fully standards-compliant handling of destructors, but requires
> +   __cxa_atexit in libc. */
> +#ifndef USED_FOR_TARGET
> +#define DEFAULT_USE_CXA_ATEXIT 2
> +#endif
> +
> +
> +/* The default for -fdiagnostics-color option */
> +#ifndef USED_FOR_TARGET
> +#define DIAGNOSTICS_COLOR_DEFAULT DIAGNOSTICS_COLOR_AUTO
> +#endif
> +
> +
> +/* Define if you want assertions enabled. This is a cheap check. */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_ASSERT_CHECKING 1
> +#endif
> +
> +
> +/* Define to 1 to specify that we are using the BID decimal floating point
> +   format instead of DPD */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_DECIMAL_BID_FORMAT 1
> +#endif
> +
> +
> +/* Define to 1 to enable decimal float extension to C. */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_DECIMAL_FLOAT 1
> +#endif
> +
> +
> +/* Define if your target supports default PIE and it is enabled. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_DEFAULT_PIE */
> +#endif
> +
> +
> +/* Define if your target supports default stack protector and it is enabled.
> +   */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_DEFAULT_SSP */
> +#endif
> +
> +
> +/* Define if you want more run-time sanity checks for dataflow. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_DF_CHECKING */
> +#endif
> +
> +
> +/* Define to 0/1 if you want extra run-time checking that might affect code
> +   generation. */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_EXTRA_CHECKING 0
> +#endif
> +
> +
> +/* Define to 1 to enable fixed-point arithmetic extension to C. */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_FIXED_POINT 0
> +#endif
> +
> +
> +/* Define if you want fold checked that it never destructs its argument. This
> +   is quite expensive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_FOLD_CHECKING */
> +#endif
> +
> +
> +/* Define if you want the garbage collector to operate in maximally paranoid
> +   mode, validating the entire heap and collecting garbage at every
> +   opportunity. This is extremely expensive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_GC_ALWAYS_COLLECT */
> +#endif
> +
> +
> +/* Define if you want the garbage collector to do object poisoning and other
> +   memory allocation checks. This is quite expensive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_GC_CHECKING */
> +#endif
> +
> +
> +/* Define if you want operations on GIMPLE (the basic data structure of the
> +   high-level optimizers) to be checked for dynamic type safety at runtime.
> +   This is moderately expensive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_GIMPLE_CHECKING */
> +#endif
> +
> +
> +/* Define this to enable support for generating HSAIL. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_HSA */
> +#endif
> +
> +
> +/* Define if gcc should always pass --build-id to linker. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_LD_BUILDID */
> +#endif
> +
> +
> +/* Define to 1 to enable libquadmath support */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_LIBQUADMATH_SUPPORT 1
> +#endif
> +
> +
> +/* Define to enable LTO support. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_LTO */
> +#endif
> +
> +
> +/* Define to 1 if translation of program messages to the user's native
> +   language is requested. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_NLS */
> +#endif
> +
> +
> +/* Define this to enable support for offloading. */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_OFFLOADING 0
> +#endif
> +
> +
> +/* Define to enable plugin support. */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_PLUGIN 1
> +#endif
> +
> +
> +/* Define if you want all operations on RTL (the basic data structure of the
> +   optimizer and back end) to be checked for dynamic type safety at runtime.
> +   This is quite expensive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_RTL_CHECKING */
> +#endif
> +
> +
> +/* Define if you want RTL flag accesses to be checked against the RTL codes
> +   that are supported for each access macro. This is relatively cheap. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_RTL_FLAG_CHECKING */
> +#endif
> +
> +
> +/* Define if you want runtime assertions enabled. This is a cheap check. */
> +#define ENABLE_RUNTIME_CHECKING 1
> +
> +/* Define if you want all operations on trees (the basic data structure of the
> +   front ends) to be checked for dynamic type safety at runtime. This is
> +   moderately expensive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_TREE_CHECKING */
> +#endif
> +
> +
> +/* Define if you want all gimple types to be verified after gimplifiation.
> +   This is cheap. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_TYPES_CHECKING */
> +#endif
> +
> +
> +/* Define to get calls to the valgrind runtime enabled. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_VALGRIND_ANNOTATIONS */
> +#endif
> +
> +
> +/* Define if you want to run subprograms and generated programs through
> +   valgrind (a memory checker). This is extremely expensive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_VALGRIND_CHECKING */
> +#endif
> +
> +
> +/* Define 0/1 if vtable verification feature is enabled. */
> +#ifndef USED_FOR_TARGET
> +#define ENABLE_VTABLE_VERIFY 0
> +#endif
> +
> +
> +/* Define to 1 if installation paths should be looked up in the Windows
> +   Registry. Ignored on non-Windows hosts. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ENABLE_WIN32_REGISTRY */
> +#endif
> +
> +
> +/* Define to the name of a file containing a list of extra machine modes for
> +   this architecture. */
> +#ifndef USED_FOR_TARGET
> +#define EXTRA_MODES_FILE "config/i386/i386-modes.def"
> +#endif
> +
> +
> +/* Define to enable detailed memory allocation stats gathering. */
> +#ifndef USED_FOR_TARGET
> +#define GATHER_STATISTICS 0
> +#endif
> +
> +
> +/* Define to 1 if `TIOCGWINSZ' requires <sys/ioctl.h>. */
> +#ifndef USED_FOR_TARGET
> +#define GWINSZ_IN_SYS_IOCTL 1
> +#endif
> +
> +
> +/* mcontext_t fields start with __ */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAS_MCONTEXT_T_UNDERSCORES */
> +#endif
> +
> +
> +/* Define if your assembler supports architecture modifiers. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_ARCHITECTURE_MODIFIERS */
> +#endif
> +
> +
> +/* Define if your avr assembler supports --mlink-relax option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_AVR_MLINK_RELAX_OPTION */
> +#endif
> +
> +
> +/* Define if your avr assembler supports -mrmw option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_AVR_MRMW_OPTION */
> +#endif
> +
> +
> +/* Define if your assembler supports cmpb. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_CMPB */
> +#endif
> +
> +
> +/* Define to the level of your assembler's compressed debug section support.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_AS_COMPRESS_DEBUG no
> +#endif
> +
> +
> +/* Define if your assembler supports the DCI/ICI instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_DCI */
> +#endif
> +
> +
> +/* Define if your assembler supports the --debug-prefix-map option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_DEBUG_PREFIX_MAP */
> +#endif
> +
> +
> +/* Define if your assembler supports DFP instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_DFP */
> +#endif
> +
> +
> +/* Define if your assembler supports .module. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_DOT_MODULE */
> +#endif
> +
> +
> +/* Define if your assembler supports DSPR1 mult. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_DSPR1_MULT */
> +#endif
> +
> +
> +/* Define if your assembler supports .dtprelword. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_DTPRELWORD */
> +#endif
> +
> +
> +/* Define if your assembler supports dwarf2 .file/.loc directives, and
> +   preserves file table indices exactly as given. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_DWARF2_DEBUG_LINE */
> +#endif
> +
> +
> +/* Define if your assembler supports the R_PPC64_ENTRY relocation. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_ENTRY_MARKERS */
> +#endif
> +
> +
> +/* Define if your assembler supports explicit relocations. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_EXPLICIT_RELOCS */
> +#endif
> +
> +
> +/* Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_FMAF_HPC_VIS3 */
> +#endif
> +
> +
> +/* Define if your assembler supports fprnd. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_FPRND */
> +#endif
> +
> +
> +/* Define if your assembler supports the --gdwarf2 option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_GDWARF2_DEBUG_FLAG */
> +#endif
> +
> +
> +/* Define if your assembler supports .gnu_attribute. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_GNU_ATTRIBUTE */
> +#endif
> +
> +
> +/* Define true if the assembler supports '.long foo@GOTOFF'. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_AS_GOTOFF_IN_DATA 0
> +#endif
> +
> +
> +/* Define if your assembler supports the --gstabs option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_GSTABS_DEBUG_FLAG */
> +#endif
> +
> +
> +/* Define if your assembler supports the Sun syntax for cmov. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_CMOV_SUN_SYNTAX */
> +#endif
> +
> +
> +/* Define if your assembler supports the subtraction of symbols in different
> +   sections. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_DIFF_SECT_DELTA */
> +#endif
> +
> +
> +/* Define if your assembler supports the ffreep mnemonic. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_FFREEP */
> +#endif
> +
> +
> +/* Define if your assembler uses fildq and fistq mnemonics. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_FILDQ */
> +#endif
> +
> +
> +/* Define if your assembler uses filds and fists mnemonics. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_FILDS */
> +#endif
> +
> +
> +/* Define 0/1 if your assembler and linker support @GOT. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_AS_IX86_GOT32X 0
> +#endif
> +
> +
> +/* Define if your assembler supports HLE prefixes. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_HLE */
> +#endif
> +
> +
> +/* Define if your assembler supports interunit movq mnemonic. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_AS_IX86_INTERUNIT_MOVQ 0
> +#endif
> +
> +
> +/* Define if your assembler supports the .quad directive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_QUAD */
> +#endif
> +
> +
> +/* Define if the assembler supports 'rep <insn>, lock <insn>'. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_REP_LOCK_PREFIX */
> +#endif
> +
> +
> +/* Define if your assembler supports the sahf mnemonic in 64bit mode. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_SAHF */
> +#endif
> +
> +
> +/* Define if your assembler supports the swap suffix. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_SWAP */
> +#endif
> +
> +
> +/* Define if your assembler and linker support @tlsgdplt. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_TLSGDPLT */
> +#endif
> +
> +
> +/* Define to 1 if your assembler and linker support @tlsldm. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_AS_IX86_TLSLDM 0
> +#endif
> +
> +
> +/* Define to 1 if your assembler and linker support @tlsldmplt. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_AS_IX86_TLSLDMPLT 0
> +#endif
> +
> +
> +/* Define 0/1 if your assembler and linker support calling ___tls_get_addr via
> +   GOT. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_AS_IX86_TLS_GET_ADDR_GOT 0
> +#endif
> +
> +
> +/* Define if your assembler supports the 'ud2' mnemonic. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_IX86_UD2 */
> +#endif
> +
> +
> +/* Define if your assembler supports the lituse_jsrdirect relocation. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_JSRDIRECT_RELOCS */
> +#endif
> +
> +
> +/* Define if your assembler supports .sleb128 and .uleb128. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_AS_LEB128 0
> +#endif
> +
> +
> +/* Define if your assembler supports LEON instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_LEON */
> +#endif
> +
> +
> +/* Define if the assembler won't complain about a line such as # 0 "" 2. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_LINE_ZERO */
> +#endif
> +
> +
> +/* Define if your assembler supports ltoffx and ldxmov relocations. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_LTOFFX_LDXMOV_RELOCS */
> +#endif
> +
> +
> +/* Define if your assembler supports LWSYNC instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_LWSYNC */
> +#endif
> +
> +
> +/* Define if your assembler supports the -mabi option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_MABI_OPTION */
> +#endif
> +
> +
> +/* Define if your assembler supports .machine and .machinemode. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_MACHINE_MACHINEMODE */
> +#endif
> +
> +
> +/* Define if your assembler supports mfcr field. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_MFCRF */
> +#endif
> +
> +
> +/* Define if your assembler supports mffgpr and mftgpr. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_MFPGPR */
> +#endif
> +
> +
> +/* Define if your Mac OS X assembler supports the -mmacos-version-min option.
> +   */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_MMACOSX_VERSION_MIN_OPTION */
> +#endif
> +
> +
> +/* Define if the assembler understands -mnan=. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_NAN */
> +#endif
> +
> +
> +/* Define if your assembler supports the -no-mul-bug-abort option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_NO_MUL_BUG_ABORT_OPTION */
> +#endif
> +
> +
> +/* Define if the assembler understands -mno-shared. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_NO_SHARED */
> +#endif
> +
> +
> +/* Define if your assembler supports offsetable %lo(). */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_OFFSETABLE_LO10 */
> +#endif
> +
> +
> +/* Define if your assembler supports popcntb field. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_POPCNTB */
> +#endif
> +
> +
> +/* Define if your assembler supports POPCNTD instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_POPCNTD */
> +#endif
> +
> +
> +/* Define if your assembler supports POWER8 instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_POWER8 */
> +#endif
> +
> +
> +/* Define if your assembler supports POWER9 instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_POWER9 */
> +#endif
> +
> +
> +/* Define if your assembler supports .ref */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_REF */
> +#endif
> +
> +
> +/* Define if your assembler supports .register. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_REGISTER_PSEUDO_OP */
> +#endif
> +
> +
> +/* Define if your assembler supports R_PPC_REL16 relocs. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_REL16 */
> +#endif
> +
> +
> +/* Define if your assembler supports -relax option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_RELAX_OPTION */
> +#endif
> +
> +
> +/* Define if your assembler supports relocs needed by -fpic. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_SMALL_PIC_RELOCS */
> +#endif
> +
> +
> +/* Define if your assembler supports SPARC4 instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_SPARC4 */
> +#endif
> +
> +
> +/* Define if your assembler supports SPARC5 and VIS 4.0 instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_SPARC5_VIS4 */
> +#endif
> +
> +/* Define if your assembler supports SPARC6 instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_SPARC6 */
> +#endif
> +
> +/* Define if your assembler and linker support GOTDATA_OP relocs. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_SPARC_GOTDATA_OP */
> +#endif
> +
> +
> +/* Define if your assembler and linker support unaligned PC relative relocs.
> +   */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_SPARC_UA_PCREL */
> +#endif
> +
> +
> +/* Define if your assembler and linker support unaligned PC relative relocs
> +   against hidden symbols. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_SPARC_UA_PCREL_HIDDEN */
> +#endif
> +
> +
> +/* Define if your assembler supports .stabs. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_STABS_DIRECTIVE */
> +#endif
> +
> +
> +/* Define if your assembler and linker support thread-local storage. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_TLS */
> +#endif
> +
> +
> +/* Define if your assembler supports arg info for __tls_get_addr. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_TLS_MARKERS */
> +#endif
> +
> +
> +/* Define if your assembler supports VSX instructions. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_VSX */
> +#endif
> +
> +
> +/* Define if your assembler supports -xbrace_comment option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_AS_XBRACE_COMMENT_OPTION */
> +#endif
> +
> +
> +/* Define to 1 if you have the `atoq' function. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_ATOQ */
> +#endif
> +
> +
> +/* Define to 1 if you have the `clearerr_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_CLEARERR_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `clock' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_CLOCK 1
> +#endif
> +
> +
> +/* Define if <time.h> defines clock_t. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_CLOCK_T 1
> +#endif
> +
> +
> +/* Define 0/1 if your assembler and linker support COMDAT groups. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_COMDAT_GROUP 0
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'abort', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_ABORT 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'asprintf', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_ASPRINTF 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'atof', otherwise define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_ATOF 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'atol', otherwise define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_ATOL 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'atoll', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_ATOLL 1
> +#endif
> +
> +
> +/* Define to 1 if you have the declaration of `basename(const char*)', and to
> +   0 if you don't. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_BASENAME 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'calloc', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_CALLOC 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'clearerr_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_CLEARERR_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'clock', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_CLOCK 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'errno', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_ERRNO 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'feof_unlocked', otherwise define
> +   to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FEOF_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'ferror_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FERROR_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fflush_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FFLUSH_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'ffs', otherwise define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FFS 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fgetc_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FGETC_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fgets_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FGETS_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fileno_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FILENO_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fprintf_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FPRINTF_UNLOCKED 0
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fputc_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FPUTC_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fputs_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FPUTS_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fread_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FREAD_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'free', otherwise define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FREE 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'fwrite_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_FWRITE_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getchar_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETCHAR_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getcwd', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETCWD 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getc_unlocked', otherwise define
> +   to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETC_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getenv', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETENV 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getopt', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETOPT 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getpagesize', otherwise define
> +   to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETPAGESIZE 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getrlimit', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETRLIMIT 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getrusage', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETRUSAGE 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'getwd', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_GETWD 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'ldgetname', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_LDGETNAME 0
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'madvise', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_MADVISE 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'malloc', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_MALLOC 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'putchar_unlocked', otherwise
> +   define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_PUTCHAR_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'putc_unlocked', otherwise define
> +   to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_PUTC_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'realloc', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_REALLOC 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'sbrk', otherwise define to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_SBRK 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'setenv', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_SETENV 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'setrlimit', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_SETRLIMIT 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'sigaltstack', otherwise define
> +   to 0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_SIGALTSTACK 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'snprintf', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_SNPRINTF 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'stpcpy', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STPCPY 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'strnlen', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STRNLEN 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'strsignal', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STRSIGNAL 1
> +#endif
> +
> +
> +/* Define to 1 if you have the declaration of `strstr(const char*,const
> +   char*)', and to 0 if you don't. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STRSTR 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'strtol', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STRTOL 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'strtoll', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STRTOLL 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'strtoul', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STRTOUL 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'strtoull', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STRTOULL 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'strverscmp', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_STRVERSCMP 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'times', otherwise define to 0.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_TIMES 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'unsetenv', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_UNSETENV 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'vasprintf', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_VASPRINTF 1
> +#endif
> +
> +
> +/* Define to 1 if we found a declaration for 'vsnprintf', otherwise define to
> +   0. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DECL_VSNPRINTF 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <direct.h> header file. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_DIRECT_H */
> +#endif
> +
> +
> +/* Define to 1 if you have the <dlfcn.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_DLFCN_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <ext/hash_map> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_EXT_HASH_MAP 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <fcntl.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FCNTL_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `feof_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FEOF_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `ferror_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FERROR_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fflush_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FFLUSH_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fgetc_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FGETC_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fgets_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FGETS_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fileno_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FILENO_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fork' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FORK 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fprintf_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_FPRINTF_UNLOCKED */
> +#endif
> +
> +
> +/* Define to 1 if you have the `fputc_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FPUTC_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fputs_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FPUTS_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fread_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FREAD_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <ftw.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FTW_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `fwrite_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_FWRITE_UNLOCKED 1
> +#endif
> +
> +
> +/* Define if your assembler supports specifying the alignment of objects
> +   allocated using the GAS .comm command. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_ALIGNED_COMM */
> +#endif
> +
> +
> +/* Define if your assembler supports .balign and .p2align. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_BALIGN_AND_P2ALIGN */
> +#endif
> +
> +
> +/* Define 0/1 if your assembler supports CFI directives. */
> +#define HAVE_GAS_CFI_DIRECTIVE 0
> +
> +/* Define 0/1 if your assembler supports .cfi_personality. */
> +#define HAVE_GAS_CFI_PERSONALITY_DIRECTIVE 0
> +
> +/* Define 0/1 if your assembler supports .cfi_sections. */
> +#define HAVE_GAS_CFI_SECTIONS_DIRECTIVE 0
> +
> +/* Define if your assembler supports the .loc discriminator sub-directive. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_DISCRIMINATOR */
> +#endif
> +
> +
> +/* Define if your assembler supports @gnu_unique_object. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_GNU_UNIQUE_OBJECT */
> +#endif
> +
> +
> +/* Define if your assembler and linker support .hidden. */
> +/* #undef HAVE_GAS_HIDDEN */
> +
> +/* Define if your assembler supports .lcomm with an alignment field. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_LCOMM_WITH_ALIGNMENT */
> +#endif
> +
> +
> +/* Define if your assembler supports .literal16. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_LITERAL16 */
> +#endif
> +
> +
> +/* Define if your assembler supports specifying the maximum number of bytes to
> +   skip when using the GAS .p2align command. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_MAX_SKIP_P2ALIGN */
> +#endif
> +
> +
> +/* Define if your assembler supports the .set micromips directive */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_MICROMIPS */
> +#endif
> +
> +
> +/* Define if your assembler supports .nsubspa comdat option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_NSUBSPA_COMDAT */
> +#endif
> +
> +
> +/* Define if your assembler and linker support 32-bit section relative relocs
> +   via '.secrel32 label'. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_PE_SECREL32_RELOC */
> +#endif
> +
> +
> +/* Define if your assembler supports specifying the section flag e. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GAS_SECTION_EXCLUDE 0
> +#endif
> +
> +
> +/* Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GAS_SHF_MERGE 0
> +#endif
> +
> +
> +/* Define if your assembler supports .subsection and .subsection -1 starts
> +   emitting at the beginning of your section. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_SUBSECTION_ORDERING */
> +#endif
> +
> +
> +/* Define if your assembler supports .weak. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_WEAK */
> +#endif
> +
> +
> +/* Define if your assembler supports .weakref. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GAS_WEAKREF */
> +#endif
> +
> +
> +/* Define to 1 if you have the `getchar_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GETCHAR_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `getc_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GETC_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `getrlimit' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GETRLIMIT 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `getrusage' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GETRUSAGE 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `gettimeofday' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GETTIMEOFDAY 1
> +#endif
> +
> +
> +/* Define to 1 if using GNU as. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GNU_AS 1
> +#endif
> +
> +
> +/* Define if your system supports gnu indirect functions. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GNU_INDIRECT_FUNCTION 1
> +#endif
> +
> +
> +/* Define to 1 if using GNU ld. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_GNU_LD 1
> +#endif
> +
> +
> +/* Define if the gold linker supports split stack and is available as a
> +   non-default */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_GOLD_NON_DEFAULT_SPLIT_STACK */
> +#endif
> +
> +
> +/* Define if you have the iconv() function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_ICONV 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <iconv.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_ICONV_H 1
> +#endif
> +
> +
> +/* Define 0/1 if .init_array/.fini_array sections are available and working.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_INITFINI_ARRAY_SUPPORT 0
> +#endif
> +
> +
> +/* Define to 1 if the system has the type `intmax_t'. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_INTMAX_T 1
> +#endif
> +
> +
> +/* Define to 1 if the system has the type `intptr_t'. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_INTPTR_T 1
> +#endif
> +
> +
> +/* Define if you have a working <inttypes.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_INTTYPES_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `kill' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_KILL 1
> +#endif
> +
> +
> +/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LANGINFO_CODESET 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <langinfo.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LANGINFO_H 1
> +#endif
> +
> +
> +/* Define if your <locale.h> file defines LC_MESSAGES. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LC_MESSAGES 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <ldfcn.h> header file. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LDFCN_H */
> +#endif
> +
> +
> +/* Define if your linker supports --as-needed/--no-as-needed or equivalent
> +   options. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_AS_NEEDED */
> +#endif
> +
> +
> +/* Define if your linker supports -z bndplt */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_BNDPLT_SUPPORT */
> +#endif
> +
> +
> +/* Define if your linker supports --build-id. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_BUILDID */
> +#endif
> +
> +
> +/* Define if the linker supports clearing hardware capabilities via mapfile.
> +   */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_CLEARCAP */
> +#endif
> +
> +
> +/* Define to the level of your linker's compressed debug section support. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LD_COMPRESS_DEBUG 0
> +#endif
> +
> +
> +/* Define if your linker supports --demangle option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_DEMANGLE */
> +#endif
> +
> +
> +/* Define 0/1 if your linker supports CIE v3 in .eh_frame. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LD_EH_FRAME_CIEV3 0
> +#endif
> +
> +
> +/* Define if your linker supports .eh_frame_hdr. */
> +/* #undef HAVE_LD_EH_FRAME_HDR */
> +
> +/* Define if your linker supports garbage collection of sections in presence
> +   of EH frames. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_EH_GC_SECTIONS */
> +#endif
> +
> +
> +/* Define if your linker has buggy garbage collection of sections support when
> +   .text.startup.foo like sections are used. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_EH_GC_SECTIONS_BUG */
> +#endif
> +
> +
> +/* Define if your PowerPC64 linker supports a large TOC. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_LARGE_TOC */
> +#endif
> +
> +
> +/* Define if your PowerPC64 linker only needs function descriptor syms. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_NO_DOT_SYMS */
> +#endif
> +
> +
> +/* Define if your linker can relax absolute .eh_frame personality pointers
> +   into PC-relative form. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_PERSONALITY_RELAXATION */
> +#endif
> +
> +
> +/* Define if your linker supports PIE option. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_PIE */
> +#endif
> +
> +
> +/* Define 0/1 if your linker supports -pie option with copy reloc. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LD_PIE_COPYRELOC 0
> +#endif
> +
> +
> +/* Define if your PowerPC linker has .gnu.attributes long double support. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE */
> +#endif
> +
> +
> +/* Define if your linker supports --push-state/--pop-state */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_PUSHPOPSTATE_SUPPORT */
> +#endif
> +
> +
> +/* Define if your linker links a mix of read-only and read-write sections into
> +   a read-write section. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_RO_RW_SECTION_MIXING */
> +#endif
> +
> +
> +/* Define if your linker supports the *_sol2 emulations. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_SOL2_EMULATION */
> +#endif
> +
> +
> +/* Define if your linker supports -Bstatic/-Bdynamic or equivalent options. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_STATIC_DYNAMIC */
> +#endif
> +
> +
> +/* Define if your linker supports --sysroot. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_LD_SYSROOT */
> +#endif
> +
> +
> +/* Define to 1 if you have the <limits.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LIMITS_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <locale.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LOCALE_H 1
> +#endif
> +
> +
> +/* Define to 1 if the system has the type `long long'. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LONG_LONG 1
> +#endif
> +
> +
> +/* Define to 1 if the system has the type `long long int'. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LONG_LONG_INT 1
> +#endif
> +
> +
> +/* Define to the level of your linker's plugin support. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_LTO_PLUGIN 0
> +#endif
> +
> +
> +/* Define to 1 if you have the `madvise' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_MADVISE 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <malloc.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_MALLOC_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `mbstowcs' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_MBSTOWCS 1
> +#endif
> +
> +
> +/* Define if valgrind's memcheck.h header is installed. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_MEMCHECK_H */
> +#endif
> +
> +
> +/* Define to 1 if you have the <memory.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_MEMORY_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `mmap' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_MMAP 1
> +#endif
> +
> +
> +/* Define if mmap with MAP_ANON(YMOUS) works. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_MMAP_ANON 1
> +#endif
> +
> +
> +/* Define if mmap of /dev/zero works. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_MMAP_DEV_ZERO 1
> +#endif
> +
> +
> +/* Define if read-only mmap of a plain file works. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_MMAP_FILE 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `nl_langinfo' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_NL_LANGINFO 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `popen' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_POPEN 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `putchar_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_PUTCHAR_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `putc_unlocked' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_PUTC_UNLOCKED 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `setlocale' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SETLOCALE 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `setrlimit' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SETRLIMIT 1
> +#endif
> +
> +
> +/* Define if the system-provided CRTs are present on Solaris. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_SOLARIS_CRTS */
> +#endif
> +
> +
> +/* Define to 1 if you have the <stddef.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_STDDEF_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <stdint.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_STDINT_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <stdlib.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_STDLIB_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <strings.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_STRINGS_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <string.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_STRING_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `strsignal' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_STRSIGNAL 1
> +#endif
> +
> +
> +/* Define if <sys/times.h> defines struct tms. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_STRUCT_TMS 1
> +#endif
> +
> +
> +/* Define if <utility> defines std::swap. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SWAP_IN_UTILITY 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `sysconf' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYSCONF 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <sys/file.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_FILE_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <sys/mman.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_MMAN_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <sys/param.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_PARAM_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <sys/resource.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_RESOURCE_H 1
> +#endif
> +
> +
> +/* Define if your target C library provides sys/sdt.h */
> +/* #undef HAVE_SYS_SDT_H */
> +
> +/* Define to 1 if you have the <sys/stat.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_STAT_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <sys/times.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_TIMES_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <sys/time.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_TIME_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <sys/types.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_TYPES_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_SYS_WAIT_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `times' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_TIMES 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <time.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_TIME_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <tr1/unordered_map> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_TR1_UNORDERED_MAP 1
> +#endif
> +
> +
> +/* Define to 1 if the system has the type `uintmax_t'. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_UINTMAX_T 1
> +#endif
> +
> +
> +/* Define to 1 if the system has the type `uintptr_t'. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_UINTPTR_T 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <unistd.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_UNISTD_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <unordered_map> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_UNORDERED_MAP 1
> +#endif
> +
> +
> +/* Define to 1 if the system has the type `unsigned long long int'. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_UNSIGNED_LONG_LONG_INT 1
> +#endif
> +
> +
> +/* Define if valgrind's valgrind/memcheck.h header is installed. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_VALGRIND_MEMCHECK_H */
> +#endif
> +
> +
> +/* Define to 1 if you have the `vfork' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_VFORK 1
> +#endif
> +
> +
> +/* Define to 1 if you have the <vfork.h> header file. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_VFORK_H */
> +#endif
> +
> +
> +/* Define to 1 if you have the <wchar.h> header file. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_WCHAR_H 1
> +#endif
> +
> +
> +/* Define to 1 if you have the `wcswidth' function. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_WCSWIDTH 1
> +#endif
> +
> +
> +/* Define to 1 if `fork' works. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_WORKING_FORK 1
> +#endif
> +
> +
> +/* Define this macro if mbstowcs does not crash when its first argument is
> +   NULL. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_WORKING_MBSTOWCS 1
> +#endif
> +
> +
> +/* Define to 1 if `vfork' works. */
> +#ifndef USED_FOR_TARGET
> +#define HAVE_WORKING_VFORK 1
> +#endif
> +
> +
> +/* Define if your assembler supports AIX debug frame section label reference.
> +   */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_XCOFF_DWARF_EXTRAS */
> +#endif
> +
> +
> +/* Define if isl is in use. */
> +#ifndef USED_FOR_TARGET
> +/* #undef HAVE_isl */
> +#endif
> +
> +
> +/* Define if F_SETLKW supported by fcntl. */
> +#ifndef USED_FOR_TARGET
> +#define HOST_HAS_F_SETLKW 1
> +#endif
> +
> +
> +/* Define as const if the declaration of iconv() needs const. */
> +#ifndef USED_FOR_TARGET
> +#define ICONV_CONST
> +#endif
> +
> +
> +/* Define if int64_t uses long as underlying type. */
> +#ifndef USED_FOR_TARGET
> +#define INT64_T_IS_LONG 1
> +#endif
> +
> +
> +/* Define to 1 if ld64 supports '-export_dynamic'. */
> +#ifndef USED_FOR_TARGET
> +/* #undef LD64_HAS_EXPORT_DYNAMIC */
> +#endif
> +
> +
> +/* Define to ld64 version. */
> +#ifndef USED_FOR_TARGET
> +/* #undef LD64_VERSION */
> +#endif
> +
> +
> +/* Define to the linker option to ignore unused dependencies. */
> +#ifndef USED_FOR_TARGET
> +/* #undef LD_AS_NEEDED_OPTION */
> +#endif
> +
> +
> +/* Define to the linker option to enable compressed debug sections. */
> +#ifndef USED_FOR_TARGET
> +#define LD_COMPRESS_DEBUG_OPTION ""
> +#endif
> +
> +
> +/* Define to the linker option to enable use of shared objects. */
> +#ifndef USED_FOR_TARGET
> +/* #undef LD_DYNAMIC_OPTION */
> +#endif
> +
> +
> +/* Define to the linker option to keep unused dependencies. */
> +#ifndef USED_FOR_TARGET
> +/* #undef LD_NO_AS_NEEDED_OPTION */
> +#endif
> +
> +
> +/* Define to the linker option to disable use of shared objects. */
> +#ifndef USED_FOR_TARGET
> +/* #undef LD_STATIC_OPTION */
> +#endif
> +
> +
> +/* The linker hash style */
> +#ifndef USED_FOR_TARGET
> +/* #undef LINKER_HASH_STYLE */
> +#endif
> +
> +
> +/* Define to the name of the LTO plugin DSO that must be passed to the
> +   linker's -plugin=LIB option. */
> +#ifndef USED_FOR_TARGET
> +#define LTOPLUGINSONAME "liblto_plugin.so"
> +#endif
> +
> +
> +/* Define to the sub-directory in which libtool stores uninstalled libraries.
> +   */
> +#ifndef USED_FOR_TARGET
> +#define LT_OBJDIR ".libs/"
> +#endif
> +
> +
> +/* Define if host mkdir takes a single argument. */
> +#ifndef USED_FOR_TARGET
> +/* #undef MKDIR_TAKES_ONE_ARG */
> +#endif
> +
> +
> +/* Define to offload targets, separated by commas. */
> +#ifndef USED_FOR_TARGET
> +#define OFFLOAD_TARGETS ""
> +#endif
> +
> +
> +/* Define to the address where bug reports for this package should be sent. */
> +#ifndef USED_FOR_TARGET
> +#define PACKAGE_BUGREPORT ""
> +#endif
> +
> +
> +/* Define to the full name of this package. */
> +#ifndef USED_FOR_TARGET
> +#define PACKAGE_NAME ""
> +#endif
> +
> +
> +/* Define to the full name and version of this package. */
> +#ifndef USED_FOR_TARGET
> +#define PACKAGE_STRING ""
> +#endif
> +
> +
> +/* Define to the one symbol short name of this package. */
> +#ifndef USED_FOR_TARGET
> +#define PACKAGE_TARNAME ""
> +#endif
> +
> +
> +/* Define to the home page for this package. */
> +#ifndef USED_FOR_TARGET
> +#define PACKAGE_URL ""
> +#endif
> +
> +
> +/* Define to the version of this package. */
> +#ifndef USED_FOR_TARGET
> +#define PACKAGE_VERSION ""
> +#endif
> +
> +
> +/* Specify plugin linker */
> +#ifndef USED_FOR_TARGET
> +#define PLUGIN_LD_SUFFIX ""
> +#endif
> +
> +
> +/* Define to .TOC. alignment forced by your linker. */
> +#ifndef USED_FOR_TARGET
> +/* #undef POWERPC64_TOC_POINTER_ALIGNMENT */
> +#endif
> +
> +
> +/* Define to PREFIX/include if cpp should also search that directory. */
> +#ifndef USED_FOR_TARGET
> +/* #undef PREFIX_INCLUDE_DIR */
> +#endif
> +
> +
> +/* The size of `int', as computed by sizeof. */
> +#ifndef USED_FOR_TARGET
> +#define SIZEOF_INT 4
> +#endif
> +
> +
> +/* The size of `long', as computed by sizeof. */
> +#ifndef USED_FOR_TARGET
> +#define SIZEOF_LONG 8
> +#endif
> +
> +
> +/* The size of `long long', as computed by sizeof. */
> +#ifndef USED_FOR_TARGET
> +#define SIZEOF_LONG_LONG 8
> +#endif
> +
> +
> +/* The size of `short', as computed by sizeof. */
> +#ifndef USED_FOR_TARGET
> +#define SIZEOF_SHORT 2
> +#endif
> +
> +
> +/* The size of `void *', as computed by sizeof. */
> +#ifndef USED_FOR_TARGET
> +#define SIZEOF_VOID_P 8
> +#endif
> +
> +
> +/* Define to 1 if you have the ANSI C header files. */
> +#ifndef USED_FOR_TARGET
> +#define STDC_HEADERS 1
> +#endif
> +
> +
> +/* Define if you can safely include both <string.h> and <strings.h>. */
> +#ifndef USED_FOR_TARGET
> +#define STRING_WITH_STRINGS 1
> +#endif
> +
> +
> +/* Define if TFmode long double should be the default */
> +#ifndef USED_FOR_TARGET
> +/* #undef TARGET_DEFAULT_LONG_DOUBLE_128 */
> +#endif
> +
> +
> +/* Define if your target C library provides the `dl_iterate_phdr' function. */
> +/* #undef TARGET_DL_ITERATE_PHDR */
> +
> +/* GNU C Library major version number used on the target, or 0. */
> +#ifndef USED_FOR_TARGET
> +#define TARGET_GLIBC_MAJOR 2
> +#endif
> +
> +
> +/* GNU C Library minor version number used on the target, or 0. */
> +#ifndef USED_FOR_TARGET
> +#define TARGET_GLIBC_MINOR 27
> +#endif
> +
> +
> +/* Define if your target C Library provides the AT_HWCAP value in the TCB */
> +#ifndef USED_FOR_TARGET
> +/* #undef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB */
> +#endif
> +
> +
> +/* Define if your target C library provides stack protector support */
> +#ifndef USED_FOR_TARGET
> +#define TARGET_LIBC_PROVIDES_SSP 1
> +#endif
> +
> +
> +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
> +#ifndef USED_FOR_TARGET
> +#define TIME_WITH_SYS_TIME 1
> +#endif
> +
> +
> +/* Define to the flag used to mark TLS sections if the default (`T') doesn't
> +   work. */
> +#ifndef USED_FOR_TARGET
> +/* #undef TLS_SECTION_ASM_FLAG */
> +#endif
> +
> +
> +/* Define if your assembler mis-optimizes .eh_frame data. */
> +#ifndef USED_FOR_TARGET
> +/* #undef USE_AS_TRADITIONAL_FORMAT */
> +#endif
> +
> +
> +/* Define if you want to generate code by default that assumes that the Cygwin
> +   DLL exports wrappers to support libstdc++ function replacement. */
> +#ifndef USED_FOR_TARGET
> +/* #undef USE_CYGWIN_LIBSTDCXX_WRAPPERS */
> +#endif
> +
> +
> +/* Define to 1 if the 'long long' type is wider than 'long' but still
> +   efficiently supported by the host hardware. */
> +#ifndef USED_FOR_TARGET
> +/* #undef USE_LONG_LONG_FOR_WIDEST_FAST_INT */
> +#endif
> +
> +
> +/* Define if we should use leading underscore on 64 bit mingw targets */
> +#ifndef USED_FOR_TARGET
> +/* #undef USE_MINGW64_LEADING_UNDERSCORES */
> +#endif
> +
> +
> +/* Enable extensions on AIX 3, Interix.  */
> +#ifndef _ALL_SOURCE
> +# define _ALL_SOURCE 1
> +#endif
> +/* Enable GNU extensions on systems that have them.  */
> +#ifndef _GNU_SOURCE
> +# define _GNU_SOURCE 1
> +#endif
> +/* Enable threading extensions on Solaris.  */
> +#ifndef _POSIX_PTHREAD_SEMANTICS
> +# define _POSIX_PTHREAD_SEMANTICS 1
> +#endif
> +/* Enable extensions on HP NonStop.  */
> +#ifndef _TANDEM_SOURCE
> +# define _TANDEM_SOURCE 1
> +#endif
> +/* Enable general extensions on Solaris.  */
> +#ifndef __EXTENSIONS__
> +# define __EXTENSIONS__ 1
> +#endif
> +
> +
> +/* Define to be the last component of the Windows registry key under which to
> +   look for installation paths. The full key used will be
> +   HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
> +   The default is the GCC version number. */
> +#ifndef USED_FOR_TARGET
> +/* #undef WIN32_REGISTRY_KEY */
> +#endif
> +
> +
> +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
> +   significant byte first (like Motorola and SPARC, unlike Intel). */
> +#if defined AC_APPLE_UNIVERSAL_BUILD
> +# if defined __BIG_ENDIAN__
> +#  define WORDS_BIGENDIAN 1
> +# endif
> +#else
> +# ifndef WORDS_BIGENDIAN
> +/* #  undef WORDS_BIGENDIAN */
> +# endif
> +#endif
> +
> +/* Number of bits in a file offset, on hosts where this is settable. */
> +#ifndef USED_FOR_TARGET
> +/* #undef _FILE_OFFSET_BITS */
> +#endif
> +
> +
> +/* Define for large files, on AIX-style hosts. */
> +#ifndef USED_FOR_TARGET
> +/* #undef _LARGE_FILES */
> +#endif
> +
> +
> +/* Define to 1 if on MINIX. */
> +#ifndef USED_FOR_TARGET
> +/* #undef _MINIX */
> +#endif
> +
> +
> +/* Define to 2 if the system does not provide POSIX.1 features except with
> +   this defined. */
> +#ifndef USED_FOR_TARGET
> +/* #undef _POSIX_1_SOURCE */
> +#endif
> +
> +
> +/* Define to 1 if you need to in order for `stat' and other things to work. */
> +#ifndef USED_FOR_TARGET
> +/* #undef _POSIX_SOURCE */
> +#endif
> +
> +
> +/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
> +   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
> +   #define below would cause a syntax error. */
> +#ifndef USED_FOR_TARGET
> +/* #undef _UINT32_T */
> +#endif
> +
> +
> +/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
> +   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
> +   #define below would cause a syntax error. */
> +#ifndef USED_FOR_TARGET
> +/* #undef _UINT64_T */
> +#endif
> +
> +
> +/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
> +   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
> +   #define below would cause a syntax error. */
> +#ifndef USED_FOR_TARGET
> +/* #undef _UINT8_T */
> +#endif
> +
> +
> +/* Define to `char *' if <sys/types.h> does not define. */
> +#ifndef USED_FOR_TARGET
> +/* #undef caddr_t */
> +#endif
> +
> +
> +/* Define to `__inline__' or `__inline' if that's what the C compiler
> +   calls it, or to nothing if 'inline' is not supported under any name.  */
> +#ifndef __cplusplus
> +/* #undef inline */
> +#endif
> +
> +/* Define to the type of a signed integer type of width exactly 16 bits if
> +   such a type exists and the standard includes do not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef int16_t */
> +#endif
> +
> +
> +/* Define to the type of a signed integer type of width exactly 32 bits if
> +   such a type exists and the standard includes do not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef int32_t */
> +#endif
> +
> +
> +/* Define to the type of a signed integer type of width exactly 64 bits if
> +   such a type exists and the standard includes do not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef int64_t */
> +#endif
> +
> +
> +/* Define to the type of a signed integer type of width exactly 8 bits if such
> +   a type exists and the standard includes do not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef int8_t */
> +#endif
> +
> +
> +/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
> +   not define. */
> +#ifndef USED_FOR_TARGET
> +/* #undef intmax_t */
> +#endif
> +
> +
> +/* Define to the type of a signed integer type wide enough to hold a pointer,
> +   if such a type exists, and if the system does not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef intptr_t */
> +#endif
> +
> +
> +/* Define to `int' if <sys/types.h> does not define. */
> +#ifndef USED_FOR_TARGET
> +/* #undef pid_t */
> +#endif
> +
> +
> +/* Define to `long' if <sys/resource.h> doesn't define. */
> +#ifndef USED_FOR_TARGET
> +/* #undef rlim_t */
> +#endif
> +
> +
> +/* Define to `int' if <sys/types.h> does not define. */
> +#ifndef USED_FOR_TARGET
> +/* #undef ssize_t */
> +#endif
> +
> +
> +/* Define to the type of an unsigned integer type of width exactly 16 bits if
> +   such a type exists and the standard includes do not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef uint16_t */
> +#endif
> +
> +
> +/* Define to the type of an unsigned integer type of width exactly 32 bits if
> +   such a type exists and the standard includes do not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef uint32_t */
> +#endif
> +
> +
> +/* Define to the type of an unsigned integer type of width exactly 64 bits if
> +   such a type exists and the standard includes do not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef uint64_t */
> +#endif
> +
> +
> +/* Define to the type of an unsigned integer type of width exactly 8 bits if
> +   such a type exists and the standard includes do not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef uint8_t */
> +#endif
> +
> +
> +/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
> +   do not define. */
> +#ifndef USED_FOR_TARGET
> +/* #undef uintmax_t */
> +#endif
> +
> +
> +/* Define to the type of an unsigned integer type wide enough to hold a
> +   pointer, if such a type exists, and if the system does not define it. */
> +#ifndef USED_FOR_TARGET
> +/* #undef uintptr_t */
> +#endif
> +
> +
> +/* Define as `fork' if `vfork' does not work. */
> +#ifndef USED_FOR_TARGET
> +/* #undef vfork */
> +#endif
> +
> diff --git a/libgcov/include/auto-target.h b/libgcov/include/auto-target.h
> new file mode 100644
> index 0000000..1ab0d1b
> --- /dev/null
> +++ b/libgcov/include/auto-target.h
> @@ -0,0 +1,80 @@
> +/* auto-target.h.  Generated from config.in by configure.  */
> +/* config.in.  Generated from configure.ac by autoheader.  */
> +
> +/* Define to 1 if the target assembler supports thread-local storage. */
> +/* #undef HAVE_CC_TLS */
> +
> +/* Define to 1 if you have the <ftw.h> header file. */
> +#define HAVE_FTW_H 1
> +
> +/* Define if _Unwind_GetIPInfo is available. */
> +#define HAVE_GETIPINFO 1
> +
> +/* Define if the compiler supports init priority. */
> +#define HAVE_INIT_PRIORITY 1
> +
> +/* Define to 1 if you have the <inttypes.h> header file. */
> +#define HAVE_INTTYPES_H 1
> +
> +/* Define to 1 if you have the <memory.h> header file. */
> +#define HAVE_MEMORY_H 1
> +
> +/* Define if the system-provided CRTs are present on Solaris. */
> +/* #undef HAVE_SOLARIS_CRTS */
> +
> +/* Define to 1 if you have the <stdint.h> header file. */
> +#define HAVE_STDINT_H 1
> +
> +/* Define to 1 if you have the <stdlib.h> header file. */
> +#define HAVE_STDLIB_H 1
> +
> +/* Define to 1 if you have the <strings.h> header file. */
> +#define HAVE_STRINGS_H 1
> +
> +/* Define to 1 if you have the <string.h> header file. */
> +#define HAVE_STRING_H 1
> +
> +/* Define to 1 if you have the <sys/stat.h> header file. */
> +#define HAVE_SYS_STAT_H 1
> +
> +/* Define to 1 if you have the <sys/types.h> header file. */
> +#define HAVE_SYS_TYPES_H 1
> +
> +/* Define to 1 if you have the <unistd.h> header file. */
> +#define HAVE_UNISTD_H 1
> +
> +/* Define to the address where bug reports for this package should be sent. */
> +#define PACKAGE_BUGREPORT ""
> +
> +/* Define to the full name of this package. */
> +#define PACKAGE_NAME "GNU C Runtime Library"
> +
> +/* Define to the full name and version of this package. */
> +#define PACKAGE_STRING "GNU C Runtime Library 1.0"
> +
> +/* Define to the one symbol short name of this package. */
> +#define PACKAGE_TARNAME "libgcc"
> +
> +/* Define to the home page for this package. */
> +#define PACKAGE_URL "http://www.gnu.org/software/libgcc/"
> +
> +/* Define to the version of this package. */
> +#define PACKAGE_VERSION "1.0"
> +
> +/* The size of `double', as computed by sizeof. */
> +#define SIZEOF_DOUBLE 8
> +
> +/* The size of `long double', as computed by sizeof. */
> +#define SIZEOF_LONG_DOUBLE 16
> +
> +/* Define to 1 if you have the ANSI C header files. */
> +#define STDC_HEADERS 1
> +
> +/* Define to 1 if the target use emutls for thread-local storage. */
> +/* #undef USE_EMUTLS */
> +
> +/* Number of bits in a file offset, on hosts where this is settable. */
> +/* #undef _FILE_OFFSET_BITS */
> +
> +/* Define for large files, on AIX-style hosts. */
> +/* #undef _LARGE_FILES */
> diff --git a/libgcov/include/gcov-iov.h b/libgcov/include/gcov-iov.h
> new file mode 100644
> index 0000000..4f4f2f5
> --- /dev/null
> +++ b/libgcov/include/gcov-iov.h
> @@ -0,0 +1,4 @@
> +/* Generated automatically by the program `build/gcov-iov'
> +   from `7.5.0 (7 5) and  (*)'.  */
> +
> +#define GCOV_VERSION ((gcov_unsigned_t)0x4137352a)  /* A75* */
> diff --git a/libgcov/include/gthr-default.h b/libgcov/include/gthr-default.h
> new file mode 100644
> index 0000000..a54a32e
> --- /dev/null
> +++ b/libgcov/include/gthr-default.h
> @@ -0,0 +1,889 @@
> +/* Threads compatibility routines for libgcc2 and libobjc.  */
> +/* Compile this one with gcc.  */
> +/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC is free software; you can redistribute it and/or modify it under
> +the terms of the GNU General Public License as published by the Free
> +Software Foundation; either version 3, or (at your option) any later
> +version.
> +
> +GCC is distributed in the hope that it will be useful, but WITHOUT ANY
> +WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +for more details.
> +
> +Under Section 7 of GPL version 3, you are granted additional
> +permissions described in the GCC Runtime Library Exception, version
> +3.1, as published by the Free Software Foundation.
> +
> +You should have received a copy of the GNU General Public License and
> +a copy of the GCC Runtime Library Exception along with this program;
> +see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
> +<http://www.gnu.org/licenses/>.  */
> +
> +#ifndef GCC_GTHR_POSIX_H
> +#define GCC_GTHR_POSIX_H
> +
> +/* POSIX threads specific definitions.
> +   Easy, since the interface is just one-to-one mapping.  */
> +
> +#define __GTHREADS 1
> +#define __GTHREADS_CXX0X 1
> +
> +#include <pthread.h>
> +
> +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \
> +     || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK))
> +# include <unistd.h>
> +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0
> +#  define _GTHREAD_USE_MUTEX_TIMEDLOCK 1
> +# else
> +#  define _GTHREAD_USE_MUTEX_TIMEDLOCK 0
> +# endif
> +#endif
> +
> +typedef pthread_t __gthread_t;
> +typedef pthread_key_t __gthread_key_t;
> +typedef pthread_once_t __gthread_once_t;
> +typedef pthread_mutex_t __gthread_mutex_t;
> +typedef pthread_mutex_t __gthread_recursive_mutex_t;
> +typedef pthread_cond_t __gthread_cond_t;
> +typedef struct timespec __gthread_time_t;
> +
> +/* POSIX like conditional variables are supported.  Please look at comments
> +   in gthr.h for details. */
> +#define __GTHREAD_HAS_COND     1
> +
> +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
> +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
> +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
> +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
> +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER
> +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
> +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
> +#else
> +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
> +#endif
> +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
> +#define __GTHREAD_TIME_INIT {0,0}
> +
> +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC
> +# undef __GTHREAD_MUTEX_INIT
> +#endif
> +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC
> +# undef __GTHREAD_RECURSIVE_MUTEX_INIT
> +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION
> +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
> +#endif
> +#ifdef _GTHREAD_USE_COND_INIT_FUNC
> +# undef __GTHREAD_COND_INIT
> +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function
> +#endif
> +
> +#if SUPPORTS_WEAK && GTHREAD_USE_WEAK
> +# ifndef __gthrw_pragma
> +#  define __gthrw_pragma(pragma)
> +# endif
> +# define __gthrw2(name,name2,type) \
> +  static __typeof(type) name __attribute__ ((__weakref__(#name2))); \
> +  __gthrw_pragma(weak type)
> +# define __gthrw_(name) __gthrw_ ## name
> +#else
> +# define __gthrw2(name,name2,type)
> +# define __gthrw_(name) name
> +#endif
> +
> +/* Typically, __gthrw_foo is a weak reference to symbol foo.  */
> +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
> +
> +__gthrw(pthread_once)
> +__gthrw(pthread_getspecific)
> +__gthrw(pthread_setspecific)
> +
> +__gthrw(pthread_create)
> +__gthrw(pthread_join)
> +__gthrw(pthread_equal)
> +__gthrw(pthread_self)
> +__gthrw(pthread_detach)
> +#ifndef __BIONIC__
> +__gthrw(pthread_cancel)
> +#endif
> +__gthrw(sched_yield)
> +
> +__gthrw(pthread_mutex_lock)
> +__gthrw(pthread_mutex_trylock)
> +#if _GTHREAD_USE_MUTEX_TIMEDLOCK
> +__gthrw(pthread_mutex_timedlock)
> +#endif
> +__gthrw(pthread_mutex_unlock)
> +__gthrw(pthread_mutex_init)
> +__gthrw(pthread_mutex_destroy)
> +
> +__gthrw(pthread_cond_init)
> +__gthrw(pthread_cond_broadcast)
> +__gthrw(pthread_cond_signal)
> +__gthrw(pthread_cond_wait)
> +__gthrw(pthread_cond_timedwait)
> +__gthrw(pthread_cond_destroy)
> +
> +__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.  */
> +__gthrw(pthread_exit)
> +#ifdef _POSIX_PRIORITY_SCHEDULING
> +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
> +__gthrw(sched_get_priority_max)
> +__gthrw(sched_get_priority_min)
> +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
> +#endif /* _POSIX_PRIORITY_SCHEDULING */
> +__gthrw(pthread_attr_destroy)
> +__gthrw(pthread_attr_init)
> +__gthrw(pthread_attr_setdetachstate)
> +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
> +__gthrw(pthread_getschedparam)
> +__gthrw(pthread_setschedparam)
> +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
> +#endif /* _LIBOBJC || _LIBOBJC_WEAK */
> +
> +#if SUPPORTS_WEAK && GTHREAD_USE_WEAK
> +
> +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if
> +   -pthreads is not specified.  The functions are dummies and most return an
> +   error value.  However pthread_once returns 0 without invoking the routine
> +   it is passed so we cannot pretend that the interface is active if -pthreads
> +   is not specified.  On Solaris 2.5.1, the interface is not exposed at all so
> +   we need to play the usual game with weak symbols.  On Solaris 10 and up, a
> +   working interface is always exposed.  On FreeBSD 6 and later, libc also
> +   exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up
> +   to 9 does.  FreeBSD >= 700014 even provides a pthread_cancel stub in libc,
> +   which means the alternate __gthread_active_p below cannot be used there.  */
> +
> +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__))
> +
> +static volatile int __gthread_active = -1;
> +
> +static void
> +__gthread_trigger (void)
> +{
> +  __gthread_active = 1;
> +}
> +
> +static inline int
> +__gthread_active_p (void)
> +{
> +  static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER;
> +  static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT;
> +
> +  /* Avoid reading __gthread_active twice on the main code path.  */
> +  int __gthread_active_latest_value = __gthread_active;
> +
> +  /* This test is not protected to avoid taking a lock on the main code
> +     path so every update of __gthread_active in a threaded program must
> +     be atomic with regard to the result of the test.  */
> +  if (__builtin_expect (__gthread_active_latest_value < 0, 0))
> +    {
> +      if (__gthrw_(pthread_once))
> +       {
> +         /* If this really is a threaded program, then we must ensure that
> +            __gthread_active has been set to 1 before exiting this block.  */
> +         __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex);
> +         __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger);
> +         __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex);
> +       }
> +
> +      /* Make sure we'll never enter this block again.  */
> +      if (__gthread_active < 0)
> +       __gthread_active = 0;
> +
> +      __gthread_active_latest_value = __gthread_active;
> +    }
> +
> +  return __gthread_active_latest_value != 0;
> +}
> +
> +#else /* neither FreeBSD nor Solaris */
> +
> +/* For a program to be multi-threaded the only thing that it certainly must
> +   be using is pthread_create.  However, there may be other libraries that
> +   intercept pthread_create with their own definitions to wrap pthreads
> +   functionality for some purpose.  In those cases, pthread_create being
> +   defined might not necessarily mean that libpthread is actually linked
> +   in.
> +
> +   For the GNU C library, we can use a known internal name.  This is always
> +   available in the ABI, but no other library would define it.  That is
> +   ideal, since any public pthread function might be intercepted just as
> +   pthread_create might be.  __pthread_key_create is an "internal"
> +   implementation symbol, but it is part of the public exported ABI.  Also,
> +   it's among the symbols that the static libpthread.a always links in
> +   whenever pthread_create is used, so there is no danger of a false
> +   negative result in any statically-linked, multi-threaded program.
> +
> +   For others, we choose pthread_cancel as a function that seems unlikely
> +   to be redefined by an interceptor library.  The bionic (Android) C
> +   library does not provide pthread_cancel, so we do use pthread_create
> +   there (and interceptor libraries lose).  */
> +
> +#ifdef __GLIBC__
> +__gthrw2(__gthrw_(__pthread_key_create),
> +        __pthread_key_create,
> +        pthread_key_create)
> +# define GTHR_ACTIVE_PROXY     __gthrw_(__pthread_key_create)
> +#elif defined (__BIONIC__)
> +# define GTHR_ACTIVE_PROXY     __gthrw_(pthread_create)
> +#else
> +# define GTHR_ACTIVE_PROXY     __gthrw_(pthread_cancel)
> +#endif
> +
> +static inline int
> +__gthread_active_p (void)
> +{
> +  static void *const __gthread_active_ptr
> +    = __extension__ (void *) &GTHR_ACTIVE_PROXY;
> +  return __gthread_active_ptr != 0;
> +}
> +
> +#endif /* FreeBSD or Solaris */
> +
> +#else /* not SUPPORTS_WEAK */
> +
> +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread
> +   calls in shared flavors of the HP-UX C library.  Most of the stubs
> +   have no functionality.  The details are described in the "libc cumulative
> +   patch" for each subversion of HP-UX 11.  There are two special interfaces
> +   provided for checking whether an application is linked to a shared pthread
> +   library or not.  However, these interfaces aren't available in early
> +   libpthread libraries.  We also need a test that works for archive
> +   libraries.  We can't use pthread_once as some libc versions call the
> +   init function.  We also can't use pthread_create or pthread_attr_init
> +   as these create a thread and thereby prevent changing the default stack
> +   size.  The function pthread_default_stacksize_np is available in both
> +   the archive and shared versions of libpthread.   It can be used to
> +   determine the default pthread stack size.  There is a stub in some
> +   shared libc versions which returns a zero size if pthreads are not
> +   active.  We provide an equivalent stub to handle cases where libc
> +   doesn't provide one.  */
> +
> +#if defined(__hppa__) && defined(__hpux__)
> +
> +static volatile int __gthread_active = -1;
> +
> +static inline int
> +__gthread_active_p (void)
> +{
> +  /* Avoid reading __gthread_active twice on the main code path.  */
> +  int __gthread_active_latest_value = __gthread_active;
> +  size_t __s;
> +
> +  if (__builtin_expect (__gthread_active_latest_value < 0, 0))
> +    {
> +      pthread_default_stacksize_np (0, &__s);
> +      __gthread_active = __s ? 1 : 0;
> +      __gthread_active_latest_value = __gthread_active;
> +    }
> +
> +  return __gthread_active_latest_value != 0;
> +}
> +
> +#else /* not hppa-hpux */
> +
> +static inline int
> +__gthread_active_p (void)
> +{
> +  return 1;
> +}
> +
> +#endif /* hppa-hpux */
> +
> +#endif /* SUPPORTS_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, &_objc_thread_attribs,
> +                                 (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, &params) == 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, &params) == 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, &params) == 0)
> +       return params.sched_priority;
> +      else
> +       return -1;
> +    }
> +  else
> +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
> +#endif /* _POSIX_PRIORITY_SCHEDULING */
> +    return OBJC_THREAD_INTERACTIVE_PRIORITY;
> +}
> +
> +/* Yield our process time to another thread.  */
> +static inline void
> +__gthread_objc_thread_yield (void)
> +{
> +  if (__gthread_active_p ())
> +    __gthrw_(sched_yield) ();
> +}
> +
> +/* Terminate the current thread.  */
> +static inline int
> +__gthread_objc_thread_exit (void)
> +{
> +  if (__gthread_active_p ())
> +    /* exit the thread */
> +    __gthrw_(pthread_exit) (&__objc_thread_exit_status);
> +
> +  /* Failed if we reached here */
> +  return -1;
> +}
> +
> +/* Returns an integer value which uniquely describes a thread.  */
> +static inline objc_thread_t
> +__gthread_objc_thread_id (void)
> +{
> +  if (__gthread_active_p ())
> +    return (objc_thread_t) __gthrw_(pthread_self) ();
> +  else
> +    return (objc_thread_t) 1;
> +}
> +
> +/* Sets the thread's local storage pointer.  */
> +static inline int
> +__gthread_objc_thread_set_data (void *value)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_setspecific) (_objc_thread_storage, value);
> +  else
> +    {
> +      thread_local_storage = value;
> +      return 0;
> +    }
> +}
> +
> +/* Returns the thread's local storage pointer.  */
> +static inline void *
> +__gthread_objc_thread_get_data (void)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_getspecific) (_objc_thread_storage);
> +  else
> +    return thread_local_storage;
> +}
> +
> +/* Backend mutex functions */
> +
> +/* Allocate a mutex.  */
> +static inline int
> +__gthread_objc_mutex_allocate (objc_mutex_t mutex)
> +{
> +  if (__gthread_active_p ())
> +    {
> +      mutex->backend = objc_malloc (sizeof (pthread_mutex_t));
> +
> +      if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL))
> +       {
> +         objc_free (mutex->backend);
> +         mutex->backend = NULL;
> +         return -1;
> +       }
> +    }
> +
> +  return 0;
> +}
> +
> +/* Deallocate a mutex.  */
> +static inline int
> +__gthread_objc_mutex_deallocate (objc_mutex_t mutex)
> +{
> +  if (__gthread_active_p ())
> +    {
> +      int count;
> +
> +      /*
> +       * Posix Threads specifically require that the thread be unlocked
> +       * for __gthrw_(pthread_mutex_destroy) to work.
> +       */
> +
> +      do
> +       {
> +         count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend);
> +         if (count < 0)
> +           return -1;
> +       }
> +      while (count);
> +
> +      if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend))
> +       return -1;
> +
> +      objc_free (mutex->backend);
> +      mutex->backend = NULL;
> +    }
> +  return 0;
> +}
> +
> +/* Grab a lock on a mutex.  */
> +static inline int
> +__gthread_objc_mutex_lock (objc_mutex_t mutex)
> +{
> +  if (__gthread_active_p ()
> +      && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0)
> +    {
> +      return -1;
> +    }
> +
> +  return 0;
> +}
> +
> +/* Try to grab a lock on a mutex.  */
> +static inline int
> +__gthread_objc_mutex_trylock (objc_mutex_t mutex)
> +{
> +  if (__gthread_active_p ()
> +      && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0)
> +    {
> +      return -1;
> +    }
> +
> +  return 0;
> +}
> +
> +/* Unlock the mutex */
> +static inline int
> +__gthread_objc_mutex_unlock (objc_mutex_t mutex)
> +{
> +  if (__gthread_active_p ()
> +      && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0)
> +    {
> +      return -1;
> +    }
> +
> +  return 0;
> +}
> +
> +/* Backend condition mutex functions */
> +
> +/* Allocate a condition.  */
> +static inline int
> +__gthread_objc_condition_allocate (objc_condition_t condition)
> +{
> +  if (__gthread_active_p ())
> +    {
> +      condition->backend = objc_malloc (sizeof (pthread_cond_t));
> +
> +      if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL))
> +       {
> +         objc_free (condition->backend);
> +         condition->backend = NULL;
> +         return -1;
> +       }
> +    }
> +
> +  return 0;
> +}
> +
> +/* Deallocate a condition.  */
> +static inline int
> +__gthread_objc_condition_deallocate (objc_condition_t condition)
> +{
> +  if (__gthread_active_p ())
> +    {
> +      if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend))
> +       return -1;
> +
> +      objc_free (condition->backend);
> +      condition->backend = NULL;
> +    }
> +  return 0;
> +}
> +
> +/* Wait on the condition */
> +static inline int
> +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend,
> +                             (pthread_mutex_t *) mutex->backend);
> +  else
> +    return 0;
> +}
> +
> +/* Wake up all threads waiting on this condition.  */
> +static inline int
> +__gthread_objc_condition_broadcast (objc_condition_t condition)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend);
> +  else
> +    return 0;
> +}
> +
> +/* Wake up one thread waiting on this condition.  */
> +static inline int
> +__gthread_objc_condition_signal (objc_condition_t condition)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend);
> +  else
> +    return 0;
> +}
> +
> +#else /* _LIBOBJC */
> +
> +static inline int
> +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
> +                 void *__args)
> +{
> +  return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);
> +}
> +
> +static inline int
> +__gthread_join (__gthread_t __threadid, void **__value_ptr)
> +{
> +  return __gthrw_(pthread_join) (__threadid, __value_ptr);
> +}
> +
> +static inline int
> +__gthread_detach (__gthread_t __threadid)
> +{
> +  return __gthrw_(pthread_detach) (__threadid);
> +}
> +
> +static inline int
> +__gthread_equal (__gthread_t __t1, __gthread_t __t2)
> +{
> +  return __gthrw_(pthread_equal) (__t1, __t2);
> +}
> +
> +static inline __gthread_t
> +__gthread_self (void)
> +{
> +  return __gthrw_(pthread_self) ();
> +}
> +
> +static inline int
> +__gthread_yield (void)
> +{
> +  return __gthrw_(sched_yield) ();
> +}
> +
> +static inline int
> +__gthread_once (__gthread_once_t *__once, void (*__func) (void))
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_once) (__once, __func);
> +  else
> +    return -1;
> +}
> +
> +static inline int
> +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
> +{
> +  return __gthrw_(pthread_key_create) (__key, __dtor);
> +}
> +
> +static inline int
> +__gthread_key_delete (__gthread_key_t __key)
> +{
> +  return __gthrw_(pthread_key_delete) (__key);
> +}
> +
> +static inline void *
> +__gthread_getspecific (__gthread_key_t __key)
> +{
> +  return __gthrw_(pthread_getspecific) (__key);
> +}
> +
> +static inline int
> +__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
> +{
> +  return __gthrw_(pthread_setspecific) (__key, __ptr);
> +}
> +
> +static inline void
> +__gthread_mutex_init_function (__gthread_mutex_t *__mutex)
> +{
> +  if (__gthread_active_p ())
> +    __gthrw_(pthread_mutex_init) (__mutex, NULL);
> +}
> +
> +static inline int
> +__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_mutex_destroy) (__mutex);
> +  else
> +    return 0;
> +}
> +
> +static inline int
> +__gthread_mutex_lock (__gthread_mutex_t *__mutex)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_mutex_lock) (__mutex);
> +  else
> +    return 0;
> +}
> +
> +static inline int
> +__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_mutex_trylock) (__mutex);
> +  else
> +    return 0;
> +}
> +
> +#if _GTHREAD_USE_MUTEX_TIMEDLOCK
> +static inline int
> +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
> +                          const __gthread_time_t *__abs_timeout)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout);
> +  else
> +    return 0;
> +}
> +#endif
> +
> +static inline int
> +__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
> +{
> +  if (__gthread_active_p ())
> +    return __gthrw_(pthread_mutex_unlock) (__mutex);
> +  else
> +    return 0;
> +}
> +
> +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \
> +  || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC)
> +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);
> +}
> +
> +#if _GTHREAD_USE_MUTEX_TIMEDLOCK
> +static inline int
> +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
> +                                    const __gthread_time_t *__abs_timeout)
> +{
> +  return __gthread_mutex_timedlock (__mutex, __abs_timeout);
> +}
> +#endif
> +
> +static inline int
> +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
> +{
> +  return __gthread_mutex_unlock (__mutex);
> +}
> +
> +static inline int
> +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex)
> +{
> +  return __gthread_mutex_destroy (__mutex);
> +}
> +
> +#ifdef _GTHREAD_USE_COND_INIT_FUNC
> +static inline void
> +__gthread_cond_init_function (__gthread_cond_t *__cond)
> +{
> +  if (__gthread_active_p ())
> +    __gthrw_(pthread_cond_init) (__cond, NULL);
> +}
> +#endif
> +
> +static inline int
> +__gthread_cond_broadcast (__gthread_cond_t *__cond)
> +{
> +  return __gthrw_(pthread_cond_broadcast) (__cond);
> +}
> +
> +static inline int
> +__gthread_cond_signal (__gthread_cond_t *__cond)
> +{
> +  return __gthrw_(pthread_cond_signal) (__cond);
> +}
> +
> +static inline int
> +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
> +{
> +  return __gthrw_(pthread_cond_wait) (__cond, __mutex);
> +}
> +
> +static inline int
> +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
> +                         const __gthread_time_t *__abs_timeout)
> +{
> +  return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout);
> +}
> +
> +static inline int
> +__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
> +                              __gthread_recursive_mutex_t *__mutex)
> +{
> +  return __gthread_cond_wait (__cond, __mutex);
> +}
> +
> +static inline int
> +__gthread_cond_destroy (__gthread_cond_t* __cond)
> +{
> +  return __gthrw_(pthread_cond_destroy) (__cond);
> +}
> +
> +#endif /* _LIBOBJC */
> +
> +#endif /* ! GCC_GTHR_POSIX_H */
> diff --git a/libgcov/include/libgcc_tm.h b/libgcov/include/libgcc_tm.h
> new file mode 100644
> index 0000000..038a60b
> --- /dev/null
> +++ b/libgcov/include/libgcc_tm.h
> @@ -0,0 +1,6 @@
> +#ifndef LIBGCC_TM_H
> +#define LIBGCC_TM_H
> +/* Automatically generated by mkheader.sh.  */
> +#include "config/i386/elf-lib.h"
> +#include "config/i386/value-unwind.h"
> +#endif /* LIBGCC_TM_H */
> diff --git a/libgcov/include/tconfig.h b/libgcov/include/tconfig.h
> new file mode 100644
> index 0000000..7ec80a1
> --- /dev/null
> +++ b/libgcov/include/tconfig.h
> @@ -0,0 +1,10 @@
> +#ifndef GCC_TCONFIG_H
> +#define GCC_TCONFIG_H
> +#ifndef USED_FOR_TARGET
> +# define USED_FOR_TARGET
> +#endif
> +#include "auto-host.h"
> +#ifdef IN_GCC
> +# include "ansidecl.h"
> +#endif
> +#endif /* GCC_TCONFIG_H */
> diff --git a/libgcov/include/tm.h b/libgcov/include/tm.h
> new file mode 100644
> index 0000000..611fa76
> --- /dev/null
> +++ b/libgcov/include/tm.h
> @@ -0,0 +1,52 @@
> +#ifndef GCC_TM_H
> +#define GCC_TM_H
> +#ifndef LIBC_GLIBC
> +# define LIBC_GLIBC 1
> +#endif
> +#ifndef LIBC_UCLIBC
> +# define LIBC_UCLIBC 2
> +#endif
> +#ifndef LIBC_BIONIC
> +# define LIBC_BIONIC 3
> +#endif
> +#ifndef LIBC_MUSL
> +# define LIBC_MUSL 4
> +#endif
> +#ifndef DEFAULT_LIBC
> +# define DEFAULT_LIBC LIBC_GLIBC
> +#endif
> +#ifndef ANDROID_DEFAULT
> +# define ANDROID_DEFAULT 0
> +#endif
> +#ifdef IN_GCC
> +# include "options.h"
> +# include "insn-constants.h"
> +# include "config/vxworks-dummy.h"
> +# include "config/i386/biarch64.h"
> +# include "config/i386/i386.h"
> +# include "config/i386/unix.h"
> +# include "config/i386/att.h"
> +# include "config/dbxelf.h"
> +# include "config/elfos.h"
> +# include "config/gnu-user.h"
> +# include "config/glibc-stdint.h"
> +# include "config/i386/x86-64.h"
> +# include "config/i386/gnu-user-common.h"
> +# include "config/i386/gnu-user64.h"
> +# include "config/linux.h"
> +# include "config/linux-android.h"
> +# include "config/i386/linux-common.h"
> +# include "config/i386/linux64.h"
> +# include "config/initfini-array.h"
> +#endif
> +#if defined IN_GCC && !defined GENERATOR_FILE && !defined USED_FOR_TARGET
> +# include "insn-flags.h"
> +#endif
> +#if defined IN_GCC && !defined GENERATOR_FILE
> +# include "insn-modes.h"
> +#endif
> +#if defined IN_GCC && defined GENERATOR_FILE && !defined BITS_PER_UNIT
> +#include "machmode.h"
> +#endif
> +# include "defaults.h"
> +#endif /* GCC_TM_H */
> --
> 2.17.1
>
>

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.