Page MenuHomeFreeBSD

D42862.id132227.diff
No OneTemporary

D42862.id132227.diff

diff --git a/include/unistd.h b/include/unistd.h
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -463,12 +463,10 @@
#endif /* __XSI_VISIBLE */
#if (__XSI_VISIBLE && __XSI_VISIBLE <= 500) || __BSD_VISIBLE
-int brk(const void *);
int chroot(const char *);
int getdtablesize(void);
int getpagesize(void) __pure2;
char *getpass(const char *);
-void *sbrk(intptr_t);
#endif
#if (__XSI_VISIBLE && __XSI_VISIBLE <= 600) || __BSD_VISIBLE
diff --git a/lib/libc/amd64/Symbol.map b/lib/libc/amd64/Symbol.map
--- a/lib/libc/amd64/Symbol.map
+++ b/lib/libc/amd64/Symbol.map
@@ -18,8 +18,6 @@
amd64_get_gsbase;
amd64_set_fsbase;
amd64_set_gsbase;
- brk;
- sbrk;
};
FBSD_1.6 {
@@ -43,6 +41,5 @@
__signalcontext;
signalcontext;
__siglongjmp;
- _brk;
_vfork;
};
diff --git a/lib/libc/arm/Symbol.map b/lib/libc/arm/Symbol.map
--- a/lib/libc/arm/Symbol.map
+++ b/lib/libc/arm/Symbol.map
@@ -6,8 +6,6 @@
FBSD_1.0 {
__mcount;
alloca;
- brk;
- sbrk;
};
FBSD_1.3 {
@@ -35,8 +33,6 @@
_signalcontext;
__siglongjmp;
_vfork;
- _brk;
- _sbrk;
_libc_arm_fpu_present;
};
diff --git a/lib/libc/i386/Symbol.map b/lib/libc/i386/Symbol.map
--- a/lib/libc/i386/Symbol.map
+++ b/lib/libc/i386/Symbol.map
@@ -8,7 +8,6 @@
alloca;
__flt_rounds;
rfork_thread;
- brk;
i386_clr_watch;
i386_get_fsbase;
i386_get_gsbase;
@@ -20,7 +19,6 @@
i386_set_ldt;
i386_set_watch;
i386_vm86;
- sbrk;
___tls_get_addr;
};
@@ -41,5 +39,4 @@
signalcontext;
__siglongjmp;
_vfork;
- _brk;
};
diff --git a/lib/libc/powerpc/Symbol.map b/lib/libc/powerpc/Symbol.map
--- a/lib/libc/powerpc/Symbol.map
+++ b/lib/libc/powerpc/Symbol.map
@@ -11,8 +11,6 @@
fpgetsticky;
fpsetmask;
fpsetround;
- brk;
- sbrk;
};
FBSD_1.3 {
diff --git a/lib/libc/powerpc64/Symbol.map b/lib/libc/powerpc64/Symbol.map
--- a/lib/libc/powerpc64/Symbol.map
+++ b/lib/libc/powerpc64/Symbol.map
@@ -11,8 +11,6 @@
fpgetsticky;
fpsetmask;
fpsetround;
- brk;
- sbrk;
};
FBSDprivate_1.0 {
diff --git a/lib/libc/sys/brk.c b/lib/libc/sys/brk.c
--- a/lib/libc/sys/brk.c
+++ b/lib/libc/sys/brk.c
@@ -31,7 +31,11 @@
#include <stdint.h>
#include <stdlib.h>
-void *__sys_break(char *nsize);
+int __freebsd14__brk(const void *addr);
+int __freebsd14_brk(const void *addr);
+void *__freebsd14_sbrk(intptr_t incr);
+
+void *freebsd14_break(char *nsize);
static uintptr_t curbrk, minbrk;
static int curbrk_initted;
@@ -42,7 +46,7 @@
void *newbrk;
if (!curbrk_initted) {
- newbrk = __sys_break(NULL);
+ newbrk = freebsd14_break(NULL);
if (newbrk == (void *)-1)
return (-1);
curbrk = minbrk = (uintptr_t)newbrk;
@@ -61,7 +65,7 @@
errno = EINVAL;
return ((void *)-1);
}
- if (__sys_break(addr) == (void *)-1)
+ if (freebsd14_break(addr) == (void *)-1)
return ((void *)-1);
oldbrk = curbrk;
curbrk = (uintptr_t)addr;
@@ -69,7 +73,7 @@
}
int
-brk(const void *addr)
+__freebsd14_brk(const void *addr)
{
if (initbrk() == -1)
@@ -80,7 +84,7 @@
}
int
-_brk(const void *addr)
+__freebsd14__brk(const void *addr)
{
if (initbrk() == -1)
@@ -89,7 +93,7 @@
}
void *
-sbrk(intptr_t incr)
+__freebsd14_sbrk(intptr_t incr)
{
if (initbrk() == -1)
@@ -102,3 +106,9 @@
}
return (mvbrk((void *)(curbrk + incr)));
}
+
+#ifndef __powerpc__
+__sym_compat(_brk, __freebsd14_brk, FBSD_1.0);
+#endif
+__sym_compat(brk, __freebsd14_brk, FBSD_1.0);
+__sym_compat(sbrk, __freebsd14_sbrk, FBSD_1.0);
diff --git a/sys/compat/freebsd32/freebsd32_syscall.h b/sys/compat/freebsd32/freebsd32_syscall.h
--- a/sys/compat/freebsd32/freebsd32_syscall.h
+++ b/sys/compat/freebsd32/freebsd32_syscall.h
@@ -21,7 +21,7 @@
#define FREEBSD32_SYS_freebsd11_mknod 14
#define FREEBSD32_SYS_chmod 15
#define FREEBSD32_SYS_chown 16
-#define FREEBSD32_SYS_break 17
+#define FREEBSD32_SYS_freebsd14_break 17
/* 18 is freebsd4 freebsd32_getfsstat */
/* 19 is old freebsd32_lseek */
#define FREEBSD32_SYS_getpid 20
diff --git a/sys/compat/freebsd32/freebsd32_syscalls.c b/sys/compat/freebsd32/freebsd32_syscalls.c
--- a/sys/compat/freebsd32/freebsd32_syscalls.c
+++ b/sys/compat/freebsd32/freebsd32_syscalls.c
@@ -22,7 +22,7 @@
"compat11.mknod", /* 14 = freebsd11 mknod */
"chmod", /* 15 = chmod */
"chown", /* 16 = chown */
- "break", /* 17 = break */
+ "compat14.break", /* 17 = freebsd14 break */
"compat4.freebsd32_getfsstat", /* 18 = freebsd4 freebsd32_getfsstat */
"compat.freebsd32_lseek", /* 19 = old freebsd32_lseek */
"getpid", /* 20 = getpid */
diff --git a/sys/compat/freebsd32/freebsd32_sysent.c b/sys/compat/freebsd32/freebsd32_sysent.c
--- a/sys/compat/freebsd32/freebsd32_sysent.c
+++ b/sys/compat/freebsd32/freebsd32_sysent.c
@@ -59,6 +59,12 @@
#define compat13(n, name) .sy_narg = 0, .sy_call = (sy_call_t *)nosys
#endif
+#ifdef COMPAT_FREEBSD14
+#define compat14(n, name) .sy_narg = n, .sy_call = (sy_call_t *)__CONCAT(freebsd14_, name)
+#else
+#define compat14(n, name) .sy_narg = 0, .sy_call = (sy_call_t *)nosys
+#endif
+
/* The casts are bogus but will do for now. */
struct sysent freebsd32_sysent[] = {
{ .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 0 = syscall */
@@ -78,7 +84,7 @@
{ compat11(AS(freebsd11_mknod_args),mknod), .sy_auevent = AUE_MKNOD, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 14 = freebsd11 mknod */
{ .sy_narg = AS(chmod_args), .sy_call = (sy_call_t *)sys_chmod, .sy_auevent = AUE_CHMOD, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 15 = chmod */
{ .sy_narg = AS(chown_args), .sy_call = (sy_call_t *)sys_chown, .sy_auevent = AUE_CHOWN, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 16 = chown */
- { .sy_narg = AS(break_args), .sy_call = (sy_call_t *)sys_break, .sy_auevent = AUE_NULL, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 17 = break */
+ { compat14(AS(freebsd14_break_args),break), .sy_auevent = AUE_NULL, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 17 = freebsd14 break */
{ compat4(AS(freebsd4_freebsd32_getfsstat_args),freebsd32_getfsstat), .sy_auevent = AUE_GETFSSTAT, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 18 = freebsd4 freebsd32_getfsstat */
{ compat(AS(ofreebsd32_lseek_args),freebsd32_lseek), .sy_auevent = AUE_LSEEK, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 19 = old freebsd32_lseek */
{ .sy_narg = 0, .sy_call = (sy_call_t *)sys_getpid, .sy_auevent = AUE_GETPID, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 20 = getpid */
diff --git a/sys/compat/freebsd32/freebsd32_systrace_args.c b/sys/compat/freebsd32/freebsd32_systrace_args.c
--- a/sys/compat/freebsd32/freebsd32_systrace_args.c
+++ b/sys/compat/freebsd32/freebsd32_systrace_args.c
@@ -121,13 +121,6 @@
*n_args = 3;
break;
}
- /* break */
- case 17: {
- struct break_args *p = params;
- uarg[a++] = (intptr_t)p->nsize; /* char * */
- *n_args = 1;
- break;
- }
/* getpid */
case 20: {
*n_args = 0;
@@ -3532,16 +3525,6 @@
break;
};
break;
- /* break */
- case 17:
- switch (ndx) {
- case 0:
- p = "userland char *";
- break;
- default:
- break;
- };
- break;
/* getpid */
case 20:
break;
@@ -9142,11 +9125,6 @@
if (ndx == 0 || ndx == 1)
p = "int";
break;
- /* break */
- case 17:
- if (ndx == 0 || ndx == 1)
- p = "void *";
- break;
/* getpid */
case 20:
/* mount */
diff --git a/sys/kern/init_sysent.c b/sys/kern/init_sysent.c
--- a/sys/kern/init_sysent.c
+++ b/sys/kern/init_sysent.c
@@ -58,6 +58,12 @@
#define compat13(n, name) .sy_narg = 0, .sy_call = (sy_call_t *)nosys
#endif
+#ifdef COMPAT_FREEBSD14
+#define compat14(n, name) .sy_narg = n, .sy_call = (sy_call_t *)__CONCAT(freebsd14_, name)
+#else
+#define compat14(n, name) .sy_narg = 0, .sy_call = (sy_call_t *)nosys
+#endif
+
/* The casts are bogus but will do for now. */
struct sysent sysent[] = {
{ .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 0 = syscall */
@@ -77,7 +83,7 @@
{ compat11(AS(freebsd11_mknod_args),mknod), .sy_auevent = AUE_MKNOD, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 14 = freebsd11 mknod */
{ .sy_narg = AS(chmod_args), .sy_call = (sy_call_t *)sys_chmod, .sy_auevent = AUE_CHMOD, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 15 = chmod */
{ .sy_narg = AS(chown_args), .sy_call = (sy_call_t *)sys_chown, .sy_auevent = AUE_CHOWN, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 16 = chown */
- { .sy_narg = AS(break_args), .sy_call = (sy_call_t *)sys_break, .sy_auevent = AUE_NULL, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 17 = break */
+ { compat14(AS(freebsd14_break_args),break), .sy_auevent = AUE_NULL, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 17 = freebsd14 break */
{ compat4(AS(freebsd4_getfsstat_args),getfsstat), .sy_auevent = AUE_GETFSSTAT, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 18 = freebsd4 getfsstat */
{ compat(AS(olseek_args),lseek), .sy_auevent = AUE_LSEEK, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 19 = old lseek */
{ .sy_narg = 0, .sy_call = (sy_call_t *)sys_getpid, .sy_auevent = AUE_GETPID, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 20 = getpid */
diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c
--- a/sys/kern/syscalls.c
+++ b/sys/kern/syscalls.c
@@ -22,7 +22,7 @@
"compat11.mknod", /* 14 = freebsd11 mknod */
"chmod", /* 15 = chmod */
"chown", /* 16 = chown */
- "break", /* 17 = break */
+ "compat14.break", /* 17 = freebsd14 break */
"compat4.getfsstat", /* 18 = freebsd4 getfsstat */
"compat.lseek", /* 19 = old lseek */
"getpid", /* 20 = getpid */
diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master
--- a/sys/kern/syscalls.master
+++ b/sys/kern/syscalls.master
@@ -213,7 +213,7 @@
int gid
);
}
-17 AUE_NULL STD|CAPENABLED {
+17 AUE_NULL COMPAT14|CAPENABLED {
void *break(
_In_ char *nsize
);
diff --git a/sys/kern/systrace_args.c b/sys/kern/systrace_args.c
--- a/sys/kern/systrace_args.c
+++ b/sys/kern/systrace_args.c
@@ -118,13 +118,6 @@
*n_args = 3;
break;
}
- /* break */
- case 17: {
- struct break_args *p = params;
- uarg[a++] = (intptr_t)p->nsize; /* char * */
- *n_args = 1;
- break;
- }
/* getpid */
case 20: {
*n_args = 0;
@@ -3619,16 +3612,6 @@
break;
};
break;
- /* break */
- case 17:
- switch (ndx) {
- case 0:
- p = "userland char *";
- break;
- default:
- break;
- };
- break;
/* getpid */
case 20:
break;
@@ -9287,11 +9270,6 @@
if (ndx == 0 || ndx == 1)
p = "int";
break;
- /* break */
- case 17:
- if (ndx == 0 || ndx == 1)
- p = "void *";
- break;
/* getpid */
case 20:
/* mount */
diff --git a/sys/sys/syscall.h b/sys/sys/syscall.h
--- a/sys/sys/syscall.h
+++ b/sys/sys/syscall.h
@@ -21,7 +21,7 @@
#define SYS_freebsd11_mknod 14
#define SYS_chmod 15
#define SYS_chown 16
-#define SYS_break 17
+#define SYS_freebsd14_break 17
/* 18 is freebsd4 getfsstat */
/* 19 is old lseek */
#define SYS_getpid 20
diff --git a/sys/sys/syscall.mk b/sys/sys/syscall.mk
--- a/sys/sys/syscall.mk
+++ b/sys/sys/syscall.mk
@@ -16,7 +16,7 @@
freebsd11_mknod.o \
chmod.o \
chown.o \
- break.o \
+ freebsd14_break.o \
getpid.o \
mount.o \
unmount.o \
diff --git a/sys/sys/sysproto.h b/sys/sys/sysproto.h
--- a/sys/sys/sysproto.h
+++ b/sys/sys/sysproto.h
@@ -85,9 +85,6 @@
char uid_l_[PADL_(int)]; int uid; char uid_r_[PADR_(int)];
char gid_l_[PADL_(int)]; int gid; char gid_r_[PADR_(int)];
};
-struct break_args {
- char nsize_l_[PADL_(char *)]; char * nsize; char nsize_r_[PADR_(char *)];
-};
struct getpid_args {
syscallarg_t dummy;
};
@@ -1883,7 +1880,6 @@
int sys_fchdir(struct thread *, struct fchdir_args *);
int sys_chmod(struct thread *, struct chmod_args *);
int sys_chown(struct thread *, struct chown_args *);
-int sys_break(struct thread *, struct break_args *);
int sys_getpid(struct thread *, struct getpid_args *);
int sys_mount(struct thread *, struct mount_args *);
int sys_unmount(struct thread *, struct unmount_args *);
@@ -2762,6 +2758,10 @@
#ifdef COMPAT_FREEBSD14
+struct freebsd14_break_args {
+ char nsize_l_[PADL_(char *)]; char * nsize; char nsize_r_[PADR_(char *)];
+};
+int freebsd14_break(struct thread *, struct freebsd14_break_args *);
#endif /* COMPAT_FREEBSD14 */
@@ -2780,7 +2780,7 @@
#define SYS_AUE_freebsd11_mknod AUE_MKNOD
#define SYS_AUE_chmod AUE_CHMOD
#define SYS_AUE_chown AUE_CHOWN
-#define SYS_AUE_break AUE_NULL
+#define SYS_AUE_freebsd14_break AUE_NULL
#define SYS_AUE_freebsd4_getfsstat AUE_GETFSSTAT
#define SYS_AUE_olseek AUE_LSEEK
#define SYS_AUE_getpid AUE_GETPID
diff --git a/sys/vm/vm_unix.c b/sys/vm/vm_unix.c
--- a/sys/vm/vm_unix.c
+++ b/sys/vm/vm_unix.c
@@ -59,13 +59,14 @@
#include <vm/pmap.h>
#include <vm/vm_map.h>
+#ifdef COMPAT_FREEBSD14
#ifndef _SYS_SYSPROTO_H_
-struct break_args {
+struct freebsd14_break_args {
char *nsize;
};
#endif
int
-sys_break(struct thread *td, struct break_args *uap)
+freebsd14_break(struct thread *td, struct freebsd14_break_args *uap)
{
#if !defined(__aarch64__) && !defined(__riscv)
uintptr_t addr;
@@ -80,6 +81,7 @@
return (ENOSYS);
#endif /* defined(__aarch64__) || defined(__riscv) */
}
+#endif
int
kern_break(struct thread *td, uintptr_t *addr)

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 26, 10:43 PM (4 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24254408
Default Alt Text
D42862.id132227.diff (13 KB)

Event Timeline