mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-27 09:12:44 +00:00
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 248fe3d348
)
This commit is contained in:
parent
ea7f064a78
commit
302ff7e6af
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user