sync code with last fixes and improvements from OpenBSD
This commit is contained in:
parent
bf0676207f
commit
8f31919cdb
325 changed files with 2094 additions and 51856 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: exec_elf.c,v 1.181 2023/04/19 15:37:36 kettenis Exp $ */
|
||||
/* $OpenBSD: exec_elf.c,v 1.182 2023/06/10 19:30:48 kettenis Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Per Fogelstrom
|
||||
|
@ -1383,6 +1383,9 @@ coredump_note_elf(struct proc *p, void *iocookie, size_t *sizep)
|
|||
#ifdef PT_GETFPREGS
|
||||
struct fpreg freg;
|
||||
#endif
|
||||
#ifdef PT_PACMASK
|
||||
register_t pacmask[2];
|
||||
#endif
|
||||
|
||||
size = 0;
|
||||
|
||||
|
@ -1427,6 +1430,24 @@ coredump_note_elf(struct proc *p, void *iocookie, size_t *sizep)
|
|||
size += notesize;
|
||||
#endif
|
||||
|
||||
#ifdef PT_PACMASK
|
||||
notesize = sizeof(nhdr) + elfround(namesize) +
|
||||
elfround(sizeof(pacmask));
|
||||
if (iocookie) {
|
||||
pacmask[0] = pacmask[1] = process_get_pacmask(p);
|
||||
|
||||
nhdr.namesz = namesize;
|
||||
nhdr.descsz = sizeof(pacmask);
|
||||
nhdr.type = NT_OPENBSD_PACMASK;
|
||||
|
||||
error = coredump_writenote_elf(p, iocookie, &nhdr,
|
||||
name, &pacmask);
|
||||
if (error)
|
||||
return (error);
|
||||
}
|
||||
size += notesize;
|
||||
#endif
|
||||
|
||||
*sizep = size;
|
||||
/* XXX Add hook for machdep per-LWP notes. */
|
||||
return (0);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: sys_process.c,v 1.93 2023/01/24 00:12:03 deraadt Exp $ */
|
||||
/* $OpenBSD: sys_process.c,v 1.94 2023/06/10 19:30:48 kettenis Exp $ */
|
||||
/* $NetBSD: sys_process.c,v 1.55 1996/05/15 06:17:47 tls Exp $ */
|
||||
|
||||
/*-
|
||||
|
@ -104,6 +104,7 @@ sys_ptrace(struct proc *p, void *v, register_t *retval)
|
|||
struct ptrace_event u_pe;
|
||||
struct ptrace_state u_ps;
|
||||
register_t u_wcookie;
|
||||
register_t u_pacmask[2];
|
||||
} u;
|
||||
int size = 0;
|
||||
enum { NONE, IN, IN_ALLOC, OUT, OUT_ALLOC, IN_OUT } mode;
|
||||
|
@ -199,6 +200,12 @@ sys_ptrace(struct proc *p, void *v, register_t *retval)
|
|||
size = sizeof u.u_wcookie;
|
||||
data = size; /* suppress the data == size check */
|
||||
break;
|
||||
#endif
|
||||
#ifdef PT_PACMASK
|
||||
case PT_PACMASK:
|
||||
mode = OUT;
|
||||
size = sizeof u.u_pacmask;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return EINVAL;
|
||||
|
@ -731,6 +738,12 @@ ptrace_ustate(struct proc *p, int req, pid_t pid, void *addr, int data,
|
|||
case PT_WCOOKIE:
|
||||
*(register_t *)addr = process_get_wcookie(t);
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef PT_PACMASK
|
||||
case PT_PACMASK:
|
||||
((register_t *)addr)[0] = process_get_pacmask(t);
|
||||
((register_t *)addr)[1] = process_get_pacmask(t);
|
||||
return 0;
|
||||
#endif
|
||||
default:
|
||||
KASSERTMSG(0, "%s: unhandled request %d", __func__, req);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue