diff options
author | John Baldwin <jhb@FreeBSD.org> | 2019-12-03 23:17:54 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2019-12-03 23:17:54 +0000 |
commit | 31174518d2db4950b8bc8ab02e64cdb5e00d34c9 (patch) | |
tree | 2c830969197705d2f745734684051163c5b29ec5 /sys/sys/sysent.h | |
parent | d00066a5f923073113bcb0213ca7a0a9a29b9561 (diff) | |
download | src-31174518d2db4950b8bc8ab02e64cdb5e00d34c9.tar.gz src-31174518d2db4950b8bc8ab02e64cdb5e00d34c9.zip |
Use uintptr_t instead of register_t * for the stack base.
- Use ustringp for the location of the argv and environment strings
and allow destp to travel further down the stack for the stackgap
and auxv regions.
- Update the Linux copyout_strings variants to move destp down the
stack as was done for the native ABIs in r263349.
- Stop allocating a space for a stack gap in the Linux ABIs. This
used to hold translated system call arguments, but hasn't been used
since r159992.
Reviewed by: kib
Tested on: md64 (amd64, i386, linux64), i386 (i386, linux)
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D22501
Notes
Notes:
svn path=/head/; revision=355373
Diffstat (limited to 'sys/sys/sysent.h')
-rw-r--r-- | sys/sys/sysent.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/sys/sysent.h b/sys/sys/sysent.h index cc3924ded7d8..9ed77fd09bea 100644 --- a/sys/sys/sysent.h +++ b/sys/sys/sysent.h @@ -99,7 +99,7 @@ struct sysentvec { const int *sv_errtbl; /* errno translation table */ int (*sv_transtrap)(int, int); /* translate trap-to-signal mapping */ - int (*sv_fixup)(register_t **, struct image_params *); + int (*sv_fixup)(uintptr_t *, struct image_params *); /* stack fixup function */ void (*sv_sendsig)(void (*)(int), struct ksiginfo *, struct __sigset *); /* send signal */ @@ -109,17 +109,19 @@ struct sysentvec { int (*sv_coredump)(struct thread *, struct vnode *, off_t, int); /* function to dump core, or NULL */ int (*sv_imgact_try)(struct image_params *); - void (*sv_stackgap)(struct image_params *, u_long *); - int (*sv_copyout_auxargs)(struct image_params *, u_long *); + void (*sv_stackgap)(struct image_params *, uintptr_t *); + int (*sv_copyout_auxargs)(struct image_params *, + uintptr_t *); int sv_minsigstksz; /* minimum signal stack size */ vm_offset_t sv_minuser; /* VM_MIN_ADDRESS */ vm_offset_t sv_maxuser; /* VM_MAXUSER_ADDRESS */ vm_offset_t sv_usrstack; /* USRSTACK */ vm_offset_t sv_psstrings; /* PS_STRINGS */ int sv_stackprot; /* vm protection for stack */ - int (*sv_copyout_strings)(struct image_params *, register_t **); + int (*sv_copyout_strings)(struct image_params *, + uintptr_t *); void (*sv_setregs)(struct thread *, struct image_params *, - u_long); + uintptr_t); void (*sv_fixlimit)(struct rlimit *, int); u_long *sv_maxssiz; u_int sv_flags; |