From 05ec1133252ffe13af1d3607f0662782b93df419 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Fri, 2 Aug 2019 21:25:39 +0200 Subject: configure: AS_HELP_STRING cannot print variables; don't try Signed-off-by: Nikos Mavrogiannopoulos --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index b31fa2c1ac..6a1d3dbc5c 100644 --- a/configure.ac +++ b/configure.ac @@ -647,7 +647,7 @@ AC_DEFINE_UNQUOTED([UNBOUND_ROOT_KEY_FILE], system_config_file="/etc/gnutls/config" AC_ARG_WITH(system-priority-file, AS_HELP_STRING([--with-system-priority-file], - [specify the system-wide config file (set empty to disable; default is $config)]), + [specify the system-wide config file (set empty to disable)]), system_config_file="$withval" ) -- cgit v1.2.1 From 11dc122ebd3f6acd87fffa0b6bceb8606787d3fe Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Fri, 2 Aug 2019 22:16:31 +0200 Subject: src/Makefile.am: fix detection of .bak files This fixes detection in a way to work in builds outside the source directory. Resolves: #810 Signed-off-by: Nikos Mavrogiannopoulos --- src/Makefile.am | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 501bca58c1..b2409fff2e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -275,16 +275,15 @@ SUFFIXES = .stamp .def .c.bak .h.bak if NEED_LIBOPTS # case --enable-local-libopts: We do not call AUTOGEN unless the .bak files are missing .def.stamp: - @b=`echo $@ | sed 's/.stamp$$//'`; \ - if ! test -f $${srcdir}$${b}.c.bak;then \ + $(AM_V_GEN) b=`echo $@ | sed 's/.stamp$$//'`; \ + if ! test -f $(srcdir)/$${b}.c.bak;then \ echo "No .bak files found; will call autogen"; \ - $(AM_V_GEN) $(AUTOGEN) $<; \ + $(AUTOGEN) $<; \ else \ echo "Re-using .bak files"; \ - srcdir=$(srcdir)/; \ rm -f $${b}.c $${b}.h; \ - cp -p $${srcdir}$${b}.c.bak $${b}.c; \ - cp -p $${srcdir}$${b}.h.bak $${b}.h; \ + cp -p $(srcdir)/$${b}.c.bak $${b}.c; \ + cp -p $(srcdir)/$${b}.h.bak $${b}.h; \ fi touch $@ else -- cgit v1.2.1 From ef80617d1e17e0878a909baad62a75ba265c0e00 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Fri, 2 Aug 2019 21:57:40 +0200 Subject: read_cpuid_vals: use __get_cpuid_count() only when available This makes the functionality available on gcc 4.8. Resolves: #812 Signed-off-by: Nikos Mavrogiannopoulos --- configure.ac | 11 +++++++++++ lib/accelerated/x86/x86-common.c | 24 ++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 6a1d3dbc5c..1bf9bce95e 100644 --- a/configure.ac +++ b/configure.ac @@ -182,6 +182,17 @@ case $host_cpu in ;; esac +# check for gcc's __get_cpuid_count functionality +AC_MSG_CHECKING([for __get_cpuid_count]) +AC_LINK_IFELSE( + [AC_LANG_SOURCE([ + #include + int main(void) { unsigned t1; return __get_cpuid_count(7, 0, &t1, &t1, &t1, &t1); } + ])], + [AC_DEFINE([HAVE_GET_CPUID_COUNT], [1], [use __get_cpuid_count]) AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] +) + fi AC_ARG_ENABLE(tls13-interop, diff --git a/lib/accelerated/x86/x86-common.c b/lib/accelerated/x86/x86-common.c index fb3ff90919..516d6776c5 100644 --- a/lib/accelerated/x86/x86-common.c +++ b/lib/accelerated/x86/x86-common.c @@ -106,17 +106,33 @@ unsigned int _gnutls_x86_cpuid_s[4]; #define VIA_PADLOCK_PHE (1<<21) #define VIA_PADLOCK_PHE_SHA512 (1<<22) +#ifndef HAVE_GET_CPUID_COUNT +static inline void +get_cpuid_level7(unsigned int *eax, unsigned int *ebx, + unsigned int *ecx, unsigned int *edx) +{ + /* we avoid using __get_cpuid_count, because it is not available with gcc 4.8 */ + if (__get_cpuid_max(7, 0) < 7) + return; + + __cpuid_count(7, 0, *eax, *ebx, *ecx, *edx); + return; +} +#else +# define get_cpuid_level7(a,b,c,d) __get_cpuid_count(7, 0, a, b, c, d) +#endif + static unsigned read_cpuid_vals(unsigned int vals[4]) { unsigned t1, t2, t3; - if (!__get_cpuid(1, &t1, &vals[0], - &vals[1], &t2)) + vals[0] = vals[1] = vals[2] = vals[3] = 0; + + if (!__get_cpuid(1, &t1, &vals[0], &vals[1], &t2)) return 0; /* suppress AVX512; it works conditionally on certain CPUs on the original code */ vals[1] &= 0xfffff7ff; - if (!__get_cpuid_count(7, 0, &t1, &vals[2], &t2, &t3)) - return 0; + get_cpuid_level7(&t1, &vals[2], &t2, &t3); return 1; } -- cgit v1.2.1