Convert over to using elf_aux_info().

Index: Makefile
===================================================================
RCS file: /cvs/ports/emulators/qemu/Makefile,v
retrieving revision 1.242
diff -u -p -u -p -r1.242 Makefile
--- Makefile    26 Jul 2024 11:49:01 -0000      1.242
+++ Makefile    1 Sep 2024 04:31:43 -0000
@@ -8,6 +8,7 @@ COMMENT-ga=     QEMU guest agent
 
 VERSION=       9.0.2
 DISTNAME=      qemu-${VERSION}
+REVISION=      0
 CATEGORIES=    emulators
 SITES=         https://download.qemu.org/
 EXTRACT_SUFX=  .tar.xz
Index: patches/patch-meson_build
===================================================================
RCS file: /cvs/ports/emulators/qemu/patches/patch-meson_build,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 patch-meson_build
--- patches/patch-meson_build   28 May 2024 13:57:37 -0000      1.13
+++ patches/patch-meson_build   1 Sep 2024 04:31:43 -0000
@@ -1,3 +1,6 @@
+- util/cpuinfo: Make use of elf_aux_info(3) on OpenBSD
+  27fca0a0d560ae704457c5f89e0be658afef034d
+
 - localstatedir does not belong under prefix
 - Remove hardcoding of optimization
 
@@ -13,7 +16,22 @@ Index: meson.build
  config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') / 
qemu_moddir)
  config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / 
get_option('sysconfdir'))
  
-@@ -4226,9 +4226,6 @@ else
+@@ -2743,6 +2743,14 @@ config_host_data.set('CONFIG_GETAUXVAL', cc.links(gnu_
+     return getauxval(AT_HWCAP) == 0;
+   }'''))
+ 
++config_host_data.set('CONFIG_ELF_AUX_INFO', cc.links(gnu_source_prefix + '''
++  #include <sys/auxv.h>
++  int main(void) {
++    unsigned long hwcap = 0;
++    elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
++    return hwcap;
++  }'''))
++
+ config_host_data.set('CONFIG_USBFS', have_linux_user and cc.compiles('''
+   #include <linux/usbdevice_fs.h>
+ 
+@@ -4226,9 +4234,6 @@ else
    summary_info += {'Objective-C compiler': false}
  endif
  option_cflags = (get_option('debug') ? ['-g'] : [])
Index: patches/patch-util_cpuinfo-aarch64_c
===================================================================
RCS file: /cvs/ports/emulators/qemu/patches/patch-util_cpuinfo-aarch64_c,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 patch-util_cpuinfo-aarch64_c
--- patches/patch-util_cpuinfo-aarch64_c        15 Jul 2024 11:13:29 -0000      
1.1
+++ patches/patch-util_cpuinfo-aarch64_c        1 Sep 2024 04:31:43 -0000
@@ -1,14 +1,22 @@
-util/cpuinfo-aarch64: Add OpenBSD support
-ab089908b42f22e7edfa0d40db963c136ab35419
+- util/cpuinfo-aarch64: Add OpenBSD support
+  ab089908b42f22e7edfa0d40db963c136ab35419
+- util/cpuinfo: Make use of elf_aux_info(3) on OpenBSD
+  27fca0a0d560ae704457c5f89e0be658afef034d
 
 Index: util/cpuinfo-aarch64.c
 --- util/cpuinfo-aarch64.c.orig
 +++ util/cpuinfo-aarch64.c
-@@ -20,6 +20,12 @@
+@@ -17,9 +17,18 @@
+ #  define HWCAP2_BTI 0  /* added in glibc 2.32 */
+ # endif
+ #endif
++#ifdef CONFIG_ELF_AUX_INFO
++#include <sys/auxv.h>
++#endif
  #ifdef CONFIG_DARWIN
  # include <sys/sysctl.h>
  #endif
-+#ifdef __OpenBSD__
++#ifdef __OpenBSD__ && !defined(CONFIG_ELF_AUX_INFO)
 +# include <machine/armreg.h>
 +# include <machine/cpu.h>
 +# include <sys/types.h>
@@ -17,12 +25,21 @@ Index: util/cpuinfo-aarch64.c
  
  unsigned cpuinfo;
  
-@@ -71,6 +77,36 @@ unsigned __attribute__((constructor)) cpuinfo_init(voi
+@@ -55,7 +64,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(voi
+ 
+     info = CPUINFO_ALWAYS;
+ 
+-#ifdef CONFIG_LINUX
++#if defined(CONFIG_LINUX) || defined(CONFIG_ELF_AUX_INFO)
+     unsigned long hwcap = qemu_getauxval(AT_HWCAP);
+     info |= (hwcap & HWCAP_ATOMICS ? CPUINFO_LSE : 0);
+     info |= (hwcap & HWCAP_USCAT ? CPUINFO_LSE2 : 0);
+@@ -71,6 +80,36 @@ unsigned __attribute__((constructor)) cpuinfo_init(voi
      info |= sysctl_for_bool("hw.optional.arm.FEAT_AES") * CPUINFO_AES;
      info |= sysctl_for_bool("hw.optional.arm.FEAT_PMULL") * CPUINFO_PMULL;
      info |= sysctl_for_bool("hw.optional.arm.FEAT_BTI") * CPUINFO_BTI;
 +#endif
-+#ifdef __OpenBSD__
++#if defined(__OpenBSD__) && !defined(CONFIG_ELF_AUX_INFO)
 +    int mib[2];
 +    uint64_t isar0;
 +    uint64_t pfr1;
Index: patches/patch-util_cpuinfo-ppc_c
===================================================================
RCS file: /cvs/ports/emulators/qemu/patches/patch-util_cpuinfo-ppc_c,v
retrieving revision 1.1
diff -u -p -u -p -r1.1 patch-util_cpuinfo-ppc_c
--- patches/patch-util_cpuinfo-ppc_c    15 Jul 2024 11:13:29 -0000      1.1
+++ patches/patch-util_cpuinfo-ppc_c    1 Sep 2024 04:31:43 -0000
@@ -1,18 +1,19 @@
-util/cpuinfo-ppc: Fix building on OpenBSD
-272d3decc19aebe87955f4ec6d0c6cc8790471f1
+- util/cpuinfo-ppc: Fix building on OpenBSD
+  272d3decc19aebe87955f4ec6d0c6cc8790471f1
+- util/cpuinfo-ppc: Add FreeBSD support
+  6527cee257e3c8e7add941a06118009c83ba9e75
+- util/cpuinfo: Make use of elf_aux_info(3) on OpenBSD
+  27fca0a0d560ae704457c5f89e0be658afef034d
 
 Index: util/cpuinfo-ppc.c
 --- util/cpuinfo-ppc.c.orig
 +++ util/cpuinfo-ppc.c
-@@ -6,11 +6,13 @@
+@@ -6,11 +6,21 @@
  #include "qemu/osdep.h"
  #include "host/cpuinfo.h"
  
 -#include <asm/cputable.h>
 -#ifdef CONFIG_GETAUXVAL
--# include <sys/auxv.h>
--#else
--# include "elf.h"
 +#ifdef CONFIG_LINUX
 +# include <asm/cputable.h>
 +# ifdef CONFIG_GETAUXVAL
@@ -20,10 +21,20 @@ Index: util/cpuinfo-ppc.c
 +# else
 +#  include "elf.h"
 +# endif
++#endif
++#if defined(CONFIG_ELF_AUX_INFO)
+ # include <sys/auxv.h>
+-#else
+-# include "elf.h"
++# include <machine/cpu.h>
++# ifndef PPC_FEATURE2_ARCH_3_1
++#  define PPC_FEATURE2_ARCH_3_1   0
++# endif
++# define PPC_FEATURE2_VEC_CRYPTO  PPC_FEATURE2_HAS_VEC_CRYPTO
  #endif
  
  unsigned cpuinfo;
-@@ -19,16 +21,17 @@ unsigned cpuinfo;
+@@ -19,16 +29,17 @@ unsigned cpuinfo;
  unsigned __attribute__((constructor)) cpuinfo_init(void)
  {
      unsigned info = cpuinfo;
@@ -37,14 +48,14 @@ Index: util/cpuinfo-ppc.c
 -    hwcap2 = qemu_getauxval(AT_HWCAP2);
      info = CPUINFO_ALWAYS;
  
-+#ifdef CONFIG_LINUX
++#if defined(CONFIG_LINUX) || defined(CONFIG_ELF_AUX_INFO)
 +    unsigned long hwcap = qemu_getauxval(AT_HWCAP);
 +    unsigned long hwcap2 = qemu_getauxval(AT_HWCAP2);
 +
      /* Version numbers are monotonic, and so imply all lower versions. */
      if (hwcap2 & PPC_FEATURE2_ARCH_3_1) {
          info |= CPUINFO_V3_1 | CPUINFO_V3_0 | CPUINFO_V2_07 | CPUINFO_V2_06;
-@@ -58,6 +61,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(voi
+@@ -58,6 +69,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(voi
              }
          }
      }
Index: patches/patch-util_getauxval_c
===================================================================
RCS file: patches/patch-util_getauxval_c
diff -N patches/patch-util_getauxval_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-util_getauxval_c      1 Sep 2024 04:31:43 -0000
@@ -0,0 +1,15 @@
+util/cpuinfo: Make use of elf_aux_info(3) on OpenBSD
+27fca0a0d560ae704457c5f89e0be658afef034d
+
+Index: util/getauxval.c
+--- util/getauxval.c.orig
++++ util/getauxval.c
+@@ -98,7 +98,7 @@ unsigned long qemu_getauxval(unsigned long type)
+     return 0;
+ }
+ 
+-#elif defined(__FreeBSD__)
++#elif defined(CONFIG_ELF_AUX_INFO)
+ #include <sys/auxv.h>
+ 
+ unsigned long qemu_getauxval(unsigned long type)

Reply via email to