mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-27 13:32:45 +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
|
#define PROC_AUXV_MAX 256
|
||||||
|
|
||||||
#if __ELF_WORD_SIZE == 64
|
#ifdef PS_ARCH_HAS_FREEBSD32
|
||||||
static const char *elf32_sv_names[] = {
|
static const char *elf32_sv_names[] = {
|
||||||
"Linux ELF32",
|
"Linux ELF32",
|
||||||
"FreeBSD ELF32",
|
"FreeBSD ELF32",
|
||||||
@ -2467,7 +2467,7 @@ out:
|
|||||||
free(auxv32);
|
free(auxv32);
|
||||||
return (auxv);
|
return (auxv);
|
||||||
}
|
}
|
||||||
#endif /* __ELF_WORD_SIZE == 64 */
|
#endif /* PS_ARCH_HAS_FREEBSD32 */
|
||||||
|
|
||||||
static Elf_Auxinfo *
|
static Elf_Auxinfo *
|
||||||
procstat_getauxv_sysctl(pid_t pid, unsigned int *cntp)
|
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];
|
int name[4];
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
#if __ELF_WORD_SIZE == 64
|
#ifdef PS_ARCH_HAS_FREEBSD32
|
||||||
if (is_elf32_sysctl(pid))
|
if (is_elf32_sysctl(pid))
|
||||||
return (procstat_getauxv32_sysctl(pid, cntp));
|
return (procstat_getauxv32_sysctl(pid, cntp));
|
||||||
#endif
|
#endif
|
||||||
|
@ -102,6 +102,11 @@
|
|||||||
#define PS_FST_FFLAG_EXEC 0x2000
|
#define PS_FST_FFLAG_EXEC 0x2000
|
||||||
#define PS_FST_FFLAG_HASLOCK 0x4000
|
#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_kstack;
|
||||||
struct kinfo_proc;
|
struct kinfo_proc;
|
||||||
struct kinfo_vmentry;
|
struct kinfo_vmentry;
|
||||||
|
Loading…
Reference in New Issue
Block a user