Author: brooks
Date: Wed Nov  7 16:55:04 2018
New Revision: 340221
URL: https://svnweb.freebsd.org/changeset/base/340221

Log:
  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

Modified:
  head/sys/compat/freebsd32/syscalls.master
  head/sys/kern/makesyscalls.sh
  head/sys/kern/syscalls.master

Modified: head/sys/compat/freebsd32/syscalls.master
==============================================================================
--- head/sys/compat/freebsd32/syscalls.master   Wed Nov  7 16:28:09 2018        
(r340220)
+++ head/sys/compat/freebsd32/syscalls.master   Wed Nov  7 16:55:04 2018        
(r340221)
@@ -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, \

Modified: head/sys/kern/makesyscalls.sh
==============================================================================
--- head/sys/kern/makesyscalls.sh       Wed Nov  7 16:28:09 2018        
(r340220)
+++ head/sys/kern/makesyscalls.sh       Wed Nov  7 16:55:04 2018        
(r340221)
@@ -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
 

Modified: head/sys/kern/syscalls.master
==============================================================================
--- head/sys/kern/syscalls.master       Wed Nov  7 16:28:09 2018        
(r340220)
+++ head/sys/kern/syscalls.master       Wed Nov  7 16:55:04 2018        
(r340221)
@@ -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,
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to