From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1039) id 3E1B83857C66; Thu, 4 Nov 2021 14:19:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3E1B83857C66 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: H.J. Lu To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-4902] libffi: Add --enable-cet to configure X-Act-Checkin: gcc X-Git-Author: H.J. Lu X-Git-Refname: refs/heads/master X-Git-Oldrev: af1bfcc04ca1c80af4fc1cda75c6c1d8509c8bd0 X-Git-Newrev: 333efaea633971912f2208d37b7b62992759d400 Message-Id: <20211104141939.3E1B83857C66@sourceware.org> Date: Thu, 4 Nov 2021 14:19:39 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Nov 2021 14:19:39 -0000 https://gcc.gnu.org/g:333efaea633971912f2208d37b7b62992759d400 commit r12-4902-g333efaea633971912f2208d37b7b62992759d400 Author: H.J. Lu Date: Thu Nov 4 07:17:44 2021 -0700 libffi: Add --enable-cet to configure When --enable-cet is used to configure GCC, enable Intel CET in libffi. * Makefile.am (AM_CFLAGS): Add $(CET_FLAGS). (AM_CCASFLAGS): Likewise. * configure.ac (CET_FLAGS): Add GCC_CET_FLAGS and AC_SUBST. * Makefile.in: Regenerate. * aclocal.m4: Likewise. * configure: Likewise. * include/Makefile.in: Likewise. * man/Makefile.in: Likewise. * testsuite/Makefile.in: Likewise. Diff: --- libffi/Makefile.am | 4 +- libffi/Makefile.in | 7 +++- libffi/aclocal.m4 | 2 + libffi/configure | 97 ++++++++++++++++++++++++++++++++++++++++++-- libffi/configure.ac | 4 ++ libffi/include/Makefile.in | 3 ++ libffi/man/Makefile.in | 3 ++ libffi/testsuite/Makefile.in | 3 ++ 8 files changed, 116 insertions(+), 7 deletions(-) diff --git a/libffi/Makefile.am b/libffi/Makefile.am index 02e36176c67..c6d6f849c53 100644 --- a/libffi/Makefile.am +++ b/libffi/Makefile.am @@ -182,7 +182,7 @@ nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) -AM_CFLAGS = -Wall -g -fexceptions +AM_CFLAGS = -Wall -g -fexceptions $(CET_FLAGS) if FFI_DEBUG # Build debug. Define FFI_DEBUG on the commandline so that, when building with # MSVC, it can link against the debug CRT. @@ -218,7 +218,7 @@ libffi_la_LDFLAGS = -no-undefined $(libffi_version_info) $(libffi_version_script libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep) AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src -AM_CCASFLAGS = $(AM_CPPFLAGS) +AM_CCASFLAGS = $(AM_CPPFLAGS) $(CET_FLAGS) # Multilib support. Automake should provide these on its own. all-recursive: all-multi diff --git a/libffi/Makefile.in b/libffi/Makefile.in index 6ff0c67a779..5524a6a571e 100644 --- a/libffi/Makefile.in +++ b/libffi/Makefile.in @@ -99,7 +99,9 @@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/asmcfi.m4 \ + $(top_srcdir)/../config/cet.m4 \ $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/enable.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ @@ -320,6 +322,7 @@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ +CET_FLAGS = @CET_FLAGS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ @@ -586,7 +589,7 @@ libffi_convenience_la_LIBADD = $(libffi_la_LIBADD) libffi_convenience_la_DEPENDENCIES = $(libffi_la_DEPENDENCIES) nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) -AM_CFLAGS = -Wall -g -fexceptions $(am__append_2) +AM_CFLAGS = -Wall -g -fexceptions $(CET_FLAGS) $(am__append_2) @LIBFFI_BUILD_VERSIONED_SHLIB_FALSE@libffi_version_script = @LIBFFI_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@libffi_version_script = -Wl,--version-script,libffi.map @LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBFFI_BUILD_VERSIONED_SHLIB_TRUE@libffi_version_script = -Wl,-M,libffi.map-sun @@ -597,7 +600,7 @@ libffi_version_info = -version-info `grep -v '^\#' $(srcdir)/libtool-version` libffi_la_LDFLAGS = -no-undefined $(libffi_version_info) $(libffi_version_script) $(LTLDFLAGS) $(AM_LTLDFLAGS) libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep) AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src -AM_CCASFLAGS = $(AM_CPPFLAGS) +AM_CCASFLAGS = $(AM_CPPFLAGS) $(CET_FLAGS) MULTISRCTOP = MULTIBUILDTOP = MULTIDIRS = diff --git a/libffi/aclocal.m4 b/libffi/aclocal.m4 index 9c8c88f8ca6..736ec308d5b 100644 --- a/libffi/aclocal.m4 +++ b/libffi/aclocal.m4 @@ -1189,7 +1189,9 @@ AC_SUBST([am__untar]) m4_include([../config/acx.m4]) m4_include([../config/asmcfi.m4]) +m4_include([../config/cet.m4]) m4_include([../config/depstand.m4]) +m4_include([../config/enable.m4]) m4_include([../config/lead-dot.m4]) m4_include([../config/multi.m4]) m4_include([../config/override.m4]) diff --git a/libffi/configure b/libffi/configure index 4bababb87f5..575641cca1d 100755 --- a/libffi/configure +++ b/libffi/configure @@ -692,6 +692,7 @@ am__fastdepCCAS_TRUE CCASDEPMODE CCASFLAGS CCAS +CET_FLAGS am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE @@ -802,6 +803,7 @@ enable_multilib enable_silent_rules enable_generated_files_in_srcdir enable_dependency_tracking +enable_cet enable_shared enable_static with_pic @@ -1457,6 +1459,7 @@ Optional Features: do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build + --enable-cet enable Intel CET in target libraries [default=auto] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] @@ -4877,6 +4880,95 @@ CFLAGS=$save_CFLAGS +# 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|auto) ;; + *) as_fn_error $? "Unknown argument to enable/disable cet" "$LINENO" 5 ;; + esac + +else + enable_cet=auto +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CET support" >&5 +$as_echo_n "checking for CET support... " >&6; } + +# NB: Avoid nested save_CFLAGS and save_LDFLAGS. +case "$host" in + i[34567]86-*-linux* | x86_64-*-linux*) + case "$enable_cet" in + auto) + # Check if target supports multi-byte NOPs + # and if compiler and assembler support CET insn. + cet_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#if !defined(__SSE2__) +#error target does not support multi-byte NOPs +#else +asm ("setssbsy"); +#endif + + ; + 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 + CFLAGS="$cet_save_CFLAGS" + ;; + 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 -mshstk" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + # By default we simply use the C compiler to build assembly code. test "${CCAS+set}" = set || CCAS=$CC @@ -6901,7 +6993,6 @@ fi - # Check whether --enable-libtool-lock was given. @@ -11481,7 +11572,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11484 "configure" +#line 11575 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11587,7 +11678,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11590 "configure" +#line 11681 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/libffi/configure.ac b/libffi/configure.ac index bff5a1e7189..014d89d0423 100644 --- a/libffi/configure.ac +++ b/libffi/configure.ac @@ -48,6 +48,10 @@ m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) AC_SUBST(CFLAGS) +# Add CET specific flags if CET is enabled +GCC_CET_FLAGS(CET_FLAGS) +AC_SUBST(CET_FLAGS) + AM_PROG_AS AM_PROG_CC_C_O AC_PROG_LIBTOOL diff --git a/libffi/include/Makefile.in b/libffi/include/Makefile.in index c76e2a8c6f5..879cb72296d 100644 --- a/libffi/include/Makefile.in +++ b/libffi/include/Makefile.in @@ -93,7 +93,9 @@ subdir = include ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/asmcfi.m4 \ + $(top_srcdir)/../config/cet.m4 \ $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/enable.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ @@ -192,6 +194,7 @@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ +CET_FLAGS = @CET_FLAGS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ diff --git a/libffi/man/Makefile.in b/libffi/man/Makefile.in index 8dbe52ff5af..9d4f96608c4 100644 --- a/libffi/man/Makefile.in +++ b/libffi/man/Makefile.in @@ -92,7 +92,9 @@ subdir = man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/asmcfi.m4 \ + $(top_srcdir)/../config/cet.m4 \ $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/enable.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ @@ -174,6 +176,7 @@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ +CET_FLAGS = @CET_FLAGS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ diff --git a/libffi/testsuite/Makefile.in b/libffi/testsuite/Makefile.in index 3e9e937b752..a19b523e54a 100644 --- a/libffi/testsuite/Makefile.in +++ b/libffi/testsuite/Makefile.in @@ -92,7 +92,9 @@ subdir = testsuite ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/asmcfi.m4 \ + $(top_srcdir)/../config/cet.m4 \ $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/enable.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ @@ -147,6 +149,7 @@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ +CET_FLAGS = @CET_FLAGS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@