git: 302ff7e6aff0 - stable/13 - libprocstat: improve conditional for 32-bit compat
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 26 Oct 2023 20:39:15 UTC
The branch stable/13 has been updated by brooks:
URL: https://cgit.FreeBSD.org/src/commit/?id=302ff7e6aff0da1ea3b4de79940aac8103e4bb9c
commit 302ff7e6aff0da1ea3b4de79940aac8103e4bb9c
Author: Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2023-10-26 20:38:41 +0000
Commit: Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2023-10-26 20:38:41 +0000
libprocstat: improve conditional for 32-bit compat
Include support for translating 32-bit auxv vectors on non-64-bit
platforms that aren't riscv (which has no 32-bit ABI support and
probably never will).
Reviewed by: markj
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D42201
(cherry picked from commit 248fe3d3483cb3ec2c78dd31dc02a467060a6577)
---
lib/libprocstat/libprocstat.c | 6 +++---
lib/libprocstat/libprocstat.h | 5 +++++
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/lib/libprocstat/libprocstat.c b/lib/libprocstat/libprocstat.c
index f0542587cbdb..936bf867328a 100644
--- a/lib/libprocstat/libprocstat.c
+++ b/lib/libprocstat/libprocstat.c
@@ -2384,7 +2384,7 @@ procstat_getosrel(struct procstat *procstat, struct kinfo_proc *kp, int *osrelp)
#define PROC_AUXV_MAX 256
-#if __ELF_WORD_SIZE == 64
+#ifdef PS_ARCH_HAS_FREEBSD32
static const char *elf32_sv_names[] = {
"Linux ELF32",
"FreeBSD ELF32",
@@ -2467,7 +2467,7 @@ out:
free(auxv32);
return (auxv);
}
-#endif /* __ELF_WORD_SIZE == 64 */
+#endif /* PS_ARCH_HAS_FREEBSD32 */
static Elf_Auxinfo *
procstat_getauxv_sysctl(pid_t pid, unsigned int *cntp)
@@ -2476,7 +2476,7 @@ procstat_getauxv_sysctl(pid_t pid, unsigned int *cntp)
int name[4];
size_t len;
-#if __ELF_WORD_SIZE == 64
+#ifdef PS_ARCH_HAS_FREEBSD32
if (is_elf32_sysctl(pid))
return (procstat_getauxv32_sysctl(pid, cntp));
#endif
diff --git a/lib/libprocstat/libprocstat.h b/lib/libprocstat/libprocstat.h
index 0df01817663e..3d30b4db4018 100644
--- a/lib/libprocstat/libprocstat.h
+++ b/lib/libprocstat/libprocstat.h
@@ -102,6 +102,11 @@
#define PS_FST_FFLAG_EXEC 0x2000
#define PS_FST_FFLAG_HASLOCK 0x4000
+#if !defined(__ILP32__) && !defined(__riscv)
+/* Target architecture supports 32-bit compat */
+#define PS_ARCH_HAS_FREEBSD32 1
+#endif
+
struct kinfo_kstack;
struct kinfo_proc;
struct kinfo_vmentry;