/* Define if building with SELinux support.  Set by --with-selinux.  */
#undef	HAVE_SELINUX

/* Defined if building with SELinux support & audit libs are detected. */
#undef	HAVE_LIBAUDIT

/* Defined if building with SELinux support & libcap libs are detected.  */
#undef  HAVE_LIBCAP

/* Define to the assembler line separator character for multiple
   assembler instructions per line.  Default is `;'  */
#undef ASM_LINE_SEP

/* Define if __attribute__((section("foo"))) puts quotes around foo.  */
#undef  HAVE_SECTION_QUOTES

/* Define if the assembler supports the `.set' directive.  */
#undef	HAVE_ASM_SET_DIRECTIVE

/* On powerpc64, use overlapping .opd entries.  */
#undef  USE_PPC64_OVERLAPPING_OPD

/* Define if _Unwind_Find_FDE should be exported from glibc.  */
#undef  EXPORT_UNWIND_FIND_FDE

/* Define if static NSS modules are wanted.  */
#undef	DO_STATIC_NSS

/* Assume that the compiler supports __builtin_expect.
   This macro is necessary for proper compilation of code
   shared between GNU libc and GNU gettext projects.  */
#define HAVE_BUILTIN_EXPECT 1

/* Define if the compiler supports __builtin_memset.  */
#undef	HAVE_BUILTIN_MEMSET

/* Define if compiler accepts -ftree-loop-distribute-patterns.  */
#undef  HAVE_CC_INHIBIT_LOOP_TO_LIBCALL

/* Define if compiler accepts -fno-stack-protector in an
   __attribute__ ((__optimize__)).  */
#undef	HAVE_CC_NO_STACK_PROTECTOR

/* The level of stack protection in use for glibc as a whole.
   May be overridden on a file-by-file basis.  */
#ifndef STACK_PROTECTOR_LEVEL
#undef	STACK_PROTECTOR_LEVEL
#endif

/* Defined on SPARC if GCC emits GOTDATA relocations.  */
#undef  HAVE_GCC_GOTDATA

/* Define if the linker supports the -z combreloc option.  */
#undef	HAVE_Z_COMBRELOC

/* Define if _rtld_local structure should be forced into .sdata section.  */
#undef	HAVE_SDATA_SECTION

/* Define if compiler supports AVX512.  */
#undef  HAVE_AVX512_SUPPORT

/* Define if assembler supports AVX512DQ.  */
#undef  HAVE_AVX512DQ_ASM_SUPPORT

/* Define if assembler supports z196 zarch instructions as default on S390.  */
#undef  HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT

/* Define if assembler supports vector instructions on S390.  */
#undef  HAVE_S390_VX_ASM_SUPPORT

/* Define if gcc supports vector registers as clobbers in inline assembly
   on S390.  */
#undef  HAVE_S390_VX_GCC_SUPPORT

/* Define if assembler supports Intel MPX.  */
#undef  HAVE_MPX_SUPPORT

/* Define if the compiler\'s exception support is based on libunwind.  */
#undef	HAVE_CC_WITH_LIBUNWIND

/* Define if the access to static and hidden variables is position independent
   and does not need relocations.  */
#undef	PI_STATIC_AND_HIDDEN

/* Define this to disable the 'hidden_proto' et al macros in
   include/libc-symbols.h that avoid PLT slots in PIE.  */
#undef  NO_HIDDEN_EXTERN_FUNC_IN_PIE

/* Define this to disable the 'hidden_proto' et al macros in
   include/libc-symbols.h that avoid PLT slots in the shared objects.  */
#undef	NO_HIDDEN

/* Define this to disable in rtld the 'hidden_proto' et al macros in
   include/libc-symbols.h that avoid PLT slots in the shared objects.  */
#undef	NO_RTLD_HIDDEN

/* Define this to disable lazy relocations in DSOs.  */
#undef	BIND_NOW

/* AArch64 big endian ABI */
#undef HAVE_AARCH64_BE

/* RISC-V integer ABI for ld.so.  */
#undef RISCV_ABI_XLEN

/* RISC-V floating-point ABI for ld.so.  */
#undef RISCV_ABI_FLEN

/* Linux specific: minimum supported kernel version.  */
#undef	__LINUX_KERNEL_VERSION

/* Override abi-tags ABI version if necessary.  */
#undef  __ABI_TAG_VERSION

/* Mach/Hurd specific: define if mig supports the `retcode' keyword.  */
#undef	HAVE_MIG_RETCODE

/* Mach specific: define if the `host_page_size' RPC is available.  */
#undef	HAVE_HOST_PAGE_SIZE

/* Mach/i386 specific: define if the `i386_io_perm_*' RPCs are available.  */
#undef	HAVE_I386_IO_PERM_MODIFY

/* Mach/i386 specific: define if the `i386_set_gdt' RPC is available.  */
#undef	HAVE_I386_SET_GDT

/* Defined of libidn is available.  */
#undef HAVE_LIBIDN

/* Define if inlined system calls are available.  */
#undef HAVE_INLINED_SYSCALLS

/* Define if your compiler defaults to -msecure-plt mode on ppc.  */
#undef HAVE_PPC_SECURE_PLT

/* Define if __stack_chk_guard canary should be randomized at program startup.  */
#undef ENABLE_STACKGUARD_RANDOMIZE

/* Package description.  */
#undef PKGVERSION

/* Bug reporting address.  */
#undef REPORT_BUGS_TO

/* Define if multi-arch DSOs should be generated.  */
#undef USE_MULTIARCH

/* Define if `.ctors' and `.dtors' sections shouldn't be used.  */
#undef	NO_CTORS_DTORS_SECTIONS

/* Define if obsolete RPC code should be made available for user-level code
   to link against.  */
#undef LINK_OBSOLETE_RPC

/* Define if obsolete libnsl code should be made available for user-level
   code to link against.  */
#undef LINK_OBSOLETE_NSL

/* Define if Systemtap <sys/sdt.h> probes should be defined.  */
#undef USE_STAP_PROBE

/* Define if library functions should try to contact the nscd daemon.  */
#undef USE_NSCD

/* Define if the dynamic linker should consult an ld.so.cache file.  */
#undef USE_LDCONFIG

/* Define to 1 if STT_GNU_IFUNC support actually works.  */
#define HAVE_IFUNC 0

/* Define if gcc supports attribute ifunc.  */
#undef HAVE_GCC_IFUNC

/* Define if the linker defines __ehdr_start.  */
#undef HAVE_EHDR_START

#define WANT_FLOAT128 0

/*
 */

#ifndef	_LIBC

/* These symbols might be defined by some sysdeps configures.
   They are used only in miscellaneous generator programs, not
   in compiling libc itself.   */

/* sysdeps/generic/configure.ac */
#undef	HAVE_PSIGNAL

/* sysdeps/unix/configure.ac */
#undef	HAVE_STRERROR

/* sysdeps/unix/common/configure.ac */
#undef	HAVE_SYS_SIGLIST
#undef	HAVE__SYS_SIGLIST
#undef	HAVE__CTYPE_
#undef	HAVE___CTYPE_
#undef	HAVE___CTYPE
#undef	HAVE__CTYPE__
#undef	HAVE__CTYPE
#undef	HAVE__LOCP

#endif

/*
 */

#ifdef	_LIBC

/* The zic and zdump programs need these definitions.  */

#define	HAVE_STRERROR	1

/* The locale code needs these definitions.  */

#define HAVE_REGEX 1

/* The ARM hard-float ABI is being used.  */
#undef HAVE_ARM_PCS_VFP

/* The ARM movw/movt instructions using PC-relative relocs work right.  */
#define ARM_PCREL_MOVW_OK 0

/* The pt_chown binary is being built and used by grantpt.  */
#define HAVE_PT_CHOWN 0

/* Define if the compiler supports __builtin_trap without
   any external dependencies such as making a function call.  */
#define HAVE_BUILTIN_TRAP 0

/* ports/sysdeps/mips/configure.in  */
/* Define if using the IEEE 754-2008 NaN encoding on the MIPS target.  */
#undef HAVE_MIPS_NAN2008

/* The PowerPC64 ELFv2 ABI is being used.  */
#undef HAVE_ELFV2_ABI

/* PowerPC32 uses fcfid for integer to floating point conversions.  */
#define HAVE_PPC_FCFID 0

/* PowerPC32 uses fctidz for floating point to long long conversions.  */
#define HAVE_PPC_FCTIDZ 0

/* Build glibc with tunables support.  */
#define HAVE_TUNABLES 0

/* Define if static PIE is enabled.  */
#define ENABLE_STATIC_PIE 0

/* Some compiler options may now allow to use ebp in __asm__ (used mainly
   in i386 6 argument syscall issue).  */
#define CAN_USE_REGISTER_ASM_EBP 0

#endif
