diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2024-07-30 11:12:42 +1000 |
|---|---|---|
| committer | Richard Henderson <richard.henderson@linaro.org> | 2024-07-30 11:12:42 +1000 |
| commit | 8617cb073ca9fa5588d7afad5c81b7aa6cd02f26 (patch) | |
| tree | 31d780bf26636245c42e67ae1d454dff18079229 /util | |
| parent | 397c08b8287798cd69498f186613dae324ad1f95 (diff) | |
| parent | d9b019e0a05cbbaa184815dd201b25006950c6d7 (diff) | |
| download | focaccia-qemu-8617cb073ca9fa5588d7afad5c81b7aa6cd02f26.tar.gz focaccia-qemu-8617cb073ca9fa5588d7afad5c81b7aa6cd02f26.zip | |
Merge tag 'pull-misc-20240730' of https://gitlab.com/rth7680/qemu into staging
util/getauxval: Ensure setting errno if not found util/getauxval: Use elf_aux_info on OpenBSD linux-user: open_self_stat: Implement num_threads target/rx: Use target_ulong for address in LI # -----BEGIN PGP SIGNATURE----- # # iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmaoPYUdHHJpY2hhcmQu # aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV/QoQgAhqVcFGTLW9ozw8cR # 7DMloHfDbcZTmjQIUvq2WPWCGpUj6mXZXQCM7QAjfGVSa45zOsmRyTRM/If0aZxq # r0/rQmNVchJ2bjnzz83tu1A+a2+yXLwzzfUdBZ6Jg91vSOrJ0io8CyHSIdtLrFlK # mV/LQ5viFdhlqk5GO0o/vdAgBgz6rVk4Uwuc/wl88JR5AHk7tRB21XC2ZzhfupBR # 7QnIru6K1Ltm1sJYxW7qX7DC720iqLeS/LFH67Q2f9eVgejUevoOPmCyOvVmt1kr # VPwmxKUs46M3qs6zQ2DuPVIgXZof3Xs1C7jcPR6wvXzVcsof3X1Ma70zdVHWXkCN # XKrTHQ== # =WadL # -----END PGP SIGNATURE----- # gpg: Signature made Tue 30 Jul 2024 11:10:29 AM AEST # gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F # gpg: issuer "richard.henderson@linaro.org" # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [ultimate] * tag 'pull-misc-20240730' of https://gitlab.com/rth7680/qemu: linux-user: open_self_stat: Implement num_threads util/cpuinfo: Make use of elf_aux_info(3) on OpenBSD linux-user/main: Check errno when getting AT_EXECFD util/getauxval: Ensure setting errno if not found target/rx: Use target_ulong for address in LI Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'util')
| -rw-r--r-- | util/cpuinfo-aarch64.c | 9 | ||||
| -rw-r--r-- | util/cpuinfo-ppc.c | 5 | ||||
| -rw-r--r-- | util/getauxval.c | 9 |
3 files changed, 16 insertions, 7 deletions
diff --git a/util/cpuinfo-aarch64.c b/util/cpuinfo-aarch64.c index 8ca775a14b..57468890c3 100644 --- a/util/cpuinfo-aarch64.c +++ b/util/cpuinfo-aarch64.c @@ -17,10 +17,13 @@ # 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__ +#if defined(__OpenBSD__) && !defined(CONFIG_ELF_AUX_INFO) # include <machine/armreg.h> # include <machine/cpu.h> # include <sys/types.h> @@ -61,7 +64,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) 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); @@ -78,7 +81,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) 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; diff --git a/util/cpuinfo-ppc.c b/util/cpuinfo-ppc.c index 1304f9aa80..4d3d3aae0b 100644 --- a/util/cpuinfo-ppc.c +++ b/util/cpuinfo-ppc.c @@ -14,7 +14,8 @@ # include "elf.h" # endif #endif -#ifdef __FreeBSD__ +#if defined(CONFIG_ELF_AUX_INFO) +# include <sys/auxv.h> # include <machine/cpu.h> # ifndef PPC_FEATURE2_ARCH_3_1 # define PPC_FEATURE2_ARCH_3_1 0 @@ -35,7 +36,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) info = CPUINFO_ALWAYS; -#if defined(CONFIG_LINUX) || defined(__FreeBSD__) +#if defined(CONFIG_LINUX) || defined(CONFIG_ELF_AUX_INFO) unsigned long hwcap = qemu_getauxval(AT_HWCAP); unsigned long hwcap2 = qemu_getauxval(AT_HWCAP2); diff --git a/util/getauxval.c b/util/getauxval.c index b124107d61..0735cd8271 100644 --- a/util/getauxval.c +++ b/util/getauxval.c @@ -95,16 +95,20 @@ unsigned long qemu_getauxval(unsigned long type) } } + errno = ENOENT; return 0; } -#elif defined(__FreeBSD__) +#elif defined(CONFIG_ELF_AUX_INFO) #include <sys/auxv.h> unsigned long qemu_getauxval(unsigned long type) { unsigned long aux = 0; - elf_aux_info(type, &aux, sizeof(aux)); + int ret = elf_aux_info(type, &aux, sizeof(aux)); + if (ret != 0) { + errno = ret; + } return aux; } @@ -112,6 +116,7 @@ unsigned long qemu_getauxval(unsigned long type) unsigned long qemu_getauxval(unsigned long type) { + errno = ENOSYS; return 0; } |