Commit graph

260 commits

Author SHA1 Message Date
Jan Nieuwenhuizen 38a7077b72
mescc: Mes C Library: Explode libc-mini.c.
* include/libmes.h: Add declarations.
* lib/mes/eputs.c: New file, explode from lib/libc-mini.c.
* lib/mes/oputs.c: Likewise.
* lib/stdlib/exit.c: Likewise.
* lib/stdlib/puts.c: Likewise.
* lib/string/strlen.c: Likewise.
* lib/libc-mini.c: Include explodings.
2018-08-16 11:07:33 +02:00
Jan Nieuwenhuizen 3e4a56a05b
mescc: Mes C Library: Explode libc.c.
* lib/libc.c: New file, explode from lib/libc.c.
* lib/posix/execv.c: Likewise.
* lib/posix/isatty.c: Likewise.
* lib/posix/wait.c: Likewise.
* lib/stdio/fgetc.c: Likewise.
* lib/stdio/fputc.c: Likewise.
* lib/stdio/fputs.c: Likewise.
* lib/stdio/getc.c: Likewise.
* lib/stdio/getchar.c: Likewise.
* lib/stdio/putc.c: Likewise.
* lib/stdio/putchar.c: Likewise.
* lib/stdio/ungetc.c: Likewise.
* lib/stdlib/free.c: Likewise.
* lib/stdlib/getenv.c: Likewise.
* lib/stdlib/realloc.c: Likewise.
* lib/stdlib/setenv.c: Likewise.
* lib/string/strcmp.c: Likewise.
* lib/string/strcpy.c: Likewise.
* lib/string/strncmp.c: Likewise.
* lib/libc.c: Include explodings.
2018-08-16 10:50:53 +02:00
Jan Nieuwenhuizen d93e63f743
mescc: Mes C Library: Support oputs for POSIX.
* lib/libmes.c (oputs)[POSIX]: New function.
2018-08-12 18:38:43 +02:00
Jan Nieuwenhuizen 9273a64098
mescc: Mes C Library: Cleanup start files.
* lib/linux/x86-mes-gcc/crt0.c: Split from lib/linux/crt0.c.
* lib/linux/x86-mes-gcc/crt1.c: Split from lib/linux/crt1.c.
* lib/linux/x86-mes-gcc/crti.c: Split from lib/linux/crti.c.
* lib/linux/x86-mes-gcc/crtn.c: Split from lib/linux/crtn.c.
* lib/linux/x86-mes/crt0.c: Split from lib/linux/crt0.c.
* lib/linux/x86-mes/crt1.c: Split from lib/linux/crt1.c.
* lib/linux/x86-mes/crti.c: Split from lib/linux/crti.c.
* lib/linux/x86-mes/crtn.c: Split from lib/linux/crtn.c.
* build-aux/build-cc.sh: Update.
* build-aux/build-cc32.sh: Update.
* build-aux/build-mes.sh: Update.
2018-08-12 08:45:04 +02:00
Jan Nieuwenhuizen fe055ba344
mescc: Mes C Library: Add x86_64 libc+gnu support.
* include/linux/x86/syscall.h: Move SYS_ defines from gnu.c.
* include/linux/x86_64/syscall.h: Add SYS_ defines for gnu.
* lib/linux/gnu.c: Update.
* lib/linux/gnu.c (signal)[__x86_64__]: Implement using rt_sigaction.
* lib/stdlib/abort.c: Support x86_64.
2018-08-11 19:04:01 +02:00
Jan Nieuwenhuizen 50dff52c99
mescc: Mes C Library: Add x86_64 libc+tcc support.
* include/linux/x86/syscall.h: Move SYS_ defines from tcc.c.
* include/linux/x86_64/syscall.h: Add SYS_ defines for tcc.
* lib/x86-mes-gcc/setjmp.c: Rename from lib/libc+tcc-gcc.c
* lib/x86-mes/setjmp.c: Rename from lib/libc+tcc-mes.c
* lib/linux/tcc.c: Update.
2018-08-11 18:39:48 +02:00
Jan Nieuwenhuizen 5a6d8c21e0
mescc: Mes C Library: Add x86_64 libc support.
* include/linux/x86_64/syscall.h: New file.
* include/linux/x86/syscall.h: New file.
* lib/linux/x86_64-mes-gcc/mes.c: New file.
* lib/linux/x86-mes/mes.c: Rename from lib/linux/mes.c.
* lib/linux/x86-mes-gcc/mes.c: Rename from lib/linux/gcc.c.
* lib/linux/libc.c: Update includes.
(waitpid)[__x86_64__]: Use wait4.
* build-aux/build-cc.sh: Build libc too.
* lib/x86-mes/x86.M1 (mov____0x8(%ebp),%esi): New macro.
2018-08-11 11:42:30 +02:00
Jan Nieuwenhuizen 46e0641e9c
mescc: Mes C Library: Add x86_64 libc-mini support.
* lib/linux/x86-mes-gcc/mini.c: Rename from lib/linux/mini-gcc.c.
* lib/linux/x86-mes/mini.c: Rename from lib/linux/mini-mes.c.
* lib/linux/x86_64-mes-gcc/crt1.c: Rename from lib/linux/x86_64/crt1.c.
* lib/linux/x86_64-mes-gcc/mini.c: New file.
* build-aux/build-cc.sh: Build libc-mini, scaffold/main, scaffold/hello.
* build-aux/cc64.sh: New file.
2018-08-10 17:05:01 +02:00
Jan Nieuwenhuizen 75c54406ce
mescc: Add objdump'able x86_64-mes scaffold.
* lib/x86_64-mes/elf64-header.hex2: New file.
* lib/x86_64-mes/elf64-footer-single-main.hex2: New file.
* build-aux/build-x86_64-mes.sh: Enable second, objdump'able exit-42
  scaffold test.
2018-08-10 11:37:55 +02:00
Jan Nieuwenhuizen 521f97dfb3
mescc: Initial x86_64-mes scaffold.
* build-aux/GNUmakefile.in (x86_64-mes): New target.
* .gitignore: Ignore x86 and x86_64 out files.
* build-aux/build-mes.sh: Resurrect three initial exit42 scaffold tests.
* build-aux/build-x86_64-mes.sh: New file.  Add initial exit42
  scaffold test.
* lib/x86-mes/elf32-0header.hex2: Fix comment.
* lib/x86-mes/elf32-header.hex2: Likewise.
* lib/x86_64-mes/elf-0footer.hex2: New file.
* lib/x86_64-mes/elf64-0header.hex2: New file.
* lib/x86_64-mes/elf64-body-exit-42.hex2: New file.
* lib/x86_64-mes/exit-42.c: New file.
2018-08-10 11:15:43 +02:00
Jan Nieuwenhuizen 84a3e2e1fe
Add taken-from-Binutils and copyright line to alloca.c
* lib/stdlib/alloca.c: Add `taken from binutils' and copyright line to
  alloca.c for minor changes.
2018-07-23 19:13:40 +02:00
Jan Nieuwenhuizen 72cb975213
GNU Mes.
Throughout, make these changes

   Copyright headers: GNU Mes
   First mention of name: GNU Mes
   Website: https://www.gnu.org/software/mes
   Git:     git://git.savannah.gnu.org/mes.git
2018-07-22 14:24:36 +02:00
Jan Nieuwenhuizen 573896cc1c
core: Prepare for the Hurd.
* lib/linux/libc.c: Move from lib/linux.c.
* lib/linux/gcc.c: Move from lib/linux-gcc.c.
* lib/linux/gnu.c: Move from lib/linux+gnu.c.
* lib/linux/libc.c: Move from lib/linux.c.
* lib/linux/mes.c: Move from lib/linux-mes.c.
* lib/linux/mini-gcc.c: Move from lib/linux-mini-gcc.c.
* lib/linux/mini-mes.c: Move from lib/linux-mini-mes.c.
* lib/linux/tcc.c: Move from lib/linux+tcc.c.
* lib/linux/crt0.c: Move from lib/crt0.c.
* lib/linux/crt1.c: Move from lib/crt1.c.
* lib/linux/crti.c: Move from lib/crti.c.
* lib/linux/crtn.c: Move from lib/crtn.c.
* build-aux/build-cc.sh: Update for new layout.
* build-aux/build-cc32.sh: Likewise.
* build-aux/build-mes.sh: Likewise.
* build-aux/cc-mes.sh: Likewise.
* build-aux/cc32-mes.sh: Likewise.
* lib/string/argz-count.c: New file taken from GNU C Library,
  relicensed.
* lib/string/argz-extract.c: New file taken from GNU C Library,
  relicensed.
* include/argz.h: New file.
* lib/string/memcpy.c: New file, extract from libc.
* lib/assert/assert.c: Likewise.
2018-06-30 13:11:03 +02:00
Jan Nieuwenhuizen 59c56ac72d
mescc: fwrite: Increase debug tracing threshold.
* lib/libc+tcc.c (fwrite): Increase debug tracing threshold.
2018-07-21 11:16:29 +02:00
Jan Nieuwenhuizen 58ca3ab6c0
mescc: Add proper includes.
* include/libmes.h (__mes_debug): Declare.
* lib/libtcc1.c: Add proper includes.
* lib/linux+gnu.c: Likewise.
* lib/m4.c: Likewise.
2018-07-21 11:15:48 +02:00
Jan Nieuwenhuizen 69813a6da3
build: Support Debian build, install.
* scripts/mescc: Support Debian build, install.
* lib/libmes.c (fdgetc): Allow Nyacc/ungetc conflict.
* build-aux/export.make (ARCH): Export.
* build-aux/build-mes.sh: Disable full build for non-bootstrap
  x86-only.
* check.sh (total): Use bash to invoke build-aux/check-mescc.sh.
* build-aux/build-guile.sh (SCM_FILES): Support guile-2.0.
* module/mes/guile.scm (guile-2.0): Support guile-2.0.
* build-aux/build-mes.sh: Use bash.
* build-aux/setup-mes.sh: New file.
2018-07-12 22:29:59 +02:00
Jan Nieuwenhuizen 16f4adfbc2
core: Fix compile warnings.
* lib/libmes.c: Fix warning.
* src/posix.c (execl_): Fix warning, add debug printing.
2018-06-26 06:19:51 +02:00
Jan Nieuwenhuizen 50d7036e03
mescc: Support binutils 2.10.1: strrchr: Stop at start of string.
* lib/libc+tcc.c (strrchr): Stop at start of string.
* scaffold/tests/88-strrchr.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
2018-06-24 17:25:46 +02:00
Jan Nieuwenhuizen 350d94aa77
build: Support tcc, create tinycc-seed with tcc.
* configure: check for tcc.
* build-aux/cc32-mes.sh: Rename from cc-mes-gcc.sh.  Support
  tcc.  Update users.
* build-aux/build-cc32-mes.sh: Rename from build-mes-gcc.sh.  Update users.
* GNUmakefile (mes-tcc): New target.
* .gitignore: Ignore mes-tcc arch output.
* lib/crt1.c (_start): Add "rm" constraint so satisfy tcc.
* lib/linux-gcc.c (_sys_call, _sys_call1 _sys_call2 _sys_call3): Likewise.
2018-06-24 09:28:23 +02:00
Jan Nieuwenhuizen 41a6585295
mescc: Support binutils 2.20.1: vfprint, vsprintf: %llx.
* lib/libc+tcc.c (vfprintf, vsprintf): Handle %%llx.  Print error:
  should we skip another int, va_arg a long long?
2018-06-24 17:26:53 +02:00
Jan Nieuwenhuizen 2551eef953
mescc: Support binutils 2.14: vfprint, vsprintf: %12.10d.
* lib/libc+tcc.c (vfprintf, vsprintf): Handle %12.10d.
* scaffold/tests/70-printf.c: Test it.
2018-06-21 00:27:49 +02:00
Jan Nieuwenhuizen f245237f83
mescc: Support gnu toolchain: libtcc1.
* lib/libtcc1.c: New file.
* lib/libc+tcc-gcc.c: Remove libtcc1 stubs.
2018-06-19 20:29:25 +02:00
Jan Nieuwenhuizen 63bf9bb2f7
mescc: Support Tinycc 0.9.27: Drop dlclose, dlopen.
* lib/libc+tcc.c (dlclose, dlopen): Remove.
* include/dlfcn.h (RTLD_DEFAULT): Add.
2018-06-18 22:56:06 +02:00
Jan Nieuwenhuizen 22a22c1de8
mescc: Support binutils 2.25: fseek: Add debug printing.
* lib/libc+tcc.c (fseek): Add debug printing.
2018-06-17 14:17:39 +02:00
Jan Nieuwenhuizen 2062826435
mescc: Tinycc support: bcopy: Do not return void.
* lib/m4.c (bcopy): Do not return void.  Helps tcc.
2018-06-17 14:16:05 +02:00
Jan Nieuwenhuizen c6ae0f41a3
mescc: Support binutils 2.25: memcmp: Support size 0.
* lib/libc+tcc.c (memcmp): Support size 0.
2018-06-17 10:18:59 +02:00
Jan Nieuwenhuizen 0639e3faf1
mescc: Support binutils 2.25: vsscanf: Skip `l'.
* lib/libc+tcc.c (vsscanf): Skip `l'.
2018-06-17 09:26:34 +02:00
Jan Nieuwenhuizen 49bcea84fd
mescc: Debugging oops.
* lib/libc.c (__mes_debug): Oops, wrong direction.
2018-06-17 08:39:31 +02:00
Jan Nieuwenhuizen a9215931e8
mescc: Support binutils 2.15a: fread: read ungetc'd chars too.
* lib/libmes.c (_ungetc_fd): New variable.
  (fdgetc): Use it.
  (_fdungetc_p): New function.
* lib/libc+tcc.c (_fungetc_p): New function.
* lib/libc+tcc.c (fread): Use it to read ungetc'd chars too.
2018-06-16 20:51:16 +02:00
Jan Nieuwenhuizen 65d530f4ec
mescc: Support binutils-2.14: fopen: Return 0 upon failure.
* lib/libc+tcc.c (fopen): Return 0 upon failure.
2018-06-16 10:54:59 +02:00
Jan Nieuwenhuizen 125b43acc8
mescc: Update elf32-header for linux-4.17.
Previously, our binaries showed this

    $ readelf -s scaffold/main.mes-out
    There are 2 program headers, starting at offset 64

    Program Headers:
      Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
      LOAD           0x000000 0x01000000 0x01000000 0x0557c 0x0557c RWE 0x1
      LOAD           0x000000 0x01000000 0x01000000 0x0557c 0x0557c RWE 0x1

     Section to Segment mapping:
      Segment Sections...
       00     .text .data
       01     .text .data

Linux-4.17 refuses to run this and says

    Uhuuh, elf segment at 0000000001000000 requested but the memory is mapped already
    Segmentation fault

* lib/x86-mes/elf32-header.hex2: Remove unused data program header.
2018-06-16 08:32:12 +02:00
Jan Nieuwenhuizen c086f67cec
mescc: Support less-patched tcc/gcc: Add crti and crtn.
* lib/crt0.c[__MESC__]: Support MesCC.
* lib/crti.c: New file.
* lib/crtn.c: New file.
* build-aux/build-mes-gcc.sh: Build them.
2018-06-10 16:03:18 +02:00
Jan Nieuwenhuizen c2c3554884
mescc: Refactor debug and stub printing.
* lib/libc.c (__mes_debug): New function.  Use it for debug printing
  and in stubs throughout.
2018-06-10 14:07:19 +02:00
Jan Nieuwenhuizen 18194b1ae4
mescc: Support binutils-2.30: fopen fix.
* lib/libc+tcc.c (fopen): Set O_APPEND for 'a'.
2018-06-10 13:33:30 +02:00
Jan Nieuwenhuizen c349f6fdd8
mescc: Support binutils-2.30.
* lib/binutils.c (raise, strdup): New function.
  (mbstowcs): New stub.
* include/fcntl.h (O_APPEND, FD_CLOEXEC): New define.
2018-06-09 17:58:47 +02:00
Jan Nieuwenhuizen 53dd76ffc0
mescc: Support binutils-2.10.1: Stubs set errno to 0. 2018-06-09 11:28:31 +02:00
Jan Nieuwenhuizen bb3353a272
mescc: Silence some stubs.
* lib/libc+tcc.c: [!NOISY_FLOATS, !NOISY_TIMES]: Silence stubs.
* lib/gcc.c: Likewise.
* lib/binutils.c: Likewise.
2018-06-09 07:40:07 +02:00
Jan Nieuwenhuizen a744fd9ba4
mescc: Add debug printing: fopen, fwrite.
* lib/libc+tcc.c (fopen, fwrite)[MESC_DEBUG]: Print debug info.
2018-06-10 07:51:56 +02:00
Jan Nieuwenhuizen 3ba5b23dab
mescc: Support binutils-2.10.1: opentype `r+'.
* lib/libc+tcc.c (fopen): Support opentype `r+'.
2018-06-10 07:51:10 +02:00
Jan Nieuwenhuizen 831bd71a14
mescc: syscall: return only ever error -1, set errno. 2018-06-08 07:17:51 +02:00
Jan Nieuwenhuizen b7d913d7a0
mescc: Support gcc-2.95: Add getpwnam stub.
* lib/gcc.c (getpwnam): New stub.
2018-06-07 18:04:17 +02:00
Jan Nieuwenhuizen a70bc92857
mescc: Support gcc-3.0: Implement alarm, setitimer. 2018-06-07 18:03:51 +02:00
Jan Nieuwenhuizen ef0a39547c
mescc: Support gcc-3.0: Implement atexit. 2018-06-07 18:02:21 +02:00
Jan Nieuwenhuizen 93cb6375ae
mescc: Support gcc-3.0: Implement dup2, fcntl, getrusage.
* include/sys/resource.h: New file.
* lib/linux+gnu.c (fcntl, dup2, getrusage): New function.
* lib/binutils.c (fcntl): Remove stub.
2018-06-07 08:02:32 +02:00
Jan Nieuwenhuizen b7c35dad69
mescc: Support gcc-3.2: Implement getuid, getgid.
* lib/linux+gnu.c (getuid, getdid): New function.
* lib/binutils.c (getuid, getdid): Remove stub.
2018-06-07 07:19:01 +02:00
Jan Nieuwenhuizen d1e3a786aa
mescc: Support gcc-3.2: Reset errno.
* lib/linux-gcc.c (_sys_call, _sys_call1, _sys_call2, _sys_call3):
  Reset errno.
* lib/linux-mes.c (__sys_call, __sys_call1, __sys_call2 ,
  __sys_call3): Rename from _*.
   (_sys_call, _sys_call1, _sys_call2, _sys_call3): New function.
  Reset errno.
2018-06-07 07:16:43 +02:00
Jan Nieuwenhuizen cc466662b9
mescc: Support gcc-3.2: Implement integer strto*.
* lib/libc+tcc.c (strtoll, strtoul): Call strtoul.
2018-06-06 22:39:57 +02:00
Jan Nieuwenhuizen 04302b3fe4
mescc: Support gcc-3.2: Add getpid, signal.
* lib/linux+gnu.c (getpid, signal): New function.
* include/signal.h: Declare signal.
* include/unistd.h: Declare getpid.
* scaffold/tests/95-signal.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
2018-06-06 22:14:35 +02:00
Jan Nieuwenhuizen 7c4a6a88ed
mescc: Support gcc-3.4.0: *printf: Support `%n'.
* lib/libc+tcc.c (vfprintf, vsprintf): Support `%n'.  For Gcc 3.4.0.
* scaffold/tests/70-printf.c: Test it.
2018-06-06 19:29:32 +02:00
Jan Nieuwenhuizen f4616dfef1
mescc: Support gcc-3.4.0: alloca.
* lib/alloca.c: New file.
* AUTHORS: Mention it.
* lib/libc+gnu.c: Add it.
* include/stdlib.h: Declare alloca.
2018-06-06 19:44:29 +02:00
Jan Nieuwenhuizen f60cac6e1d
mescc: Support gcc-3.4.0: unsetenv.
* lib/gcc.c (unsetenv): New function.
2018-06-06 19:43:32 +02:00
Jan Nieuwenhuizen 4f6f79973e
mescc: Support gcc-3.2: Add __divdi3, __moddi3 stubs.
* lib/gcc.c (__divdi3, __moddi3): New stubs.
2018-06-06 17:02:01 +02:00
Jan Nieuwenhuizen 0f3856f7b4
mescc: Support gcc-3.2: puts with newline.
* lib/libc-mini.c (oputs): Rename from puts.
  (puts): New function: Add newline.
2018-06-06 15:55:03 +02:00
Jan Nieuwenhuizen eb939b11b8
mescc: Support binutils-2.10.1.
xx
2018-06-06 13:16:25 +02:00
Jan Nieuwenhuizen 635dfd03a2
mescc: Support glibc-1.06.4.
* lib/glibc.c: New file.
* lib/libc+gnu.c: Include it.
2018-06-03 18:54:26 +02:00
Jan Nieuwenhuizen de964f3e1f
mescc: Support gcc-2.6.3.
* TODO
2018-06-02 11:41:06 +02:00
Jan Nieuwenhuizen f1efaa0e93
mescc: Support binutils-2.5.1.
* include/stdint.h: #undef types before typedef'ing them.
* include/sys/types.h: Likewise.
* include/string.h (NULL): New define.
* include/stdio.h (BUFSIZ): New define.
2018-05-30 21:55:39 +02:00
Jan Nieuwenhuizen a3a3654d54
mescc: Implement fflush, sscanf, vsscanf.
* lib/libc+tcc.c (vsscanf): New function.
  (sscanf): Use it.
  (fflush): Remove stub notice; we have no buffering.
* include/stdarg.h: Declare it.
* scaffold/tests/87-sscanf.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
2018-05-30 21:49:40 +02:00
Jan Nieuwenhuizen 272b522962
build: Use arch-dir.
* lib/x86-mes: Move from stage0.
* build-aux/build-cc.sh: Create libraries in lib/gcc.  Update users.
* build-aux/build-mes.sh: Create libraries in lib/x86-mes.  Update users.
* build-aux/build-mes-gcc.sh: Rename from build-mlibc.sh.  Create
  libraries in lib/x86-mes-gcc.  Update callers.
* build-aux/cc-mes-gcc.sh: Rename from cc-mlibc.sh.  Update callers.
2018-05-29 20:07:46 +02:00
Jan Nieuwenhuizen 9f90960392
mlibc: Implement strstr.
* lib/libc+tcc.c (_memmem, memmem): New function.  Import from GNU
  LilyPond.
  (strstr): Implement using memmem.
* include/string.h (_memmem, memmem): Declare.
* AUTHORS: Add Han-Wen Nienhuys.
2018-05-29 19:35:20 +02:00
Jan Nieuwenhuizen 26e1876d12
mlibc: Implement ftell, fseek.
* lib/libc+tcc.c (ftell, fseek): Implement.
2018-05-29 19:33:32 +02:00
Jan Nieuwenhuizen 2cda87257a
mlibc: Cleanup. 2018-05-29 18:15:22 +02:00
Jan Nieuwenhuizen 559699969c
mescc: m4 support: WIP 2018-05-27 10:28:30 +02:00
Jan Nieuwenhuizen a10c48735d
mescc: Posixify interface.
* module/mescc/compile.mes: Move from language/c99/compiler.mes.
* module/mescc: New module..
* module/mescc/M1.scm: Move from mes/M1.mes.
* module/mescc/as.scm: Likewise.
* module/mescc/bytevectors.scm: Likewise.
* module/mescc/mescc.scm: New file.
* scripts/mescc: Update to new layout and posixy interface.
* GNUmakefile: Likewise.
* build-aux/build-cc.sh: Likewise.
* build-aux/build-guile.sh: Likewise.
* build-aux/build-mes.sh: Likewise.
* build-aux/build-mlibc.sh: Likewise.
* build-aux/cc-mes.sh: Likewise.
* build-aux/cc-mlibc.sh: Likewise.
* build-aux/cc.sh: Likewise.
* build-aux/check-mescc.sh: Likewise.
* build-aux/test.sh: Likewise.
* build.sh: Likewise.
* .gitignore: Update for posixy extensions.
2018-05-25 08:05:02 +02:00
Jan Nieuwenhuizen e4d0298d1b
core: Support fork, waitpid, execve.
* stage0/x86.M1 (SYS_fork, SYS_waitpid, SYS_execve): New define.
* lib/linux-gcc.c (fork, waitpid, execve): New function.
* lib/linux-mes.c (fork, waitpid, execve): New function.
* lib/libc.c (wait): New function.
* include/unistd.h (fork, execve): Declare.
* include/sys/wait.h (waitpid, wait): Declare.
* module/mes/posix.mes (search-path, execlp, system*, waitpid): New function.
* src/posix.c (primitive_fork, execl): New function.
2018-05-24 19:54:42 +02:00
Jeremiah Orians 43a74e382a
mescc: Add fopen.
* lib/libc+tcc.c (fopen)[!POSIX]: Remove stub.
* lib/libc.c (fopen)[!POSIX]: New function.
* AUTHORS: Add Jeremiah.
2018-05-26 16:33:00 -04:00
Jan Nieuwenhuizen 948fbf9743
mescc: Tinycc support: strncpy.
* lib/libc+tcc.c (strncpy): New function.
* scaffold/tests/86-strncpy.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
* build-aux/cc-mlibc.sh (LIBC): Acknowlegde.
* build-aux/test.sh (LIBC): Export it.
2018-05-20 10:55:44 +02:00
Jan Nieuwenhuizen 8f1a26b40a
tinycc: Add stubs: __fixdfdi, __fixxfdi, __fixsfdi.
* lib/libc+tcc-gcc.c (__fixdfdi, __fixxfdi, __fixsfdi): New stub.
2018-05-21 08:43:58 +02:00
Jan Nieuwenhuizen b9b6e17141
tinycc: Add stubs: __floatundixf __fixunsxfdi.
* lib/libc+tcc-gcc.c (__floatundixf, __fixunsxfdi): New stub.
2018-05-20 10:38:13 +02:00
Jan Nieuwenhuizen 1dedd0ebca
mescc: Fix itoa.
* lib/libc.c (itoa): Use function-static buffer.  Increase to 12 to
  handle INT_MIN.
  (itoab): Likewise.
2018-05-20 08:33:06 +02:00
Jan Nieuwenhuizen cfda148e1e
mescc: Tinycc support: Minimal float support.
* lib/libc+tcc.c (ldexp, strtod, strtof, strtold): New stub.
* include/math.h (ldexp): Declare.
* include/stdlib.h (strtod, strtof, strtold): Declare.
* module/mes/scm.mes (string->number): Minimal float support.
  (inexact->exact): New function.
* tests/math.test ("string->number"): Test it.
* module/language/c99/compiler.mes (ast->type): Handle float type.
  (type->info): Likewise.
  (cstring->int): Rename from cstring->number.  Update callers.
  (cstring->float): New function.
  (expr->accu): Use it.
2018-05-18 15:28:05 +02:00
Jan Nieuwenhuizen 8c6e41d92d
mescc: Tinycc support: Add __lshrdi3, __ashldi3, __ashrdi3.
* lib/libc+tcc-gcc.c (__lshrdi3, __ashldi3, __ashrdi3): New function.
2018-05-14 22:36:14 +02:00
Jan Nieuwenhuizen 0ba240a4e0
build: Build mini-libc and libc+tcc-gcc too.
* include/getopt.h[__GNUC__ && POSIX]: Only use include_next.
* lib/libc+tcc-gcc.c[POSIX](longjmp, setjmp, __udivdi3, __umoddi3):
  Remove.
* build-aux/build-cc.sh: Build mini-libc-gcc and libc+tcc-gcc too.
* build-aux/build-mlibc.sh: Build mini-libc-gcc too.
2018-05-23 18:41:57 +02:00
Jan Nieuwenhuizen 865e72ae8a
core: Fix compile warnings.
* src/posix.c: Include sys/stat.h.
  (chmod): Return cell_unspecified.
* include/stdlib.h: Typo.
2018-04-29 12:02:23 +02:00
Jan Nieuwenhuizen bb45012c39
mes: Add isatty?.
* src/posix.c (isatty_p): New function.
2018-04-22 11:48:38 +02:00
Jan Nieuwenhuizen ece39a9a18
mlibc: Add isatty.
* lib/libc.c (isatty): New function.
* include/unistd.h: Declare it.
2018-04-22 11:47:44 +02:00
Jan Nieuwenhuizen 979406f3a6
mlibc: Add ioctl.
* stage0/x86.M1 (SYS_ioctl): New define.
* lib/linux-mes.c (ioctl): New syscall.
* lib/linux-gcc.c (ioctl): New syscall.
* include/sys/ioctl.h: New file.
2018-04-22 11:42:47 +02:00
Jan Nieuwenhuizen 7cad0671f3
Revert "mlibc: Use memmove in realloc."
This reverts commit f47a21e3cb4814c4a30d10ff59e5c947441725e9.
2018-04-21 13:42:16 +02:00
Jan Nieuwenhuizen 1270c767cd
mlibc: Use memmove in realloc.
* src/libc.c (memmove): New function.
  (realloc): Use it.
* src/libc+tcc.c (memmove): Remove.
2018-04-15 08:13:36 +02:00
Jan Nieuwenhuizen 25907f514c
core: Add isspace.
* include/ctype.h (isspace): Declare.
* lib/libc.c (isspace): New function.
2018-04-10 21:51:15 +02:00
Jan Nieuwenhuizen ad135d3752 doc: Release udpate.
* HACKING: Update.
* INSTALL: Update.
* NEWS: Update.
* README: Update.
* doc/ANNOUNCE-0.12: New file.
* throughout: (janneke) coming out.
2017-11-21 19:22:26 +01:00
Jan Nieuwenhuizen bd82d5988d core: Add setenv.
* lib/libc.c (setenv): New function.
* include/stdlib.h (setenv): Declare it.
* scaffold/tests/61-array.c (test): Test it.
2018-04-07 09:21:51 +02:00
Jan Nieuwenhuizen 05c33b052a mlibc: Tinycc support: qsort.
* lib/libc+tcc.c (qswap, qpart): New function
  (qsort): Implement.
* scaffold/tests/81-qsort.c: Test it.
* make.scm ("81-qsort"): Build it.
2017-12-04 19:01:39 +01:00
Jan Nieuwenhuizen 7a7bcda79e mlibc: Tinycc support: __udivdi3, __umoddi3.
* lib/libc+tcc-gcc.c (__udivdi3, __umoddi3): Fix signature, do not
  crash on simple integer devisions.
2017-12-03 20:40:49 +01:00
Jan Nieuwenhuizen 808af5001f mlibc: New library layout; remove duplication.
* lib/libc+tcc-gcc.c: New file: Libc bits for GCC from libc-mes+tcc.c.
* lib/libc+tcc-mes.c: New file: Libc bits for MesCC from libc-mes+tcc.c.
* lib/libc+tcc.c: New file: Libc bits from libc-mes+tcc.c.
* lib/libc.c: New file: Merged from libc-mes.c, libc-gcc.c.
  (abtoi): New function: Rename from _atoi.
* lib/linux+tcc-gcc.c: New file:  Linux bits from libc-gcc+tcc.c.
* lib/linux+tcc-mes.c: New file: Linux bits from libc-mes+tcc.c.
* lib/linux-gcc.c: New file: Linux bits from libc-gcc.c.
* lib/linux-mes.c: New file: Linux bits from libc-mes.c.
* lib/mini-libc-gcc.c: New file.
* lib/mini-libc.c: New file: Libc bits from mini-libc-mes.c.
* lib/mini-linux-gcc.c: New file.
* lib/mini-linux-mes.c: New file: Linux bits from mini-libc-mes.c.
* lib/libc-gcc.c: Remove duplication using include now.
* lib/libc-mes.c: Likewise.
* lib/mini-libc-mes.c: Likewise.
* include/stdio.h (puts)[POSIX]: Remomve macro.
  (fputc, fputs)[!POSIX]: New macro.
  (fputc, fputs): Remove declaration.
* scaffold/tests/7j-strtoull.c (strtoull, test): Use abtoi.
* src/lib.c (fputs)[__MESC__]: Remove define.
* guile/guix/make.scm: Update for new library layout.
* make.scm: Likewise.
* build.sh: Likewise.
* install.sh: Likewise.
2017-12-03 13:56:21 +01:00
Jan Nieuwenhuizen d7b35f6b1e mlibc: Tinycc support: itoab, for debugging.
* lib/libc-gcc.c (itoab): New function.
* lib/libc-mes.c (itoab): New function.
2017-12-03 10:33:05 +01:00
Jan Nieuwenhuizen 01af41e6f7 mlibc: Mescc-tools support: fix for [v]fprintf.
* lib/libc-mes+tcc.c (vfprintf): Bugfix: print to fd.
2017-12-02 08:46:41 +01:00
Jan Nieuwenhuizen 49d01a46fa mlibc: Mescc-tools support: chmod.
* stage0/x86.M1 (SYS_chmod): New define.
* lib/libc-gcc.c (chmod): New function.
* lib/libc-mes.c (chmod): New function.
2017-11-26 18:45:10 +01:00
Jan Nieuwenhuizen e8884d83e1 mlibc: GNU Gcc support: setjmp, longjmp.
* stage0/x86.M1 (jmp____*%ebx): New macro.
  (mov____0x8(%ebp),%ebp): New macro.
  (mov____0x8(%ebp),%esp): New macro.
* include/setjmp.h (jmp_buf): Redefine as struct.
* lib/libc-mes+tcc.c (longjmp, setjmp): Implement.
* scaffold/tests/80-setjmp.c: Test it.
* make.scm ("80-setjmp"): Build it.
* .gitignore: Ignore *.tcc-guile.
2017-11-26 13:10:46 +01:00
Jan Nieuwenhuizen 83f2a55c2c mlibc: GNU Gcc support: ferror.
* lib/libc-mes+tcc.c (ferror): New function.
* include/stdio.h (ferror): Declare it.
2017-11-25 22:57:18 +01:00
Jan Nieuwenhuizen 0fa18b338d build: mlib/include to include, move mlib to lib.
* include: Move from mlib/include.
* lib: Move from mlib.
* BOOTSTRAP: Update.
* HACKING: Update.
* guile/guix/make.scm: Update.
* make.scm: Update.
* module/language/c99/compiler.mes: Update.
2017-11-22 16:23:48 +01:00
Jan Nieuwenhuizen d114634203 Prepare for 0.1 release: new directory structure.
* scripts/elf.mes: New file.
* scripts/include.mes: New file.
* scripts/mescc.mes: New file.
* scripts/paren.mes: New file.
* scripts/repl.mes: New file.
* doc/examples/main.c: Move from ./main.c.
* module/mes/base-0.mes: Move from ./base0.mes.
* module/mes/base.mes: Move from top.
* module/mes/elf.mes: Likewise.
* module/mes/let-syntax.mes: Likewise.
* module/mes/let.mes: Likewise.
* module/mes/mes.mes: Likewise.
* module/mes/quasiquote.mes: Likewise.
* module/mes/repl.mes: Likewise.
* module/mes/scm.mes: Likewise.
* module/mes/syntax.mes: Likewise.
* module/mes/lalr-0.mes: Move from lib/lalr.mes.
* module/mes/lalr.mes: Move from lib/lalr.scm.
* module/mes/match.mes: Move from lib/match.scm.
* module/mes/record-0.mes: Move from lib/record.mes.
* module/mes/record.mes: Move from lib/record.scm.
* module/mes/test.mes: Move flom lib/.
* module/rnrs/bytevectors.mes: Move from lib/rnrs.
* module/srfi/srfi-0.mes: Move from lib/srfi.
* module/srfi/srfi-1.mes: Likewise.
* module/srfi/srfi-9.mes: Likewise.
* module/language/c/lexer.mes: Move from ./c-lexer.scm.
* module/language/c/parser.mes: Move from ./mescc.scm.
* module/language/c/compiler.mes: New file, split from parser.mes.
* module/language/paren.mes: Move from ./paren.scm.
* module/mes/libc-i386.mes: New file, split from elf.mes.
* tests/base.test: Move from test/.
* tests/closure.test: Likewise.
* tests/let-syntax.test: Likewise.
* tests/let.test: Likewise.
* tests/match.test: Likewise.
* tests/quasiquote.test: Likewise.
* tests/record.test: Likewise.
* tests/scm.test: Likewise.
* hello.S: Remove.
* hello.c: Remove.
* loop2.mes: Remove.
* test/foo.test: Remove.
2016-10-12 23:40:11 +02:00
Jan Nieuwenhuizen c38ae1ebc5 lib/match: ugly hygiene hack. FIXME. 2016-10-10 20:53:42 +02:00
Jan Nieuwenhuizen 2c7f26dbe6 mescc.scm: first a.out produced from main.c. 2016-08-14 01:44:42 +02:00
Jan Nieuwenhuizen 85f3d40e71 lib/match.scm: import. 2016-08-14 01:40:55 +02:00
Jan Nieuwenhuizen da27cf183a lib/srfi/srfi-1.scm: add append-map, filter, find. 2016-08-14 01:40:45 +02:00
Jan Nieuwenhuizen 1ddb703265 lib/rnrs/bytevectors.scm: minimal rnrs bytevectors. 2016-08-13 17:05:29 +02:00
Jan Nieuwenhuizen 066deeb183 remove debug output to stdout. 2016-08-12 12:06:59 +02:00
Jan Nieuwenhuizen 287c0284fe Use IF iso COND as primitive; keep COND primitive as option. 2016-07-27 08:49:45 +02:00
Jan Nieuwenhuizen ccb1d842f3 Revert "lib/lalr-debug.scm"
This reverts commit 084d1bea33d45f0653cdc6bef44dc295faef6b72.
2016-07-27 00:05:02 +02:00
Jan Nieuwenhuizen 300c997d43 lib/lalr-debug.scm 2016-07-26 23:34:00 +02:00
Jan Nieuwenhuizen 3864d434fc split-up test suite, implement quasiquote in scheme. 2016-07-25 14:39:56 +02:00
Jan Nieuwenhuizen 07a5f716fc lalr paren test 2016-07-24 12:08:21 +02:00
Jan Nieuwenhuizen 7c6283a6eb lib/lalr.scm 2016-10-18 22:41:39 +02:00
Jan Nieuwenhuizen d4e335b447 mes.c: add syntax, quasisyntax to reader.... 2016-07-24 00:40:37 +02:00
Jan Nieuwenhuizen 28ae662e0e srfi-9 records! 2016-07-24 00:14:40 +02:00
Jan Nieuwenhuizen 5126e16e66 trying to get records up....WIP 2016-07-23 14:39:33 +02:00
Jan Nieuwenhuizen f61a6c2228 srfi-9 2016-07-23 13:13:21 +02:00
Jan Nieuwenhuizen 460a060423 lib/record.scm: import. 2016-07-23 12:58:25 +02:00
Jan Nieuwenhuizen 502336bf30 lib/srfi/srfi-0.scm: add. 2016-07-23 12:54:34 +02:00