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
c3f27804f6
tests: Remove tinycc-imported non-free grep test.
...
* scaffold/tinycc/46_grep.c: Remove.
* scaffold/tinycc/46_grep.expect: Remove.
2018-06-01 15:35:05 +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
58a0b97991
core: Refactor boot-0 loading.
...
* src/mes.c (load_boot): New function.
(load_env): Use it.
2018-05-28 18:53:25 +02:00
Jan Nieuwenhuizen
be34aaf636
mescc: Out of the box Geiser support.
...
* .dir-locals.el: New file. Out of the box Geiser support for mescc.
2018-05-26 20:54:51 +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
2748992551
mes: Add drop, drop-right.
...
* module/srfi/srfi-1.mes (drop, drop-right): New function.
2018-05-26 20:47:33 +02:00
Jan Nieuwenhuizen
4ee1c9595e
Revert "fork/exec: debug."
...
This reverts commit f0315ac0d9acd66a30dbb192334f443459b7ed16.
2018-05-25 11:21:26 +02:00
Jan Nieuwenhuizen
342195bbbd
fork/exec: debug.
2018-05-25 11:21:06 +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
Jan Nieuwenhuizen
2d97595147
mescc: Oops, alignment.
...
* module/mes/M1.mes (object->M1): Oops, alignment: only add alignment
when not aligned.
2018-05-27 08:20:00 +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
d717355b6c
build: Remove function declarations from M1.
...
* module/language/c99/compiler.mes (info->object): Remove function
declarations.
2018-05-27 07:12:33 +02:00
Jan Nieuwenhuizen
893c020ef4
build: Check for mes-seed, tinycc-seed.
...
* configure: Check for guile-tools, mes-seed, tinycc-seed. Bugfix:
Add cwd to load path.
2018-05-27 06:59:36 +02:00
Jan Nieuwenhuizen
2be4cf1a59
guix: mes: Update to 0.14.
...
* guix.scm (mes): Update to 0.14.
(mes.git): Likewise.
2018-05-22 21:02:24 +02:00
Jan Nieuwenhuizen
8eb27ed01f
guix: Add nyacc-for-mes.
...
* guix.scm (nyacc-for-mes): New variable.
2018-05-23 13:12:02 +02:00
Jan Nieuwenhuizen
4e50490aa2
Release 0.14.
...
* configure (VERSION): Bump to 0.14.
2018-05-20 12:47:01 +02:00
Jan Nieuwenhuizen
e411d38bbd
doc: Release udpate.
...
* BOOTSTRAP: Update.
* HACKING: Update.
* NEWS: Update.
* README: Update.
* doc/ANNOUNCE-0.14: New file.
2018-05-19 20:52:24 +02:00
Jan Nieuwenhuizen
932b38980e
mescc: Tinycc support: Handle short struct initializer.
...
* module/language/c99/compiler.mes (array-init-element->data): Handle
short struct initializer.
2018-05-22 18:24:32 +02:00
Jan Nieuwenhuizen
029c000840
mescc: Align global data.
...
* module/mes/M1.mes (object->M1): Align globals.
2018-05-21 21:54:54 +02: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
f8f0aacb61
mescc: Tinycc support: workaround for tcc; this breaks: Structured type with char or short on heap.
...
* module/language/c99/compiler.mes (int->bv): Always use 32bit byte
vector.
2018-05-20 08:58:44 +02:00
Jan Nieuwenhuizen
def730d74a
mescc: Tinycc support: Structured type with char or short on heap.
...
* module/language/c99/compiler.mes (int->bv): New function.
(init->data): Use it. Add parameter. Update callers.
(array-init->data): Add type parmeter.
(array-init-element->data): Likewise.
* module/mes/bytevectors.mes (bytevector-u8-set!): New function.
* module/mes/bytevectors.scm (mes): Export it.
* module/mes/as.mes (int->bv8): New function.
2018-05-19 14:53:05 +02:00
Jan Nieuwenhuizen
bbfe7de3da
mescc: Fix size ERROR message.
...
* module/language/c99/compiler.mes (expr->accu): Fix size ERROR message.
2018-05-20 08:51:15 +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
03ba0e18df
mescc: Tinycc support: Export nested struct definitions.
...
* module/language/c99/compiler.mes (struct-field): Support nested,
named and anonymous enums.
(field->info): New function.
(type->info): Use it to reap nestedly defined enums, structs, unions.
(decl->info): Likewise.
* scaffold/tests/t.c: Test it.
2018-05-19 20:49:56 +02:00
Jan Nieuwenhuizen
b4d1c40aa8
mescc: Tinycc support: Unsigned comparison.
...
* stage0/x86.M1 (ja32, jae32, jb32, jbe32): New macro.
* module/mes/as-i386.mes (i386:jump-a, i386:jump-ae, i386:jump-b,
i386:jump-be): Use it in new function.
* module/mes/as-i386.scm: Export them.
* module/language/c99/compiler.mes (test-jump-label->info): Use them to
support unsigned comparison.
* scaffold/tests/7s-unsigned-compare.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
2018-05-19 11:41:53 +02:00
Jan Nieuwenhuizen
4faeece057
mescc: Tinycc support: Char and short sign extend.
...
* module/mes/as-i386.mes (i386:accu*n->local, i386:byte-accu->local+n,
i386:word-accu->local+n): Remove.
(i386:byte-accu, i386:signed-byte-accu, i386:word-accu,
i386:signed-word-accu): New function.
* module/mes/as-i386.scm: Export them.
* module/language/c99/compiler.mes (accu->local+n-text): Simplify.
(mem->accu, convert-accu): New function.
(expr->accu): Use them.
* stage0/x86.M1 (mov____%al,0x32(%ebp), mov____%al,0x8(%ebp),
mov____%ax,0x32(%ebp), mov____%ax,0x8(%ebp), movzbl_0x32(%ebp),%eax,
movzbl_0x8(%ebp),%eax, movzwl_0x32(%ebp),%eax,
movzwl_0x8(%ebp),%eax): Deprecate.
* scaffold/tests/7r-sign-extend.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
2018-05-18 23:58:10 +02:00
Jan Nieuwenhuizen
7f712e4555
mes: string->number: Support upper case hex.
...
* module/mes/scm.mes (string->number): Support upper case hex.
2018-05-21 06:51:21 +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
7dfc88e22c
mescc: Tinycc support: Switch with heterogeneous body, non-last default.
...
* module/language/c99/compiler.mes (switch->info): New function.
(ast->info): Use it for switch.
(clause->info, statements->clauses): Remove.
* scaffold/tests/44-switch.c (default_first): Test it.
2018-05-17 07:40:01 +02:00
Jan Nieuwenhuizen
8f8a4be83d
mes: Support fold 3.
...
* module/srfi/srfi-1.mes (fold): Support fold 3.
2018-05-20 23:20:27 +02:00
Jan Nieuwenhuizen
345d0d8413
mescc: Tinycc support: Compound strings as function argument.
...
* module/language/c99/compiler.mes (expr->accu): Handle compound
strings as function argument.
* module/mes/M1.mes (object->M1): Call error when string not found.
* scaffold/tests/t.c: Test it.
2018-05-14 22:37:53 +02:00
Jan Nieuwenhuizen
209f9cc599
mescc: Tinycc support: Update some tests.
2018-05-14 21:18:08 +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
010ab2032f
mescc: Tinycc support: Fix sizeof interesting expressions.
...
* module/language/c99/compiler.mes (ast->type): Return type for
sizeof-expr, sizeof-type.
* scaffold/tests/85-sizeof.c: Test it.
2018-05-14 20:14:42 +02:00
Jan Nieuwenhuizen
0f87473105
mescc: Tinycc support: Support bit-fields.
...
* module/language/c99/compiler.mes (struct->fields): Support bit-fields.
(ast->type):
(field-field):
(field-offset):
(expr->accu*):
(expr->accu):
(struct-field):
(->size):
* module/language/c99/info.scm (<bit-field>): New type.
* stage0/x86.M1 (and____$i32,%eax, and____(%edx),%eax,
mov____(%edx),%eax, or____(%edx),%eax): New macro.
* module/mes/as-i386.mes (i386:base-mem->accu): Use
it.
(i386:accu-and, i386:accu-and-base-mem, i386:accu-or-base-mem): New
function.
* module/mes/as-i386.scm: Export them.
* scaffold/tests/7q-bit-field.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
2018-05-13 17:05:28 +02:00
Jan Nieuwenhuizen
dae4a30417
mescc: Tinycc support: Anonymous string array.
...
* module/language/c99/compiler.mes (global->info): Anonymous string
array.
(local->info): Likewise.
(array-init->string): Support array of char.
(init-local): Likewise.
(->size): Fix for array.
* scaffold/tests/4a-char-array.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
2018-05-12 12:03:01 +02:00
Jan Nieuwenhuizen
e8969af4ca
mescc: Tinycc support: sizeof: Bugfix for c-array.
...
* module/language/c99/compiler.mes (->size): Bugfix for c-array.
* scaffold/tests/85-sizeof.c: Test it.
2018-05-12 11:25:35 +02:00
Jan Nieuwenhuizen
ad9f171c49
mescc: Tinycc support: Implement ((struct foo*)p)->bar.
...
* module/language/c99/compiler.mes (expr->accu*):
* scaffold/tests/7p-struct-cast.c: Test it.
* build-aux/check-mescc.sh (tests): Run it.
2018-05-12 00:20:51 +02:00
Jan Nieuwenhuizen
057607ca0a
mescc: Tinycc support: Implement (foo--)->bar and permutations.
...
* module/language/c99/info.scm (clone): Add post field.
(make): Handle post parameter.
* module/language/c99/compiler.mes (clone): Handle post parameter.
(expr->accu*): Set it to support foo--/foo--.
(expr->accu): Read it to support foo--/foo--.
* scaffold/tests/7o-struct-pre-post.c: Test it.
* build-aux/check-mescc.sh: Run it.
2018-05-13 13:50:32 +02:00
Jan Nieuwenhuizen
330404125e
mescc: Tinycc support: Function addresses.
2018-05-11 19:46:26 +02:00