Page MenuHomeFreeBSD

D39644.diff
No OneTemporary

D39644.diff

diff --git a/sys/amd64/linux/linux.h b/sys/amd64/linux/linux.h
--- a/sys/amd64/linux/linux.h
+++ b/sys/amd64/linux/linux.h
@@ -90,7 +90,7 @@
/*
* Miscellaneous
*/
-#define LINUX_AT_COUNT 20 /* Count of used aux entry types. */
+#define LINUX_AT_COUNT 21 /* Count of used aux entry types. */
struct l___sysctl_args
{
diff --git a/sys/amd64/linux/linux_sysvec.c b/sys/amd64/linux/linux_sysvec.c
--- a/sys/amd64/linux/linux_sysvec.c
+++ b/sys/amd64/linux/linux_sysvec.c
@@ -207,52 +207,14 @@
frame->tf_rax = 0;
}
-static int
-linux_copyout_auxargs(struct image_params *imgp, uintptr_t base)
+void
+linux64_arch_copyout_auxargs(struct image_params *imgp, Elf_Auxinfo **pos)
{
- Elf_Auxargs *args;
- Elf_Auxinfo *argarray, *pos;
- struct proc *p;
- int error, issetugid;
-
- p = imgp->proc;
- args = (Elf64_Auxargs *)imgp->auxargs;
- argarray = pos = malloc(LINUX_AT_COUNT * sizeof(*pos), M_TEMP,
- M_WAITOK | M_ZERO);
-
- issetugid = p->p_flag & P_SUGID ? 1 : 0;
- AUXARGS_ENTRY(pos, LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
- AUXARGS_ENTRY(pos, LINUX_AT_HWCAP, cpu_feature);
- AUXARGS_ENTRY(pos, AT_PAGESZ, args->pagesz);
- AUXARGS_ENTRY(pos, LINUX_AT_CLKTCK, stclohz);
- AUXARGS_ENTRY(pos, AT_PHDR, args->phdr);
- AUXARGS_ENTRY(pos, AT_PHENT, args->phent);
- AUXARGS_ENTRY(pos, AT_PHNUM, args->phnum);
- AUXARGS_ENTRY(pos, AT_BASE, args->base);
- AUXARGS_ENTRY(pos, AT_FLAGS, args->flags);
- AUXARGS_ENTRY(pos, AT_ENTRY, args->entry);
- AUXARGS_ENTRY(pos, AT_UID, imgp->proc->p_ucred->cr_ruid);
- AUXARGS_ENTRY(pos, AT_EUID, imgp->proc->p_ucred->cr_svuid);
- AUXARGS_ENTRY(pos, AT_GID, imgp->proc->p_ucred->cr_rgid);
- AUXARGS_ENTRY(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid);
- AUXARGS_ENTRY(pos, LINUX_AT_SECURE, issetugid);
- AUXARGS_ENTRY_PTR(pos, LINUX_AT_RANDOM, imgp->canary);
- AUXARGS_ENTRY(pos, LINUX_AT_HWCAP2, 0);
- if (imgp->execpathp != 0)
- AUXARGS_ENTRY_PTR(pos, LINUX_AT_EXECFN, imgp->execpathp);
- if (args->execfd != -1)
- AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd);
- AUXARGS_ENTRY(pos, LINUX_AT_PLATFORM, PTROUT(linux_platform));
- AUXARGS_ENTRY(pos, AT_NULL, 0);
-
- free(imgp->auxargs, M_TEMP);
- imgp->auxargs = NULL;
- KASSERT(pos - argarray <= LINUX_AT_COUNT, ("Too many auxargs"));
-
- error = copyout(argarray, (void *)base,
- sizeof(*argarray) * LINUX_AT_COUNT);
- free(argarray, M_TEMP);
- return (error);
+
+ AUXARGS_ENTRY((*pos), LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
+ AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP, cpu_feature);
+ AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP2, 0);
+ AUXARGS_ENTRY((*pos), LINUX_AT_PLATFORM, PTROUT(linux_platform));
}
/*
@@ -623,7 +585,7 @@
.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_auxargs = __linuxN(copyout_auxargs),
.sv_copyout_strings = __linuxN(copyout_strings),
.sv_setregs = linux_exec_setregs,
.sv_fixlimit = NULL,
@@ -638,6 +600,8 @@
.sv_schedtail = linux_schedtail,
.sv_thread_detach = linux_thread_detach,
.sv_trap = linux_vsyscall,
+ .sv_hwcap = NULL,
+ .sv_hwcap2 = NULL,
.sv_onexec = linux_on_exec_vmspace,
.sv_onexit = linux_on_exit,
.sv_ontdexit = linux_thread_dtor,
diff --git a/sys/amd64/linux32/linux.h b/sys/amd64/linux32/linux.h
--- a/sys/amd64/linux32/linux.h
+++ b/sys/amd64/linux32/linux.h
@@ -103,7 +103,7 @@
/*
* Miscellaneous
*/
-#define LINUX_AT_COUNT 21 /* Count of used aux entry types.
+#define LINUX_AT_COUNT 22 /* Count of used aux entry types.
* Keep this synchronized with
* linux_fixup_elf() code.
*/
diff --git a/sys/amd64/linux32/linux32_sysvec.c b/sys/amd64/linux32/linux32_sysvec.c
--- a/sys/amd64/linux32/linux32_sysvec.c
+++ b/sys/amd64/linux32/linux32_sysvec.c
@@ -139,61 +139,15 @@
LINUX_VDSO_SYM_INTPTR(kern_cpu_selector);
LINUX_VDSO_SYM_CHAR(linux_platform);
-static int
-linux_copyout_auxargs(struct image_params *imgp, uintptr_t base)
+void
+linux32_arch_copyout_auxargs(struct image_params *imgp, Elf_Auxinfo **pos)
{
- Elf32_Auxargs *args;
- Elf32_Auxinfo *argarray, *pos;
- int error, issetugid;
-
- args = (Elf32_Auxargs *)imgp->auxargs;
- argarray = pos = malloc(LINUX_AT_COUNT * sizeof(*pos), M_TEMP,
- M_WAITOK | M_ZERO);
-
- issetugid = imgp->proc->p_flag & P_SUGID ? 1 : 0;
- AUXARGS_ENTRY(pos, LINUX_AT_SYSINFO, __kernel_vsyscall);
- AUXARGS_ENTRY(pos, LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
- AUXARGS_ENTRY(pos, LINUX_AT_HWCAP, cpu_feature);
- AUXARGS_ENTRY(pos, AT_PAGESZ, args->pagesz);
- /*
- * Do not export AT_CLKTCK when emulating Linux kernel prior to 2.4.0,
- * as it has appeared in the 2.4.0-rc7 first time.
- * Being exported, AT_CLKTCK is returned by sysconf(_SC_CLK_TCK),
- * glibc falls back to the hard-coded CLK_TCK value when aux entry
- * is not present.
- * Also see linux_times() implementation.
- */
- if (linux_kernver(curthread) >= LINUX_KERNVER_2004000)
- AUXARGS_ENTRY(pos, LINUX_AT_CLKTCK, stclohz);
- AUXARGS_ENTRY(pos, AT_PHDR, args->phdr);
- AUXARGS_ENTRY(pos, AT_PHENT, args->phent);
- AUXARGS_ENTRY(pos, AT_PHNUM, args->phnum);
- AUXARGS_ENTRY(pos, AT_BASE, args->base);
- AUXARGS_ENTRY(pos, AT_FLAGS, args->flags);
- AUXARGS_ENTRY(pos, AT_ENTRY, args->entry);
- AUXARGS_ENTRY(pos, AT_UID, imgp->proc->p_ucred->cr_ruid);
- AUXARGS_ENTRY(pos, AT_EUID, imgp->proc->p_ucred->cr_svuid);
- AUXARGS_ENTRY(pos, AT_GID, imgp->proc->p_ucred->cr_rgid);
- AUXARGS_ENTRY(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid);
- AUXARGS_ENTRY(pos, LINUX_AT_SECURE, issetugid);
- AUXARGS_ENTRY(pos, LINUX_AT_RANDOM, PTROUT(imgp->canary));
- AUXARGS_ENTRY(pos, LINUX_AT_HWCAP2, 0);
- if (imgp->execpathp != 0)
- AUXARGS_ENTRY(pos, LINUX_AT_EXECFN, PTROUT(imgp->execpathp));
- if (args->execfd != -1)
- AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd);
- AUXARGS_ENTRY(pos, LINUX_AT_PLATFORM, PTROUT(linux_platform));
- AUXARGS_ENTRY(pos, AT_NULL, 0);
-
- free(imgp->auxargs, M_TEMP);
- imgp->auxargs = NULL;
- KASSERT(pos - argarray <= LINUX_AT_COUNT, ("Too many auxargs"));
-
- error = copyout(argarray, (void *)base,
- sizeof(*argarray) * LINUX_AT_COUNT);
- free(argarray, M_TEMP);
- return (error);
+ AUXARGS_ENTRY((*pos), LINUX_AT_SYSINFO, __kernel_vsyscall);
+ AUXARGS_ENTRY((*pos), LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
+ AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP, cpu_feature);
+ AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP2, 0);
+ AUXARGS_ENTRY((*pos), LINUX_AT_PLATFORM, PTROUT(linux_platform));
}
static void
@@ -848,7 +802,7 @@
.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_auxargs = __linuxN(copyout_auxargs),
.sv_copyout_strings = linux_copyout_strings,
.sv_setregs = linux_exec_setregs,
.sv_fixlimit = linux32_fixlimit,
@@ -863,6 +817,8 @@
.sv_schedtail = linux_schedtail,
.sv_thread_detach = linux_thread_detach,
.sv_trap = NULL,
+ .sv_hwcap = NULL,
+ .sv_hwcap2 = NULL,
.sv_onexec = linux_on_exec_vmspace,
.sv_onexit = linux_on_exit,
.sv_ontdexit = linux_thread_dtor,
diff --git a/sys/arm64/linux/linux_sysvec.c b/sys/arm64/linux/linux_sysvec.c
--- a/sys/arm64/linux/linux_sysvec.c
+++ b/sys/arm64/linux/linux_sysvec.c
@@ -115,7 +115,6 @@
/* DTrace probes */
LIN_SDT_PROBE_DEFINE0(sysvec, linux_exec_setregs, todo);
-LIN_SDT_PROBE_DEFINE0(sysvec, linux_copyout_auxargs, todo);
LINUX_VDSO_SYM_CHAR(linux_platform);
LINUX_VDSO_SYM_INTPTR(kern_timekeep_base);
@@ -162,55 +161,14 @@
}
}
-static int
-linux_copyout_auxargs(struct image_params *imgp, uintptr_t base)
+void
+linux64_arch_copyout_auxargs(struct image_params *imgp, Elf_Auxinfo **pos)
{
- Elf_Auxargs *args;
- Elf_Auxinfo *argarray, *pos;
- struct proc *p;
- int error, issetugid;
-
- LIN_SDT_PROBE0(sysvec, linux_copyout_auxargs, todo);
- p = imgp->proc;
-
- args = (Elf64_Auxargs *)imgp->auxargs;
- argarray = pos = malloc(LINUX_AT_COUNT * sizeof(*pos), M_TEMP,
- M_WAITOK | M_ZERO);
-
- issetugid = p->p_flag & P_SUGID ? 1 : 0;
- AUXARGS_ENTRY(pos, LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
- AUXARGS_ENTRY(pos, LINUX_AT_MINSIGSTKSZ, LINUX_MINSIGSTKSZ);
- AUXARGS_ENTRY(pos, LINUX_AT_HWCAP, *imgp->sysent->sv_hwcap);
- AUXARGS_ENTRY(pos, AT_PAGESZ, args->pagesz);
- AUXARGS_ENTRY(pos, LINUX_AT_CLKTCK, stclohz);
- AUXARGS_ENTRY(pos, AT_PHDR, args->phdr);
- AUXARGS_ENTRY(pos, AT_PHENT, args->phent);
- AUXARGS_ENTRY(pos, AT_PHNUM, args->phnum);
- AUXARGS_ENTRY(pos, AT_BASE, args->base);
- AUXARGS_ENTRY(pos, AT_FLAGS, args->flags);
- AUXARGS_ENTRY(pos, AT_ENTRY, args->entry);
- AUXARGS_ENTRY(pos, AT_UID, imgp->proc->p_ucred->cr_ruid);
- AUXARGS_ENTRY(pos, AT_EUID, imgp->proc->p_ucred->cr_svuid);
- AUXARGS_ENTRY(pos, AT_GID, imgp->proc->p_ucred->cr_rgid);
- AUXARGS_ENTRY(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid);
- AUXARGS_ENTRY(pos, LINUX_AT_SECURE, issetugid);
- AUXARGS_ENTRY_PTR(pos, LINUX_AT_RANDOM, imgp->canary);
- AUXARGS_ENTRY(pos, LINUX_AT_HWCAP2, *imgp->sysent->sv_hwcap2);
- if (imgp->execpathp != 0)
- AUXARGS_ENTRY_PTR(pos, LINUX_AT_EXECFN, imgp->execpathp);
- if (args->execfd != -1)
- AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd);
- AUXARGS_ENTRY(pos, LINUX_AT_PLATFORM, PTROUT(linux_platform));
- AUXARGS_ENTRY(pos, AT_NULL, 0);
-
- free(imgp->auxargs, M_TEMP);
- imgp->auxargs = NULL;
- KASSERT(pos - argarray <= LINUX_AT_COUNT, ("Too many auxargs"));
-
- error = copyout(argarray, (void *)base,
- sizeof(*argarray) * LINUX_AT_COUNT);
- free(argarray, M_TEMP);
- return (error);
+
+ AUXARGS_ENTRY((*pos), LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
+ AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP, *imgp->sysent->sv_hwcap);
+ AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP2, *imgp->sysent->sv_hwcap2);
+ AUXARGS_ENTRY((*pos), LINUX_AT_PLATFORM, PTROUT(linux_platform));
}
/*
@@ -425,7 +383,7 @@
.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_auxargs = __linuxN(copyout_auxargs),
.sv_copyout_strings = __linuxN(copyout_strings),
.sv_setregs = linux_exec_setregs,
.sv_fixlimit = NULL,
diff --git a/sys/compat/linux/linux_elf.h b/sys/compat/linux/linux_elf.h
--- a/sys/compat/linux/linux_elf.h
+++ b/sys/compat/linux/linux_elf.h
@@ -42,6 +42,8 @@
void __linuxN(prepare_notes)(struct thread *, struct note_info_list *,
size_t *);
+void __linuxN(arch_copyout_auxargs)(struct image_params *, Elf_Auxinfo **);
+int __linuxN(copyout_auxargs)(struct image_params *, uintptr_t);
int __linuxN(copyout_strings)(struct image_params *, uintptr_t *);
bool linux_trans_osrel(const Elf_Note *note, int32_t *osrel);
diff --git a/sys/compat/linux/linux_elf.c b/sys/compat/linux/linux_elf.c
--- a/sys/compat/linux/linux_elf.c
+++ b/sys/compat/linux/linux_elf.c
@@ -488,3 +488,57 @@
return (true);
}
+
+int
+__linuxN(copyout_auxargs)(struct image_params *imgp, uintptr_t base)
+{
+ Elf_Auxargs *args;
+ Elf_Auxinfo *aarray, *pos;
+ struct proc *p;
+ int error, issetugid;
+
+ p = imgp->proc;
+ issetugid = p->p_flag & P_SUGID ? 1 : 0;
+ args = imgp->auxargs;
+ aarray = pos = malloc(LINUX_AT_COUNT * sizeof(*pos), M_TEMP,
+ M_WAITOK | M_ZERO);
+
+ __linuxN(arch_copyout_auxargs)(imgp, &pos);
+ /*
+ * Do not export AT_CLKTCK when emulating Linux kernel prior to 2.4.0,
+ * as it has appeared in the 2.4.0-rc7 first time.
+ * Being exported, AT_CLKTCK is returned by sysconf(_SC_CLK_TCK),
+ * glibc falls back to the hard-coded CLK_TCK value when aux entry
+ * is not present.
+ * Also see linux_times() implementation.
+ */
+ if (linux_kernver(curthread) >= LINUX_KERNVER_2004000)
+ AUXARGS_ENTRY(pos, LINUX_AT_CLKTCK, stclohz);
+ AUXARGS_ENTRY(pos, AT_PAGESZ, args->pagesz);
+ AUXARGS_ENTRY(pos, AT_PHDR, args->phdr);
+ AUXARGS_ENTRY(pos, AT_PHENT, args->phent);
+ AUXARGS_ENTRY(pos, AT_PHNUM, args->phnum);
+ AUXARGS_ENTRY(pos, AT_BASE, args->base);
+ AUXARGS_ENTRY(pos, AT_FLAGS, args->flags);
+ AUXARGS_ENTRY(pos, AT_ENTRY, args->entry);
+ AUXARGS_ENTRY(pos, AT_UID, imgp->proc->p_ucred->cr_ruid);
+ AUXARGS_ENTRY(pos, AT_EUID, imgp->proc->p_ucred->cr_svuid);
+ AUXARGS_ENTRY(pos, AT_GID, imgp->proc->p_ucred->cr_rgid);
+ AUXARGS_ENTRY(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid);
+ AUXARGS_ENTRY(pos, LINUX_AT_SECURE, issetugid);
+ AUXARGS_ENTRY_PTR(pos, LINUX_AT_RANDOM, imgp->canary);
+ if (imgp->execpathp != 0)
+ AUXARGS_ENTRY(pos, LINUX_AT_EXECFN, PTROUT(imgp->execpathp));
+ if (args->execfd != -1)
+ AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd);
+ AUXARGS_ENTRY(pos, LINUX_AT_MINSIGSTKSZ, LINUX_MINSIGSTKSZ);
+ AUXARGS_ENTRY(pos, AT_NULL, 0);
+
+ free(imgp->auxargs, M_TEMP);
+ imgp->auxargs = NULL;
+ KASSERT(pos - aarray <= LINUX_AT_COUNT, ("Too many auxargs"));
+
+ error = copyout(aarray, PTRIN(base), sizeof(*aarray) * LINUX_AT_COUNT);
+ free(aarray, M_TEMP);
+ return (error);
+}
diff --git a/sys/i386/linux/linux.h b/sys/i386/linux/linux.h
--- a/sys/i386/linux/linux.h
+++ b/sys/i386/linux/linux.h
@@ -95,7 +95,7 @@
/*
* Miscellaneous
*/
-#define LINUX_AT_COUNT 20 /* Count of used aux entry types.
+#define LINUX_AT_COUNT 21 /* Count of used aux entry types.
* Keep this synchronized with
* linux_fixup_elf() code.
*/
diff --git a/sys/i386/linux/linux_sysvec.c b/sys/i386/linux/linux_sysvec.c
--- a/sys/i386/linux/linux_sysvec.c
+++ b/sys/i386/linux/linux_sysvec.c
@@ -138,60 +138,14 @@
return (0);
}
-static int
-linux_copyout_auxargs(struct image_params *imgp, uintptr_t base)
+void
+linux32_arch_copyout_auxargs(struct image_params *imgp, Elf_Auxinfo **pos)
{
- Elf32_Auxargs *args;
- Elf32_Auxinfo *argarray, *pos;
- int error, issetugid;
-
- issetugid = imgp->proc->p_flag & P_SUGID ? 1 : 0;
- args = (Elf32_Auxargs *)imgp->auxargs;
- argarray = pos = malloc(LINUX_AT_COUNT * sizeof(*pos), M_TEMP,
- M_WAITOK | M_ZERO);
-
- AUXARGS_ENTRY(pos, LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
- AUXARGS_ENTRY(pos, LINUX_AT_SYSINFO, __kernel_vsyscall);
- AUXARGS_ENTRY(pos, LINUX_AT_HWCAP, cpu_feature);
- /*
- * Do not export AT_CLKTCK when emulating Linux kernel prior to 2.4.0,
- * as it has appeared in the 2.4.0-rc7 first time.
- * Being exported, AT_CLKTCK is returned by sysconf(_SC_CLK_TCK),
- * glibc falls back to the hard-coded CLK_TCK value when aux entry
- * is not present.
- * Also see linux_times() implementation.
- */
- if (linux_kernver(curthread) >= LINUX_KERNVER_2004000)
- AUXARGS_ENTRY(pos, LINUX_AT_CLKTCK, stclohz);
- AUXARGS_ENTRY(pos, AT_PHDR, args->phdr);
- AUXARGS_ENTRY(pos, AT_PHENT, args->phent);
- AUXARGS_ENTRY(pos, AT_PHNUM, args->phnum);
- AUXARGS_ENTRY(pos, AT_PAGESZ, args->pagesz);
- AUXARGS_ENTRY(pos, AT_FLAGS, args->flags);
- AUXARGS_ENTRY(pos, AT_ENTRY, args->entry);
- AUXARGS_ENTRY(pos, AT_BASE, args->base);
- AUXARGS_ENTRY(pos, LINUX_AT_SECURE, issetugid);
- AUXARGS_ENTRY(pos, AT_UID, imgp->proc->p_ucred->cr_ruid);
- AUXARGS_ENTRY(pos, AT_EUID, imgp->proc->p_ucred->cr_svuid);
- AUXARGS_ENTRY(pos, AT_GID, imgp->proc->p_ucred->cr_rgid);
- AUXARGS_ENTRY(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid);
- AUXARGS_ENTRY(pos, LINUX_AT_PLATFORM, PTROUT(linux_platform));
- AUXARGS_ENTRY_PTR(pos, LINUX_AT_RANDOM, imgp->canary);
- if (imgp->execpathp != 0)
- AUXARGS_ENTRY_PTR(pos, LINUX_AT_EXECFN, imgp->execpathp);
- if (args->execfd != -1)
- AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd);
- AUXARGS_ENTRY(pos, AT_NULL, 0);
-
- free(imgp->auxargs, M_TEMP);
- imgp->auxargs = NULL;
- KASSERT(pos - argarray <= LINUX_AT_COUNT, ("Too many auxargs"));
-
- error = copyout(argarray, (void *)base,
- sizeof(*argarray) * LINUX_AT_COUNT);
- free(argarray, M_TEMP);
- return (error);
+ AUXARGS_ENTRY((*pos), LINUX_AT_SYSINFO_EHDR, linux_vdso_base);
+ AUXARGS_ENTRY((*pos), LINUX_AT_SYSINFO, __kernel_vsyscall);
+ AUXARGS_ENTRY((*pos), LINUX_AT_HWCAP, cpu_feature);
+ AUXARGS_ENTRY((*pos), LINUX_AT_PLATFORM, PTROUT(linux_platform));
}
static void
@@ -650,6 +604,8 @@
.sv_schedtail = linux_schedtail,
.sv_thread_detach = linux_thread_detach,
.sv_trap = NULL,
+ .sv_hwcap = NULL,
+ .sv_hwcap2 = NULL,
.sv_onexec = linux_on_exec_vmspace,
.sv_onexit = linux_on_exit,
.sv_ontdexit = linux_thread_dtor,
@@ -678,7 +634,7 @@
.sv_psstrings = LINUX_PS_STRINGS,
.sv_psstringssz = sizeof(struct ps_strings),
.sv_stackprot = VM_PROT_ALL,
- .sv_copyout_auxargs = linux_copyout_auxargs,
+ .sv_copyout_auxargs = __linuxN(copyout_auxargs),
.sv_copyout_strings = __linuxN(copyout_strings),
.sv_setregs = linux_exec_setregs,
.sv_fixlimit = NULL,
@@ -693,6 +649,8 @@
.sv_schedtail = linux_schedtail,
.sv_thread_detach = linux_thread_detach,
.sv_trap = NULL,
+ .sv_hwcap = NULL,
+ .sv_hwcap2 = NULL,
.sv_onexec = linux_on_exec_vmspace,
.sv_onexit = linux_on_exit,
.sv_ontdexit = linux_thread_dtor,

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 22, 1:04 AM (6 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27825303
Default Alt Text
D39644.diff (16 KB)

Event Timeline