From fda26abecc9a71f75d654776fdd97183f15f7df7 Mon Sep 17 00:00:00 2001 From: Igor Tsimbalist Date: Fri, 17 Nov 2017 23:36:50 +0100 Subject: [PATCH] Enable building libquadmath with Intel CET libquadmath/ * Makefile.am: Update AM_CFLAGS. * Makefile.in: Regenerate: * acinclude.m4: Add enable.m4 and cet.m4. * configure: Regenerate. * configure.ac: Set CET_FLAGS. Update XCFLAGS. From-SVN: r254899 --- libquadmath/ChangeLog | 8 +++++ libquadmath/Makefile.am | 1 + libquadmath/Makefile.in | 5 ++- libquadmath/acinclude.m4 | 2 ++ libquadmath/configure | 78 ++++++++++++++++++++++++++++++++++++++-- libquadmath/configure.ac | 5 +++ 6 files changed, 96 insertions(+), 3 deletions(-) diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog index 1d152bbd8b6..284f4d98e74 100644 --- a/libquadmath/ChangeLog +++ b/libquadmath/ChangeLog @@ -1,3 +1,11 @@ + 2017-11-17 Igor Tsimbalist + + * Makefile.am: Update AM_CFLAGS. + * Makefile.in: Regenerate: + * acinclude.m4: Add enable.m4 and cet.m4. + * configure: Regenerate. + * configure.ac: Set CET_FLAGS. Update XCFLAGS. + 2017-11-05 Tom de Vries PR other/82784 diff --git a/libquadmath/Makefile.am b/libquadmath/Makefile.am index ec23c66f6b1..6f1fe61158d 100644 --- a/libquadmath/Makefile.am +++ b/libquadmath/Makefile.am @@ -7,6 +7,7 @@ AUTOMAKE_OPTIONS = 1.8 foreign if BUILD_LIBQUADMATH ACLOCAL_AMFLAGS = -I .. -I ../config AM_CPPFLAGS = -I $(top_srcdir)/../include +AM_CFLAGS = $(XCFLAGS) ## May be used by toolexeclibdir. gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) diff --git a/libquadmath/Makefile.in b/libquadmath/Makefile.in index 428e0158aca..312f4856269 100644 --- a/libquadmath/Makefile.in +++ b/libquadmath/Makefile.in @@ -70,7 +70,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ $(top_srcdir)/acinclude.m4 $(top_srcdir)/../libtool.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/../config/enable.m4 \ + $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ @@ -275,6 +276,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +XCFLAGS = @XCFLAGS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -341,6 +343,7 @@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = 1.8 foreign @BUILD_LIBQUADMATH_TRUE@ACLOCAL_AMFLAGS = -I .. -I ../config @BUILD_LIBQUADMATH_TRUE@AM_CPPFLAGS = -I $(top_srcdir)/../include +@BUILD_LIBQUADMATH_TRUE@AM_CFLAGS = $(XCFLAGS) @BUILD_LIBQUADMATH_TRUE@gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_FALSE@version_arg = @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_GNU_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=$(srcdir)/quadmath.map diff --git a/libquadmath/acinclude.m4 b/libquadmath/acinclude.m4 index ab73fb52e05..3703cd68efd 100644 --- a/libquadmath/acinclude.m4 +++ b/libquadmath/acinclude.m4 @@ -2,6 +2,8 @@ dnl ---------------------------------------------------------------------- dnl This whole bit snagged from libgfortran. sinclude(../libtool.m4) +sinclude(../config/enable.m4) +sinclude(../config/cet.m4) dnl The lines below arrange for aclocal not to bring an installed dnl libtool.m4 into aclocal.m4, while still arranging for automake to dnl add a definition of LIBTOOL to Makefile.in. diff --git a/libquadmath/configure b/libquadmath/configure index b1dc7f38537..b32dcbc8e03 100755 --- a/libquadmath/configure +++ b/libquadmath/configure @@ -604,6 +604,7 @@ LIBOBJS get_gcc_base_ver GENINSRC_FALSE GENINSRC_TRUE +XCFLAGS BUILD_LIBQUADMATH_FALSE BUILD_LIBQUADMATH_TRUE LIBQUAD_USE_SYMVER_SUN_FALSE @@ -750,6 +751,7 @@ with_gnu_ld enable_libtool_lock enable_maintainer_mode enable_symvers +enable_cet enable_generated_files_in_srcdir with_gcc_major_version_only ' @@ -1396,6 +1398,8 @@ Optional Features: --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-symvers disable symbol versioning for libquadmath + --enable-cet enable Intel CET in target libraries + [default=default] --enable-generated-files-in-srcdir put copies of generated files in source dir intended for creating source tarballs for users without @@ -10572,7 +10576,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10575 "configure" +#line 10579 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10678,7 +10682,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10681 "configure" +#line 10685 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12819,6 +12823,76 @@ $as_echo "#define USE_I18N_NUMBER_H 1" >>confdefs.h fi +# Add CET specific flags if CET is enabled + # Check whether --enable-cet was given. +if test "${enable_cet+set}" = set; then : + enableval=$enable_cet; + case "$enableval" in + yes|no|default) ;; + *) as_fn_error "Unknown argument to enable/disable cet" "$LINENO" 5 ;; + esac + +else + enable_cet=default +fi + + +case "$host" in + i[34567]86-*-linux* | x86_64-*-linux*) + case "$enable_cet" in + default) + # Check if assembler supports CET. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +asm ("setssbsy"); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + enable_cet=yes +else + enable_cet=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + yes) + # Check if assembler supports CET. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +asm ("setssbsy"); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + as_fn_error "assembler with CET support is required for --enable-cet" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + esac + ;; + *) + enable_cet=no + ;; +esac +if test x$enable_cet = xyes; then + CET_FLAGS="-fcf-protection -mcet" +fi + +XCFLAGS="$XCFLAGS $CET_FLAGS" + + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure diff --git a/libquadmath/configure.ac b/libquadmath/configure.ac index 4226524caf8..2a721cb9adc 100644 --- a/libquadmath/configure.ac +++ b/libquadmath/configure.ac @@ -341,6 +341,11 @@ if test x$quadmath_use_i18n_number_h = xyes; then AC_DEFINE([USE_I18N_NUMBER_H],[1],[whether i18n number rewriting can be supported]) fi +# Add CET specific flags if CET is enabled +GCC_CET_FLAGS(CET_FLAGS) +XCFLAGS="$XCFLAGS $CET_FLAGS" +AC_SUBST(XCFLAGS) + AC_CACHE_SAVE if test ${multilib} = yes; then -- 2.30.2