[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, 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 *) >HR_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, ¶ms) == 0) > + { > + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == > -1) > + return -1; > + > + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == > -1) > + return -1; > + > + if (priority > priority_max) > + priority = priority_max; > + else if (priority < priority_min) > + priority = priority_min; > + params.sched_priority = priority; > + > + /* > + * The solaris 7 and several other man pages incorrectly state that > + * this should be a pointer to policy but pthread.h is universally > + * at odds with this. > + */ > + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == > 0) > + return 0; > + } > +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ > +#endif /* _POSIX_PRIORITY_SCHEDULING */ > + return -1; > + } > +} > + > +/* Return the current thread's priority. */ > +static inline int > +__gthread_objc_thread_get_priority (void) > +{ > +#ifdef _POSIX_PRIORITY_SCHEDULING > +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING > + if (__gthread_active_p ()) > + { > + int policy; > + struct sched_param params; > + > + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), > &policy, ¶ms) == 0) > + return params.sched_priority; > + else > + return -1; > + } > + else > +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ > +#endif /* _POSIX_PRIORITY_SCHEDULING */ > + return OBJC_THREAD_INTERACTIVE_PRIORITY; > +} > + > +/* Yield our process time to another thread. */ > +static inline void > +__gthread_objc_thread_yield (void) > +{ > + if (__gthread_active_p ()) > + __gthrw_(sched_yield) (); > +} > + > +/* Terminate the current thread. */ > +static inline int > +__gthread_objc_thread_exit (void) > +{ > + if (__gthread_active_p ()) > + /* exit the thread */ > + __gthrw_(pthread_exit) (&__objc_thread_exit_status); > + > + /* Failed if we reached here */ > + return -1; > +} > + > +/* Returns an integer value which uniquely describes a thread. */ > +static inline objc_thread_t > +__gthread_objc_thread_id (void) > +{ > + if (__gthread_active_p ()) > + return (objc_thread_t) __gthrw_(pthread_self) (); > + else > + return (objc_thread_t) 1; > +} > + > +/* Sets the thread's local storage pointer. */ > +static inline int > +__gthread_objc_thread_set_data (void *value) > +{ > + if (__gthread_active_p ()) > + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); > + else > + { > + thread_local_storage = value; > + return 0; > + } > +} > + > +/* Returns the thread's local storage pointer. */ > +static inline void * > +__gthread_objc_thread_get_data (void) > +{ > + if (__gthread_active_p ()) > + return __gthrw_(pthread_getspecific) (_objc_thread_storage); > + else > + return thread_local_storage; > +} > + > +/* Backend mutex functions */ > + > +/* Allocate a mutex. */ > +static inline int > +__gthread_objc_mutex_allocate (objc_mutex_t mutex) > +{ > + if (__gthread_active_p ()) > + { > + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); > + > + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, > NULL)) > + { > + objc_free (mutex->backend); > + mutex->backend = NULL; > + return -1; > + } > + } > + > + return 0; > +} > + > +/* Deallocate a mutex. */ > +static inline int > +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) > +{ > + if (__gthread_active_p ()) > + { > + int count; > + > + /* > + * Posix Threads specifically require that the thread be unlocked > + * for __gthrw_(pthread_mutex_destroy) to work. > + */ > + > + do > + { > + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) > mutex->backend); > + if (count < 0) > + return -1; > + } > + while (count); > + > + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) > mutex->backend)) > + return -1; > + > + objc_free (mutex->backend); > + mutex->backend = NULL; > + } > + return 0; > +} > + > +/* Grab a lock on a mutex. */ > +static inline int > +__gthread_objc_mutex_lock (objc_mutex_t mutex) > +{ > + if (__gthread_active_p () > + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) > != 0) > + { > + return -1; > + } > + > + return 0; > +} > + > +/* Try to grab a lock on a mutex. */ > +static inline int > +__gthread_objc_mutex_trylock (objc_mutex_t mutex) > +{ > + if (__gthread_active_p () > + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) > mutex->backend) != 0) > + { > + return -1; > + } > + > + return 0; > +} > + > +/* Unlock the mutex */ > +static inline int > +__gthread_objc_mutex_unlock (objc_mutex_t mutex) > +{ > + if (__gthread_active_p () > + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) > != 0) > + { > + return -1; > + } > + > + return 0; > +} > + > +/* Backend condition mutex functions */ > + > +/* Allocate a condition. */ > +static inline int > +__gthread_objc_condition_allocate (objc_condition_t condition) > +{ > + if (__gthread_active_p ()) > + { > + condition->backend = objc_malloc (sizeof (pthread_cond_t)); > + > + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) > condition->backend, NULL)) > + { > + objc_free (condition->backend); > + condition->backend = NULL; > + return -1; > + } > + } > + > + return 0; > +} > + > +/* Deallocate a condition. */ > +static inline int > +__gthread_objc_condition_deallocate (objc_condition_t condition) > +{ > + if (__gthread_active_p ()) > + { > + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) > condition->backend)) > + return -1; > + > + objc_free (condition->backend); > + condition->backend = NULL; > + } > + return 0; > +} > + > +/* Wait on the condition */ > +static inline int > +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t > mutex) > +{ > + if (__gthread_active_p ()) > + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) > condition->backend, > + (pthread_mutex_t *) mutex->backend); > + else > + return 0; > +} > + > +/* Wake up all threads waiting on this condition. */ > +static inline int > +__gthread_objc_condition_broadcast (objc_condition_t condition) > +{ > + if (__gthread_active_p ()) > + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) > condition->backend); > + else > + return 0; > +} > + > +/* Wake up one thread waiting on this condition. */ > +static inline int > +__gthread_objc_condition_signal (objc_condition_t condition) > +{ > + if (__gthread_active_p ()) > + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) > condition->backend); > + else > + return 0; > +} > + > +#else /* _LIBOBJC */ > + > +static inline int > +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), > + void *__args) > +{ > + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); > +} > + > +static inline int > +__gthread_join (__gthread_t __threadid, void **__value_ptr) > +{ > + return __gthrw_(pthread_join) (__threadid, __value_ptr); > +} > + > +static inline int > +__gthread_detach (__gthread_t __threadid) > +{ > + return __gthrw_(pthread_detach) (__threadid); > +} > + > +static inline int > +__gthread_equal (__gthread_t __t1, __gthread_t __t2) > +{ > + return __gthrw_(pthread_equal) (__t1, __t2); > +} > + > +static inline __gthread_t > +__gthread_self (void) > +{ > + return __gthrw_(pthread_self) (); > +} > + > +static inline int > +__gthread_yield (void) > +{ > + return __gthrw_(sched_yield) (); > +} > + > +static inline int > +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) > +{ > + if (__gthread_active_p ()) > + return __gthrw_(pthread_once) (__once, __func); > + else > + return -1; > +} > + > +static inline int > +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) > +{ > + return __gthrw_(pthread_key_create) (__key, __dtor); > +} > + > +static inline int > +__gthread_key_delete (__gthread_key_t __key) > +{ > + return __gthrw_(pthread_key_delete) (__key); > +} > + > +static inline void * > +__gthread_getspecific (__gthread_key_t __key) > +{ > + return __gthrw_(pthread_getspecific) (__key); > +} > + > +static inline int > +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) > +{ > + return __gthrw_(pthread_setspecific) (__key, __ptr); > +} > + > +static inline 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 > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |