Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142562258
D39644.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
16 KB
Referenced Files
None
Subscribers
None
D39644.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D39644: linux(4): Deduplicate linux_copyout_auxargs()
Attached
Detach File
Event Timeline
Log In to Comment