Page MenuHomeFreeBSD

D26388.diff
No OneTemporary

D26388.diff

Index: head/sys/amd64/amd64/elf_machdep.c
===================================================================
--- head/sys/amd64/amd64/elf_machdep.c
+++ head/sys/amd64/amd64/elf_machdep.c
@@ -52,8 +52,6 @@
struct sysentvec elf64_freebsd_sysvec_la48 = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
@@ -89,8 +87,6 @@
struct sysentvec elf64_freebsd_sysvec_la57 = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/amd64/linux/linux_sysvec.c
===================================================================
--- head/sys/amd64/linux/linux_sysvec.c
+++ head/sys/amd64/linux/linux_sysvec.c
@@ -221,7 +221,7 @@
if (__predict_false(error != 0)) {
if (error != ERESTART && error != EJUSTRETURN)
- frame->tf_rax = SV_ABI_ERRNO(td->td_proc, error);
+ frame->tf_rax = linux_to_bsd_errno(error);
}
/* Restore all registers. */
@@ -732,8 +732,6 @@
struct sysentvec elf_linux_sysvec = {
.sv_size = LINUX_SYS_MAXSYSCALL,
.sv_table = linux_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_fixup_elf,
.sv_sendsig = linux_rt_sendsig,
Index: head/sys/amd64/linux32/linux32_sysvec.c
===================================================================
--- head/sys/amd64/linux32/linux32_sysvec.c
+++ head/sys/amd64/linux32/linux32_sysvec.c
@@ -679,7 +679,7 @@
if (__predict_false(error != 0)) {
if (error != ERESTART && error != EJUSTRETURN)
- frame->tf_rax = SV_ABI_ERRNO(td->td_proc, error);
+ frame->tf_rax = linux_to_bsd_errno(error);
}
}
@@ -898,8 +898,6 @@
struct sysentvec elf_linux_sysvec = {
.sv_size = LINUX32_SYS_MAXSYSCALL,
.sv_table = linux32_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_fixup_elf,
.sv_sendsig = linux_sendsig,
Index: head/sys/arm/arm/elf_machdep.c
===================================================================
--- head/sys/arm/arm/elf_machdep.c
+++ head/sys/arm/arm/elf_machdep.c
@@ -65,8 +65,6 @@
struct sysentvec elf32_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/arm64/arm64/elf32_machdep.c
===================================================================
--- head/sys/arm64/arm64/elf32_machdep.c
+++ head/sys/arm64/arm64/elf32_machdep.c
@@ -77,8 +77,6 @@
static struct sysentvec elf32_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = freebsd32_sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = elf32_freebsd_fixup,
.sv_sendsig = freebsd32_sendsig,
Index: head/sys/arm64/arm64/elf_machdep.c
===================================================================
--- head/sys/arm64/arm64/elf_machdep.c
+++ head/sys/arm64/arm64/elf_machdep.c
@@ -61,8 +61,6 @@
static struct sysentvec elf64_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/arm64/linux/linux_sysvec.c
===================================================================
--- head/sys/arm64/linux/linux_sysvec.c
+++ head/sys/arm64/linux/linux_sysvec.c
@@ -145,7 +145,7 @@
if (__predict_false(error != 0)) {
if (error != ERESTART && error != EJUSTRETURN) {
td->td_frame->tf_x[0] =
- SV_ABI_ERRNO(td->td_proc, error);
+ linux_to_bsd_errno(error);
}
}
}
@@ -394,8 +394,6 @@
struct sysentvec elf_linux_sysvec = {
.sv_size = LINUX_SYS_MAXSYSCALL,
.sv_table = linux_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_elf_fixup,
.sv_sendsig = linux_rt_sendsig,
Index: head/sys/compat/ia32/ia32_sysvec.c
===================================================================
--- head/sys/compat/ia32/ia32_sysvec.c
+++ head/sys/compat/ia32/ia32_sysvec.c
@@ -98,8 +98,6 @@
struct sysentvec ia32_freebsd_sysvec = {
.sv_size = FREEBSD32_SYS_MAXSYSCALL,
.sv_table = freebsd32_sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = elf32_freebsd_fixup,
.sv_sendsig = ia32_sendsig,
Index: head/sys/compat/linux/linux.h
===================================================================
--- head/sys/compat/linux/linux.h
+++ head/sys/compat/linux/linux.h
@@ -192,4 +192,6 @@
}
#define BITMAP_1t1_LINUX(_name) BITMAP_EASY_LINUX(_name, LINUX_##_name)
+int linux_to_bsd_errno(int error);
+
#endif /* _LINUX_MI_H_ */
Index: head/sys/compat/linux/linux_errno.c
===================================================================
--- head/sys/compat/linux/linux_errno.c
+++ head/sys/compat/linux/linux_errno.c
@@ -1,6 +1,21 @@
/* $FreeBSD$ */
#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
#include <sys/errno.h>
+#include <sys/systm.h>
+#include <compat/linux/linux.h>
#include <compat/linux/linux_errno.inc>
+
+int
+linux_to_bsd_errno(int error)
+{
+
+ KASSERT(error >= 0 && error <= ELAST,
+ ("%s: bad error %d", __func__, error));
+
+ return (linux_errtbl[error]);
+}
Index: head/sys/compat/linux/linux_socket.c
===================================================================
--- head/sys/compat/linux/linux_socket.c
+++ head/sys/compat/linux/linux_socket.c
@@ -1553,7 +1553,7 @@
name, &newval, UIO_SYSSPACE, &len);
if (error != 0)
return (error);
- newval = -SV_ABI_ERRNO(td->td_proc, newval);
+ newval = -linux_to_bsd_errno(newval);
return (copyout(&newval, PTRIN(args->optval), len));
/* NOTREACHED */
default:
Index: head/sys/i386/i386/elf_machdep.c
===================================================================
--- head/sys/i386/i386/elf_machdep.c
+++ head/sys/i386/i386/elf_machdep.c
@@ -54,8 +54,6 @@
struct sysentvec elf32_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/i386/linux/linux_sysvec.c
===================================================================
--- head/sys/i386/linux/linux_sysvec.c
+++ head/sys/i386/linux/linux_sysvec.c
@@ -801,7 +801,7 @@
if (__predict_false(error != 0)) {
if (error != ERESTART && error != EJUSTRETURN)
- frame->tf_eax = SV_ABI_ERRNO(td->td_proc, error);
+ frame->tf_eax = linux_to_bsd_errno(error);
}
}
@@ -847,8 +847,6 @@
struct sysentvec linux_sysvec = {
.sv_size = LINUX_SYS_MAXSYSCALL,
.sv_table = linux_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_fixup,
.sv_sendsig = linux_sendsig,
@@ -882,8 +880,6 @@
struct sysentvec elf_linux_sysvec = {
.sv_size = LINUX_SYS_MAXSYSCALL,
.sv_table = linux_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_fixup_elf,
.sv_sendsig = linux_sendsig,
Index: head/sys/kern/imgact_aout.c
===================================================================
--- head/sys/kern/imgact_aout.c
+++ head/sys/kern/imgact_aout.c
@@ -76,8 +76,6 @@
struct sysentvec aout_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = aout_fixup,
.sv_sendsig = sendsig,
@@ -117,8 +115,6 @@
struct sysentvec aout_sysvec = {
.sv_size = FREEBSD32_SYS_MAXSYSCALL,
.sv_table = freebsd32_sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = aout_fixup,
.sv_sendsig = ia32_sendsig,
Index: head/sys/kern/init_main.c
===================================================================
--- head/sys/kern/init_main.c
+++ head/sys/kern/init_main.c
@@ -403,8 +403,6 @@
struct sysentvec null_sysvec = {
.sv_size = 0,
.sv_table = NULL,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = NULL,
.sv_sendsig = NULL,
Index: head/sys/mips/mips/elf_machdep.c
===================================================================
--- head/sys/mips/mips/elf_machdep.c
+++ head/sys/mips/mips/elf_machdep.c
@@ -54,8 +54,6 @@
static struct sysentvec elf_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/mips/mips/freebsd32_machdep.c
===================================================================
--- head/sys/mips/mips/freebsd32_machdep.c
+++ head/sys/mips/mips/freebsd32_machdep.c
@@ -77,8 +77,6 @@
struct sysentvec elf32_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = freebsd32_sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = freebsd32_sendsig,
Index: head/sys/powerpc/powerpc/elf32_machdep.c
===================================================================
--- head/sys/powerpc/powerpc/elf32_machdep.c
+++ head/sys/powerpc/powerpc/elf32_machdep.c
@@ -90,8 +90,6 @@
#else
.sv_table = sysent,
#endif
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_copyout_auxargs = __elfN(powerpc_copyout_auxargs),
Index: head/sys/powerpc/powerpc/elf64_machdep.c
===================================================================
--- head/sys/powerpc/powerpc/elf64_machdep.c
+++ head/sys/powerpc/powerpc/elf64_machdep.c
@@ -62,8 +62,6 @@
struct sysentvec elf64_freebsd_sysvec_v1 = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
@@ -100,8 +98,6 @@
struct sysentvec elf64_freebsd_sysvec_v2 = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/riscv/riscv/elf_machdep.c
===================================================================
--- head/sys/riscv/riscv/elf_machdep.c
+++ head/sys/riscv/riscv/elf_machdep.c
@@ -65,8 +65,6 @@
struct sysentvec elf64_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/sys/sysent.h
===================================================================
--- head/sys/sys/sysent.h
+++ head/sys/sys/sysent.h
@@ -102,8 +102,6 @@
struct sysentvec {
int sv_size; /* number of entries */
struct sysent *sv_table; /* pointer to sysent */
- int sv_errsize; /* size of errno translation table */
- const int *sv_errtbl; /* errno translation table */
int (*sv_transtrap)(int, int);
/* translate trap-to-signal mapping */
int (*sv_fixup)(uintptr_t *, struct image_params *);
@@ -158,8 +156,6 @@
#define SV_ASLR 0x080000 /* ASLR allowed. */
#define SV_ABI_MASK 0xff
-#define SV_ABI_ERRNO(p, e) ((p)->p_sysent->sv_errsize <= 0 ? e : \
- ((e) >= (p)->p_sysent->sv_errsize ? -1 : (p)->p_sysent->sv_errtbl[e]))
#define SV_PROC_FLAG(p, x) ((p)->p_sysent->sv_flags & (x))
#define SV_PROC_ABI(p) ((p)->p_sysent->sv_flags & SV_ABI_MASK)
#define SV_CURPROC_FLAG(x) SV_PROC_FLAG(curproc, x)

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 3, 1:32 PM (22 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13456386
Default Alt Text
D26388.diff (11 KB)

Event Timeline