sysent: Add a sv_psstringssz field to struct sysentvec
The size of the ps_strings structure varies between ABIs, so this is useful for computing the address of the ps_strings structure relative to the top of the stack when stack address randomization is enabled. Reviewed by: kib MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D33704
This commit is contained in:
@@ -75,6 +75,7 @@ struct sysentvec elf64_freebsd_sysvec_la48 = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS_LA48,
|
||||
.sv_usrstack = USRSTACK_LA48,
|
||||
.sv_psstrings = PS_STRINGS_LA48,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
@@ -117,6 +118,7 @@ struct sysentvec elf64_freebsd_sysvec_la57 = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS_LA57,
|
||||
.sv_usrstack = USRSTACK_LA57,
|
||||
.sv_psstrings = PS_STRINGS_LA57,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
|
||||
@@ -776,6 +776,7 @@ struct sysentvec elf_linux_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS_LA48,
|
||||
.sv_usrstack = LINUX_USRSTACK_LA48,
|
||||
.sv_psstrings = LINUX_PS_STRINGS_LA48,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = linux_copyout_auxargs,
|
||||
.sv_copyout_strings = linux_copyout_strings,
|
||||
|
||||
@@ -937,6 +937,7 @@ struct sysentvec elf_linux_sysvec = {
|
||||
.sv_maxuser = LINUX32_MAXUSER,
|
||||
.sv_usrstack = LINUX32_USRSTACK,
|
||||
.sv_psstrings = LINUX32_PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct linux32_ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = linux_copyout_auxargs,
|
||||
.sv_copyout_strings = linux_copyout_strings,
|
||||
|
||||
@@ -81,6 +81,7 @@ struct sysentvec elf32_freebsd_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
|
||||
@@ -99,6 +99,7 @@ static struct sysentvec elf32_freebsd_sysvec = {
|
||||
.sv_maxuser = FREEBSD32_MAXUSER,
|
||||
.sv_usrstack = FREEBSD32_USRSTACK,
|
||||
.sv_psstrings = FREEBSD32_PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct freebsd32_ps_strings),
|
||||
.sv_stackprot = VM_PROT_READ | VM_PROT_WRITE,
|
||||
.sv_copyout_auxargs = elf32_freebsd_copyout_auxargs,
|
||||
.sv_copyout_strings = freebsd32_copyout_strings,
|
||||
|
||||
@@ -77,6 +77,7 @@ static struct sysentvec elf64_freebsd_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_READ | VM_PROT_WRITE,
|
||||
.sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
|
||||
@@ -519,6 +519,7 @@ struct sysentvec elf_linux_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = LINUX_USRSTACK,
|
||||
.sv_psstrings = LINUX_PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_READ | VM_PROT_WRITE,
|
||||
.sv_copyout_auxargs = linux_copyout_auxargs,
|
||||
.sv_copyout_strings = linux_copyout_strings,
|
||||
|
||||
@@ -121,6 +121,7 @@ struct sysentvec ia32_freebsd_sysvec = {
|
||||
.sv_maxuser = FREEBSD32_MAXUSER,
|
||||
.sv_usrstack = FREEBSD32_USRSTACK,
|
||||
.sv_psstrings = FREEBSD32_PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct freebsd32_ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = elf32_freebsd_copyout_auxargs,
|
||||
.sv_copyout_strings = freebsd32_copyout_strings,
|
||||
|
||||
@@ -70,6 +70,7 @@ struct sysentvec elf32_freebsd_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
|
||||
@@ -845,6 +845,7 @@ struct sysentvec linux_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = LINUX_USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
.sv_setregs = linux_exec_setregs,
|
||||
@@ -885,6 +886,7 @@ struct sysentvec elf_linux_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = LINUX_USRSTACK,
|
||||
.sv_psstrings = LINUX_PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = linux_copyout_auxargs,
|
||||
.sv_copyout_strings = linux_copyout_strings,
|
||||
|
||||
@@ -89,6 +89,7 @@ struct sysentvec aout_sysvec = {
|
||||
.sv_maxuser = AOUT32_USRSTACK,
|
||||
.sv_usrstack = AOUT32_USRSTACK,
|
||||
.sv_psstrings = AOUT32_PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
.sv_setregs = exec_setregs,
|
||||
@@ -139,6 +140,7 @@ struct sysentvec aout_sysvec = {
|
||||
.sv_maxuser = AOUT32_USRSTACK,
|
||||
.sv_usrstack = AOUT32_USRSTACK,
|
||||
.sv_psstrings = AOUT32_PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct freebsd32_ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_strings = freebsd32_copyout_strings,
|
||||
.sv_setregs = ia32_setregs,
|
||||
|
||||
@@ -424,6 +424,7 @@ struct sysentvec null_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_strings = NULL,
|
||||
.sv_setregs = NULL,
|
||||
|
||||
@@ -109,6 +109,7 @@ struct sysentvec elf32_freebsd_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS32,
|
||||
.sv_usrstack = FREEBSD32_USRSTACK,
|
||||
.sv_psstrings = FREEBSD32_PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct freebsd32_ps_strings),
|
||||
.sv_copyout_strings = freebsd32_copyout_strings,
|
||||
.sv_setregs = ppc32_setregs,
|
||||
.sv_syscallnames = freebsd32_syscallnames,
|
||||
@@ -117,6 +118,7 @@ struct sysentvec elf32_freebsd_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
.sv_setregs = exec_setregs,
|
||||
.sv_syscallnames = syscallnames,
|
||||
|
||||
@@ -78,6 +78,7 @@ struct sysentvec elf64_freebsd_sysvec_v1 = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = __elfN(powerpc_copyout_auxargs),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
@@ -119,6 +120,7 @@ struct sysentvec elf64_freebsd_sysvec_v2 = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_ALL,
|
||||
.sv_copyout_auxargs = __elfN(powerpc_copyout_auxargs),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
|
||||
@@ -81,6 +81,7 @@ struct sysentvec elf64_freebsd_sysvec = {
|
||||
.sv_maxuser = VM_MAXUSER_ADDRESS,
|
||||
.sv_usrstack = USRSTACK,
|
||||
.sv_psstrings = PS_STRINGS,
|
||||
.sv_psstringssz = sizeof(struct ps_strings),
|
||||
.sv_stackprot = VM_PROT_READ | VM_PROT_WRITE,
|
||||
.sv_copyout_auxargs = __elfN(freebsd_copyout_auxargs),
|
||||
.sv_copyout_strings = exec_copyout_strings,
|
||||
|
||||
@@ -128,6 +128,7 @@ struct sysentvec {
|
||||
vm_offset_t sv_maxuser; /* VM_MAXUSER_ADDRESS */
|
||||
vm_offset_t sv_usrstack; /* USRSTACK */
|
||||
vm_offset_t sv_psstrings; /* PS_STRINGS */
|
||||
size_t sv_psstringssz; /* PS_STRINGS size */
|
||||
int sv_stackprot; /* vm protection for stack */
|
||||
int (*sv_copyout_strings)(struct image_params *,
|
||||
uintptr_t *);
|
||||
|
||||
Reference in New Issue
Block a user