File cpuid-check.patch of Package bulk_extractor
From 054ff3b4c82c028446839660335df44cd6c9ab0b Mon Sep 17 00:00:00 2001
From: Jason Solomon <jxs@google.com>
Date: Tue, 24 May 2022 15:43:25 +1000
Subject: [PATCH] Fix detection of x86 cpuid instruction
---
src/dfxml_configure.m4 | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/be20_api/dfxml_cpp/src/dfxml_configure.m4 b/src/be20_api/dfxml_cpp/src/dfxml_configure.m4
index e60b397..f90737f 100644
--- a/src/be20_api/dfxml_cpp/src/dfxml_configure.m4
+++ b/src/be20_api/dfxml_cpp/src/dfxml_configure.m4
@@ -33,7 +33,19 @@ AM_COND_IF([FOUND_GIT],
[AC_MSG_WARN([git not found])])
# Do we have the CPUID instruction?
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define cpuid(id) __asm__( "cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "a"(id), "b"(0), "c"(0), "d"(0))]], [[unsigned long eax, ebx, ecx, edx;cpuid(0);]])],[have_cpuid=yes],[have_cpuid=no])
+# Based on https://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html
+AC_RUN_IFELSE([AC_LANG_PROGRAM([int eax, ebx, ecx, edx;], [
+ __asm__ __volatile__ ("xchg %%ebx, %1\n"
+ "cpuid\n"
+ "xchg %%ebx, %1\n"
+ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx)
+ : "a" (0), "2" (0));
+ return 0;
+])],
+[have_cpuid=yes],
+[have_cpuid=no],
+[have_cpuid=no])
+AC_MSG_NOTICE([have_cpuid: $have_cpuid])
if test "$have_cpuid" = yes; then
AC_DEFINE(HAVE_ASM_CPUID, 1, [define to 1 if __asm__ CPUID is available])
fi
--
2.41.0