aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2018-11-07 16:55:04 +0000
committerBrooks Davis <brooks@FreeBSD.org>2018-11-07 16:55:04 +0000
commite56ec0e519f2a57d1232b97f2f645215d0e460e4 (patch)
tree82f3ee23fb55dd44291f6792ef842421c28315ef /sys
parentde66da73746f18c7a9111f7cd01fa90e15c7527e (diff)
downloadsrc-e56ec0e519f2a57d1232b97f2f645215d0e460e4.tar.gz
src-e56ec0e519f2a57d1232b97f2f645215d0e460e4.zip
makesyscalls.sh: allow pointer return types.
The previous code required that the return type be a single word. This allows it to be a pointer without using a typedef. Update the return types of break, mmap, and shmat to be void * as declared. This only effects systrace output in-tree, but can aid in generating system call wrappers from syscalls.master. Reviewed by: kib Obtained from: CheriBSD Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D17873
Notes
Notes: svn path=/head/; revision=340221
Diffstat (limited to 'sys')
-rw-r--r--sys/compat/freebsd32/syscalls.master12
-rw-r--r--sys/kern/makesyscalls.sh13
-rw-r--r--sys/kern/syscalls.master10
3 files changed, 22 insertions, 13 deletions
diff --git a/sys/compat/freebsd32/syscalls.master b/sys/compat/freebsd32/syscalls.master
index 980c4194f184..a502ab9143ed 100644
--- a/sys/compat/freebsd32/syscalls.master
+++ b/sys/compat/freebsd32/syscalls.master
@@ -88,7 +88,7 @@
int mode, int dev); }
15 AUE_CHMOD NOPROTO { int chmod(const char *path, mode_t mode); }
16 AUE_CHOWN NOPROTO { int chown(const char *path, int uid, int gid); }
-17 AUE_NULL NOPROTO { caddr_t break(char *nsize); }
+17 AUE_NULL NOPROTO { void *break(char *nsize); }
18 AUE_GETFSSTAT COMPAT4 { int freebsd32_getfsstat( \
struct statfs32 *buf, long bufsize, \
int mode); }
@@ -175,7 +175,7 @@
68 AUE_NULL OBSOL vwrite
69 AUE_SBRK NOPROTO { int sbrk(int incr); }
70 AUE_SSTK NOPROTO { int sstk(int incr); }
-71 AUE_MMAP COMPAT|NOPROTO { int mmap(void *addr, int len, \
+71 AUE_MMAP COMPAT|NOPROTO { void *mmap(void *addr, int len, \
int prot, int flags, int fd, int pos); }
72 AUE_O_VADVISE COMPAT11|NOPROTO { int vadvise(int anom); }
73 AUE_MUNMAP NOPROTO { int munmap(void *addr, size_t len); }
@@ -373,7 +373,7 @@
__setrlimit_args int
196 AUE_GETDIRENTRIES COMPAT11 { int freebsd32_getdirentries(int fd, \
char *buf, u_int count, int32_t *basep); }
-197 AUE_MMAP COMPAT6 { caddr_t freebsd32_mmap(void *addr, \
+197 AUE_MMAP COMPAT6 { void *freebsd32_mmap(void *addr, \
size_t len, int prot, int flags, int fd, \
int pad, uint32_t pos1, uint32_t pos2); }
198 AUE_NULL NOPROTO { int nosys(void); } __syscall \
@@ -432,7 +432,7 @@
size_t msgsz, int msgflg); }
227 AUE_MSGRCV NOSTD { int freebsd32_msgrcv(int msqid, void *msgp, \
size_t msgsz, long msgtyp, int msgflg); }
-228 AUE_SHMAT NOSTD|NOPROTO { int shmat(int shmid, void *shmaddr, \
+228 AUE_SHMAT NOSTD|NOPROTO { void *shmat(int shmid, void *shmaddr, \
int shmflg); }
229 AUE_SHMCTL COMPAT7|NOSTD { int freebsd32_shmctl( \
int shmid, int cmd, \
@@ -876,7 +876,7 @@
const void *buf, size_t nbyte, \
int pad, \
uint32_t offset1, uint32_t offset2); }
-477 AUE_MMAP STD { caddr_t freebsd32_mmap(void *addr, \
+477 AUE_MMAP STD { void *freebsd32_mmap(void *addr, \
size_t len, int prot, int flags, int fd, \
int pad, \
uint32_t pos1, uint32_t pos2); }
@@ -897,7 +897,7 @@
476 AUE_PWRITE STD { ssize_t freebsd32_pwrite(int fd, \
const void *buf, size_t nbyte, \
uint32_t offset1, uint32_t offset2); }
-477 AUE_MMAP STD { caddr_t freebsd32_mmap(void *addr, \
+477 AUE_MMAP STD { void *freebsd32_mmap(void *addr, \
size_t len, int prot, int flags, int fd, \
uint32_t pos1, uint32_t pos2); }
478 AUE_LSEEK STD { off_t freebsd32_lseek(int fd, \
diff --git a/sys/kern/makesyscalls.sh b/sys/kern/makesyscalls.sh
index 26e7641d4e2b..4030ed321693 100644
--- a/sys/kern/makesyscalls.sh
+++ b/sys/kern/makesyscalls.sh
@@ -325,6 +325,7 @@ sed -e '
}
function parseline() {
f=4 # toss number, type, audit event
+ ret_inc = 0
argc= 0;
argssize = "0"
thr_flag = "SY_THR_STATIC"
@@ -340,12 +341,15 @@ sed -e '
funcalias=""
argalias=""
rettype="int"
+ if ($(f+2) == "*") {
+ ret_inc = 1
+ }
end=NF
}
if (flag("NODEF")) {
auditev="AUE_NULL"
- funcname=$4
- argssize = "AS(" $6 ")"
+ funcname=$(4 + ret_inc)
+ argssize = "AS(" $(6 + ret_inc) ")"
return
}
if ($f != "{")
@@ -363,6 +367,11 @@ sed -e '
syscallret=$f
f++
+ while (ret_inc > 0) {
+ syscallret=syscallret " " $f
+ f++
+ ret_inc--
+ }
funcname=$f
diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master
index 55d81c059d5e..3756bf5c797c 100644
--- a/sys/kern/syscalls.master
+++ b/sys/kern/syscalls.master
@@ -180,7 +180,7 @@
);
}
17 AUE_NULL STD {
- caddr_t break(
+ void *break(
_In_ char *nsize
);
}
@@ -480,7 +480,7 @@
);
}
71 AUE_MMAP COMPAT {
- int mmap(
+ void *mmap(
_In_ void *addr,
int len,
int prot,
@@ -1168,7 +1168,7 @@
);
}
197 AUE_MMAP COMPAT6 {
- caddr_t mmap(
+ void *mmap(
_In_ void *addr,
size_t len,
int prot,
@@ -1317,7 +1317,7 @@
);
}
228 AUE_SHMAT NOSTD {
- int shmat(
+ void *shmat(
int shmid,
_In_ const void *shmaddr,
int shmflg
@@ -2543,7 +2543,7 @@
);
}
477 AUE_MMAP STD {
- caddr_t mmap(
+ void *mmap(
_In_ void *addr,
size_t len,
int prot,