mescc: syscall: return only ever error -1, set errno.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 8 Jun 2018 05:17:51 +0000 (07:17 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 8 Jun 2018 05:17:51 +0000 (07:17 +0200)
lib/libc-mini.c
lib/linux-gcc.c
lib/linux-mes.c
lib/linux-mini-gcc.c
lib/linux-mini-mes.c

index 16ac449e69b496c8afa30c8624a4fd3c191a2bf8..2e9539cea62cebaa7aeb54a7e423459d23fc22ef 100644 (file)
@@ -18,6 +18,8 @@
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <errno.h>
+
 #ifndef __MES_SIZE_T
 #define __MES_SIZE_T
 #undef size_t
@@ -72,3 +74,27 @@ puts (char const* s)
 #include <linux-mini-gcc.c>
 
 #endif // !__MESC__
+
+void (*__call_at_exit) (void);
+
+void
+exit (int code)
+{
+  if (__call_at_exit)
+    (*__call_at_exit) ();
+  _exit (code);
+}
+
+ssize_t
+write (int filedes, void const *buffer, size_t size)
+{
+  int r = _write (filedes, buffer, size);
+  if (r < 0)
+    {
+      errno = -r;
+      r = -1;
+    }
+  else
+    errno = 0;
+  return r;
+}
index f92dcc680a51405f0a40d3683a365a5e5d3fdb8d..f21704b5f76ded87a59a47a014c2ef450485dd2d 100644 (file)
@@ -34,7 +34,10 @@ _sys_call (int sys_call)
        : "eax"
        );
   if (r < 0)
-    errno = -r;
+    {
+      errno = -r;
+      r = -1;
+    }
   else
     errno = 0;
   return r;
@@ -56,7 +59,10 @@ _sys_call1 (int sys_call, int one)
        : "eax", "ebx"
        );
   if (r < 0)
-    errno = -r;
+    {
+      errno = -r;
+      r = -1;
+    }
   else
     errno = 0;
   return r;
@@ -79,7 +85,10 @@ _sys_call2 (int sys_call, int one, int two)
        : "eax", "ebx", "ecx"
        );
   if (r < 0)
-    errno = -r;
+    {
+      errno = -r;
+      r = -1;
+    }
   else
     errno = 0;
   return r;
@@ -102,8 +111,11 @@ _sys_call3 (int sys_call, int one, int two, int three)
        : "" (sys_call), "" (one), "" (two), "" (three)
        : "eax", "ebx", "ecx", "edx"
        );
-    if (r < 0)
+  if (r < 0)
+    {
       errno = -r;
+      r = -1;
+    }
   else
     errno = 0;
   return r;
index 1c4521edbdd953c000dafab58d15ba892d9302b4..40633785cf4e34762438812ff065ddce2a239111 100644 (file)
@@ -59,7 +59,10 @@ _sys_call (int sys_call)
 {
   int r = __sys_call (sys_call);
   if (r < 0)
-    errno = -r;
+    {
+      errno = -r;
+      r = -1;
+    }
   else
     errno = 0;
   return r;
@@ -70,7 +73,10 @@ _sys_call1 (int sys_call, int one)
 {
   int r = __sys_call1 (sys_call, one);
   if (r < 0)
-    errno = -r;
+    {
+      errno = -r;
+      r = -1;
+    }
   else
     errno = 0;
   return r;
@@ -81,7 +87,10 @@ _sys_call2 (int sys_call, int one, int two)
 {
   int r = __sys_call2 (sys_call, one, two);
   if (r < 0)
-    errno = -r;
+    {
+      errno = -r;
+      r = -1;
+    }
   else
     errno = 0;
   return r;
@@ -92,7 +101,10 @@ _sys_call3 (int sys_call, int one, int two, int three)
 {
   int r = __sys_call3 (sys_call, one, two, three);
   if (r < 0)
-    errno = -r;
+    {
+      errno = -r;
+      r = -1;
+    }
   else
     errno = 0;
   return r;
index 3fe3829dfcd55545dadb850c988023300c084a6a..737a1ba6a5c96c46bf4ee976fd990d275fce567a 100644 (file)
@@ -45,18 +45,8 @@ _exit (int code)
   _exit (0);
 }
 
-void (*__call_at_exit) (void);
-
-void
-exit (int code)
-{
-  if (__call_at_exit)
-    (*__call_at_exit) ();
-  _exit (code);
-}
-
 ssize_t
-write (int filedes, void const *buffer, size_t size)
+_write (int filedes, void const *buffer, size_t size)
 {
   int r;
 #if __GNUC__
index f2858a1f3c199d4502a2093f2735279d8c451001..ef57ac10ff4d01355f6f5b5ddc5ada394058ba59 100644 (file)
@@ -26,18 +26,8 @@ _exit ()
   asm ("int____$0x80");
 }
 
-void (*__call_at_exit) (void);
-
-void
-exit (int code)
-{
-  if (__call_at_exit)
-    (*__call_at_exit) ();
-  _exit (code);
-}
-
 void
-write ()
+_write ()
 {
   asm ("mov____$i32,%eax SYS_write");
   asm ("mov____0x8(%ebp),%ebx !8");