cleanup various minor issues reported by nsz
authorRich Felker <dalias@aerifal.cx>
Mon, 26 Sep 2011 04:59:28 +0000 (00:59 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 26 Sep 2011 04:59:28 +0000 (00:59 -0400)
the changes to syscall_ret are mostly no-ops in the generated code,
just cleanup of type issues and removal of some implementation-defined
behavior. the one exception is the change in the comparison value,
which is fixed so that 0xf...f000 (which in principle could be a valid
return value for mmap, although probably never in reality) is not
treated as an error return.

include/sys/syscall.h
include/time.h
src/internal/syscall_ret.c
src/linux/sbrk.c
src/time/__asctime.c
src/unistd/setpgid.c

index c86135a3a12d364ea941cdc3c5240e0a4970742b..901941aa4688e781d56fbff8c00aecc56230e92a 100644 (file)
@@ -4,7 +4,7 @@
 extern "C" {
 #endif
 
-long __syscall_ret(long);
+long __syscall_ret(unsigned long);
 long __syscall(long, ...);
 long syscall(long, ...);
 
index 5b1ea91fed3d6d21283937e7a17dcd0eda2d2309..557c8f4b6deab8fb3b32fb121272f7ee88bcc5a8 100644 (file)
@@ -85,7 +85,6 @@ int clock_settime (clockid_t, const struct timespec *);
 int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *);
 int clock_getcpuclockid (pid_t, clockid_t *);
 
-/* FIXME..?? */
 struct sigevent;
 int timer_create (clockid_t, struct sigevent *, timer_t *);
 int timer_delete (timer_t);
index 4f159e0b528fd05eb6cde5ae6ec688d667b20e51..e4a1bdbe03f3cd0c1c64c355fcf0fc2ad592c0ba 100644 (file)
@@ -3,9 +3,9 @@
 
 long __syscall_ret(unsigned long r)
 {
-       if (r >= (unsigned long)-1 - 4096) {
-               errno = -(long)r;
+       if (r > -4096UL) {
+               errno = -r;
                return -1;
        }
-       return (long)r;
+       return r;
 }
index 5fab74be29c83d729c5718d13f5106a1cd9be41d..36437653bb9085b02908f402403e59cee7bd637c 100644 (file)
@@ -1,7 +1,7 @@
-#include <stddef.h>
+#include <stdint.h>
 #include "syscall.h"
 
-void *sbrk(ptrdiff_t inc)
+void *sbrk(intptr_t inc)
 {
        unsigned long cur = syscall(SYS_brk, 0);
        if (inc && syscall(SYS_brk, cur+inc) != cur+inc) return (void *)-1;
index d31f63477a5591127e4311505800bfe7a4c4e604..7cc4f503ffc2c5662f8779d2f8c1e992726c1267 100644 (file)
@@ -1,6 +1,7 @@
 #include <time.h>
 #include <stdio.h>
 #include <langinfo.h>
+#include "atomic.h"
 
 const char *__langinfo(nl_item);
 
@@ -21,7 +22,7 @@ char *__asctime(const struct tm *tm, char *buf)
                 * application developers that they may not be so lucky
                 * on other implementations (e.g. stack smashing..).
                 */
-               *(volatile int*)0 = 0;
+               a_crash();
        }
        return buf;
 }
index 4a5a3d6b3797cea7e24e2e45b484f7b464f417d6..061606951d4f170ad9bf80b31ee3414a12c64bac 100644 (file)
@@ -1,7 +1,7 @@
 #include <unistd.h>
 #include "syscall.h"
 
-pid_t setpgid(pid_t pid, pid_t pgid)
+int setpgid(pid_t pid, pid_t pgid)
 {
        return syscall(SYS_setpgid, pid, pgid);
 }