mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-16 10:00:12 +00:00
35f1e82763
* configure.in: Add --enable-stackguard-randomization option. (ENABLE_STACKGUARD_RANDOMIZE): New define. * config.h.in (ENABLE_STACKGUARD_RANDOMIZE): Add. * sysdeps/unix/sysv/linux/dl-osinfo.h: Include stdint.h. (_dl_setup_stack_chk_guard): New inline function. * sysdeps/generic/dl-osinfo.h: Include stdint.h. (_dl_setup_stack_chk_guard): New inline function. * elf/rtld.c (__stack_chk_guard): New variable. (dl_main): Remove all traces of TLS_INIT_TP_EXPENSIVE. Set __stack_chk_guard to _dl_setup_stack_chk_guard (), use THREAD_SET_STACK_GUARD if defined. * elf/Versions (ld): Export __stack_chk_guard@@GLIBC_2.4. * sysdeps/generic/libc-start.c (__stack_chk_guard): New variable. (__libc_start_main): Set __stack_chk_guard to _dl_setup_stack_chk_guard (), use THREAD_SET_STACK_GUARD if defined. * sysdeps/generic/libc-tls.c (__libc_setup_tls): Remove all traces of TLS_INIT_TP_EXPENSIVE. * debug/Versions (libc): Export __stack_chk_fail@@GLIBC_2.4. * debug/Makefile (routines): Add stack_chk_fail. (static-only-routines): Add stack_chk_fail_local. * debug/stack_chk_fail_local.c: New file. * debug/stack_chk_fail.c: New file. * elf/Makefile: Add rules to build and run tst-stackguard1{,-static} tests. * elf/tst-stackguard1.c: New file. * elf/tst-stackguard1-static.c: New file. * elf/stackguard-macros.h: New file.
270 lines
8.0 KiB
C
270 lines
8.0 KiB
C
#if !defined __ASSEMBLER__ && !defined _ISOMAC && !defined __OPTIMIZE__
|
||
# error "glibc cannot be compiled without optimization"
|
||
#endif
|
||
|
||
/* Another evil option when it comes to compiling the C library is
|
||
--ffast-math since it alters the ABI. */
|
||
#if defined __FAST_MATH__ && !defined TEST_FAST_MATH
|
||
# error "glibc must not be compiled with -ffast-math"
|
||
#endif
|
||
|
||
/* Define if using GNU ld, with support for weak symbols in a.out,
|
||
and for symbol set and warning messages extensions in a.out and ELF.
|
||
This implies HAVE_WEAK_SYMBOLS; set by --with-gnu-ld. */
|
||
#undef HAVE_GNU_LD
|
||
|
||
/* Define if using ELF, which supports weak symbols.
|
||
This implies HAVE_ASM_WEAK_DIRECTIVE and NO_UNDERSCORES; set by
|
||
--with-elf. */
|
||
#undef HAVE_ELF
|
||
|
||
/* 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
|
||
|
||
/* Define if using XCOFF. Set by --with-xcoff. */
|
||
#undef HAVE_XCOFF
|
||
|
||
/* Define if C symbols are asm symbols. Don't define if C symbols
|
||
have a `_' prepended to make the asm symbol. */
|
||
#undef NO_UNDERSCORES
|
||
|
||
/* Define if weak symbols are available via the `.weak' directive. */
|
||
#undef HAVE_ASM_WEAK_DIRECTIVE
|
||
|
||
/* Define if weak symbols are available via the `.weakext' directive. */
|
||
#undef HAVE_ASM_WEAKEXT_DIRECTIVE
|
||
|
||
/* Define if CFI directives are available. */
|
||
#undef HAVE_ASM_CFI_DIRECTIVES
|
||
|
||
/* Define to the assembler line separator character for multiple
|
||
assembler instructions per line. Default is `;' */
|
||
#undef ASM_LINE_SEP
|
||
|
||
/* Define if not using ELF, but `.init' and `.fini' sections are available. */
|
||
#undef HAVE_INITFINI
|
||
|
||
/* Define if __attribute__((section("foo"))) puts quotes around foo. */
|
||
#undef HAVE_SECTION_QUOTES
|
||
|
||
/* Define if using the GNU assembler, gas. */
|
||
#undef HAVE_GNU_AS
|
||
|
||
/* Define if the assembler supports the `.set' directive. */
|
||
#undef HAVE_ASM_SET_DIRECTIVE
|
||
|
||
/* Define to the name of the assembler's directive for
|
||
declaring a symbol global (default `.globl'). */
|
||
#undef ASM_GLOBAL_DIRECTIVE
|
||
|
||
/* Define to the prefix before `object' or `function' in the
|
||
assembler's `.type' directive, if it has one. */
|
||
#undef ASM_TYPE_DIRECTIVE_PREFIX
|
||
|
||
/* Define a symbol_name as a global .symbol_name for ld. */
|
||
#undef HAVE_ASM_GLOBAL_DOT_NAME
|
||
|
||
/* On powerpc64, use overlapping .opd entries. */
|
||
#undef USE_PPC64_OVERLAPPING_OPD
|
||
|
||
/* Define if the assembler generates debugging information directly. */
|
||
#undef HAVE_CPP_ASM_DEBUGINFO
|
||
|
||
/* Define if _Unwind_Find_FDE should be exported from glibc. */
|
||
#undef EXPORT_UNWIND_FIND_FDE
|
||
|
||
/* Define to use GNU libio instead of GNU stdio.
|
||
This is defined by configure under --enable-libio. */
|
||
#undef USE_IN_LIBIO
|
||
|
||
/* Define if using ELF and the assembler supports the `.previous'
|
||
directive. */
|
||
#undef HAVE_ASM_PREVIOUS_DIRECTIVE
|
||
|
||
/* Define if using ELF and the assembler supports the `.popsection'
|
||
directive. */
|
||
#undef HAVE_ASM_POPSECTION_DIRECTIVE
|
||
|
||
/* Define if versioning of the library is wanted. */
|
||
#undef DO_VERSIONING
|
||
|
||
/* Defined to the oldest ABI we support, like 2.1. */
|
||
#undef GLIBC_OLDEST_ABI
|
||
|
||
/* Define if static NSS modules are wanted. */
|
||
#undef DO_STATIC_NSS
|
||
|
||
/* Define if gcc uses DWARF2 unwind information for exception support. */
|
||
#undef HAVE_DWARF2_UNWIND_INFO
|
||
|
||
/* Define if gcc uses DWARF2 unwind information for exception support
|
||
with static variable. */
|
||
#undef HAVE_DWARF2_UNWIND_INFO_STATIC
|
||
|
||
/* Define if the compiler supports __builtin_expect. */
|
||
#undef HAVE_BUILTIN_EXPECT
|
||
|
||
/* Define if the compiler supports __builtin_memset. */
|
||
#undef HAVE_BUILTIN_MEMSET
|
||
|
||
/* Define if __asm () on built-in function's prototype causes redirection of
|
||
the builtin. */
|
||
#undef HAVE_BUILTIN_REDIRECTION
|
||
|
||
/* Define if the __thread keyword is supported. */
|
||
#undef HAVE___THREAD
|
||
|
||
/* Define if the compiler supports __attribute__((tls_model(""))). */
|
||
#undef HAVE_TLS_MODEL_ATTRIBUTE
|
||
|
||
/* Define if the regparm attribute shall be used for local functions
|
||
(gcc on ix86 only). */
|
||
#undef USE_REGPARMS
|
||
|
||
/* Defined on PowerPC if the GCC being used has a problem with clobbering
|
||
certain registers (CR0, MQ, CTR, LR) in asm statements. */
|
||
#undef BROKEN_PPC_ASM_CR0
|
||
|
||
/* Defined on SPARC if ld doesn't handle R_SPARC_WDISP22 against .hidden
|
||
symbol. sysdeps/sparc/sparc32/elf/configure. */
|
||
#undef BROKEN_SPARC_WDISP22
|
||
|
||
/* Define if the linker supports the -z combreloc option. */
|
||
#undef HAVE_Z_COMBRELOC
|
||
|
||
/* Define if the assembler supported .protected. */
|
||
#undef HAVE_PROTECTED
|
||
|
||
/* Define if the assembler supported .hidden. */
|
||
#undef HAVE_HIDDEN
|
||
|
||
/* Define if the compiler supports __attribute__ ((visibility (...))). */
|
||
#undef HAVE_VISIBILITY_ATTRIBUTE
|
||
|
||
/* Define if the compiler doesn't support __attribute__ ((visibility (...)))
|
||
together with __asm__ redirection properly. */
|
||
#undef HAVE_BROKEN_VISIBILITY_ATTRIBUTE
|
||
|
||
/* Define if the compiler doesn't support __attribute__ ((alias (...)))
|
||
together with __asm__ redirection properly. */
|
||
#undef HAVE_BROKEN_ALIAS_ATTRIBUTE
|
||
|
||
/* Define if _rtld_local structure should be forced into .sdata section. */
|
||
#undef HAVE_SDATA_SECTION
|
||
|
||
/* Define if binutils support TLS handling. */
|
||
#undef HAVE_TLS_SUPPORT
|
||
|
||
/* Define if the linker supports .preinit_array/.init_array/.fini_array
|
||
sections. */
|
||
#undef HAVE_INITFINI_ARRAY
|
||
|
||
/* 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 the shared objects. */
|
||
#undef NO_HIDDEN
|
||
|
||
|
||
/* Defined to some form of __attribute__ ((...)) if the compiler supports
|
||
a different, more efficient calling convention. */
|
||
#if defined USE_REGPARMS && !defined PROF && !defined __BOUNDED_POINTERS__
|
||
# define internal_function __attribute__ ((regparm (3), stdcall))
|
||
#endif
|
||
|
||
/* Linux specific: minimum supported kernel version. */
|
||
#undef __LINUX_KERNEL_VERSION
|
||
|
||
/* Override abi-tags ABI version if necessary. */
|
||
#undef __ABI_TAG_VERSION
|
||
|
||
/* An extension in gcc 2.96 and up allows the subtraction of two
|
||
local labels. */
|
||
#undef HAVE_SUBTRACT_LOCAL_LABELS
|
||
|
||
/* bash 2.0 introduced the _XXX_GNU_nonoption_argv_flags_ variable to help
|
||
getopt determine whether a parameter is a flag or not. This features
|
||
was disabled later since it caused trouble. We are by default therefore
|
||
disabling the support as well. */
|
||
#undef USE_NONOPTION_FLAGS
|
||
|
||
/* 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 if forced unwind support is available. */
|
||
#undef HAVE_FORCED_UNWIND
|
||
|
||
/* Defined if the linker supports the -z relro option. */
|
||
#undef HAVE_Z_RELRO
|
||
|
||
/* Defined of libidn is available. */
|
||
#undef HAVE_LIBIDN
|
||
|
||
/* Define if inlined system calls are available. */
|
||
#undef HAVE_INLINED_SYSCALLS
|
||
|
||
/* Define if your assembler and linker support R_PPC_REL16* relocs. */
|
||
#undef HAVE_ASM_PPC_REL16
|
||
|
||
/* Define if __stack_chk_guard canary should be randomized at program startup. */
|
||
#undef ENABLE_STACKGUARD_RANDOMIZE
|
||
|
||
/*
|
||
*/
|
||
|
||
#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.in */
|
||
#undef HAVE_PSIGNAL
|
||
|
||
/* sysdeps/unix/configure.in */
|
||
#undef HAVE_STRERROR
|
||
|
||
/* sysdeps/unix/common/configure.in */
|
||
#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
|
||
|
||
#endif
|