/* config.in.  Generated from configure.ac by autoheader.  */

/* Define if building universal (internal helper macro) */
#undef AC_APPLE_UNIVERSAL_BUILD

/* Directories from which to load auto-loaded scripts. */
#undef AUTO_LOAD_DIR

/* Directories safe to hold auto-loaded files. */
#undef AUTO_LOAD_SAFE_PATH

/* Directory of programs. */
#undef BINDIR

/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
   systems. This function is required for `alloca.c' support on those systems.
   */
#undef CRAY_STACKSEG_END

/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA

/* look for global separate debug info in this path [LIBDIR/debug] */
#undef DEBUGDIR

/* Define if the separate-debug-dir directory should be relocated when GDB is
   moved. */
#undef DEBUGDIR_RELOCATABLE

/* Define to BFD's default architecture. */
#undef DEFAULT_BFD_ARCH

/* Define to BFD's default target vector. */
#undef DEFAULT_BFD_VEC

/* Define to 1 if translation of program messages to the user's native
   language is requested. */
#undef ENABLE_NLS

/* The .gdbinit filename. */
#undef GDBINIT

/* look for global separate data files in this path [DATADIR/gdb] */
#undef GDB_DATADIR

/* Define if the gdb-datadir directory should be relocated when GDB is moved.
   */
#undef GDB_DATADIR_RELOCATABLE

/* Define to be a string naming the default host character set. */
#undef GDB_DEFAULT_HOST_CHARSET

/* Host double floatformat */
#undef GDB_HOST_DOUBLE_FORMAT

/* Host float floatformat */
#undef GDB_HOST_FLOAT_FORMAT

/* Host long double floatformat */
#undef GDB_HOST_LONG_DOUBLE_FORMAT

/* nativefile */
#undef GDB_NM_FILE

/* Define to the default OS ABI for this configuration. */
#undef GDB_OSABI_DEFAULT

/* Define if self-testing features should be enabled */
#undef GDB_SELF_TEST

/* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA

/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
   */
#undef HAVE_ALLOCA_H

/* Define to 1 if you have the `btowc' function. */
#undef HAVE_BTOWC

/* Define to 1 if you have the <cursesX.h> header file. */
#undef HAVE_CURSESX_H

/* Define to 1 if you have the <curses.h> header file. */
#undef HAVE_CURSES_H

/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11

/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
   you don't. */
#undef HAVE_DECL_ADDR_NO_RANDOMIZE

/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
   don't. */
#undef HAVE_DECL_ASPRINTF

/* Define to 1 if you have the declaration of `basename(char *)', and to 0 if
   you don't. */
#undef HAVE_DECL_BASENAME

/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
#undef HAVE_DECL_FFS

/* Define to 1 if you have the declaration of `free', and to 0 if you don't.
   */
#undef HAVE_DECL_FREE

/* Define to 1 if you have the declaration of `getthrds', and to 0 if you
   don't. */
#undef HAVE_DECL_GETTHRDS

/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
   */
#undef HAVE_DECL_MALLOC

/* Define to 1 if you have the declaration of `ptrace', and to 0 if you don't.
   */
#undef HAVE_DECL_PTRACE

/* Define to 1 if you have the declaration of `realloc', and to 0 if you
   don't. */
#undef HAVE_DECL_REALLOC

/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
   don't. */
#undef HAVE_DECL_SNPRINTF

/* Define to 1 if you have the declaration of `strerror', and to 0 if you
   don't. */
#undef HAVE_DECL_STRERROR

/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't.
   */
#undef HAVE_DECL_STRSTR

/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't.
   */
#undef HAVE_DECL_STRTOL

/* Define to 1 if you have the declaration of `strtoll', and to 0 if you
   don't. */
#undef HAVE_DECL_STRTOLL

/* Define to 1 if you have the declaration of `strtoul', and to 0 if you
   don't. */
#undef HAVE_DECL_STRTOUL

/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
   don't. */
#undef HAVE_DECL_STRTOULL

/* Define to 1 if you have the declaration of `strverscmp', and to 0 if you
   don't. */
#undef HAVE_DECL_STRVERSCMP

/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
   don't. */
#undef HAVE_DECL_VASPRINTF

/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
   don't. */
#undef HAVE_DECL_VSNPRINTF

/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

/* Define if ELF support should be included. */
#undef HAVE_ELF

/* Define to 1 if you have the <elf_hp.h> header file. */
#undef HAVE_ELF_HP_H

/* Define to 1 if your system has the etext variable. */
#undef HAVE_ETEXT

/* Define to 1 if you have the `fdwalk' function. */
#undef HAVE_FDWALK

/* Define to 1 if you have the `fork' function. */
#undef HAVE_FORK

/* Define if <sys/procfs.h> has fpregset_t. */
#undef HAVE_FPREGSET_T

/* Define to 1 if you have the `getauxval' function. */
#undef HAVE_GETAUXVAL

/* Define to 1 if you have the `getgid' function. */
#undef HAVE_GETGID

/* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE

/* Define to 1 if you have the `getrlimit' function. */
#undef HAVE_GETRLIMIT

/* Define to 1 if you have the `getrusage' function. */
#undef HAVE_GETRUSAGE

/* Define to 1 if you have the `getuid' function. */
#undef HAVE_GETUID

/* Define if <sys/procfs.h> has gregset_t. */
#undef HAVE_GREGSET_T

/* Define if Guile interpreter is being linked in. */
#undef HAVE_GUILE

/* Define if Guile supports manual finalization. */
#undef HAVE_GUILE_MANUAL_FINALIZATION

/* Define if you have the iconv() function. */
#undef HAVE_ICONV

/* Define to 1 if you have the `iconvlist' function. */
#undef HAVE_ICONVLIST

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Define to 1 if your system has the kinfo_getvmmap function. */
#undef HAVE_KINFO_GETVMMAP

/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
#undef HAVE_LANGINFO_CODESET

/* Define if your <locale.h> file defines LC_MESSAGES. */
#undef HAVE_LC_MESSAGES

/* Define if you have the babeltrace library. */
#undef HAVE_LIBBABELTRACE

/* Define to 1 if you have the `dl' library (-ldl). */
#undef HAVE_LIBDL

/* Define if you have the expat library. */
#undef HAVE_LIBEXPAT

/* Define to 1 if you have the `libiconvlist' function. */
#undef HAVE_LIBICONVLIST

/* Define if you have the ipt library. */
#undef HAVE_LIBIPT

/* Define if you have the lzma library. */
#undef HAVE_LIBLZMA

/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM

/* Define to 1 if you have the `mcheck' library (-lmcheck). */
#undef HAVE_LIBMCHECK

/* Define if Python 2.4 is being used. */
#undef HAVE_LIBPYTHON2_4

/* Define if Python 2.5 is being used. */
#undef HAVE_LIBPYTHON2_5

/* Define if Python 2.6 is being used. */
#undef HAVE_LIBPYTHON2_6

/* Define if Python 2.7 is being used. */
#undef HAVE_LIBPYTHON2_7

/* Define to 1 if you have the <libunwind-ia64.h> header file. */
#undef HAVE_LIBUNWIND_IA64_H

/* Define to 1 if you have the `w' library (-lw). */
#undef HAVE_LIBW

/* Define to 1 if you have the <linux/perf_event.h> header file. */
#undef HAVE_LINUX_PERF_EVENT_H

/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H

/* Define to 1 if the compiler supports long double. */
#undef HAVE_LONG_DOUBLE

/* Define to 1 if the system has the type `long long'. */
#undef HAVE_LONG_LONG

/* Define if <sys/procfs.h> has lwpid_t. */
#undef HAVE_LWPID_T

/* Define to 1 if you have the <machine/reg.h> header file. */
#undef HAVE_MACHINE_REG_H

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define to 1 if you have the `mkdtemp' function. */
#undef HAVE_MKDTEMP

/* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP

/* Define to 1 if you have the `monstartup' function. */
#undef HAVE_MONSTARTUP

/* Define to 1 if you have the <ncurses.h> header file. */
#undef HAVE_NCURSES_H

/* Define to 1 if you have the <ncurses/ncurses.h> header file. */
#undef HAVE_NCURSES_NCURSES_H

/* Define to 1 if you have the <ncurses/term.h> header file. */
#undef HAVE_NCURSES_TERM_H

/* Define to 1 if you have the <nlist.h> header file. */
#undef HAVE_NLIST_H

/* Define if you support the personality syscall. */
#undef HAVE_PERSONALITY

/* Define to 1 if you have the `pipe' function. */
#undef HAVE_PIPE

/* Define to 1 if you have the `pipe2' function. */
#undef HAVE_PIPE2

/* Define to 1 if you have the `poll' function. */
#undef HAVE_POLL

/* Define to 1 if you have the <poll.h> header file. */
#undef HAVE_POLL_H

/* Define to 1 if you have the `posix_madvise' function. */
#undef HAVE_POSIX_MADVISE

/* Define to 1 if you have the `pread' function. */
#undef HAVE_PREAD

/* Define to 1 if you have the `pread64' function. */
#undef HAVE_PREAD64

/* Define if <sys/procfs.h> has prfpregset_t. */
#undef HAVE_PRFPREGSET_T

/* Define if <sys/procfs.h> has prgregset32_t. */
#undef HAVE_PRGREGSET32_T

/* Define if <sys/procfs.h> has prgregset_t. */
#undef HAVE_PRGREGSET_T

/* Define to 1 if you have the <proc_service.h> header file. */
#undef HAVE_PROC_SERVICE_H

/* Define if <sys/procfs.h> has prsysent_t. */
#undef HAVE_PRSYSENT_T

/* Define if <sys/procfs.h> has pr_sigaction64_t. */
#undef HAVE_PR_SIGACTION64_T

/* Define if <sys/procfs.h> has pr_siginfo64_t. */
#undef HAVE_PR_SIGINFO64_T

/* Define if <sys/procfs.h> has pr_sigset_t. */
#undef HAVE_PR_SIGSET_T

/* Define if <sys/procfs.h> has psaddr_t. */
#undef HAVE_PSADDR_T

/* Define to 1 if you have the `ptrace64' function. */
#undef HAVE_PTRACE64

/* Define if sys/ptrace.h defines the PTRACE_GETFPXREGS request. */
#undef HAVE_PTRACE_GETFPXREGS

/* Define if sys/ptrace.h defines the PTRACE_GETREGS request. */
#undef HAVE_PTRACE_GETREGS

/* Define to 1 if you have the <ptrace.h> header file. */
#undef HAVE_PTRACE_H

/* Define if sys/ptrace.h defines the PT_GETDBREGS request. */
#undef HAVE_PT_GETDBREGS

/* Define if sys/ptrace.h defines the PT_GETXMMREGS request. */
#undef HAVE_PT_GETXMMREGS

/* Define to 1 if you have the `pt_insn_event' function. */
#undef HAVE_PT_INSN_EVENT

/* Define to 1 if you have the `pwrite' function. */
#undef HAVE_PWRITE

/* Define if Python interpreter is being linked in. */
#undef HAVE_PYTHON

/* Define to 1 if you have the `resize_term' function. */
#undef HAVE_RESIZE_TERM

/* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK

/* Define to 1 if you have the `scm_new_smob' function. */
#undef HAVE_SCM_NEW_SMOB

/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE

/* Define to 1 if you have the `setns' function. */
#undef HAVE_SETNS

/* Define to 1 if you have the `setpgid' function. */
#undef HAVE_SETPGID

/* Define to 1 if you have the `setpgrp' function. */
#undef HAVE_SETPGRP

/* Define to 1 if you have the `setrlimit' function. */
#undef HAVE_SETRLIMIT

/* Define to 1 if you have the `setsid' function. */
#undef HAVE_SETSID

/* Define to 1 if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H

/* Define to 1 if you have the `sigaction' function. */
#undef HAVE_SIGACTION

/* Define to 1 if you have the `sigaltstack' function. */
#undef HAVE_SIGALTSTACK

/* Define to 1 if you have the <signal.h> header file. */
#undef HAVE_SIGNAL_H

/* Define to 1 if you have the `sigprocmask' function. */
#undef HAVE_SIGPROCMASK

/* Define if sigsetjmp is available. */
#undef HAVE_SIGSETJMP

/* Define to 1 if you have the `sigsetmask' function. */
#undef HAVE_SIGSETMASK

/* Define to 1 if you have the `socketpair' function. */
#undef HAVE_SOCKETPAIR

/* Define to 1 if the system has the type `socklen_t'. */
#undef HAVE_SOCKLEN_T

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H

/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H

/* Define to 1 if your system has struct lwp. */
#undef HAVE_STRUCT_LWP

/* Define to 1 if `struct ptrace_lwpinfo' is a member of `pl_syscall_code'. */
#undef HAVE_STRUCT_PTRACE_LWPINFO_PL_SYSCALL_CODE

/* Define to 1 if `struct ptrace_lwpinfo' is a member of `pl_tdname'. */
#undef HAVE_STRUCT_PTRACE_LWPINFO_PL_TDNAME

/* Define to 1 if `struct pt_insn' is a member of `enabled'. */
#undef HAVE_STRUCT_PT_INSN_ENABLED

/* Define to 1 if `struct pt_insn' is a member of `resynced'. */
#undef HAVE_STRUCT_PT_INSN_RESYNCED

/* Define to 1 if your system has struct reg in <machine/reg.h>. */
#undef HAVE_STRUCT_REG

/* Define to 1 if `struct reg' is a member of `r_fs'. */
#undef HAVE_STRUCT_REG_R_FS

/* Define to 1 if `struct reg' is a member of `r_gs'. */
#undef HAVE_STRUCT_REG_R_GS

/* Define to 1 if `struct stat' is a member of `st_blksize'. */
#undef HAVE_STRUCT_STAT_ST_BLKSIZE

/* Define to 1 if `struct stat' is a member of `st_blocks'. */
#undef HAVE_STRUCT_STAT_ST_BLOCKS

/* Define to 1 if `struct thread' is a member of `td_pcb'. */
#undef HAVE_STRUCT_THREAD_TD_PCB

/* Define to 1 if `struct user_regs_struct' is a member of `fs_base'. */
#undef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE

/* Define to 1 if `struct user_regs_struct' is a member of `gs_base'. */
#undef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE

/* Define to 1 if you have the <sys/debugreg.h> header file. */
#undef HAVE_SYS_DEBUGREG_H

/* Define to 1 if you have the <sys/fault.h> header file. */
#undef HAVE_SYS_FAULT_H

/* Define to 1 if you have the <sys/file.h> header file. */
#undef HAVE_SYS_FILE_H

/* Define to 1 if you have the <sys/filio.h> header file. */
#undef HAVE_SYS_FILIO_H

/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H

/* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H

/* Define to 1 if you have the <sys/poll.h> header file. */
#undef HAVE_SYS_POLL_H

/* Define to 1 if you have the <sys/procfs.h> header file. */
#undef HAVE_SYS_PROCFS_H

/* Define to 1 if you have the <sys/proc.h> header file. */
#undef HAVE_SYS_PROC_H

/* Define to 1 if you have the <sys/ptrace.h> header file. */
#undef HAVE_SYS_PTRACE_H

/* Define to 1 if you have the <sys/reg.h> header file. */
#undef HAVE_SYS_REG_H

/* Define to 1 if you have the <sys/resource.h> header file. */
#undef HAVE_SYS_RESOURCE_H

/* Define to 1 if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H

/* Define to 1 if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H

/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H

/* Define to 1 if you have the <sys/syscall.h> header file. */
#undef HAVE_SYS_SYSCALL_H

/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H

/* Define to 1 if you have the <sys/un.h> header file. */
#undef HAVE_SYS_UN_H

/* Define to 1 if you have the <sys/user.h> header file. */
#undef HAVE_SYS_USER_H

/* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H

/* Define to 1 if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H

/* Define to 1 if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H

/* Define to 1 if you have the <term.h> header file. */
#undef HAVE_TERM_H

/* Define to 1 if you have the <thread_db.h> header file. */
#undef HAVE_THREAD_DB_H

/* Define if using Solaris thread debugging. */
#undef HAVE_THREAD_DB_LIB

/* Define to 1 if you have the `ttrace' function. */
#undef HAVE_TTRACE

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* Define to 1 if you have the `vfork' function. */
#undef HAVE_VFORK

/* Define to 1 if you have the <vfork.h> header file. */
#undef HAVE_VFORK_H

/* Define to 1 if you have the `waitpid' function. */
#undef HAVE_WAITPID

/* Define to 1 if you have the <wait.h> header file. */
#undef HAVE_WAIT_H

/* Define to 1 if you have the `wborder' function. */
#undef HAVE_WBORDER

/* Define to 1 if you have the <windows.h> header file. */
#undef HAVE_WINDOWS_H

/* Define to 1 if `fork' works. */
#undef HAVE_WORKING_FORK

/* Define to 1 if `vfork' works. */
#undef HAVE_WORKING_VFORK

/* Define to 1 if you have the `wresize' function. */
#undef HAVE_WRESIZE

/* Define to 1 if you have the `XML_StopParser' function. */
#undef HAVE_XML_STOPPARSER

/* Define to 1 if your system has the _etext variable. */
#undef HAVE__ETEXT

/* Define to 1 if you have the `_mcleanup' function. */
#undef HAVE__MCLEANUP

/* Path of directory of iconv program. */
#undef ICONV_BIN

/* Define if the iconv directory should be relocated when GDB is moved. */
#undef ICONV_BIN_RELOCATABLE

/* Define as const if the declaration of iconv() needs const. */
#undef ICONV_CONST

/* directory to load the JIT readers from */
#undef JIT_READER_DIR

/* Define if the jit-reader-dir directory should be relocated when GDB is
   moved. */
#undef JIT_READER_DIR_RELOCATABLE

/* Define if you want to use new multi-fd /proc interface. */
#undef NEW_PROC_API

/* Name of this package. */
#undef PACKAGE

/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT

/* Define to the full name of this package. */
#undef PACKAGE_NAME

/* Define to the full name and version of this package. */
#undef PACKAGE_STRING

/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME

/* Define to the home page for this package. */
#undef PACKAGE_URL

/* Define to the version of this package. */
#undef PACKAGE_VERSION

/* Additional package description */
#undef PKGVERSION

/* Define if the prfpregset_t type is broken. */
#undef PRFPREGSET_T_BROKEN

/* Define to 1 if the "%H, %D and %DD" formats work to print decfloats. */
#undef PRINTF_HAS_DECFLOAT

/* Define to 1 if the "%Lg" format works to print long doubles. */
#undef PRINTF_HAS_LONG_DOUBLE

/* Define to 1 if the "%ll" format works to print long longs. */
#undef PRINTF_HAS_LONG_LONG

/* Define if <proc_service.h> on solaris uses int instead of size_t, and
   assorted other type changes. */
#undef PROC_SERVICE_IS_OLD

/* Define to the type of arg 1 for ptrace. */
#undef PTRACE_TYPE_ARG1

/* Define to the type of arg 3 for ptrace. */
#undef PTRACE_TYPE_ARG3

/* Define to the type of arg 4 for ptrace. */
#undef PTRACE_TYPE_ARG4

/* Define to the type of arg 5 for ptrace. */
#undef PTRACE_TYPE_ARG5

/* Define as the return type of ptrace. */
#undef PTRACE_TYPE_RET

/* Define if the python directory should be relocated when GDB is moved. */
#undef PYTHON_PATH_RELOCATABLE

/* Relocated directory for source files. */
#undef RELOC_SRCDIR

/* Bug reporting address */
#undef REPORT_BUGS_TO

/* Define to 1 if the "%Lg" format works to scan long doubles. */
#undef SCANF_HAS_LONG_DOUBLE

/* Define to 1 if the `setpgrp' function takes no argument. */
#undef SETPGRP_VOID

/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG

/* The size of `long long', as computed by sizeof. */
#undef SIZEOF_LONG_LONG

/* The size of `unsigned long', as computed by sizeof. */
#undef SIZEOF_UNSIGNED_LONG

/* The size of `unsigned long long', as computed by sizeof. */
#undef SIZEOF_UNSIGNED_LONG_LONG

/* The size of `unsigned __int128', as computed by sizeof. */
#undef SIZEOF_UNSIGNED___INT128

/* If using the C implementation of alloca, define if you know the
   direction of stack growth for your system; otherwise it will be
   automatically deduced at runtime.
	STACK_DIRECTION > 0 => grows toward higher addresses
	STACK_DIRECTION < 0 => grows toward lower addresses
	STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

/* automatically load a system-wide gdbinit file */
#undef SYSTEM_GDBINIT

/* Define if the system-gdbinit directory should be relocated when GDB is
   moved. */
#undef SYSTEM_GDBINIT_RELOCATABLE

/* search for usr/lib et al within DIR */
#undef TARGET_SYSTEM_ROOT

/* Define if the sysroot directory should be relocated when GDB is moved. */
#undef TARGET_SYSTEM_ROOT_RELOCATABLE

/* Define if <thread_db.h> has the TD_NOTALLOC error code. */
#undef THREAD_DB_HAS_TD_NOTALLOC

/* Define if <thread_db.h> has the TD_NOTLS error code. */
#undef THREAD_DB_HAS_TD_NOTLS

/* Define if <thread_db.h> has the TD_VERSION error code. */
#undef THREAD_DB_HAS_TD_VERSION

/* Define to 1 if the regex included in libiberty should be used. */
#undef USE_INCLUDED_REGEX

/* Enable extensions on AIX 3, Interix.  */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
/* Enable GNU extensions on systems that have them.  */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
/* Enable threading extensions on Solaris.  */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
/* Enable extensions on HP NonStop.  */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
/* Enable general extensions on Solaris.  */
#ifndef __EXTENSIONS__
# undef __EXTENSIONS__
#endif


/* Define if we should use the Windows API, instead of the POSIX API. On
   Windows, we use the Windows API when building for MinGW, but the POSIX API
   when building for Cygwin. */
#undef USE_WIN32API

/* Define if the PPC simulator is being linked in. */
#undef WITH_PPC_SIM

/* Define if --with-python provides a path, either directly or via
   python-config.py --exec-prefix. */
#undef WITH_PYTHON_PATH

/* Define if the simulator is being linked in. */
#undef WITH_SIM

/* 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. */
#undef _FILE_OFFSET_BITS

/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES

/* Define to 1 if on MINIX. */
#undef _MINIX

/* Define to 1 to avoid a clash between <widec.h> and <wchar.h> on Solaris
   2.[789] when using GCC. */
#undef _MSE_INT_H

/* Define to 2 if the system does not provide POSIX.1 features except with
   this defined. */
#undef _POSIX_1_SOURCE

/* Define to 1 if you need to in order for `stat' and other things to work. */
#undef _POSIX_SOURCE

/* Define to empty if `const' does not conform to ANSI C. */
#undef const

/* Define to `__inline__' or `__inline' if that's what the C compiler
   calls it, or to nothing if 'inline' is not supported under any name.  */
#ifndef __cplusplus
#undef inline
#endif

/* Define to `int' if <sys/types.h> does not define. */
#undef pid_t

/* Define as `fork' if `vfork' does not work. */
#undef vfork
