mescc: Tinycc support: lseek.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 24 Jul 2017 15:33:33 +0000 (17:33 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jul 2017 09:36:45 +0000 (11:36 +0200)
* mlibc/include/unistd.h (lseek): Declare.
* stage0/x86.M1 (SYS_lseek): New define.
* mlibc/libc-mes+tcc.c (lseek): New function.

mlibc/include/unistd.h
mlibc/libc-mes+tcc.c
stage0/x86.M1

index a6b3ae3f87f6c27c33fc19c9ec8f5219bade1eb2..0ef605621862aaf43645dc87233e374b12cc59ea 100644 (file)
 
 #else // ! (__GNUC__ && POSIX)
 
 
 #else // ! (__GNUC__ && POSIX)
 
+#ifndef __MES_OFF_T
+#define __MES_OFF_T
+typedef unsigned long off_t;
+#endif
+
 #ifndef __MES_SIZE_T
 #define __MES_SIZE_T
 typedef unsigned long size_t;
 #ifndef __MES_SIZE_T
 #define __MES_SIZE_T
 typedef unsigned long size_t;
@@ -42,6 +47,7 @@ typedef long ssize_t;
 int access (char const *s, int mode);
 int close (int fd);
 char *getcwd (char *buf, size_t size);
 int access (char const *s, int mode);
 int close (int fd);
 char *getcwd (char *buf, size_t size);
+off_t lseek (int fd, off_t offset, int whence);
 int read (int fd, void* buf, size_t n);
 int unlink (char const *file_name);
 int write (int fd, char const* s, int n);
 int read (int fd, void* buf, size_t n);
 int unlink (char const *file_name);
 int write (int fd, char const* s, int n);
index 3e0c11465b27b2d7a5e1cf55bc487ab5b724d36d..5857d7deb3d0a44c611b7715b7b3f2b9fcaf32bf 100644 (file)
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <unistd.h>
 
 void
 close ()
 
 void
 close ()
@@ -52,6 +53,17 @@ unlink (char const *file_name)
   asm ("int____$0x80");
 }
 
   asm ("int____$0x80");
 }
 
+off_t
+lseek (int fd, off_t offset, int whence)
+{
+  asm ("mov____0x8(%ebp),%ebx !8");
+  asm ("mov____0x8(%ebp),%ecx !12");
+  asm ("mov____0x8(%ebp),%edx !16");
+
+  asm ("mov____$i32,%eax SYS_lseek");
+  asm ("int____$0x80");
+}
+
 
 int
 fclose (FILE *stream)
 
 int
 fclose (FILE *stream)
index 5db4febb970d83dc37af2b38e969e1472c746f14..f37f3747eb99751af4581076b7f9844845a668fd 100644 (file)
@@ -164,6 +164,7 @@ DEFINE SYS_write  04000000
 DEFINE SYS_open   05000000
 DEFINE SYS_close  06000000
 DEFINE SYS_unlink 0a000000
 DEFINE SYS_open   05000000
 DEFINE SYS_close  06000000
 DEFINE SYS_unlink 0a000000
+DEFINE SYS_lseek  13000000
 DEFINE SYS_access 21000000
 DEFINE SYS_brk    2d000000
 DEFINE SYS_fsync  76000000
 DEFINE SYS_access 21000000
 DEFINE SYS_brk    2d000000
 DEFINE SYS_fsync  76000000