Print this page
15254 %ymm registers not restored after signal handler
15367 x86 getfpregs() summons corrupting %xmm ghosts
15333 want x86 /proc xregs support (libc_db, libproc, mdb, etc.)
15336 want libc functions for extended ucontext_t
15334 want ps_lwphandle-specific reg routines
15328 FPU_CW_INIT mistreats reserved bit
15335 i86pc fpu_subr.c isn't really platform-specific
15332 setcontext(2) isn't actually noreturn
15331 need <sys/stdalign.h>
Change-Id: I7060aa86042dfb989f77fc3323c065ea2eafa9ad
Conflicts:
usr/src/uts/common/fs/proc/prcontrol.c
usr/src/uts/intel/os/archdep.c
usr/src/uts/intel/sys/ucontext.h
usr/src/uts/intel/syscall/getcontext.c
@@ -26,11 +26,11 @@
/*
* Copyright 2012 DEY Storage Systems, Inc. All rights reserved.
* Copyright 2018 Joyent, Inc.
* Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
- * Copyright 2022 Oxide Computer Company
+ * Copyright 2023 Oxide Computer Company
*/
#include <sys/types.h>
#include <sys/param.h>
#include <sys/thread.h>
@@ -136,11 +136,11 @@
mutex_exit(&p->p_ldtlock);
if (size != 0)
v[0].p_filesz += sizeof (Note) + roundup(size, sizeof (Word));
#endif /* __i386_COMPAT */
- if ((size = prhasx(p)? prgetprxregsize(p) : 0) != 0)
+ if ((size = prhasx(p) ? prgetprxregsize(p) : 0) != 0)
v[0].p_filesz += nlwp * sizeof (Note)
+ nlwp * roundup(size, sizeof (Word));
#if defined(__sparc)
/*
@@ -195,11 +195,11 @@
struct utsname uts;
prsecflags_t psecflags;
prupanic_t upanic;
} *bigwad;
- size_t xregsize = prhasx(p)? prgetprxregsize(p) : 0;
+ size_t xregsize = prhasx(p) ? prgetprxregsize(p) : 0;
size_t crsize = sizeof (prcred_t) + sizeof (gid_t) * (ngroups_max - 1);
size_t psize = prgetprivsize();
size_t bigsize = MAX(psize, MAX(sizeof (*bigwad),
MAX(xregsize, crsize)));
@@ -572,11 +572,11 @@
goto done;
}
#endif /* __sparc */
if (xregsize) {
- prgetprxregs(lwp, bigwad->xregs);
+ prgetprxregs(lwp, (prxregset_t *)bigwad->xregs);
error = elfnote(vp, &offset, NT_PRXREG,
xregsize, bigwad->xregs, rlimit, credp);
if (error)
goto done;
}