Print this page
OS-5192 need faster clock_gettime
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
Reviewed by: Ryan Zezeski <ryan@zinascii.com>
OS-5072 lxbrand support PT_GNU_STACK
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
OS-4119 lxbrand panic when running native perl inside lx zone
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
OS-3611 lx brand: 64-bit processes should not use VAs above VA hole
OS-3517 lx brand: branded zones don't interpret .interp section
OS-3280 need a way to specify the root of a native system in the lx brand
OS-3279 lx brand should allow delegated datasets
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
OS-2877 lx_librtld_db falls to load due to NULL DT_DEBUG

*** 24,33 **** --- 24,37 ---- */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ + /* + * Copyright 2016, Joyent, Inc. + */ + #ifndef _SYS_EXEC_H #define _SYS_EXEC_H #include <sys/systm.h> #include <vm/seg.h>
*** 100,113 **** --- 104,121 ---- uintptr_t entry; uintptr_t thrptr; vnode_t *ex_vp; char *emulator; char *brandname; + const char *brand_nroot; char *auxp_auxflags; /* addr of auxflags auxv on the user stack */ char *auxp_brand; /* address of first brand auxv on user stack */ cred_t *pfcred; boolean_t scrubenv; + uintptr_t maxstack; + boolean_t stk_prot_override; + uintptr_t commpage; } uarg_t; /* * Possible brand actions for exec. */
*** 173,183 **** int exec_magoff; int exec_maglen; int (*exec_func)(struct vnode *vp, struct execa *uap, struct uarg *args, struct intpdata *idata, int level, long *execsz, int setid, caddr_t exec_file, ! struct cred *cred, int brand_action); int (*exec_core)(struct vnode *vp, struct proc *p, struct cred *cred, rlim64_t rlimit, int sig, core_content_t content); krwlock_t *exec_lock; }; --- 181,191 ---- int exec_magoff; int exec_maglen; int (*exec_func)(struct vnode *vp, struct execa *uap, struct uarg *args, struct intpdata *idata, int level, long *execsz, int setid, caddr_t exec_file, ! struct cred *cred, int *brand_action); int (*exec_core)(struct vnode *vp, struct proc *p, struct cred *cred, rlim64_t rlimit, int sig, core_content_t content); krwlock_t *exec_lock; };
*** 211,221 **** extern int exece(const char *fname, const char **argp, const char **envp); extern int exec_common(const char *fname, const char **argp, const char **envp, int brand_action); extern int gexec(vnode_t **vp, struct execa *uap, struct uarg *args, struct intpdata *idata, int level, long *execsz, caddr_t exec_file, ! struct cred *cred, int brand_action); extern struct execsw *allocate_execsw(char *name, char *magic, size_t magic_size); extern struct execsw *findexecsw(char *magic); extern struct execsw *findexec_by_hdr(char *header); extern struct execsw *findexec_by_magic(char *magic); --- 219,229 ---- extern int exece(const char *fname, const char **argp, const char **envp); extern int exec_common(const char *fname, const char **argp, const char **envp, int brand_action); extern int gexec(vnode_t **vp, struct execa *uap, struct uarg *args, struct intpdata *idata, int level, long *execsz, caddr_t exec_file, ! struct cred *cred, int *brand_action); extern struct execsw *allocate_execsw(char *name, char *magic, size_t magic_size); extern struct execsw *findexecsw(char *magic); extern struct execsw *findexec_by_hdr(char *header); extern struct execsw *findexec_by_magic(char *magic);
*** 236,255 **** /* * When compiling 64-bit kernels we don't want these definitions included * when compiling the 32-bit compatability elf code in the elfexec module. */ extern int elfexec(vnode_t *, execa_t *, uarg_t *, intpdata_t *, int, ! long *, int, caddr_t, cred_t *, int); extern int mapexec_brand(vnode_t *, uarg_t *, Ehdr *, Addr *, ! intptr_t *, caddr_t, int *, caddr_t *, caddr_t *, size_t *, uintptr_t *); #endif /* !_ELF32_COMPAT */ #if defined(_LP64) extern int elf32exec(vnode_t *, execa_t *, uarg_t *, intpdata_t *, int, ! long *, int, caddr_t, cred_t *, int); extern int mapexec32_brand(vnode_t *, uarg_t *, Elf32_Ehdr *, Elf32_Addr *, ! intptr_t *, caddr_t, int *, caddr_t *, caddr_t *, size_t *, uintptr_t *); #endif /* _LP64 */ /* * Utility functions for exec module core routines: */ --- 244,269 ---- /* * When compiling 64-bit kernels we don't want these definitions included * when compiling the 32-bit compatability elf code in the elfexec module. */ extern int elfexec(vnode_t *, execa_t *, uarg_t *, intpdata_t *, int, ! long *, int, caddr_t, cred_t *, int *); extern int mapexec_brand(vnode_t *, uarg_t *, Ehdr *, Addr *, ! intptr_t *, caddr_t, char **, caddr_t *, caddr_t *, size_t *, ! uintptr_t *, uintptr_t *); ! extern int elfreadhdr(vnode_t *, cred_t *, Ehdr *, int *, caddr_t *, ! ssize_t *); #endif /* !_ELF32_COMPAT */ #if defined(_LP64) extern int elf32exec(vnode_t *, execa_t *, uarg_t *, intpdata_t *, int, ! long *, int, caddr_t, cred_t *, int *); extern int mapexec32_brand(vnode_t *, uarg_t *, Elf32_Ehdr *, Elf32_Addr *, ! intptr_t *, caddr_t, char **, caddr_t *, caddr_t *, size_t *, ! uintptr_t *, uintptr_t *); ! extern int elf32readhdr(vnode_t *, cred_t *, Elf32_Ehdr *, int *, caddr_t *, ! ssize_t *); #endif /* _LP64 */ /* * Utility functions for exec module core routines: */