mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-15 04:20:28 +08:00
2d63a517e4
AVX-512 ISA adds 512-bit zmm registers. This patch updates _dl_runtime_profile to pass zmm registers to run-time audit. It also changes _dl_x86_64_save_sse and _dl_x86_64_restore_sse to upport zmm registers, which are called when only when RTLD_PREPARE_FOREIGN_CALL is used. Its performance impact is minimum. * config.h.in (HAVE_AVX512_SUPPORT): New #undef. (HAVE_AVX512_ASM_SUPPORT): Likewise. * sysdeps/x86_64/bits/link.h (La_x86_64_zmm): New. (La_x86_64_vector): Add zmm. * sysdeps/x86_64/Makefile (tests): Add tst-audit10. (modules-names): Add tst-auditmod10a and tst-auditmod10b. ($(objpfx)tst-audit10): New target. ($(objpfx)tst-audit10.out): Likewise. (tst-audit10-ENV): New. (AVX512-CFLAGS): Likewise. (CFLAGS-tst-audit10.c): Likewise. (CFLAGS-tst-auditmod10a.c): Likewise. (CFLAGS-tst-auditmod10b.c): Likewise. * sysdeps/x86_64/configure.ac: Set config-cflags-avx512, HAVE_AVX512_SUPPORT and HAVE_AVX512_ASM_SUPPORT. * sysdeps/x86_64/configure: Regenerated. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Add AVX-512 zmm register support. (_dl_x86_64_save_sse): Likewise. (_dl_x86_64_restore_sse): Likewise. * sysdeps/x86_64/dl-trampoline.h: Updated to support different size vector registers. * sysdeps/x86_64/link-defines.sym (YMM_SIZE): New. (ZMM_SIZE): Likewise. * sysdeps/x86_64/tst-audit10.c: New file. * sysdeps/x86_64/tst-auditmod10a.c: Likewise. * sysdeps/x86_64/tst-auditmod10b.c: Likewise.
258 lines
7.2 KiB
C
258 lines
7.2 KiB
C
#if !defined IS_IN_build && !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 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 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 __attribute__((section("foo"))) puts quotes around foo. */
|
||
#undef HAVE_SECTION_QUOTES
|
||
|
||
/* Define if the assembler supports the `.set' directive. */
|
||
#undef HAVE_ASM_SET_DIRECTIVE
|
||
|
||
/* Define if the assembler supports the gnu_unique_object symbol type. */
|
||
#undef HAVE_ASM_UNIQUE_OBJECT
|
||
|
||
/* 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 _Unwind_Find_FDE should be exported from glibc. */
|
||
#undef EXPORT_UNWIND_FIND_FDE
|
||
|
||
/* 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
|
||
|
||
/* 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 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 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 GCC emits GOTDATA relocations. */
|
||
#undef HAVE_GCC_GOTDATA
|
||
|
||
/* Define on SPARC if AS supports VIS3 instructions. */
|
||
#undef HAVE_AS_VIS3_SUPPORT
|
||
|
||
/* 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 gcc supports SSE4. */
|
||
#undef HAVE_SSE4_SUPPORT
|
||
|
||
/* Define if gcc supports AVX. */
|
||
#undef HAVE_AVX_SUPPORT
|
||
|
||
/* Define if gcc supports VEX encoding. */
|
||
#undef HAVE_SSE2AVX_SUPPORT
|
||
|
||
/* Define if compiler supports AVX512. */
|
||
#undef HAVE_AVX512_SUPPORT
|
||
|
||
/* Define if assembler supports AVX512. */
|
||
#undef HAVE_AVX512_ASM_SUPPORT
|
||
|
||
/* Define if gcc supports FMA4. */
|
||
#undef HAVE_FMA4_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 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
|
||
# 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
|
||
|
||
/* 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 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 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
|
||
|
||
/* Define if lock elision should be enabled by default. */
|
||
#undef ENABLE_LOCK_ELISION
|
||
|
||
/* 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 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 if STT_GNU_IFUNC support actually works. */
|
||
#undef HAVE_IFUNC
|
||
|
||
/* Define if linux/fanotify.h is available. */
|
||
#undef HAVE_LINUX_FANOTIFY_H
|
||
|
||
/* Define if the linker defines __ehdr_start. */
|
||
#undef HAVE_EHDR_START
|
||
|
||
/*
|
||
*/
|
||
|
||
#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 pt_chown binary is being built and used by grantpt. */
|
||
#undef HAVE_PT_CHOWN
|
||
|
||
/* ports/sysdeps/mips/configure.in */
|
||
/* Define if using the IEEE 754-2008 NaN encoding on the MIPS target. */
|
||
#undef HAVE_MIPS_NAN2008
|
||
|
||
#endif
|