mescc: Mes C Library: Explode libc-mini.c.
authorJan Nieuwenhuizen <janneke@gnu.org>
Thu, 9 May 2019 22:32:45 +0000 (00:32 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 9 May 2019 22:32:45 +0000 (00:32 +0200)
* lib/posix/write.c: New file.
* lib/linux/libc-mini.c: Include it.
(write): Remove.
* lib/tests/mes/30-oputs.c: Remove dead code.

lib/linux/libc-mini.c
lib/posix/write.c [new file with mode: 0644]
lib/tests/mes/30-oputs.c

index d303f3bbf1cd5257b2f1b6cd69cb92dc4481c956..c101d7b7cd763ebb41f7bb1bb2ed67624dbd7f3d 100644 (file)
 #error arch not supported
 #endif
 
-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;
-}
+#include <posix/write.c>
diff --git a/lib/posix/write.c b/lib/posix/write.c
new file mode 100644 (file)
index 0000000..811bc0a
--- /dev/null
@@ -0,0 +1,36 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of GNU Mes.
+ *
+ * GNU Mes is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * GNU Mes is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <errno.h>
+#include <mes/lib-mini.h>
+
+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 eaa5df34c3d47c8c364358148ea20ed9670d014f..550908579b01b3d54fa6fa93f458449e677d2c6f 100644 (file)
 
 #include <mes/lib-mini.h>
 
-#if 0
-#include <linux/x86_64/syscall.h>
-
-#define _write _xwrite
-#define write xwrite
-#define strlen xstrlen
-#define oputs xoputs
-
-#if __GNUC__
-#define SYS_write   "0x01"
-#define SYS_exit    "0x3c"
-
-ssize_t
-_write (int filedes, void const *buffer, size_t size)
-{
-  long r;
-  asm (
-       "mov     $"SYS_write",%%rax\n\t"
-       "mov     %1,%%rdi\n\t"
-       "mov     %2,%%rsi\n\t"
-       "mov     %3,%%rdx\n\t"
-       "syscall \n\t"
-       "mov     %%rax,%0\n\t"
-       : "=r" (r)
-       : "rm" (filedes), "rm" (buffer), "rm" (size)
-       : "rax", "rdi", "rsi", "rdx"
-       );
-  return r;
-}
-#else
-#define SYS_write   0x01
-#define SYS_exit    0x3c
-void
-_write (int filedes, void const *buffer, size_t size)
-{
-  asm ("mov____0x8(%rbp),%rdi !0x10");
-  asm ("mov____0x8(%rbp),%rsi !0x18");
-  asm ("mov____0x8(%rbp),%rdx !0x20");
-  asm ("mov____$i32,%rax SYS_write");
-
-  asm ("syscall");
-}
-#endif
-
-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;
-}
-
-size_t
-strlen (char const* s)
-{
-  int i = 0;
-  while (s[i])
-    i++;
-  return i;
-}
-
-int
-oputs (char const* s)
-{
-  int i = strlen (s);
-  write (1, s, i);
-  return 0;
-}
-#endif
-
 int
 main ()
 {