Commit Graph

2235 Commits

Author SHA1 Message Date
Jan (janneke) Nieuwenhuizen 22223df902 ARM: build: Cater for M2-Planet.
* build-aux/build.sh.in: Remove cpu restriction for kaem build.
2022-05-01 21:01:12 +02:00
Jan (janneke) Nieuwenhuizen 47fd17e0de ARM Hack crt1 2022-05-01 21:01:12 +02:00
Jan (janneke) Nieuwenhuizen f4a129f805 libc-core: Modulus 2022-05-01 21:01:12 +02:00
Jan (janneke) Nieuwenhuizen 239943d281 FIXME: crt1.M1 base pointer?? 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen 7270ce300c HACK arm m2 int foo = bar () workaround 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen a76919cb04 wip: M2 ARM 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen b2109855e4 ELF-x86.hex _start 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen 03c718cff8 arm syscall.c 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen a29eb8d3df syscall.h arm 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen f86f463806 arm _exit, _write, _syscall 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen 30f5896620 arm: syscall.h 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen 46b5bd7920 syscall arm 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen eec96216ed crt1.M arm 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen cbad97b56e ELF-arm 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen f1f32e6376 ELF-arm.hex2 2022-05-01 21:00:53 +02:00
Jan (janneke) Nieuwenhuizen 4ec0b8787c AUTHORS ELF 2022-05-01 21:00:09 +02:00
Jan (janneke) Nieuwenhuizen cf4d107cdf AUTHORS ELF-i386 2022-05-01 21:00:09 +02:00
Jan (janneke) Nieuwenhuizen 467f80792a arm-mes-m2 2022-05-01 21:00:09 +02:00
Jan (janneke) Nieuwenhuizen 50695d6686 guix: m2-planet: Update to 1.9.0.
* guix/git/mes.scm (m2-planet)[source]: Update to 1.9.0.
2022-05-01 21:00:09 +02:00
Jan (janneke) Nieuwenhuizen 248a7caee8 build: Depend on M2-Planet-1.9.0.
* configure (main): Bump M2-Planet version to 1.8.0.
2022-05-01 21:00:09 +02:00
Jan (janneke) Nieuwenhuizen d663ab0724 squash! split: simple.make 2022-05-01 21:00:09 +02:00
Jan (janneke) Nieuwenhuizen 13e97a2b70 squash! repl 2022.
* mes/module/mes/repl.mes (welcome): Update copyright years.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen cbef2dc206 build: Release 0.24.
* configure (VERSION): Bump to 0.24.
* configure.sh (VERSION): Likewise.
* build-aux/GNUmakefile.in (gen-announce): Update previous-version to
0.23.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 044d02ed23 doc: Update `NEWS'.
* NEWS (Changes in 0.24 since 0.23): New section.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen f4cde66947 doc: Update `README'.
* README: Mention Mes can be bootstrapped using M2-Planet.
Mention Full Source Bootstrap sponsoring by NlNet.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen a93b335544 doc: Update 'AUTHORS'.
* AUTHORS: Mention Jeremiah Orians as co-author on ELF heanders and
mention M2-Planet imports.  Mention bug fixes by W.J. van der Laan.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen d946d95aee doc: Update Guix bootstrap status.
* doc/mes.texi (Bootstrappable Builds): Add reference to Guix.
(Reduced Binary Seed Bootstrap): Add node and section header.
(Scheme-only Bootsrap): New section.
(Full Source Bootstrap): Add node and section header.  Some updates.
(Stage0): Add node and section header.
(M2-Planet): New section.
(The Mes Bootstrap Process): Fix typos, update to current Guix reduced
binary seed bootstrap status.
* doc/images/gcc-mesboot-graph.dot: Regenerate.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen a88cb6bff2 doc: Update dependencies, add M2-Planet.
* INSTALL (Other GNU/Linux): Mention M2-Planet.
(Prerequisites): Likewise.
* doc/mes.texi (Regular Requirements): Likewise.  Rename to...
(Requirements): ...this.
(Bootstrap Requirements): Likewise.
(Building from Git): Mention dependencies on GNU Texinfo, GNU help2man,
graphviz, and perl.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen d3bc2ef4ed doc: Use `guix shell' instead of `guix environment'.
* HACKING (SETUP): Use `guix shell' instead of `guix environment'.
* INSTALL (Guix): Likewise.
* PORTING (Setup environment): Likewise.
* doc/mes.texi (Building from Git): Likewise.
* simple.sh: Likewise.
* guix.scm: Likewise.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen f89751118a guix: m2-planet: Update to 1.8.0.
* guix/git/mes.scm (m2-planet)[source]: Update to 1.8.0.
[arguments]: Remove patch-prefix stage.
[home-page]: Fix.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 56937d844e build: Depend on M2-Planet-1.8.0.
* configure (main): Bump M2-Planet version to 1.8.0.
* kaem.run,
scaffold/argv.kaem,
scaffold/global-array.kaem,
scaffold/hello.kaem,
scaffold/local-array.kaem,
scaffold/local-static-array.kaem,
scaffold/main.kaem,
scaffold/read.kaem:: Use M2-Planet --bootstrap-mode.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen b5e768c382 guix: Update package inputs to new style.
* guix/git/mes.scm (m2-planet)[native-inputs]: Use simple list.
* guix/git/mes.scm (nyacc-0.99): Likewise.
[inputs]: Use simple list.
(nyacc): Likewise.
(mes)[propagated-inputs]: Use simple list.
[native-inputs]: Use list instead of alist.
[native-search-paths]: New field.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen dd2bcd97c9 Mes C Library: memchr: Avoid compile warning.
* lib/string/memchr.c (memchr): Cast return to void*.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen fe7d046391 core: Fix FRAME_SIZE conflict.
This avoids conflicting with FRAME_SIZE from signal.h.

* include/mes/constants.h (FRAME_SIZE): Rename to...
(GC_FRAME_SIZE): ...this.
(FRAME_PROCEDURE): Rename to...
(GC_FRAME_PROCEDURE): ...this.
* src/eval-apply.c (eval_apply): Update accordingly.
* src/gc.c (gc_push_frame, gc_peek_frame, gc_pop_frame): Update accordingly.
* src/stack.c (make_frame, make_stack): Update accordingly.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 09875d0497 core: Resurrect gcc-10 support.
* include/mes/mes.h (g_datadir, g_debug, g_buf, g_continuations,
g_symbols, g_symbol_max, g_mini, R0, R1, R2, R3, M0, g_macros, g_ports,
ARENA_SIZE, MAX_ARENA_SIZE, STACK_SIZE, JAM_SIZE, GC_SAFETY, MAX_STRING,
g_arena, cell_arena, cell_zero, g_free, g_symbol, g_stack_array,
g_cells, g_news, g_stack, gc_count, gc_start_time, gc_end_time, gc_time,
__execl_c_argv, __open_boot_buf, __open_boot_file_name, __setenv_buf,
__reader_read_char_buf, g_start_time, __gettimeofday_time,
__get_internal_run_time_ts): Declare extern.
* include/mes/symbols.h ( cell_nil, cell_f, cell_t, cell_dot,
cell_arrow, cell_undefined, cell_unspecified, cell_closure,
cell_circular, cell_vm_apply, cell_vm_apply2, cell_vm_begin,
cell_vm_begin_eval, cell_vm_begin_expand, cell_vm_begin_expand_eval,
cell_vm_begin_expand_macro, cell_vm_begin_expand_primitive_load,
cell_vm_begin_primitive_load, cell_vm_begin_read_input_file,
cell_vm_call_with_current_continuation2, cell_vm_call_with_values2,
cell_vm_eval, cell_vm_eval2, cell_vm_eval_check_func,
cell_vm_eval_define, cell_vm_eval_macro_expand_eval,
cell_vm_eval_macro_expand_expand, cell_vm_eval_pmatch_car,
cell_vm_eval_pmatch_cdr, cell_vm_eval_set_x, cell_vm_evlis,
cell_vm_evlis2, cell_vm_evlis3, cell_vm_if, cell_vm_if_expr,
cell_vm_macro_expand, cell_vm_macro_expand_car,
cell_vm_macro_expand_cdr, cell_vm_macro_expand_define,
cell_vm_macro_expand_define_macro, cell_vm_macro_expand_lambda,
cell_vm_macro_expand_set_x, cell_vm_return, cell_symbol_lambda,
cell_symbol_begin, cell_symbol_if, cell_symbol_quote,
cell_symbol_define, cell_symbol_define_macro, cell_symbol_quasiquote,
cell_symbol_unquote, cell_symbol_unquote_splicing, cell_symbol_syntax,
cell_symbol_quasisyntax, cell_symbol_unsyntax,
cell_symbol_unsyntax_splicing, cell_symbol_set_x, cell_symbol_sc_expand,
cell_symbol_macro_expand, cell_symbol_portable_macro_expand,
cell_symbol_sc_expander_alist, cell_symbol_call_with_values,
cell_symbol_call_with_current_continuation, cell_symbol_boot_module,
cell_symbol_current_module, cell_symbol_primitive_load, cell_symbol_car,
cell_symbol_cdr, cell_symbol_not_a_number, cell_symbol_not_a_pair,
cell_symbol_system_error, cell_symbol_throw,
cell_symbol_unbound_variable, cell_symbol_wrong_number_of_args,
cell_symbol_wrong_type_arg, cell_symbol_buckets, cell_symbol_builtin,
cell_symbol_frame, cell_symbol_hashq_table, cell_symbol_module,
cell_symbol_procedure, cell_symbol_record_type, cell_symbol_size,
cell_symbol_stack, cell_symbol_argv, cell_symbol_mes_datadir,
cell_symbol_mes_version, cell_symbol_internal_time_units_per_second,
cell_symbol_compiler, cell_symbol_arch, cell_symbol_pmatch_car,
cell_symbol_pmatch_cdr, cell_type_bytes, cell_type_char,
cell_type_closure, cell_type_continuation, cell_type_function,
cell_type_keyword, cell_type_macro, cell_type_number, cell_type_pair,
cell_type_port, cell_type_ref, cell_type_special, cell_type_string,
cell_type_struct, cell_type_symbol, cell_type_values,
cell_type_variable, cell_type_vector, cell_type_broken_heart,
cell_symbol_program, cell_symbol_test): Likewise.
* src/globals.c: New file.
* build-aux/configure-lib.sh (mes_SOURCES): Add it.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 5e52d70ffd guix: m2-planet: Update to 1.7.0-32-gaa3472b.
This adds support for skipping "extern".

* guix/git/mes.scm (m2-planet)[source]: Update to 1.7.0-32-gaa3472b.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 5e9dbb5a7d scaffold: Add local-static-array.c.
GCC gives

    12:35:54 janneke@dundal:~/src/mes/wip-m2 [env]
    $ gcc scaffold/local-static-array.c
    12:36:01 janneke@dundal:~/src/mes/wip-m2 [env]
    $ ./a.out
    hello local static
    hello local static
    12:36:04 janneke@dundal:~/src/mes/wip-m2 [env]

M2-Planet gives

    12:36:04 janneke@dundal:~/src/mes/wip-m2 [env]
    $ kaem --verbose --strict --file scaffold/local-static-array.kaem
     +> M2-Planet --debug --architecture x86 -f lib/mes/globals.c -f lib/linux/x86-mes-m2/mini.c -f lib/mes/mini-write.c -f lib/string/strlen.c -f lib/string/strcpy.c -f lib/mes/eputs.c -f scaffold/local-static-array.c -o scaffold/local-static-array.M1
    scaffold/local-static-array.c:29:static is not a defined symbol
    Subprocess error 256
    ABORTING HARD
    [1]12:36:07 janneke@dundal:~/src/mes/wip-m2 [env]

* scaffold/local-static-array.c: New file.
* scaffold/local-static-array.kaem: New file.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen adbaaa2e5c scaffold: Add local-array.c.
GCC gives

    12:32:06 janneke@dundal:~/src/mes/wip-m2 [env]
    $ gcc scaffold/local-array.c
    12:34:27 janneke@dundal:~/src/mes/wip-m2 [env]
    $ ./a.out
    hello local
    12:34:31 janneke@dundal:~/src/mes/wip-m2 [env]

M2-Planet gives

    12:34:31 janneke@dundal:~/src/mes/wip-m2 [env]
    $ kaem --verbose --strict --file scaffold/local-array.kaem
     +> M2-Planet --debug --architecture x86 -f lib/mes/globals.c -f lib/linux/x86-mes-m2/mini.c -f lib/mes/mini-write.c -f lib/string/strlen.c -f lib/string/strcpy.c -f lib/mes/eputs.c -f scaffold/local-array.c -o scaffold/local-array.M1
    scaffold/local-array.c:29:ERROR in collect_local
    Missing ;
    Subprocess error 256
    ABORTING HARD
    [1]12:34:42 janneke@dundal:~/src/mes/wip-m2 [env]

* scaffold/local-array.c: New file.
* scaffold/local-array.kaem: New file.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen bc4117332b scaffold: Add global-array.c.
GCC gives

    12:30:45 janneke@dundal:~/src/mes/wip-m2 [env]
    $ gcc scaffold/global-array.c
    12:31:53 janneke@dundal:~/src/mes/wip-m2 [env]
    $ ./a.out
    hello global
    12:31:54 janneke@dundal:~/src/mes/wip-m2 [env]

M2-Planet gives

    12:31:54 janneke@dundal:~/src/mes/wip-m2 [env]
    $ kaem --verbose --strict --file scaffold/global-array.kaem
     +> M2-Planet --debug --architecture x86 -f lib/mes/globals.c -f lib/linux/x86-mes-m2/mini.c -f lib/mes/mini-write.c -f lib/string/strlen.c -f lib/string/strcpy.c -f lib/mes/eputs.c -f scaffold/global-array.c -o scaffold/global-array.M1
    scaffold/global-array.c:20:Received [ in program
    Subprocess error 256
    ABORTING HARD
    [1]12:32:06 janneke@dundal:~/src/mes/wip-m2 [env]

* scaffold/global-array.c: New file.
* scaffold/global-array.kaem: New file.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 8576a2a38a doc: Add test hints to `HACKING'.
* HACKING (TESTING): New section.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 2c103219a3 Revert "Mes C Library: m2/execve.c: Remove specialization."
This fixes

    gcc-lib/libc+gnu.c: At top level:
    gcc-lib/libc+gnu.c:2694:1: error: conflicting types for ‘execve’
     execve (char const *file_name, char **argv, char **env)
     ^~~~~~
    In file included from gcc-lib/libc+gnu.c:492:0:
    include/unistd.h:66:5: note: previous declaration of ‘execve’ was here
     int execve (char const *file, char *const argv[], char *const env[]);
         ^~~~~~

This reverts commit 828c27a073.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen c44202f132 bootstrap: Update M2-Planet x86 definitions from 1.7.0-31-g358b6cf.
* lib/m2/x86/x86_defs.M1: Update.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 17a3a5cc6b guix: m2-planet: Update to 1.7.0-31-g358b6cf.
* guix/git/mes.scm (m2-planet)[source]: Update to 1.7.0-31-g358b6cf.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen c0dbbcd28b Revert "Mes C Library: m2/getcwd.c: Remove specialization."
This reverts commit 37f44ce945.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 354266e0ef core: Move __getcwd_buf to Mes C Library.
* include/mes/mes.h (__getcwd_buf): Move to..
* lib/posix/getcwd.c (__getcwd_buf): ...here.
(getcwd): Refactor.
* src/posix.c (getcwd_): Do not use __getcwd_buf.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen e9959de4fd bootstrap: Support building with M2-Planet 1.4.
* lib/m2/x86/x86_defs.M1 (NOP): New define.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 55988f8904 mescc: Only use signed division when numerator is signed.
Currently, sign-extension (CLTD vs XOR EDX) and signed division (IDIV vs
DIV) selected by setting "signed?".  See, module/mescc/x86/as.scm.
Possibly we need a signed? based on numerator and denominator, and
add a extend-sign? based on the signedness of the numerator?

* module/mescc/compile.scm (expr->register): Base "signed?" strictly on
signedness of numerator.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen c555de1e2d mescc: Use unsigned type for sizeof expression.
* module/mescc/compile.scm (ast->type): Use unsigned type for sizeof
expression.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen b22b799f7e mescc: Respect integer literal type suffixes.
* module/mescc/compile.scm (ast->type): Respect ULL, UL, U, LL, L suffix
on integer literals.
2022-05-01 20:59:37 +02:00
Jan (janneke) Nieuwenhuizen 6532d05bc4 core: Use unsigned constants.
* src/gc.c (FRAME_SIZE, M2_CELL_SIZE): Declare unsigned.
(gc_init): Use unsigned suffixes for divisions.
* src/posix.c (TIME_UNITS_PER_SECOND): Declare unsigned.
(UL1000000000): New constant.
(seconds_and_nanoseconds_to_long): Use it.
* src/gc.c (U10, U100): New constants.
(gc_init): Use them.
2022-05-01 20:59:37 +02:00