mescc: Tinycc support: close.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 24 Jul 2017 10:21:24 +0000 (12:21 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jul 2017 09:36:44 +0000 (11:36 +0200)
* stage0/x86.M1 (SYS_close): New define.
* mlibc/include/unistd.h (close): Declare.
* mlibc/libc-mes+tcc.c: New file.
* make.scm: Build and install it.

make.scm
mlibc/include/unistd.h
mlibc/libc-mes+tcc.c [new file with mode: 0644]
stage0/x86.M1

index 190cae536a00dfedf2cd9acb35db238b109442dd..d04f2be8d55ec2affcd5b3314a983a5f8c208b43 100755 (executable)
--- a/make.scm
+++ b/make.scm
@@ -160,6 +160,8 @@ exec ${GUILE-guile} --no-auto-compile -L . -L guile -C . -C guile -s "$0" ${1+"$
 
 (add-target (group "check-scaffold-tests" #:dependencies (filter (target-prefix? "check-scaffold/tests") %targets)))
 
+(add-target (cpp.mescc "mlibc/libc-mes+tcc.c"))
+(add-target (compile.mescc "mlibc/libc-mes+tcc.c"))
 
 (define* (add-tcc-test name)
   (add-target (bin.gcc (string-append "scaffold/tinycc/" name ".c") #:libc #f #:includes '("scaffold/tinycc")))
@@ -477,6 +479,8 @@ exec ${GUILE-guile} --no-auto-compile -L . -L guile -C . -C guile -s "$0" ${1+"$
 
 (add-target (install "mlibc/libc-mes.E" #:dir "lib"))
 (add-target (install "mlibc/libc-mes.M1" #:dir "lib"))
+(add-target (install "mlibc/libc-mes+tcc.E" #:dir "lib"))
+(add-target (install "mlibc/libc-mes+tcc.M1" #:dir "lib"))
 (add-target (install "mlibc/mini-libc-mes.E" #:dir "lib"))
 (add-target (install "mlibc/mini-libc-mes.M1" #:dir "lib"))
 
index 332d93638fe69523b05281a8ec2fea89e5547003..73e2aae55f0aef5129aebdd43edcc9d9e0c4dc31 100644 (file)
@@ -40,6 +40,7 @@ typedef long ssize_t;
 #endif
 
 int access (char const *s, int mode);
+int close (int fd);
 int read (int fd, void* buf, size_t n);
 int write (int fd, char const* s, int n);
 #endif // ! (__GNUC__ && POSIX)
diff --git a/mlibc/libc-mes+tcc.c b/mlibc/libc-mes+tcc.c
new file mode 100644 (file)
index 0000000..e6a1b36
--- /dev/null
@@ -0,0 +1,30 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of Mes.
+ *
+ * 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.
+ *
+ * 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 Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <libc-mes.c>
+
+void
+close ()
+{
+  asm ("mov____0x8(%ebp),%ebx !8");
+
+  asm ("mov____$i32,%eax SYS_close");
+  asm ("int____$0x80");
+}
index 2b3eeb230d75d69a059d4b59ba414ad8d8503f72..3edf4ba162092e466e5e95b3a666617035bd50b4 100644 (file)
@@ -162,6 +162,7 @@ DEFINE SYS_exit   01000000
 DEFINE SYS_read   03000000
 DEFINE SYS_write  04000000
 DEFINE SYS_open   05000000
+DEFINE SYS_close  06000000
 DEFINE SYS_access 21000000
 DEFINE SYS_brk    2d000000
 DEFINE SYS_fsync  76000000