Compare commits
82 Commits
master
...
wip-explod
Author | SHA1 | Date |
---|---|---|
|
c13941261e | |
|
dac4283f7d | |
|
615a4a1d22 | |
|
a5474558c4 | |
|
60e7c8491f | |
|
c971e02614 | |
|
3d615ee790 | |
|
b2afb3b3f3 | |
|
544d601aea | |
|
8b149e7f4f | |
|
4fc1f5444a | |
|
d0e6228fa1 | |
|
29950ae645 | |
|
39693eca63 | |
|
44add95226 | |
|
544540d332 | |
|
0f7af7ac61 | |
|
96b585aba4 | |
|
ace1056fab | |
|
834a722029 | |
|
7f26f85e75 | |
|
61033960aa | |
|
b7b8470247 | |
|
a6072afb98 | |
|
82332f0c0b | |
|
31e03d1cd7 | |
|
b6bbbf66e9 | |
|
76729c9971 | |
|
e930a00a35 | |
|
2121b98bda | |
|
a3fb84e6a6 | |
|
087a0767a0 | |
|
6c1b4cf1d7 | |
|
510f82a575 | |
|
17a46c5c64 | |
|
6a11d4c9b7 | |
|
9eaccf70eb | |
|
15c8c9857a | |
|
2183f4bb2a | |
|
6ffeec94a7 | |
|
d23b72589d | |
|
9a0daee989 | |
|
5f0e6200dc | |
|
013cb1f33d | |
|
4d6084b20b | |
|
e81e48c701 | |
|
27045d21dc | |
|
a652026c08 | |
|
6f08fee316 | |
|
29272e3d96 | |
|
9033e03bbf | |
|
1d8667e993 | |
|
8d7de98307 | |
|
b8e8de3d12 | |
|
94299b2860 | |
|
c8a3d50705 | |
|
c093998151 | |
|
b2aea040ec | |
|
761f48d8f0 | |
|
2b41e3c1a0 | |
|
f39e1cc250 | |
|
ecf9220bbc | |
|
aa32fbd8ff | |
|
f5a6ba799d | |
|
86c6188906 | |
|
feb8fc2bad | |
|
5e5be32e6f | |
|
a43de2947d | |
|
35e203e49c | |
|
f470ec826d | |
|
2102d0d26e | |
|
51c6e0626d | |
|
0b7a0a2d23 | |
|
56315d3da5 | |
|
e2cf54fae5 | |
|
7ac74192c9 | |
|
5ccf23f7e2 | |
|
9a82d835cd | |
|
99be4bf07e | |
|
3ebee71653 | |
|
41db6e22d1 | |
|
d6e3618c39 |
143
.dir-locals.el
143
.dir-locals.el
|
@ -1,5 +1,5 @@
|
||||||
;;; GNU Mes --- Maxwell Equations of Software
|
;;; GNU Mes --- Maxwell Equations of Software
|
||||||
;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
;;; Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Mes.
|
;;; This file is part of GNU Mes.
|
||||||
;;;
|
;;;
|
||||||
|
@ -16,73 +16,20 @@
|
||||||
;;; You should have received a copy of the GNU General Public License
|
;;; You should have received a copy of the GNU General Public License
|
||||||
;;; along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
;;; along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
((nil
|
;; The GNU project defaults. These are also the GNU Emacs defaults.
|
||||||
.
|
;; Re-asserting theme here, however, as a courtesy for setups that use
|
||||||
((indent-tabs-mode . nil)
|
;; a global override.
|
||||||
(eval
|
(
|
||||||
.
|
;; For writing GNU C code, see
|
||||||
(progn
|
;; https://www.gnu.org/prep/standards/html_node/Writing-C.html
|
||||||
(let ((top (locate-dominating-file default-directory ".dir-locals.el"))))
|
(c-mode . ((c-file-style . "gnu")
|
||||||
|
(indent-tabs-mode . nil)))
|
||||||
|
|
||||||
(defun guile--manual-look-up (id mod)
|
(makefile-mode . ((indent-tabs-mode . t)))
|
||||||
(message "guile--manual-look-up id=%s => %s mod=%s" id (symbol-name id) mod)
|
|
||||||
(let ((info-lookup-other-window-flag
|
|
||||||
geiser-guile-manual-lookup-other-window-p))
|
|
||||||
(info-lookup-symbol (symbol-name id) 'scheme-mode))
|
|
||||||
(when geiser-guile-manual-lookup-other-window-p
|
|
||||||
(switch-to-buffer-other-window "*info*"))
|
|
||||||
(search-forward (format "%s" id) nil t))
|
|
||||||
|
|
||||||
(add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
|
(nil . ((indent-tabs-mode . nil)
|
||||||
|
(fill-column . 72)))
|
||||||
|
|
||||||
(defun guix-switch-profile (&optional profile)
|
|
||||||
"reset Emacs' environment by snarfing PROFILE/etc/profile"
|
|
||||||
|
|
||||||
(defun matches-in-string (regexp string)
|
|
||||||
"return a list of matches of REGEXP in STRING."
|
|
||||||
(let ((matches))
|
|
||||||
(save-match-data
|
|
||||||
(string-match "^" "")
|
|
||||||
(while (string-match regexp string (match-end 0))
|
|
||||||
(push (or (match-string 1 string) (match-string 0 string)) matches)))
|
|
||||||
matches))
|
|
||||||
|
|
||||||
(interactive "fprofile: ")
|
|
||||||
(let* ((output (shell-command-to-string (concat "GUIX_PROFILE= /bin/sh -x " profile "/etc/profile")))
|
|
||||||
(exports (matches-in-string "^[+] export \\(.*\\)" output)))
|
|
||||||
(mapcar (lambda (line) (apply #'setenv (split-string line "="))) exports )))
|
|
||||||
|
|
||||||
(defun shell-args-to-string (&rest args)
|
|
||||||
(shell-command-to-string (mapconcat 'identity args " ")))
|
|
||||||
|
|
||||||
(defun as (string &optional arch)
|
|
||||||
(let* ((arch (or arch "--64"))
|
|
||||||
(asm (subst-char-in-string ?_ ?\s string))
|
|
||||||
(foo (message "asm:%S" asm))
|
|
||||||
(result (shell-args-to-string "as" arch (concat "<(echo '" asm "')")))
|
|
||||||
(disassembly (shell-args-to-string "objdump" "-d" "a.out"))
|
|
||||||
(foo (message "disassembly: %S" disassembly))
|
|
||||||
(match (string-match "^ 0:[\t]\\([^\t]*\\)" disassembly))
|
|
||||||
(code (match-string 1 disassembly))
|
|
||||||
(code (apply 'concat (split-string code " " t))))
|
|
||||||
(insert " ")
|
|
||||||
(insert code)))
|
|
||||||
|
|
||||||
(defun as-32 (point mark)
|
|
||||||
(interactive "r")
|
|
||||||
(let* ((string (buffer-substring point mark))
|
|
||||||
(code (as string "--32")))
|
|
||||||
(insert " ")
|
|
||||||
(insert code)))
|
|
||||||
|
|
||||||
(defun as-64 (point mark)
|
|
||||||
(interactive "r")
|
|
||||||
(let* ((string (buffer-substring point mark))
|
|
||||||
(code (as string "--64")))
|
|
||||||
(insert " ")
|
|
||||||
(insert code)))))))
|
|
||||||
(makefile-mode
|
|
||||||
(indent-tabs-mode . t))
|
|
||||||
(scheme-mode
|
(scheme-mode
|
||||||
.
|
.
|
||||||
((geiser-active-implementations . (guile))
|
((geiser-active-implementations . (guile))
|
||||||
|
@ -96,5 +43,69 @@
|
||||||
(mapcar
|
(mapcar
|
||||||
#'prefix-dir-locals-dir
|
#'prefix-dir-locals-dir
|
||||||
'("scripts" "module")))))))
|
'("scripts" "module")))))))
|
||||||
|
|
||||||
(texinfo-mode . ((indent-tabs-mode . nil)
|
(texinfo-mode . ((indent-tabs-mode . nil)
|
||||||
(fill-column . 72))))
|
(fill-column . 72)))
|
||||||
|
(nil .
|
||||||
|
((eval
|
||||||
|
.
|
||||||
|
(progn
|
||||||
|
(let ((top (locate-dominating-file default-directory ".dir-locals.el"))))
|
||||||
|
|
||||||
|
(defun guile--manual-look-up (id mod)
|
||||||
|
(message "guile--manual-look-up id=%s => %s mod=%s" id (symbol-name id) mod)
|
||||||
|
(let ((info-lookup-other-window-flag
|
||||||
|
geiser-guile-manual-lookup-other-window-p))
|
||||||
|
(info-lookup-symbol (symbol-name id) 'scheme-mode))
|
||||||
|
(when geiser-guile-manual-lookup-other-window-p
|
||||||
|
(switch-to-buffer-other-window "*info*"))
|
||||||
|
(search-forward (format "%s" id) nil t))
|
||||||
|
|
||||||
|
(add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
|
||||||
|
|
||||||
|
(defun guix-switch-profile (&optional profile)
|
||||||
|
"reset Emacs' environment by snarfing PROFILE/etc/profile"
|
||||||
|
|
||||||
|
(defun matches-in-string (regexp string)
|
||||||
|
"return a list of matches of REGEXP in STRING."
|
||||||
|
(let ((matches))
|
||||||
|
(save-match-data
|
||||||
|
(string-match "^" "")
|
||||||
|
(while (string-match regexp string (match-end 0))
|
||||||
|
(push (or (match-string 1 string) (match-string 0 string)) matches)))
|
||||||
|
matches))
|
||||||
|
|
||||||
|
(interactive "fprofile: ")
|
||||||
|
(let* ((output (shell-command-to-string (concat "GUIX_PROFILE= /bin/sh -x " profile "/etc/profile")))
|
||||||
|
(exports (matches-in-string "^[+] export \\(.*\\)" output)))
|
||||||
|
(mapcar (lambda (line) (apply #'setenv (split-string line "="))) exports )))
|
||||||
|
|
||||||
|
(defun shell-args-to-string (&rest args)
|
||||||
|
(shell-command-to-string (mapconcat 'identity args " ")))
|
||||||
|
|
||||||
|
(defun as (string &optional arch)
|
||||||
|
(let* ((arch (or arch "--64"))
|
||||||
|
(asm (subst-char-in-string ?_ ?\s string))
|
||||||
|
(foo (message "asm:%S" asm))
|
||||||
|
(result (shell-args-to-string "as" arch (concat "<(echo '" asm "')")))
|
||||||
|
(disassembly (shell-args-to-string "objdump" "-d" "a.out"))
|
||||||
|
(foo (message "disassembly: %S" disassembly))
|
||||||
|
(match (string-match "^ 0:[\t]\\([^\t]*\\)" disassembly))
|
||||||
|
(code (match-string 1 disassembly))
|
||||||
|
(code (apply 'concat (split-string code " " t))))
|
||||||
|
(insert " ")
|
||||||
|
(insert code)))
|
||||||
|
|
||||||
|
(defun as-32 (point mark)
|
||||||
|
(interactive "r")
|
||||||
|
(let* ((string (buffer-substring point mark))
|
||||||
|
(code (as string "--32")))
|
||||||
|
(insert " ")
|
||||||
|
(insert code)))
|
||||||
|
|
||||||
|
(defun as-64 (point mark)
|
||||||
|
(interactive "r")
|
||||||
|
(let* ((string (buffer-substring point mark))
|
||||||
|
(code (as string "--64")))
|
||||||
|
(insert " ")
|
||||||
|
(insert code))))))))
|
||||||
|
|
|
@ -62,22 +62,52 @@
|
||||||
/lib/x86-mes/0exit-42
|
/lib/x86-mes/0exit-42
|
||||||
/lib/x86-mes/exit-42
|
/lib/x86-mes/exit-42
|
||||||
|
|
||||||
|
/lib/tests/*/[0-9a][0-9a-z]-*
|
||||||
|
/lib/tests/*/x86-mes-*
|
||||||
|
!/lib/tests/*/*.c
|
||||||
|
!/lib/tests/*/*.exit
|
||||||
|
!/lib/tests/*/*.stdout
|
||||||
|
|
||||||
/scaffold/argv
|
/scaffold/argv
|
||||||
/scaffold/hello
|
/scaffold/hello
|
||||||
/scaffold/main
|
/scaffold/main
|
||||||
/scaffold/malloc
|
|
||||||
/scaffold/micro-mes
|
/scaffold/micro-mes
|
||||||
/scaffold/tiny-mes
|
/scaffold/tiny-mes
|
||||||
/scaffold/mini-mes
|
|
||||||
|
|
||||||
/scaffold/x86-mes-*
|
/scaffold/x86-mes-*
|
||||||
/scaffold/x86_64-mes-*
|
/scaffold/x86_64-mes-*
|
||||||
|
|
||||||
/scaffold/tests/x86-mes-*
|
/scaffold/tests/x86-mes-*
|
||||||
/scaffold/tests/[0-9a][0-9a-z]-[^.]*
|
/scaffold/tests/[0-9a][0-9a-z]-*
|
||||||
|
/scaffold/tests/t.*
|
||||||
|
!/scaffold/tests/*.c
|
||||||
|
!/scaffold/tests/*.exit
|
||||||
|
!/scaffold/tests/*.stdout
|
||||||
|
|
||||||
|
/src/mes.mes.symbols.h
|
||||||
|
/src/gc.mes.h
|
||||||
|
/src/hash.mes.h
|
||||||
|
/src/lib.mes.h
|
||||||
|
/src/math.mes.h
|
||||||
|
/src/mes.mes.h
|
||||||
|
/src/module.mes.h
|
||||||
|
/src/posix.mes.h
|
||||||
|
/src/reader.mes.h
|
||||||
|
/src/strings.mes.h
|
||||||
|
/src/struct.mes.h
|
||||||
|
/src/vector.mes.h
|
||||||
|
/src/gc.mes.i
|
||||||
|
/src/hash.mes.i
|
||||||
|
/src/lib.mes.i
|
||||||
|
/src/math.mes.i
|
||||||
|
/src/mes.mes.i
|
||||||
|
/src/module.mes.i
|
||||||
|
/src/posix.mes.i
|
||||||
|
/src/reader.mes.i
|
||||||
|
/src/strings.mes.i
|
||||||
|
/src/struct.mes.i
|
||||||
|
/src/vector.mes.i
|
||||||
|
|
||||||
/src/*.h
|
|
||||||
/src/*.i
|
|
||||||
/src/mes
|
/src/mes
|
||||||
/src/x86-mes-mes
|
/src/x86-mes-mes
|
||||||
/src/x86_64-mes-mes
|
/src/x86_64-mes-mes
|
||||||
|
@ -124,3 +154,5 @@
|
||||||
/doc/images/gcc-mesboot-graph.eps
|
/doc/images/gcc-mesboot-graph.eps
|
||||||
/doc/images/gcc-mesboot-graph.pdf
|
/doc/images/gcc-mesboot-graph.pdf
|
||||||
/doc/web/
|
/doc/web/
|
||||||
|
/lib/x86_64-mes/0exit-42
|
||||||
|
/lib/x86_64-mes/exit-42
|
||||||
|
|
7
HACKING
7
HACKING
|
@ -8,15 +8,15 @@ Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
notice and this notice are preserved.
|
notice and this notice are preserved.
|
||||||
|
|
||||||
* SETUP
|
* SETUP
|
||||||
guix environment -l .guix.scm #64 bit + 32bit
|
GUIX_PACKAGE_PATH=guix guix environment -l .guix.scm #64 bit + 32bit
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
guix environment --system=i686-linux -l .guix.scm #32 bit only
|
GUIX_PACKAGE_PATH=guix guix environment --system=i686-linux -l .guix.scm #32 bit only
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
guix package --profile=~/.config/guix/mes --manifest=build-aux/manifest.scm
|
GUIX_PACKAGE_PATH=guix guix package --profile=~/.config/guix/mes --manifest=build-aux/manifest.scm
|
||||||
. ~/.config/guix/mes/etc/profile
|
. ~/.config/guix/mes/etc/profile
|
||||||
|
|
||||||
* BUILD
|
* BUILD
|
||||||
|
@ -260,3 +260,4 @@ https://notabug.org/rain1/hex86/src/master/tests/hex0b3.hex86
|
||||||
** <pdewacht> e.g. as described here
|
** <pdewacht> e.g. as described here
|
||||||
https://jamey.thesharps.us/2016/07/15/testing-strategies-for-corrode/
|
https://jamey.thesharps.us/2016/07/15/testing-strategies-for-corrode/
|
||||||
("Randomized testing with Csmith and C-Reduce") [10:58]
|
("Randomized testing with Csmith and C-Reduce") [10:58]
|
||||||
|
** linux syscalls: https://fedora.juszkiewicz.com.pl/syscalls.html
|
||||||
|
|
4
INSTALL
4
INSTALL
|
@ -19,8 +19,8 @@ similar way.
|
||||||
* Regular build
|
* Regular build
|
||||||
** Prerequisites
|
** Prerequisites
|
||||||
*** Guix
|
*** Guix
|
||||||
guix environment -l .guix.scm #64 bit + 32bit
|
GUIX_PACKAGE_PATH=guix guix environment -l .guix.scm #64 bit + 32bit
|
||||||
guix environment --system=i686-linux -l .guix.scm #32 bit only
|
GUIX_PACKAGE_PATH=guix guix environment --system=i686-linux -l .guix.scm #32 bit only
|
||||||
|
|
||||||
*** Other GNU/Linux
|
*** Other GNU/Linux
|
||||||
- [[https://github.com/oriansj/mescc-tools][mescc-tools]], 0.5 is known to work.
|
- [[https://github.com/oriansj/mescc-tools][mescc-tools]], 0.5 is known to work.
|
||||||
|
|
|
@ -10,18 +10,6 @@ MES_ARENA=${MES_ARENA-100000000}
|
||||||
MES_MAX_ARENA=${MES_MAX_ARENA-100000000}
|
MES_MAX_ARENA=${MES_MAX_ARENA-100000000}
|
||||||
MES_STACK=${MES_STACK-500000}
|
MES_STACK=${MES_STACK-500000}
|
||||||
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/gc.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/hash.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/lib.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/math.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/mes.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/module.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/posix.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/reader.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/strings.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/struct.c
|
|
||||||
@GUILE@ -e '(mes-snarf)' build-aux/mes-snarf.scm --mes src/vector.c
|
|
||||||
|
|
||||||
hex2 --LittleEndian --Architecture 1 --BaseAddress 0x1000000 -f lib/x86-mes/elf32-0header.hex2 -f lib/x86-mes/elf32-body-exit-42.hex2 -f lib/x86-mes/elf-0footer.hex2 --exec_enable -o lib/x86-mes/0exit-42
|
hex2 --LittleEndian --Architecture 1 --BaseAddress 0x1000000 -f lib/x86-mes/elf32-0header.hex2 -f lib/x86-mes/elf32-body-exit-42.hex2 -f lib/x86-mes/elf-0footer.hex2 --exec_enable -o lib/x86-mes/0exit-42
|
||||||
hex2 --LittleEndian --Architecture 1 --BaseAddress 0x1000000 -f lib/x86-mes/elf32-header.hex2 -f lib/x86-mes/elf32-body-exit-42.hex2 -f lib/x86-mes/elf32-footer-single-main.hex2 --exec_enable -o lib/x86-mes/exit-42
|
hex2 --LittleEndian --Architecture 1 --BaseAddress 0x1000000 -f lib/x86-mes/elf32-header.hex2 -f lib/x86-mes/elf32-body-exit-42.hex2 -f lib/x86-mes/elf32-footer-single-main.hex2 --exec_enable -o lib/x86-mes/exit-42
|
||||||
M1 --LittleEndian --Architecture 1 -f lib/x86-mes/x86.M1 -f @MES_SEED@/x86-mes/crt1.S -o lib/x86-mes/crt1.o
|
M1 --LittleEndian --Architecture 1 -f lib/x86-mes/x86.M1 -f @MES_SEED@/x86-mes/crt1.S -o lib/x86-mes/crt1.o
|
||||||
|
@ -63,9 +51,9 @@ mv lib/libc+gnu.x86-mes-o lib/x86-mes/libc+gnu.o
|
||||||
|
|
||||||
@GUILE@ -e main -L module scripts/mescc.scm -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/x86-mes-argv scaffold/argv.x86-mes-o -l c-mini
|
@GUILE@ -e main -L module scripts/mescc.scm -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/x86-mes-argv scaffold/argv.x86-mes-o -l c-mini
|
||||||
|
|
||||||
@GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/malloc.x86-mes-o scaffold/malloc.c
|
@GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o lib/tests/stdlib/50-malloc.x86-mes-o lib/tests/stdlib/50-malloc.c
|
||||||
|
|
||||||
@GUILE@ -e main -L module scripts/mescc.scm -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/x86-mes-malloc scaffold/malloc.x86-mes-o -l c
|
@GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o lib/tests/posix/50-getenv.x86-mes-o lib/tests/posix/50-getenv.c
|
||||||
|
|
||||||
@GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/micro-mes.x86-mes-o scaffold/micro-mes.c
|
@GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/micro-mes.x86-mes-o scaffold/micro-mes.c
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ fi
|
||||||
[ "$mes_p" -a ! "$gcc_p" ] && cp -f lib/linux/$mes_arch/crt1.S lib/$mes_arch/crt1.S
|
[ "$mes_p" -a ! "$gcc_p" ] && cp -f lib/linux/$mes_arch/crt1.S lib/$mes_arch/crt1.S
|
||||||
[ "$mes_p" -a ! "$gcc_p" ] && cp -f lib/linux/$mes_arch/crt1.o lib/$mes_arch/crt1.o
|
[ "$mes_p" -a ! "$gcc_p" ] && cp -f lib/linux/$mes_arch/crt1.o lib/$mes_arch/crt1.o
|
||||||
|
|
||||||
[ ! "$mesc_p" -a ! "$posix_p" ] && (program_prefix= compile lib/linux/$mes_arch/crt0)
|
[ ! "$mesc_p" -a ! "$with_glibc_p" ] && (program_prefix= compile lib/linux/$mes_arch/crt0)
|
||||||
[ "$mes_p" -a "$gcc_p" ] && (program_prefix= compile lib/linux/$mes_arch/crti)
|
[ "$mes_p" -a "$gcc_p" ] && (program_prefix= compile lib/linux/$mes_arch/crti)
|
||||||
[ "$mes_p" -a "$gcc_p" ] && (program_prefix= compile lib/linux/$mes_arch/crtn)
|
[ "$mes_p" -a "$gcc_p" ] && (program_prefix= compile lib/linux/$mes_arch/crtn)
|
||||||
|
|
||||||
|
@ -69,14 +69,18 @@ compile scaffold/hello
|
||||||
compile scaffold/argv
|
compile scaffold/argv
|
||||||
(libc="-l c-mini" link scaffold/argv)
|
(libc="-l c-mini" link scaffold/argv)
|
||||||
|
|
||||||
[ "$mes_p" ] && compile scaffold/malloc
|
[ "$mes_p" ] && compile lib/tests/stdlib/50-malloc
|
||||||
[ "$mes_p" ] && link scaffold/malloc
|
[ "$mes_p" ] && link lib/tests/stdlib/50-malloc
|
||||||
|
|
||||||
|
[ "$mes_p" ] && compile lib/tests/posix/50-getenv
|
||||||
|
[ "$mes_p" ] && link lib/tests/posix/50-getenv
|
||||||
|
|
||||||
|
|
||||||
[ "$mes_p" ] && compile scaffold/micro-mes
|
[ "$mes_p" ] && compile scaffold/micro-mes
|
||||||
[ "$mes_p" ] && link scaffold/micro-mes
|
[ "$mes_p" ] && link scaffold/micro-mes
|
||||||
|
|
||||||
[ "$mes_p" ] && compile scaffold/tiny-mes
|
[ "$mes_p" ] && compile scaffold/tiny-mes
|
||||||
[ "$mes_p" ] && link scaffold/tiny-mes
|
[ "$mes_p" ] && link scaffold/tiny-mes
|
||||||
#[ "$mes_p" ] && compile scaffold/mini-mes
|
|
||||||
#[ "$mes_p" ] && link scaffold/mini-mes
|
|
||||||
|
|
||||||
compile src/mes
|
compile src/mes
|
||||||
link src/mes
|
link src/mes
|
||||||
|
|
|
@ -27,13 +27,6 @@ if [ -n "$GUILE" -a "$GUILE" != true ]; then
|
||||||
sh ${srcdest}build-aux/build-guile.sh
|
sh ${srcdest}build-aux/build-guile.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! "$mes_p" ]; then
|
|
||||||
sh ${srcdest}build-aux/snarf.sh
|
|
||||||
#elif [ ! -d "$MES_SEED" ]; then
|
|
||||||
#else
|
|
||||||
fi
|
|
||||||
sh ${srcdest}build-aux/snarf.sh --mes
|
|
||||||
|
|
||||||
if [ "$gcc_p$tcc_p" ]; then
|
if [ "$gcc_p$tcc_p" ]; then
|
||||||
sh ${srcdest}build-aux/build-mes.sh
|
sh ${srcdest}build-aux/build-mes.sh
|
||||||
elif [ -d "$MES_SEED" ]; then
|
elif [ -d "$MES_SEED" ]; then
|
||||||
|
@ -41,7 +34,7 @@ elif [ -d "$MES_SEED" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## FIXME: remove this and have user configure/build/install for each compiler?
|
## FIXME: remove this and have user configure/build/install for each compiler?
|
||||||
unset CFLAGS CPPFLAGS LDFLAGS gcc_p tcc_p posix_p
|
unset CFLAGS CPPFLAGS LDFLAGS gcc_p tcc_p with_glibc_p
|
||||||
MES=guile
|
MES=guile
|
||||||
mesc_p=1
|
mesc_p=1
|
||||||
mes_p=1
|
mes_p=1
|
||||||
|
|
|
@ -41,7 +41,7 @@ archive () {
|
||||||
|
|
||||||
link () {
|
link () {
|
||||||
lib=$libc
|
lib=$libc
|
||||||
[ "$posix_p" ] && lib='-l mes'
|
[ "$with_glibc_p" ] && lib='-l mes'
|
||||||
out=$(dirname "$1")/${program_prefix}$(basename "$1")
|
out=$(dirname "$1")/${program_prefix}$(basename "$1")
|
||||||
trace "CCLD $1" $CC $CFLAGS $LDFLAGS -o" $out" $crt1 "$1".${program_prefix}o $2 $lib
|
trace "CCLD $1" $CC $CFLAGS $LDFLAGS -o" $out" $crt1 "$1".${program_prefix}o $2 $lib
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,14 +66,14 @@ for t in $tests; do
|
||||||
echo $t: [SKIP];
|
echo $t: [SKIP];
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
${top_builddir}/pre-inst-env sh "$t" &> $t.${mes}log
|
${top_builddir}/pre-inst-env sh "$t" > $t.${mes}log 2>&1
|
||||||
r=$?
|
r=$?
|
||||||
total=$((total+1))
|
total=$(expr $total + 1)
|
||||||
if [ $r = 0 ]; then
|
if [ $r = 0 ]; then
|
||||||
echo $t: [${mes}OK]
|
echo $t: [${mes}OK]
|
||||||
else
|
else
|
||||||
echo $t: [${mes}FAIL]
|
echo $t: [${mes}FAIL]
|
||||||
fail=$((fail+1))
|
fail=$(expr $fail + 1)
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if [ $fail != 0 ]; then
|
if [ $fail != 0 ]; then
|
||||||
|
|
|
@ -26,206 +26,216 @@ set -e
|
||||||
test_sh=${test_sh-${srcdest}build-aux/test.sh}
|
test_sh=${test_sh-${srcdest}build-aux/test.sh}
|
||||||
|
|
||||||
tests="
|
tests="
|
||||||
t
|
scaffold/tests/t
|
||||||
00-exit-0
|
scaffold/tests/00-exit-0
|
||||||
01-return-0
|
scaffold/tests/01-return-0
|
||||||
02-return-1
|
scaffold/tests/02-return-1
|
||||||
03-call
|
scaffold/tests/03-call
|
||||||
04-call-0
|
scaffold/tests/04-call-0
|
||||||
05-call-1
|
scaffold/tests/05-call-1
|
||||||
06-call-!1
|
scaffold/tests/06-call-not-1
|
||||||
06-!call-1
|
scaffold/tests/06-not-call-1
|
||||||
06-call-2
|
scaffold/tests/06-call-2
|
||||||
06-call-string
|
scaffold/tests/06-call-string
|
||||||
06-call-variable
|
scaffold/tests/06-call-variable
|
||||||
06-return-void
|
scaffold/tests/06-return-void
|
||||||
07-include
|
scaffold/tests/07-include
|
||||||
08-assign
|
scaffold/tests/08-assign
|
||||||
08-assign-negative
|
scaffold/tests/08-assign-negative
|
||||||
08-assign-global
|
scaffold/tests/08-assign-global
|
||||||
10-if-0
|
scaffold/tests/10-if-0
|
||||||
11-if-1
|
scaffold/tests/11-if-1
|
||||||
12-if-==
|
scaffold/tests/12-if-eq
|
||||||
13-if-!=
|
scaffold/tests/13-if-neq
|
||||||
14-if-goto
|
scaffold/tests/14-if-goto
|
||||||
15-if-!f
|
scaffold/tests/15-if-not-f
|
||||||
16-if-t
|
scaffold/tests/16-if-t
|
||||||
17-compare-char
|
scaffold/tests/17-compare-char
|
||||||
17-compare-ge
|
scaffold/tests/17-compare-ge
|
||||||
17-compare-gt
|
scaffold/tests/17-compare-gt
|
||||||
17-compare-le
|
scaffold/tests/17-compare-le
|
||||||
17-compare-lt
|
scaffold/tests/17-compare-lt
|
||||||
17-compare-unsigned-ge
|
scaffold/tests/17-compare-unsigned-ge
|
||||||
17-compare-unsigned-gt
|
scaffold/tests/17-compare-unsigned-gt
|
||||||
17-compare-unsigned-le
|
scaffold/tests/17-compare-unsigned-le
|
||||||
17-compare-unsigned-lt
|
scaffold/tests/17-compare-unsigned-lt
|
||||||
17-compare-unsigned-char-le
|
scaffold/tests/17-compare-unsigned-char-le
|
||||||
17-compare-unsigned-short-le
|
scaffold/tests/17-compare-unsigned-short-le
|
||||||
17-compare-unsigned-long-le
|
scaffold/tests/17-compare-unsigned-long-le
|
||||||
17-compare-and
|
scaffold/tests/17-compare-and
|
||||||
17-compare-or
|
scaffold/tests/17-compare-or
|
||||||
17-compare-and-or
|
scaffold/tests/17-compare-and-or
|
||||||
17-compare-assign
|
scaffold/tests/17-compare-assign
|
||||||
17-compare-call
|
scaffold/tests/17-compare-call
|
||||||
18-assign-shadow
|
scaffold/tests/18-assign-shadow
|
||||||
20-while
|
scaffold/tests/20-while
|
||||||
21-char[]-simple
|
scaffold/tests/21-char-array-simple
|
||||||
21-char[]
|
scaffold/tests/21-char-array
|
||||||
22-while-char[]
|
scaffold/tests/22-while-char-array
|
||||||
23-global-pointer-init-null
|
scaffold/tests/23-global-pointer-init-null
|
||||||
23-global-pointer-init
|
scaffold/tests/23-global-pointer-init
|
||||||
23-global-pointer-ref
|
scaffold/tests/23-global-pointer-ref
|
||||||
23-global-pointer-pointer-ref
|
scaffold/tests/23-global-pointer-pointer-ref
|
||||||
23-pointer-sub
|
scaffold/tests/23-pointer-sub
|
||||||
23-pointer
|
scaffold/tests/23-pointer
|
||||||
30-strlen
|
lib/tests/mes/30-oputs
|
||||||
31-oputs
|
lib/tests/string/30-strlen
|
||||||
32-call-wrap
|
scaffold/tests/32-call-wrap
|
||||||
32-compare
|
scaffold/tests/32-compare
|
||||||
33-and-or
|
scaffold/tests/33-and-or
|
||||||
34-pre-post
|
scaffold/tests/34-pre-post
|
||||||
35-compare-char
|
scaffold/tests/35-compare-char
|
||||||
36-compare-arithmetic
|
scaffold/tests/36-compare-arithmetic
|
||||||
37-compare-assign
|
scaffold/tests/37-compare-assign
|
||||||
38-compare-call-2
|
scaffold/tests/38-compare-call-2
|
||||||
38-compare-call-3
|
scaffold/tests/38-compare-call-3
|
||||||
38-compare-call
|
scaffold/tests/38-compare-call
|
||||||
40-if-else
|
scaffold/tests/40-if-else
|
||||||
41-?
|
scaffold/tests/41-ternary
|
||||||
42-goto-label
|
scaffold/tests/42-goto-label
|
||||||
43-for-do-while
|
scaffold/tests/43-for-do-while
|
||||||
44-switch
|
scaffold/tests/44-switch
|
||||||
44-switch-fallthrough
|
scaffold/tests/44-switch-fallthrough
|
||||||
44-switch-body-fallthrough
|
scaffold/tests/44-switch-body-fallthrough
|
||||||
45-void-call
|
scaffold/tests/45-void-call
|
||||||
46-function-static
|
scaffold/tests/46-function-static
|
||||||
47-function-expression
|
scaffold/tests/47-function-expression
|
||||||
48-global-static
|
scaffold/tests/48-global-static
|
||||||
50-assert
|
lib/tests/assert/50-assert
|
||||||
51-pointer-sub
|
lib/tests/mes/50-itoa
|
||||||
51-itoa
|
lib/tests/posix/50-getenv
|
||||||
51-strcmp
|
lib/tests/string/50-strcmp
|
||||||
51-strncmp
|
lib/tests/string/50-strcpy
|
||||||
53-strcpy
|
lib/tests/string/50-strncmp
|
||||||
54-argc
|
scaffold/tests/51-pointer-sub
|
||||||
54-argv
|
scaffold/tests/54-argc
|
||||||
55-char-array
|
scaffold/tests/54-argv
|
||||||
60-math
|
scaffold/tests/55-char-array
|
||||||
61-array
|
scaffold/tests/60-math
|
||||||
62-array
|
scaffold/tests/61-array
|
||||||
63-struct
|
scaffold/tests/62-array
|
||||||
63-struct-pointer
|
scaffold/tests/63-struct
|
||||||
63-struct-local
|
scaffold/tests/63-struct-pointer
|
||||||
63-struct-function
|
scaffold/tests/63-struct-local
|
||||||
63-struct-assign
|
scaffold/tests/63-struct-function
|
||||||
63-struct-array
|
scaffold/tests/63-struct-assign
|
||||||
63-struct-array-assign
|
scaffold/tests/63-struct-array
|
||||||
63-struct-array-compare
|
scaffold/tests/63-struct-array-assign
|
||||||
63-struct-cell
|
scaffold/tests/63-struct-array-compare
|
||||||
64-make-cell
|
scaffold/tests/63-struct-cell
|
||||||
65-read
|
scaffold/tests/64-make-cell
|
||||||
66-local-char-array
|
scaffold/tests/65-read
|
||||||
70-strchr
|
scaffold/tests/66-local-char-array
|
||||||
70-stdarg
|
scaffold/tests/70-stdarg
|
||||||
70-printf-hello
|
lib/tests/stdio/70-printf-hello
|
||||||
70-printf-simple
|
lib/tests/stdio/70-printf-simple
|
||||||
70-printf
|
lib/tests/stdio/70-printf
|
||||||
71-struct-array
|
lib/tests/stdlib/70-strtoull
|
||||||
72-typedef-struct-def
|
lib/tests/string/70-strchr
|
||||||
73-union-hello
|
scaffold/tests/71-struct-array
|
||||||
73-union
|
scaffold/tests/72-typedef-struct-def
|
||||||
74-multi-line-string
|
scaffold/tests/73-union-hello
|
||||||
75-struct-union
|
scaffold/tests/73-union
|
||||||
76-pointer-arithmetic-pp
|
scaffold/tests/74-multi-line-string
|
||||||
76-pointer-arithmetic
|
scaffold/tests/75-struct-union
|
||||||
77-pointer-assign
|
scaffold/tests/76-pointer-arithmetic-pp
|
||||||
78-union-struct
|
scaffold/tests/76-pointer-arithmetic
|
||||||
79-int-array-simple
|
scaffold/tests/77-pointer-assign
|
||||||
79-int-array
|
scaffold/tests/78-union-struct
|
||||||
7a-struct-char-array
|
scaffold/tests/79-int-array-simple
|
||||||
7b-struct-int-array-hello
|
scaffold/tests/79-int-array
|
||||||
7b-struct-int-array-pointer
|
scaffold/tests/7a-struct-char-array
|
||||||
7b-struct-int-array
|
scaffold/tests/7b-struct-int-array-hello
|
||||||
7c-dynarray
|
scaffold/tests/7b-struct-int-array-pointer
|
||||||
7d-cast-char
|
scaffold/tests/7b-struct-int-array
|
||||||
7e-struct-array-access
|
scaffold/tests/7c-dynarray
|
||||||
7f-struct-pointer-arithmetic
|
scaffold/tests/7d-cast-char
|
||||||
7g-struct-byte-word-field
|
scaffold/tests/7e-struct-array-access
|
||||||
7h-struct-assign
|
scaffold/tests/7f-struct-pointer-arithmetic
|
||||||
7i-struct-struct-simple
|
scaffold/tests/7g-struct-byte-word-field
|
||||||
7i-struct-struct
|
scaffold/tests/7h-struct-assign
|
||||||
7j-strtoull
|
scaffold/tests/7i-struct-struct-simple
|
||||||
7k-empty-for
|
scaffold/tests/7i-struct-struct
|
||||||
7k-for-each-elem-simple
|
scaffold/tests/7k-empty-for
|
||||||
7k-for-each-elem
|
scaffold/tests/7k-for-each-elem-simple
|
||||||
7l-struct-any-size-array-simple
|
scaffold/tests/7k-for-each-elem
|
||||||
7l-struct-any-size-array
|
scaffold/tests/7l-struct-any-size-array-simple
|
||||||
7m-struct-char-array-assign
|
scaffold/tests/7l-struct-any-size-array
|
||||||
7n-struct-struct-array
|
scaffold/tests/7m-struct-char-array-assign
|
||||||
7o-struct-pre-post-simple
|
scaffold/tests/7n-struct-struct-array
|
||||||
7o-struct-pre-post
|
scaffold/tests/7o-struct-pre-post-simple
|
||||||
7p-struct-cast
|
scaffold/tests/7o-struct-pre-post
|
||||||
7q-bit-field-simple
|
scaffold/tests/7p-struct-cast
|
||||||
7q-bit-field
|
scaffold/tests/7q-bit-field-simple
|
||||||
7r-sign-extend
|
scaffold/tests/7q-bit-field
|
||||||
7s-struct-short
|
scaffold/tests/7r-sign-extend
|
||||||
7s-unsigned-compare
|
scaffold/tests/7s-struct-short
|
||||||
7t-function-destruct
|
scaffold/tests/7s-unsigned-compare
|
||||||
7u-double
|
scaffold/tests/7t-function-destruct
|
||||||
7u-long-long
|
scaffold/tests/7u-double
|
||||||
7u-?-expression
|
scaffold/tests/7u-long-long
|
||||||
7u-call-?
|
scaffold/tests/7u-ternary-expression
|
||||||
7u-inc-byte-word
|
scaffold/tests/7u-call-ternary
|
||||||
7u-struct-func
|
scaffold/tests/7u-inc-byte-word
|
||||||
7u-struct-size10
|
scaffold/tests/7u-struct-func
|
||||||
7u-vstack
|
scaffold/tests/7u-struct-size10
|
||||||
80-setjmp
|
scaffold/tests/7u-vstack
|
||||||
81-qsort
|
lib/tests/setjmp/80-setjmp
|
||||||
81-qsort-dupes
|
lib/tests/stdio/80-sscanf
|
||||||
82-define
|
lib/tests/stdlib/80-qsort
|
||||||
83-heterogenoous-init
|
lib/tests/stdlib/80-qsort-dupes
|
||||||
84-struct-field-list
|
lib/tests/string/80-strncpy
|
||||||
85-sizeof
|
lib/tests/string/80-strrchr
|
||||||
86-strncpy
|
scaffold/tests/82-define
|
||||||
87-sscanf
|
scaffold/tests/83-heterogenoous-init
|
||||||
88-strrchr
|
scaffold/tests/84-struct-field-list
|
||||||
90-strspn
|
scaffold/tests/85-sizeof
|
||||||
90-strpbrk
|
lib/tests/dirent/90-readdir
|
||||||
91-fseek
|
lib/tests/io/90-stat
|
||||||
92-stat
|
lib/tests/mes/90-abtod
|
||||||
93-fread-fwrite
|
lib/tests/mes/90-dtoab
|
||||||
94-unsetenv
|
lib/tests/posix/90-execlp
|
||||||
95-signal
|
lib/tests/posix/90-unsetenv
|
||||||
96-strto
|
lib/tests/signal/90-signal
|
||||||
97-fopen
|
lib/tests/stdio/90-fopen
|
||||||
98-fopen
|
lib/tests/stdio/90-fopen-append
|
||||||
99-readdir
|
lib/tests/stdio/90-fread-fwrite
|
||||||
9a-snprintf
|
lib/tests/stdio/90-fseek
|
||||||
a0-call-trunc-char
|
lib/tests/stdio/90-sprintf
|
||||||
a0-call-trunc-short
|
lib/tests/stdio/90-sscanf
|
||||||
a0-call-trunc-int
|
lib/tests/stdlib/90-strtol
|
||||||
a0-math-divide-signed-negative
|
lib/tests/string/90-snprintf
|
||||||
a1-global-no-align
|
lib/tests/string/90-strpbrk
|
||||||
a1-global-no-clobber
|
lib/tests/string/90-strspn
|
||||||
|
scaffold/tests/a0-call-trunc-char
|
||||||
|
scaffold/tests/a0-call-trunc-short
|
||||||
|
scaffold/tests/a0-call-trunc-int
|
||||||
|
scaffold/tests/a0-math-divide-signed-negative
|
||||||
|
scaffold/tests/a1-global-no-align
|
||||||
|
scaffold/tests/a1-global-no-clobber
|
||||||
"
|
"
|
||||||
|
|
||||||
broken="$broken
|
broken="$broken
|
||||||
17-compare-unsigned-char-le
|
scaffold/tests/17-compare-unsigned-char-le
|
||||||
17-compare-unsigned-short-le
|
scaffold/tests/17-compare-unsigned-short-le
|
||||||
66-local-char-array
|
scaffold/tests/66-local-char-array
|
||||||
a0-call-trunc-int
|
scaffold/tests/a0-call-trunc-int
|
||||||
a0-math-divide-signed-negative
|
scaffold/tests/a0-math-divide-signed-negative
|
||||||
|
lib/tests/mes/90-abtod
|
||||||
|
lib/tests/mes/90-dtoab
|
||||||
|
lib/tests/posix/50-getenv
|
||||||
|
lib/tests/stdio/90-sprintf
|
||||||
"
|
"
|
||||||
|
|
||||||
if [ "$mes_arch" = "x86_64-gcc" ]; then
|
if [ "$mes_arch" = "x86_64-gcc" ]; then
|
||||||
broken="$broken
|
broken="$broken
|
||||||
21-char[]
|
scaffold/tests/21-char-array
|
||||||
41-?
|
scaffold/tests/41-ternary
|
||||||
70-printf-stdarg
|
scaffold/tests/stdio/70-printf-stdarg
|
||||||
70-printf-simple
|
scaffold/tests/stdio/70-printf-simple
|
||||||
70-printf
|
scaffold/tests/stdio/70-printf
|
||||||
80-setjmp
|
lib/tests/setjmp/80-setjmp
|
||||||
a1-global-no-align
|
scaffold/tests/a1-global-no-align
|
||||||
"
|
"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -234,34 +244,34 @@ expect=$(echo $broken | wc -w)
|
||||||
pass=0
|
pass=0
|
||||||
fail=0
|
fail=0
|
||||||
total=0
|
total=0
|
||||||
mkdir -p scaffold/tests
|
|
||||||
for t in $tests; do
|
for t in $tests; do
|
||||||
if [ -z "${t/[012][0-9]-*/}" ]; then
|
b=$(basename "$t")
|
||||||
|
if [ -z "${b/[012][0-9]-*/}" ]; then
|
||||||
libc=
|
libc=
|
||||||
elif [ -z "${t/[34][0-9]-*/}" ]; then
|
elif [ -z "${b/[34][0-9]-*/}" ]; then
|
||||||
libc='-l c-mini'
|
libc='-l c-mini'
|
||||||
elif [ -z "${t/[78][0-9a-z]-*/}" ]; then
|
elif [ -z "${b/[78][0-9a-z]-*/}" ]; then
|
||||||
libc='-l c+tcc'
|
libc='-l c+tcc'
|
||||||
elif [ -z "${t/9[0-9a-z]-*/}" ]; then
|
elif [ -z "${b/9[0-9a-z]-*/}" ]; then
|
||||||
libc='-l c+gnu'
|
libc='-l c+gnu'
|
||||||
else
|
else
|
||||||
libc='-l c'
|
libc='-l c'
|
||||||
fi
|
fi
|
||||||
sh $test_sh "scaffold/tests/$t" &> scaffold/tests/"$t".log
|
sh $test_sh "$t" > "$t".log 2>&1
|
||||||
r=$?
|
r=$?
|
||||||
total=$((total+1))
|
total=$(expr $total + 1)
|
||||||
if [ $r = 0 ]; then
|
if [ $r = 0 ]; then
|
||||||
echo $t: [OK]
|
echo $t: [OK]
|
||||||
pass=$((pass+1))
|
pass=$(expr $pass + 1)
|
||||||
else
|
else
|
||||||
echo $t: [FAIL]
|
echo $t: [FAIL]
|
||||||
fail=$((fail+1))
|
fail=$(expr $fail + 1)
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
[ $expect != 0 ] && echo "expect: $expect"
|
[ $expect != 0 ] && echo "expect: $expect"
|
||||||
[ $fail != 0 ] && echo "failed: $fail"
|
[ $fail != 0 ] && echo "failed: $fail"
|
||||||
[ $fail -lt $expect ] && echo "solved: $(($expect - $fail))"
|
[ $fail -lt $expect ] && echo "solved: $(expr $expect - $fail)"
|
||||||
echo "passed: $pass"
|
echo "passed: $pass"
|
||||||
echo "total: $total"
|
echo "total: $total"
|
||||||
if [ $fail != 0 -a $fail -gt $expect ]; then
|
if [ $fail != 0 -a $fail -gt $expect ]; then
|
||||||
|
|
|
@ -135,20 +135,20 @@ for t in $tests; do
|
||||||
continue;
|
continue;
|
||||||
fi
|
fi
|
||||||
cp $TINYCC_PREFIX/tests/tests2/$i* scaffold/tinycc
|
cp $TINYCC_PREFIX/tests/tests2/$i* scaffold/tinycc
|
||||||
sh ${srcdest}build-aux/test.sh "scaffold/tinycc/$t" &> scaffold/tinycc/"$t".log
|
sh ${srcdest}build-aux/test.sh "scaffold/tinycc/$t" > scaffold/tinycc/"$t".log 2>&1
|
||||||
r=$?
|
r=$?
|
||||||
total=$((total+1))
|
total=$(expr $total + 1)
|
||||||
if [ $r = 0 ]; then
|
if [ $r = 0 ]; then
|
||||||
echo $t: [OK]
|
echo $t: [OK]
|
||||||
pass=$((pass+1))
|
pass=$(expr $pass + 1)
|
||||||
else
|
else
|
||||||
echo $t: [FAIL]
|
echo $t: [FAIL]
|
||||||
fail=$((fail+1))
|
fail=$(expr $fail + 1)
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
[ $expect != 0 ] && echo "expect: $expect"
|
[ $expect != 0 ] && echo "expect: $expect"
|
||||||
[ $fail != 0 ] && echo "failed: $fail"
|
[ $fail != 0 ] && echo "failed: $fail"
|
||||||
[ $fail -lt $expect ] && echo "solved: $(($expect - $fail))"
|
[ $fail -lt $expect ] && echo "solved: $(expr $expect - $fail)"
|
||||||
echo "passed: $pass"
|
echo "passed: $pass"
|
||||||
echo "total: $total"
|
echo "total: $total"
|
||||||
if [ $fail != 0 -a $fail -gt $expect ]; then
|
if [ $fail != 0 -a $fail -gt $expect ]; then
|
||||||
|
|
|
@ -25,8 +25,8 @@ set -e
|
||||||
. ${srcdest}build-aux/trace.sh
|
. ${srcdest}build-aux/trace.sh
|
||||||
|
|
||||||
./pre-inst-env bash ${srcdest}build-aux/check-boot.sh
|
./pre-inst-env bash ${srcdest}build-aux/check-boot.sh
|
||||||
./pre-inst-env bash ${srcdest}build-aux/check-mes.sh
|
./pre-inst-env sh ${srcdest}build-aux/check-mes.sh
|
||||||
./pre-inst-env bash ${srcdest}build-aux/check-mescc.sh
|
./pre-inst-env sh ${srcdest}build-aux/check-mescc.sh
|
||||||
if [ -d $TINYCC_PREFIX/tests/tests2 ] ;then
|
if [ -d $TINYCC_PREFIX/tests/tests2 ] ;then
|
||||||
./pre-inst-env bash ${srcdest}build-aux/check-tcc.sh
|
./pre-inst-env sh ${srcdest}build-aux/check-tcc.sh
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -64,7 +64,7 @@ infodir:=@infodir@
|
||||||
libdir:=@libdir@
|
libdir:=@libdir@
|
||||||
mandir:=@mandir@
|
mandir:=@mandir@
|
||||||
moduledir:=@moduledir@
|
moduledir:=@moduledir@
|
||||||
posix_p:=@posix_p@
|
with_glibc_p:=@with_glibc_p@
|
||||||
program_prefix:=@program_prefix@
|
program_prefix:=@program_prefix@
|
||||||
srcdest:=@srcdest@
|
srcdest:=@srcdest@
|
||||||
srcdir:=@srcdir@
|
srcdir:=@srcdir@
|
||||||
|
|
|
@ -81,7 +81,7 @@ export mes_p
|
||||||
export mesc_p
|
export mesc_p
|
||||||
export tcc_p
|
export tcc_p
|
||||||
export mes_arch
|
export mes_arch
|
||||||
export posix_p
|
export with_glibc_p
|
||||||
|
|
||||||
CPPFLAGS=${CPPFLAGS-"
|
CPPFLAGS=${CPPFLAGS-"
|
||||||
-D 'VERSION=\"$VERSION\"'
|
-D 'VERSION=\"$VERSION\"'
|
||||||
|
@ -92,7 +92,7 @@ CPPFLAGS=${CPPFLAGS-"
|
||||||
-I ${srcdest}include
|
-I ${srcdest}include
|
||||||
"}
|
"}
|
||||||
|
|
||||||
[ "$posix_p" ] && CPPFLAGS="$CPPFLAGS -D POSIX=1 -D WITH_GLIBC=1"
|
[ "$with_glibc_p" ] && CPPFLAGS="$CPPFLAGS -D WITH_GLIBC=1"
|
||||||
|
|
||||||
LDFLAGS=${LDFLAGS-"
|
LDFLAGS=${LDFLAGS-"
|
||||||
-v
|
-v
|
||||||
|
|
|
@ -64,7 +64,7 @@ infodir="@infodir@"
|
||||||
libdir="@libdir@"
|
libdir="@libdir@"
|
||||||
mandir="@mandir@"
|
mandir="@mandir@"
|
||||||
moduledir="@moduledir@"
|
moduledir="@moduledir@"
|
||||||
posix_p="@posix_p@"
|
with_glibc_p="@with_glibc_p@"
|
||||||
program_prefix="@program_prefix@"
|
program_prefix="@program_prefix@"
|
||||||
srcdest="@srcdest@"
|
srcdest="@srcdest@"
|
||||||
srcdir="@srcdir@"
|
srcdir="@srcdir@"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
# GNU Mes --- Maxwell Equations of Software
|
# GNU Mes --- Maxwell Equations of Software
|
||||||
# Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
# Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
#
|
#
|
||||||
# This file is part of GNU Mes.
|
# This file is part of GNU Mes.
|
||||||
#
|
#
|
||||||
|
@ -25,7 +25,7 @@ set -e
|
||||||
mes_prefix=@prefix@/share/mes
|
mes_prefix=@prefix@/share/mes
|
||||||
|
|
||||||
# use bash or lose if pipes fail
|
# use bash or lose if pipes fail
|
||||||
if [ "$(basename $SHELL)" == bash ]; then
|
if [ "$(basename $SHELL)" = bash ]; then
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ cp scripts/mescc $DESTDIR@bindir@/mescc
|
||||||
sed \
|
sed \
|
||||||
-e "s,^#! /bin/sh,#! @SHELL@," \
|
-e "s,^#! /bin/sh,#! @SHELL@," \
|
||||||
scripts/diff.scm > $DESTDIR@bindir@/diff.scm
|
scripts/diff.scm > $DESTDIR@bindir@/diff.scm
|
||||||
chmod -w+x $DESTDIR@bindir@/diff.scm
|
chmod +x $DESTDIR@bindir@/diff.scm
|
||||||
|
|
||||||
mkdir -p $DESTDIR@docdir@
|
mkdir -p $DESTDIR@docdir@
|
||||||
|
|
||||||
|
@ -73,13 +73,28 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p $DESTDIR$mes_prefix
|
mkdir -p $DESTDIR$mes_prefix
|
||||||
|
rm -f $(find lib -type f -a -executable)
|
||||||
|
rm -f $(find lib/tests -type f -a -name '*.1')
|
||||||
|
rm -f $(find lib/tests -type f -a -name '*.2')
|
||||||
|
rm -f $(find lib/tests -type f -a -name '*.o')
|
||||||
|
rm -f $(find lib/tests -type f -a -name '*.log')
|
||||||
|
rm -f $(find lib/tests -type f -a -name '*.x86-mes*')
|
||||||
|
rm -f $(find lib/tests -type f -a -name '*.x86_64-mes*')
|
||||||
|
rm -f $(find scaffold -type f -a -executable)
|
||||||
|
rm -f $(find scaffold -type f -a -name '*.1')
|
||||||
|
rm -f $(find scaffold -type f -a -name '*.2')
|
||||||
|
rm -f $(find scaffold -type f -a -name '*.o')
|
||||||
|
rm -f $(find scaffold -type f -a -name '*.S')
|
||||||
|
rm -f $(find scaffold -type f -a -name '*.log')
|
||||||
|
rm -f $(find scaffold -type f -a -name '*.x86-mes*')
|
||||||
|
rm -f $(find scaffold -type f -a -name '*.x86_64-mes*')
|
||||||
if [ -z "$srcdest" ]; then
|
if [ -z "$srcdest" ]; then
|
||||||
tar -cf- --exclude='*.E' --exclude='*.*-out' include lib | tar -xf- -C $DESTDIR$mes_prefix
|
tar -cf- include lib | tar -xf- -C $DESTDIR$mes_prefix
|
||||||
tar -cf- --exclude='*.go' module | tar -xf- -C $DESTDIR$mes_prefix
|
tar -cf- --exclude='*.go' module | tar -xf- -C $DESTDIR$mes_prefix
|
||||||
tar -cf- --exclude='*.gcc*' --exclude='*.mes*' scaffold | tar -xf- -C $DESTDIR$mes_prefix
|
tar -cf- scaffold | tar -xf- -C $DESTDIR$mes_prefix
|
||||||
else
|
else
|
||||||
tar -cf- -C ${srcdest} include lib | tar -xf- -C $DESTDIR$mes_prefix
|
tar -cf- -C ${srcdest} include lib | tar -xf- -C $DESTDIR$mes_prefix
|
||||||
tar -cf- -C lib --exclude='*.E' --exclude='*.*-out' | tar -xf- -C $DESTDIR$mes_prefix
|
tar -cf- -C lib | tar -xf- -C $DESTDIR$mes_prefix
|
||||||
tar -cf- -C ${srcdest} module | tar -xf- -C $DESTDIR$mes_prefix
|
tar -cf- -C ${srcdest} module | tar -xf- -C $DESTDIR$mes_prefix
|
||||||
tar -cf- -C ${srcdest} scaffold | tar -xf- -C $DESTDIR$mes_prefix
|
tar -cf- -C ${srcdest} scaffold | tar -xf- -C $DESTDIR$mes_prefix
|
||||||
fi
|
fi
|
||||||
|
@ -92,23 +107,23 @@ if [ -f src/mes.x86_64-mes-S ]; then
|
||||||
cp src/mes.x86_64-mes-S $DESTDIR$mes_prefix/lib/x86_64-mes/mes.S
|
cp src/mes.x86_64-mes-S $DESTDIR$mes_prefix/lib/x86_64-mes/mes.S
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p $DESTDIR@guile_site_dir@
|
mkdir -p ${DESTDIR}@guile_site_dir@
|
||||||
mkdir -p $DESTDIR@guile_site_ccache_dir@
|
mkdir -p ${DESTDIR}@guile_site_ccache_dir@
|
||||||
tar -cf- -C ${srcdest}module --exclude='*.go' . | tar -xf- -C $DESTDIR@guile_site_dir@
|
tar -cf- -C ${srcdest}module --exclude='*.go' . | tar -xf- -C ${DESTDIR}@guile_site_dir@
|
||||||
tar -cf- -C module --exclude='*.scm' . | tar -xf- -C $DESTDIR@guile_site_ccache_dir@
|
tar -cf- -C module --exclude='*.scm' . | tar -xf- -C ${DESTDIR}@guile_site_ccache_dir@
|
||||||
|
|
||||||
if [ -f doc/mes.info ]; then
|
if [ -f doc/mes.info ]; then
|
||||||
mkdir -p $DESTDIR@infodir@
|
mkdir -p ${DESTDIR}@infodir@
|
||||||
tar -cf- doc/mes.info* doc/images | tar -xf- --strip-components=1 -C $DESTDIR@infodir@
|
tar -cf- doc/mes.info* doc/images | tar -xf- --strip-components=1 -C ${DESTDIR}@infodir@
|
||||||
install-info --info-dir=$DESTDIR@infodir@ doc/mes.info
|
install-info --info-dir=${DESTDIR}@infodir@ doc/mes.info
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f doc/mes.1 ]; then
|
if [ -f doc/mes.1 ]; then
|
||||||
mkdir -p $DESTDIR@mandir@/man1
|
mkdir -p ${DESTDIR}@mandir@/man1
|
||||||
cp doc/mes.1 $DESTDIR@mandir@/man1/
|
cp doc/mes.1 ${DESTDIR}@mandir@/man1/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f doc/mescc.1 ]; then
|
if [ -f doc/mescc.1 ]; then
|
||||||
mkdir -p $DESTDIR@mandir@/man1
|
mkdir -p ${DESTDIR}@mandir@/man1
|
||||||
cp doc/mescc.1 $DESTDIR@mandir@/man1/
|
cp doc/mescc.1 ${DESTDIR}@mandir@/man1/
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -101,50 +101,23 @@ exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes
|
||||||
|
|
||||||
(define %start 1)
|
(define %start 1)
|
||||||
(define (symbol->header s i)
|
(define (symbol->header s i)
|
||||||
(format #f "#define cell_~a ~a\n" s i))
|
|
||||||
|
|
||||||
(define (symbol->source s i)
|
|
||||||
(string-append
|
(string-append
|
||||||
(format #f "g_free++;\n")
|
(format #f "// CONSTANT ~a ~a\n" s i)
|
||||||
(format #f "g_cells[cell_~a] = scm_~a;\n\n" s s)))
|
(format #f "#define ~a ~a\n" s i)))
|
||||||
|
|
||||||
(define (symbol->names s i)
|
|
||||||
(if %gcc?
|
|
||||||
(format #f "NAME_SYMBOL (cell_~a, scm_~a.name);\n" s s)
|
|
||||||
(format #f "NAME_SYMBOL (cell_~a, scm_~a.cdr);\n" s s)))
|
|
||||||
|
|
||||||
(define (function->header f i)
|
(define (function->header f i)
|
||||||
(let* ((arity (or (assoc-ref (function.annotation f) 'arity)
|
(let* ((arity (or (assoc-ref (function.annotation f) 'arity)
|
||||||
(if (string-null? (function.formals f)) 0
|
(if (string-null? (function.formals f)) 0
|
||||||
(length (string-split (function.formals f) #\,)))))
|
(length (string-split (function.formals f) #\,)))))
|
||||||
(n (if (eq? arity 'n) -1 arity)))
|
(n (if (eq? arity 'n) -1 arity)))
|
||||||
(string-append
|
(format #f "SCM ~a (~a);\n" (function.name f) (function.formals f))))
|
||||||
(format #f "SCM ~a (~a);\n" (function.name f) (function.formals f))
|
|
||||||
(if %gcc?
|
|
||||||
(format #f "struct function fun_~a = {.function~a=&~a, .arity=~a, .name=~s};\n" (function.name f) arity (function.name f) n (function-scm-name f))
|
|
||||||
(format #f "struct function fun_~a = {&~a, ~a, ~s};\n" (function.name f) (function.name f) n (function-scm-name f)))
|
|
||||||
(if %gcc?
|
|
||||||
(format #f "struct scm ~a = {TFUNCTION, .name=0, .function=0};\n" (function-builtin-name f))
|
|
||||||
(format #f "struct scm ~a = {TFUNCTION, 0, 0};\n" (function-builtin-name f)))
|
|
||||||
(format #f "SCM cell_~a;\n\n" (function.name f)))))
|
|
||||||
|
|
||||||
(define (function->source f i)
|
(define (function->source f i)
|
||||||
(string-append
|
(let* ((arity (or (assoc-ref (function.annotation f) 'arity)
|
||||||
(if %gcc?
|
(if (string-null? (function.formals f)) 0
|
||||||
(format #f "~a.function = g_function;\n" (function-builtin-name f))
|
(length (string-split (function.formals f) #\,)))))
|
||||||
(format #f "~a.car = g_function;\n" (function-builtin-name f)))
|
(n (if (eq? arity 'n) -1 arity)))
|
||||||
(format #f "g_functions[g_function++] = fun_~a;\n" (function.name f))
|
(format #f " a = init_builtin (builtin_type, ~s, ~a, &~a, a);\n" (function.name f) n (function.name f))))
|
||||||
(format #f "cell_~a = g_free++;\n" (function.name f))
|
|
||||||
(format #f "g_cells[cell_~a] = ~a;\n\n" (function.name f) (function-builtin-name f))))
|
|
||||||
|
|
||||||
(define (function->environment f i)
|
|
||||||
(string-append
|
|
||||||
(if %gcc?
|
|
||||||
(format #f "scm_~a.string = MAKE_BYTES0 (fun_~a.name);\n" (function.name f) (function.name f))
|
|
||||||
(format #f "scm_~a.cdr = MAKE_BYTES0 (fun_~a.name);\n" (function.name f) (function.name f)))
|
|
||||||
(if %gcc?
|
|
||||||
(format #f "a = acons (cstring_to_symbol (CSTRING_STRUCT (scm_~a)), ~a, a);\n\n" (function.name f) (function-cell-name f))
|
|
||||||
(format #f "a = acons (cstring_to_symbol (CSTRING_STRUCT (scm_~a)), ~a, a);\n\n" (function.name f) (function-cell-name f)))))
|
|
||||||
|
|
||||||
(define (disjoin . predicates)
|
(define (disjoin . predicates)
|
||||||
(lambda (. arguments)
|
(lambda (. arguments)
|
||||||
|
@ -152,12 +125,11 @@ exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes
|
||||||
|
|
||||||
(define (snarf-symbols string)
|
(define (snarf-symbols string)
|
||||||
(let* ((lines (string-split string #\newline))
|
(let* ((lines (string-split string #\newline))
|
||||||
(scm (filter (cut string-prefix? "struct scm scm_" <>) lines))
|
(symbols (filter (cut string-prefix? " init_symbol (" <>) lines)))
|
||||||
(symbols (filter (disjoin (cut string-contains <> "TSPECIAL") (cut string-contains <> "TSYMBOL")) scm)))
|
|
||||||
(define (line->symbol line)
|
(define (line->symbol line)
|
||||||
((compose
|
((compose
|
||||||
(lambda (s) (string-take s (string-index s #\space)))
|
(lambda (s) (string-take s (string-index s #\,)))
|
||||||
(cut string-drop <> (string-length "struct scm scm_")))
|
(cut string-drop <> (string-length " init_symbol (")))
|
||||||
line))
|
line))
|
||||||
(map line->symbol symbols)))
|
(map line->symbol symbols)))
|
||||||
|
|
||||||
|
@ -218,27 +190,16 @@ exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes
|
||||||
(source (make-file
|
(source (make-file
|
||||||
(string-append base-name ".i")
|
(string-append base-name ".i")
|
||||||
(string-join (map function->source (filter (negate no-environment?) functions) (iota (length functions) (+ (length symbols) %start))) "")))
|
(string-join (map function->source (filter (negate no-environment?) functions) (iota (length functions) (+ (length symbols) %start))) "")))
|
||||||
(environment (make-file
|
|
||||||
(string-append base-name ".environment.i")
|
|
||||||
(string-join (map function->environment (filter (negate no-environment?) functions) (iota (length functions) (+ (length symbols) %start))) "")))
|
|
||||||
(symbols.h (make-file
|
(symbols.h (make-file
|
||||||
(string-append base-name ".symbols.h")
|
(string-append base-name ".symbols.h")
|
||||||
(string-join (map symbol->header symbols (iota (length symbols) %start)) "")))
|
(string-join (map symbol->header symbols (iota (length symbols) %start)) ""))))
|
||||||
(symbols.i (make-file
|
(list header source symbols.h)))
|
||||||
(string-append base-name ".symbols.i")
|
|
||||||
(string-join (map symbol->source symbols (iota (length symbols))) "")))
|
|
||||||
(symbol-names.i (make-file
|
|
||||||
(string-append base-name ".symbol-names.i")
|
|
||||||
(string-join (map symbol->names symbols (iota (length symbols))) ""))))
|
|
||||||
(list header source environment symbols.h symbols.i symbol-names.i)))
|
|
||||||
|
|
||||||
(define (file-write file)
|
(define (file-write file)
|
||||||
(system* "mkdir" "-p" (dirname (file.name file)))
|
(system* "mkdir" "-p" (dirname (file.name file)))
|
||||||
(with-output-to-file (file.name file) (lambda () (display (file.content file)))))
|
(with-output-to-file (file.name file) (lambda () (display (file.content file)))))
|
||||||
|
|
||||||
(define (main args)
|
(define (main args)
|
||||||
(let* ((files (if (not (and (pair? (cdr args)) (equal? (cadr args) "--mes"))) (cdr args)
|
(let* ((files (cdr args))
|
||||||
(begin (set! %gcc? #f)
|
|
||||||
(cddr args))))
|
|
||||||
(files (append-map generate-includes files)))
|
(files (append-map generate-includes files)))
|
||||||
(map file-write (filter content? files))))
|
(for-each file-write (filter content? files))))
|
||||||
|
|
|
@ -24,7 +24,7 @@ abs_top_builddir="@abs_top_builddir@"
|
||||||
prefix=${prefix-@prefix@}
|
prefix=${prefix-@prefix@}
|
||||||
program_prefix=${program_prefix-@program_prefix@}
|
program_prefix=${program_prefix-@program_prefix@}
|
||||||
|
|
||||||
MES_PREFIX=${MES_PREFIX-${srcdest}mes}
|
MES_PREFIX=${MES_PREFIX-${abs_top_srcdir}/mes}
|
||||||
export MES_PREFIX
|
export MES_PREFIX
|
||||||
|
|
||||||
GUILE_LOAD_COMPILED_PATH="$abs_top_builddir/scripts:$abs_top_builddir/module${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
|
GUILE_LOAD_COMPILED_PATH="$abs_top_builddir/scripts:$abs_top_builddir/module${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
|
||||||
|
|
|
@ -23,18 +23,14 @@ set -e
|
||||||
. ${srcdest}build-aux/config.sh
|
. ${srcdest}build-aux/config.sh
|
||||||
. ${srcdest}build-aux/trace.sh
|
. ${srcdest}build-aux/trace.sh
|
||||||
|
|
||||||
snarf=" "
|
trace "SNARF$snarf gc.c" ${srcdest}build-aux/mes-snarf.scm src/gc.c
|
||||||
if [ -n "$1" ]; then
|
trace "SNARF$snarf hash.c" ${srcdest}build-aux/mes-snarf.scm src/hash.c
|
||||||
snarf=.mes
|
trace "SNARF$snarf lib.c" ${srcdest}build-aux/mes-snarf.scm src/lib.c
|
||||||
fi
|
trace "SNARF$snarf math.c" ${srcdest}build-aux/mes-snarf.scm src/math.c
|
||||||
trace "SNARF$snarf gc.c" ${srcdest}build-aux/mes-snarf.scm $1 src/gc.c
|
trace "SNARF$snarf mes.c" ${srcdest}build-aux/mes-snarf.scm src/mes.c
|
||||||
trace "SNARF$snarf hash.c" ${srcdest}build-aux/mes-snarf.scm $1 src/hash.c
|
trace "SNARF$snarf module.c" ${srcdest}build-aux/mes-snarf.scm src/module.c
|
||||||
trace "SNARF$snarf lib.c" ${srcdest}build-aux/mes-snarf.scm $1 src/lib.c
|
trace "SNARF$snarf posix.c" ${srcdest}build-aux/mes-snarf.scm src/posix.c
|
||||||
trace "SNARF$snarf math.c" ${srcdest}build-aux/mes-snarf.scm $1 src/math.c
|
trace "SNARF$snarf reader.c" ${srcdest}build-aux/mes-snarf.scm src/reader.c
|
||||||
trace "SNARF$snarf mes.c" ${srcdest}build-aux/mes-snarf.scm $1 src/mes.c
|
trace "SNARF$snarf strings.c" ${srcdest}build-aux/mes-snarf.scm src/strings.c
|
||||||
trace "SNARF$snarf module.c" ${srcdest}build-aux/mes-snarf.scm $1 src/module.c
|
trace "SNARF$snarf struct.c" ${srcdest}build-aux/mes-snarf.scm src/struct.c
|
||||||
trace "SNARF$snarf posix.c" ${srcdest}build-aux/mes-snarf.scm $1 src/posix.c
|
trace "SNARF$snarf vector.c" ${srcdest}build-aux/mes-snarf.scm src/vector.c
|
||||||
trace "SNARF$snarf reader.c" ${srcdest}build-aux/mes-snarf.scm $1 src/reader.c
|
|
||||||
trace "SNARF$snarf strings.c" ${srcdest}build-aux/mes-snarf.scm $1 src/strings.c
|
|
||||||
trace "SNARF$snarf struct.c" ${srcdest}build-aux/mes-snarf.scm $1 src/struct.c
|
|
||||||
trace "SNARF$snarf vector.c" ${srcdest}build-aux/mes-snarf.scm $1 src/vector.c
|
|
||||||
|
|
|
@ -38,12 +38,12 @@ link "$t"
|
||||||
r=0
|
r=0
|
||||||
[ -f "$t".exit ] && r=$(cat "$t".exit)
|
[ -f "$t".exit ] && r=$(cat "$t".exit)
|
||||||
set +e
|
set +e
|
||||||
$(dirname "$o")/${program_prefix}$(basename "$o") $ARGS > "$o".${program_prefix}stdout
|
$(dirname "$o")/${program_prefix}$(basename "$o") $ARGS > "$o".${program_prefix}1 2> "$o".${program_prefix}2
|
||||||
m=$?
|
m=$?
|
||||||
cat "$o".${program_prefix}stdout
|
cat "$o".${program_prefix}1
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
[ $m = $r ]
|
[ $m = $r ]
|
||||||
if [ -f "$t".expect ]; then
|
if [ -f "$t".stdout ]; then
|
||||||
$DIFF -ub "$t".expect "$o".${program_prefix}stdout
|
$DIFF -ub "$t".stdout "$o".${program_prefix}1
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -26,7 +26,7 @@ sh ${srcdest}build-aux/test-cc.sh $1
|
||||||
|
|
||||||
if [ ! "$mesc_p" ]; then
|
if [ ! "$mesc_p" ]; then
|
||||||
#FIXME: c&p
|
#FIXME: c&p
|
||||||
unset CFLAGS CPPFLAGS LDFLAGS gcc_p tcc_p posix_p
|
unset CFLAGS CPPFLAGS LDFLAGS gcc_p tcc_p with_glibc_p
|
||||||
MES=${MES-guile}
|
MES=${MES-guile}
|
||||||
mesc_p=1
|
mesc_p=1
|
||||||
mes_p=1
|
mes_p=1
|
||||||
|
|
|
@ -91,6 +91,8 @@ MES_ARENA=100000000 exec ${SCHEME-guile} -L . --no-auto-compile -e '(configure)'
|
||||||
(output (read-string port))
|
(output (read-string port))
|
||||||
(status (close-pipe port))
|
(status (close-pipe port))
|
||||||
(error (with-input-from-file ".error" read-string)))
|
(error (with-input-from-file ".error" read-string)))
|
||||||
|
(when (file-exists? ".error")
|
||||||
|
(delete-file ".error"))
|
||||||
(set-current-error-port err)
|
(set-current-error-port err)
|
||||||
(verbose "command[~a]: ~s => ~a [~a]\n" status command output error)
|
(verbose "command[~a]: ~s => ~a [~a]\n" status command output error)
|
||||||
(if (not (zero? status)) ""
|
(if (not (zero? status)) ""
|
||||||
|
@ -223,6 +225,8 @@ MES_ARENA=100000000 exec ${SCHEME-guile} -L . --no-auto-compile -e '(configure)'
|
||||||
(let ((name (dependency-name dependency)))
|
(let ((name (dependency-name dependency)))
|
||||||
(stderr "checking for ~a..." name)
|
(stderr "checking for ~a..." name)
|
||||||
(let ((result (check cc name)))
|
(let ((result (check cc name)))
|
||||||
|
(when (file-exists? ".config.c")
|
||||||
|
(delete-file ".config.c"))
|
||||||
(stderr " ~a\n" (if result "yes" "no"))
|
(stderr " ~a\n" (if result "yes" "no"))
|
||||||
(if result (set-field dependency (dependency-file-name) name)
|
(if result (set-field dependency (dependency-file-name) name)
|
||||||
dependency))))
|
dependency))))
|
||||||
|
@ -231,6 +235,8 @@ MES_ARENA=100000000 exec ${SCHEME-guile} -L . --no-auto-compile -e '(configure)'
|
||||||
(let ((name (dependency-name dependency)))
|
(let ((name (dependency-name dependency)))
|
||||||
(stderr "checking for ~a..." name)
|
(stderr "checking for ~a..." name)
|
||||||
(let ((result (check cc (dependency-data dependency))))
|
(let ((result (check cc (dependency-data dependency))))
|
||||||
|
(when (file-exists? ".config.c")
|
||||||
|
(delete-file ".config.c"))
|
||||||
(stderr " ~a\n" (if result "yes" "no"))
|
(stderr " ~a\n" (if result "yes" "no"))
|
||||||
(if result (set-field dependency (dependency-file-name) name)
|
(if result (set-field dependency (dependency-file-name) name)
|
||||||
dependency))))
|
dependency))))
|
||||||
|
@ -239,6 +245,8 @@ MES_ARENA=100000000 exec ${SCHEME-guile} -L . --no-auto-compile -e '(configure)'
|
||||||
(let ((name (dependency-name dependency)))
|
(let ((name (dependency-name dependency)))
|
||||||
(stderr "checking for ~a..." name)
|
(stderr "checking for ~a..." name)
|
||||||
(let ((result (check cc (dependency-data dependency))))
|
(let ((result (check cc (dependency-data dependency))))
|
||||||
|
(when (file-exists? ".config.c")
|
||||||
|
(delete-file ".config.c"))
|
||||||
(stderr " ~a\n" (if result "yes" "no"))
|
(stderr " ~a\n" (if result "yes" "no"))
|
||||||
(if result (set-field dependency (dependency-file-name) name)
|
(if result (set-field dependency (dependency-file-name) name)
|
||||||
dependency))))
|
dependency))))
|
||||||
|
@ -525,7 +533,7 @@ Some influential environment variables:
|
||||||
("@mes_arch@" . ,mes-arch)
|
("@mes_arch@" . ,mes-arch)
|
||||||
("@mes_p@" . ,(if mes? "1" ""))
|
("@mes_p@" . ,(if mes? "1" ""))
|
||||||
("@mesc_p@" . ,(if mesc? "1" ""))
|
("@mesc_p@" . ,(if mesc? "1" ""))
|
||||||
("@posix_p@" . ,(if posix? "1" ""))
|
("@with_glibc_p@" . ,(if posix? "1" ""))
|
||||||
("@tcc_p@" . ,(if tcc? "1" ""))
|
("@tcc_p@" . ,(if tcc? "1" ""))
|
||||||
|
|
||||||
("@abs_top_srcdir@" . ,abs-top-srcdir)
|
("@abs_top_srcdir@" . ,abs-top-srcdir)
|
||||||
|
|
|
@ -111,7 +111,7 @@ subst () {
|
||||||
-e s,"@mesc_p@,$mesc_p,"\
|
-e s,"@mesc_p@,$mesc_p,"\
|
||||||
-e s,"@tcc_p@,$tcc_p,"\
|
-e s,"@tcc_p@,$tcc_p,"\
|
||||||
-e s,"@mes_arch@,$mes_arch,"\
|
-e s,"@mes_arch@,$mes_arch,"\
|
||||||
-e s,"@posix_p@,$posix_p,"\
|
-e s,"@with_glibc_p@,$with_glibc_p,"\
|
||||||
-e s,"@abs_top_srcdir@,$abs_top_srcdir,"\
|
-e s,"@abs_top_srcdir@,$abs_top_srcdir,"\
|
||||||
-e s,"@abs_top_builddir@,$abs_top_builddir,"\
|
-e s,"@abs_top_builddir@,$abs_top_builddir,"\
|
||||||
-e s,"@top_builddir@,$top_builddir,"\
|
-e s,"@top_builddir@,$top_builddir,"\
|
||||||
|
@ -195,7 +195,7 @@ if [ ! "$mesc_p" ]; then
|
||||||
mes_arch=$mes_arch-$compiler
|
mes_arch=$mes_arch-$compiler
|
||||||
fi
|
fi
|
||||||
if [ ! "$mesc_p" -a ! "$mes_p" ]; then
|
if [ ! "$mesc_p" -a ! "$mes_p" ]; then
|
||||||
posix_p=1
|
with_glibc_p=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
subst ${srcdest}mes/module/mes/boot-0.scm.in mes/module/mes/boot-0.scm
|
subst ${srcdest}mes/module/mes/boot-0.scm.in mes/module/mes/boot-0.scm
|
||||||
|
|
|
@ -5,7 +5,8 @@ Subject: GNU Mes 0.19 released
|
||||||
We are pleased to announce the release of GNU Mes 0.19, representing
|
We are pleased to announce the release of GNU Mes 0.19, representing
|
||||||
100 commits over 10 weeks.
|
100 commits over 10 weeks.
|
||||||
|
|
||||||
Mes has now brought the Reduced Binary Seed bootstrap to Guix and work
|
Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap
|
||||||
|
a GNU/Linux system without binary GNU toolchain or equivalent) and work
|
||||||
is ongoing to audit and verify this bootstrap path in NixOS.
|
is ongoing to audit and verify this bootstrap path in NixOS.
|
||||||
|
|
||||||
This release introduces strings as byte-array, hash-tables and native
|
This release introduces strings as byte-array, hash-tables and native
|
||||||
|
@ -68,8 +69,8 @@ Packages are available from Guix's core-updates branch.
|
||||||
|
|
||||||
Here are the MD5 and SHA1 checksums:
|
Here are the MD5 and SHA1 checksums:
|
||||||
|
|
||||||
f9f901f175fbc8a5a3d90c9c551ccc8c mes-0.19.tar.gz
|
99e134df87adc5fc5fd2c04941929c23 mes-0.19.tar.gz
|
||||||
4f7612731a745ebb806548186453d55e0d0bf217 mes-0.19.tar.gz
|
c9781b3b6a814acc985c2ac68caa111a56583bca mes-0.19.tar.gz
|
||||||
|
|
||||||
[*] Use a .sig file to verify that the corresponding file (without the
|
[*] Use a .sig file to verify that the corresponding file (without the
|
||||||
.sig suffix) is intact. First, be sure to download both the .sig file
|
.sig suffix) is intact. First, be sure to download both the .sig file
|
||||||
|
@ -131,7 +132,7 @@ installed in Guix from a git checkout by running
|
||||||
** Noteworthy bug fixes
|
** Noteworthy bug fixes
|
||||||
*** Mes now supports characters #\xNN.
|
*** Mes now supports characters #\xNN.
|
||||||
*** Mes now supports assq-ref and assoc-ref with alist == #f.
|
*** Mes now supports assq-ref and assoc-ref with alist == #f.
|
||||||
*** Mes now support \xNN in strings. Fixes using Nyacc-0.86.0.
|
*** Mes now supports \xNN in strings. This allows using Nyacc-0.86.0.
|
||||||
*** MesCC now supports the unary plus operator.
|
*** MesCC now supports the unary plus operator.
|
||||||
*** MesCC now supports the `U' integer suffix.
|
*** MesCC now supports the `U' integer suffix.
|
||||||
*** MesCC now comes with INTnn_MIN/MAX, UINTnn defines in stdint.h.
|
*** MesCC now comes with INTnn_MIN/MAX, UINTnn defines in stdint.h.
|
||||||
|
|
|
@ -1,124 +1,123 @@
|
||||||
digraph "Guix bag" {
|
digraph "Guix bag" {
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" [color = magenta];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7nv5rwsxx4v2g5fgbilj0c96gx34897q-gcc-mesboot1-wrapper-4.7.4.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/j1kj1qmiv3rg88679bzxxbapgk8gn2qc-gcc-mesboot1-wrapper-4.7.4.drv" [color = magenta];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" [color = magenta];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" [color = magenta];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = magenta];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [color = magenta];
|
||||||
"/gnu/store/k9iiipnm44yl1j7lq1b4llh9fmjb482i-gcc-mesboot-4.9.4.drv" -> "/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" [color = darkgoldenrod];
|
"/gnu/store/yyhvgy169sksvcs4mycmnxyl0za465sj-gcc-mesboot-4.9.4.drv" -> "/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" [color = magenta];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" [color = darkviolet];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" [color = red];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" [color = darkviolet];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" [color = red];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" [color = darkviolet];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" [color = red];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkviolet];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = red];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkviolet];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = red];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = darkviolet];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = red];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [color = darkviolet];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [color = red];
|
||||||
"/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" [color = darkviolet];
|
"/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" [color = red];
|
||||||
"/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica];
|
"/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/15srbzj4y43vwfv79fxf1v1ajjw5kjwa-tcc-boot-0.9.27.drv" [color = red];
|
"/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/a1ff309vviqfm73py9hnssz66ihyl16c-tcc-boot-0.9.27.drv" [color = cyan3];
|
||||||
"/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = red];
|
"/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
"/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = red];
|
"/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
"/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = red];
|
"/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = cyan3];
|
||||||
"/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" [color = red];
|
"/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" [color = cyan3];
|
||||||
"/gnu/store/15srbzj4y43vwfv79fxf1v1ajjw5kjwa-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
|
"/gnu/store/a1ff309vviqfm73py9hnssz66ihyl16c-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/15srbzj4y43vwfv79fxf1v1ajjw5kjwa-tcc-boot-0.9.27.drv" -> "/gnu/store/gvh2cb2arylz028y5ak3c9s4gxngfj50-mes-boot-0.18.drv" [color = darkgoldenrod];
|
"/gnu/store/a1ff309vviqfm73py9hnssz66ihyl16c-tcc-boot-0.9.27.drv" -> "/gnu/store/ba3vgwp3ins7v31g38f7wn0y2wknxbbi-mes-boot-0.19.drv" [color = blue];
|
||||||
"/gnu/store/15srbzj4y43vwfv79fxf1v1ajjw5kjwa-tcc-boot-0.9.27.drv" -> "/gnu/store/4lbzsyzndxc3pp0rqd7qkd2fr278xnrb-tcc-boot0-0.9.26-4.46ee3f1.drv" [color = darkgoldenrod];
|
"/gnu/store/a1ff309vviqfm73py9hnssz66ihyl16c-tcc-boot-0.9.27.drv" -> "/gnu/store/3l18gnbldwrkyzgxf9rl0vc3gqgs6vkc-tcc-boot0-0.9.26-6.c004e9a.drv" [color = blue];
|
||||||
"/gnu/store/15srbzj4y43vwfv79fxf1v1ajjw5kjwa-tcc-boot-0.9.27.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
"/gnu/store/a1ff309vviqfm73py9hnssz66ihyl16c-tcc-boot-0.9.27.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = blue];
|
||||||
"/gnu/store/gvh2cb2arylz028y5ak3c9s4gxngfj50-mes-boot-0.18.drv" [label = "mes-boot@0.18", shape = box, fontname = Helvetica];
|
"/gnu/store/ba3vgwp3ins7v31g38f7wn0y2wknxbbi-mes-boot-0.19.drv" [label = "mes-boot@0.19", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/gvh2cb2arylz028y5ak3c9s4gxngfj50-mes-boot-0.18.drv" -> "/gnu/store/q6bf80szhn5cfyhyl7m2aakj4f7hlyrh-mescc-tools-boot-0.5.2.drv" [color = cyan3];
|
"/gnu/store/ba3vgwp3ins7v31g38f7wn0y2wknxbbi-mes-boot-0.19.drv" -> "/gnu/store/hyvpkk62xhr6blxmrd0s4cam40n48450-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey];
|
||||||
"/gnu/store/gvh2cb2arylz028y5ak3c9s4gxngfj50-mes-boot-0.18.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = cyan3];
|
"/gnu/store/ba3vgwp3ins7v31g38f7wn0y2wknxbbi-mes-boot-0.19.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = dimgrey];
|
||||||
"/gnu/store/gvh2cb2arylz028y5ak3c9s4gxngfj50-mes-boot-0.18.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = cyan3];
|
"/gnu/store/ba3vgwp3ins7v31g38f7wn0y2wknxbbi-mes-boot-0.19.drv" -> "/gnu/store/z4vssfndi1la67dvadsb4fv85rx5zig0-bootstrap-mes-0.drv" [color = dimgrey];
|
||||||
"/gnu/store/q6bf80szhn5cfyhyl7m2aakj4f7hlyrh-mescc-tools-boot-0.5.2.drv" [label = "mescc-tools-boot@0.5.2", shape = box, fontname = Helvetica];
|
"/gnu/store/hyvpkk62xhr6blxmrd0s4cam40n48450-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/q6bf80szhn5cfyhyl7m2aakj4f7hlyrh-mescc-tools-boot-0.5.2.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkviolet];
|
"/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica];
|
"/gnu/store/z4vssfndi1la67dvadsb4fv85rx5zig0-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [label = "guile-bootstrap@2.0", shape = box, fontname = Helvetica];
|
"/gnu/store/3l18gnbldwrkyzgxf9rl0vc3gqgs6vkc-tcc-boot0-0.9.26-6.c004e9a.drv" [label = "tcc-boot0@0.9.26-6.c004e9a", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/4lbzsyzndxc3pp0rqd7qkd2fr278xnrb-tcc-boot0-0.9.26-4.46ee3f1.drv" [label = "tcc-boot0@0.9.26-4.46ee3f1", shape = box, fontname = Helvetica];
|
"/gnu/store/3l18gnbldwrkyzgxf9rl0vc3gqgs6vkc-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/ba3vgwp3ins7v31g38f7wn0y2wknxbbi-mes-boot-0.19.drv" [color = darkseagreen];
|
||||||
"/gnu/store/4lbzsyzndxc3pp0rqd7qkd2fr278xnrb-tcc-boot0-0.9.26-4.46ee3f1.drv" -> "/gnu/store/gvh2cb2arylz028y5ak3c9s4gxngfj50-mes-boot-0.18.drv" [color = darkseagreen];
|
"/gnu/store/3l18gnbldwrkyzgxf9rl0vc3gqgs6vkc-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/hyvpkk62xhr6blxmrd0s4cam40n48450-bootstrap-mescc-tools-0.5.2.drv" [color = darkseagreen];
|
||||||
"/gnu/store/4lbzsyzndxc3pp0rqd7qkd2fr278xnrb-tcc-boot0-0.9.26-4.46ee3f1.drv" -> "/gnu/store/q6bf80szhn5cfyhyl7m2aakj4f7hlyrh-mescc-tools-boot-0.5.2.drv" [color = darkseagreen];
|
"/gnu/store/3l18gnbldwrkyzgxf9rl0vc3gqgs6vkc-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = darkseagreen];
|
||||||
"/gnu/store/4lbzsyzndxc3pp0rqd7qkd2fr278xnrb-tcc-boot0-0.9.26-4.46ee3f1.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkseagreen];
|
"/gnu/store/3l18gnbldwrkyzgxf9rl0vc3gqgs6vkc-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/z4vssfndi1la67dvadsb4fv85rx5zig0-bootstrap-mes-0.drv" [color = darkseagreen];
|
||||||
"/gnu/store/4lbzsyzndxc3pp0rqd7qkd2fr278xnrb-tcc-boot0-0.9.26-4.46ee3f1.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = darkseagreen];
|
"/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
|
"/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" -> "/gnu/store/ba3vgwp3ins7v31g38f7wn0y2wknxbbi-mes-boot-0.19.drv" [color = magenta];
|
||||||
"/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" -> "/gnu/store/gvh2cb2arylz028y5ak3c9s4gxngfj50-mes-boot-0.18.drv" [color = red];
|
"/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" -> "/gnu/store/a1ff309vviqfm73py9hnssz66ihyl16c-tcc-boot-0.9.27.drv" [color = magenta];
|
||||||
"/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" -> "/gnu/store/15srbzj4y43vwfv79fxf1v1ajjw5kjwa-tcc-boot-0.9.27.drv" [color = red];
|
"/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = red];
|
"/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = red];
|
"/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" -> "/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" [color = magenta];
|
||||||
"/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" -> "/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" [color = red];
|
"/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
|
"/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" -> "/gnu/store/a1ff309vviqfm73py9hnssz66ihyl16c-tcc-boot-0.9.27.drv" [color = magenta];
|
||||||
"/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" -> "/gnu/store/15srbzj4y43vwfv79fxf1v1ajjw5kjwa-tcc-boot-0.9.27.drv" [color = blue];
|
"/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = blue];
|
"/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = blue];
|
"/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica];
|
"/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" [color = cyan3];
|
||||||
"/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" [color = dimgrey];
|
"/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" [color = cyan3];
|
||||||
"/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" [color = dimgrey];
|
"/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
"/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = dimgrey];
|
"/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
"/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = dimgrey];
|
"/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = cyan3];
|
||||||
"/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = dimgrey];
|
"/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/s31k70hy4hgyvissrwimx2s837494hvg-mesboot-headers-0.19.drv" [color = cyan3];
|
||||||
"/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/sivwa9pmj19nfad8zavgqjll11hahcyb-mesboot-headers-0.18.drv" [color = dimgrey];
|
"/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" [color = cyan3];
|
||||||
"/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" [color = dimgrey];
|
"/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica];
|
"/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" [color = darkgoldenrod];
|
||||||
"/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" [color = darkgoldenrod];
|
"/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/a1ff309vviqfm73py9hnssz66ihyl16c-tcc-boot-0.9.27.drv" [color = darkgoldenrod];
|
||||||
"/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/15srbzj4y43vwfv79fxf1v1ajjw5kjwa-tcc-boot-0.9.27.drv" [color = darkgoldenrod];
|
"/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
||||||
"/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
"/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
||||||
"/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
"/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = darkgoldenrod];
|
||||||
"/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = darkgoldenrod];
|
"/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" [color = darkgoldenrod];
|
||||||
"/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" [color = darkgoldenrod];
|
"/gnu/store/s31k70hy4hgyvissrwimx2s837494hvg-mesboot-headers-0.19.drv" [label = "mesboot-headers@0.19", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/sivwa9pmj19nfad8zavgqjll11hahcyb-mesboot-headers-0.18.drv" [label = "mesboot-headers@0.18", shape = box, fontname = Helvetica];
|
"/gnu/store/s31k70hy4hgyvissrwimx2s837494hvg-mesboot-headers-0.19.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = dimgrey];
|
||||||
"/gnu/store/sivwa9pmj19nfad8zavgqjll11hahcyb-mesboot-headers-0.18.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkviolet];
|
"/gnu/store/s31k70hy4hgyvissrwimx2s837494hvg-mesboot-headers-0.19.drv" -> "/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [color = dimgrey];
|
||||||
"/gnu/store/sivwa9pmj19nfad8zavgqjll11hahcyb-mesboot-headers-0.18.drv" -> "/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [color = darkviolet];
|
"/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" [color = dimgrey];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" [color = darkviolet];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/dc08x4icyp3vhi3b6gkrpcvclhhb4bs1-gcc-core-mesboot-2.95.3.drv" [color = dimgrey];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/3hqzkw9ag2f3p1skzynr0wq3499ghmsf-gcc-core-mesboot-2.95.3.drv" [color = darkviolet];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" [color = dimgrey];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" [color = darkviolet];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = dimgrey];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkviolet];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = dimgrey];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkviolet];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = dimgrey];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = darkviolet];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [color = dimgrey];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [color = darkviolet];
|
"/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" [color = dimgrey];
|
||||||
"/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" [color = darkviolet];
|
"/gnu/store/j1kj1qmiv3rg88679bzxxbapgk8gn2qc-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/7nv5rwsxx4v2g5fgbilj0c96gx34897q-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica];
|
"/gnu/store/j1kj1qmiv3rg88679bzxxbapgk8gn2qc-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = darkseagreen];
|
||||||
"/gnu/store/7nv5rwsxx4v2g5fgbilj0c96gx34897q-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = blue];
|
"/gnu/store/j1kj1qmiv3rg88679bzxxbapgk8gn2qc-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" [color = darkseagreen];
|
||||||
"/gnu/store/7nv5rwsxx4v2g5fgbilj0c96gx34897q-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" [color = blue];
|
"/gnu/store/j1kj1qmiv3rg88679bzxxbapgk8gn2qc-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" [color = darkseagreen];
|
||||||
"/gnu/store/7nv5rwsxx4v2g5fgbilj0c96gx34897q-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" [color = blue];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" [color = darkseagreen];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" [color = darkseagreen];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" [color = darkseagreen];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkseagreen];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkseagreen];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = darkseagreen];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
|
"/gnu/store/k0c7r9bfmc6a0ji6kl4gfhlppwlzb013-glibc-mesboot-2.16.0.drv" -> "/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" [color = cyan3];
|
||||||
"/gnu/store/1aqmzzsa18kmckm6jw9slr4i0xkrw9g0-glibc-mesboot-2.16.0.drv" -> "/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/s31k70hy4hgyvissrwimx2s837494hvg-mesboot-headers-0.19.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/sivwa9pmj19nfad8zavgqjll11hahcyb-mesboot-headers-0.18.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
|
"/gnu/store/i8mwdv9j384qnwb7ipz92a7jb25yw5cw-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" [color = magenta];
|
||||||
"/gnu/store/hcyw9rs7n3w9kj3xf230509fhjqfxcvj-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" [color = darkseagreen];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/rs1ggdq6bmzgjfkfqmkd6a6cxr9437v4-binutils-mesboot-2.20.1a.drv" [color = cyan3];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/rpz0s3f2cfhsvj6734ss2j4jqisly67x-binutils-mesboot-2.20.1a.drv" [color = darkseagreen];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" [color = cyan3];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" [color = darkseagreen];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" [color = cyan3];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkseagreen];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = cyan3];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkseagreen];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/jjhwiiqy26bbz8ljil49j13mw2d60ja1-diffutils-mesboot-2.7.drv" [color = cyan3];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/jrqric1r8zyiw50rzb6q2mrfhf3yi0nc-diffutils-mesboot-2.7.drv" [color = darkseagreen];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [color = cyan3];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
|
"/gnu/store/snivnh2vwkdq9iyim060k5bca3arkmd7-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" [color = cyan3];
|
||||||
"/gnu/store/9bi0anc7vq3m6zm845wyaq9mfdasyqkg-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" [color = darkseagreen];
|
"/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica];
|
||||||
"/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica];
|
"/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" -> "/gnu/store/hb7v0ngmiq8097cr5h019qlhixwyfbgn-binutils-mesboot0-2.20.1a.drv" [color = magenta];
|
||||||
"/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" -> "/gnu/store/6112c8hrb47fd1svdjyaiy79x3r1ryv3-binutils-mesboot0-2.20.1a.drv" [color = darkgoldenrod];
|
"/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" -> "/gnu/store/b3znapqr1bjvy35ck6w9g8q18i7azw1a-glibc-mesboot0-2.2.5.drv" [color = magenta];
|
||||||
"/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" -> "/gnu/store/yc8llxzasyyq94h71knnd3p0fqkbhd37-glibc-mesboot0-2.2.5.drv" [color = darkgoldenrod];
|
"/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" -> "/gnu/store/0nl531x2qxvhq4rsmjb5w6689f1i9s3b-gcc-mesboot0-2.95.3.drv" [color = magenta];
|
||||||
"/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" -> "/gnu/store/20r0xxzq1nah1rx23sv5d22sjlinj820-gcc-mesboot0-2.95.3.drv" [color = darkgoldenrod];
|
"/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" -> "/gnu/store/y12rm6j4zb71d7rfm05lp5zsgk3rwx4g-make-mesboot0-3.80.drv" [color = magenta];
|
||||||
"/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" -> "/gnu/store/qkrrqygyc11bq450xq4jxkaj4aqf8xlv-make-mesboot0-3.80.drv" [color = darkgoldenrod];
|
"/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
"/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" -> "/gnu/store/sflg089rcki77ay6p1d9p0k1d4g7yni4-bootstrap-binaries-0.drv" [color = magenta];
|
||||||
"/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" -> "/gnu/store/ksmskl74pjjanjvak62pnyxpkphylrnf-bootstrap-binaries-0.drv" [color = darkgoldenrod];
|
"/gnu/store/m5wqnh0ap50npqy2bivn4b907jqiwfyn-make-mesboot-3.82.drv" -> "/gnu/store/ffmmqdgq7wicc3z0xlj9b3w1i9g1z4r1-linux-libre-headers-bootstrap-0.drv" [color = magenta];
|
||||||
"/gnu/store/b84wdn9yjagp0z7dklqaac3nhabllcxp-make-mesboot-3.82.drv" -> "/gnu/store/72kjcwwjxbkhblx6wrfd7kn2y0lmfyy0-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
45
doc/mes.texi
45
doc/mes.texi
|
@ -34,7 +34,7 @@ Documentation License''.
|
||||||
|
|
||||||
@titlepage
|
@titlepage
|
||||||
@title GNU Mes Reference Manual
|
@title GNU Mes Reference Manual
|
||||||
@subtitle Full Source Bootstrapping of the GNU GuixSD Operating System
|
@subtitle Full Source Bootstrapping of the GNU Guix Operating System
|
||||||
@author Jan (janneke) Nieuwenhuizen
|
@author Jan (janneke) Nieuwenhuizen
|
||||||
|
|
||||||
@page
|
@page
|
||||||
|
@ -169,7 +169,7 @@ For all softwares on such a system we have the full source code and
|
||||||
build recipes available.
|
build recipes available.
|
||||||
|
|
||||||
@c The Free System Distribution Guidelines (GNU FSDG)@footnote{Examples of
|
@c The Free System Distribution Guidelines (GNU FSDG)@footnote{Examples of
|
||||||
@c free operating systems are GNU GuixSD, GNU Parabola and Trisquel, see
|
@c free operating systems are GNU Guix, GNU Parabola and Trisquel, see
|
||||||
@c https://www.gnu.org/distros/free-system-distribution-guidelines.html}
|
@c https://www.gnu.org/distros/free-system-distribution-guidelines.html}
|
||||||
@c can serve as help to create such a system
|
@c can serve as help to create such a system
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@ binary seed that all software distributions inject are the so called
|
||||||
@emph{bootstrap binaries}. Bootstrap binaries are the initial binary
|
@emph{bootstrap binaries}. Bootstrap binaries are the initial binary
|
||||||
seeds that are used to start building the distribution.
|
seeds that are used to start building the distribution.
|
||||||
|
|
||||||
The GNU GuixSD operating system has a relatively small closure of
|
The GNU Guix operating system has a relatively small closure of
|
||||||
bootstrap binaries: GNU binutils, GNU gcc, GNU Libc, GNU Guile, and
|
bootstrap binaries: GNU binutils, GNU gcc, GNU Libc, GNU Guile, and
|
||||||
``Static binaries'' (think: bash, bzip2, coreutils, gawk, grep, gzip,
|
``Static binaries'' (think: bash, bzip2, coreutils, gawk, grep, gzip,
|
||||||
patch, sed, tar, xz).
|
patch, sed, tar, xz).
|
||||||
|
@ -553,7 +553,7 @@ Recipe for yogurt: Add yogurt to milk.
|
||||||
@end quotation
|
@end quotation
|
||||||
|
|
||||||
The bootstrap problem we have set out to solve is that none of our
|
The bootstrap problem we have set out to solve is that none of our
|
||||||
modern software distributions, and GuixSD in particular, can be created
|
modern software distributions, and Guix in particular, can be created
|
||||||
all from source code. In addition to the carefully signed source code
|
all from source code. In addition to the carefully signed source code
|
||||||
of all the programs (the `milk') an opaque binary seed (the `yogurt') is
|
of all the programs (the `milk') an opaque binary seed (the `yogurt') is
|
||||||
injected as an essential dependency.
|
injected as an essential dependency.
|
||||||
|
@ -592,7 +592,7 @@ responsibility.
|
||||||
|
|
||||||
The Mes full source bootstrap process@footnote{TBH, the current state of
|
The Mes full source bootstrap process@footnote{TBH, the current state of
|
||||||
affairs demands to label this a `Reduced Binary Seed bootstrap'} is
|
affairs demands to label this a `Reduced Binary Seed bootstrap'} is
|
||||||
currently being developed in GuixSD@footnote{See
|
currently being developed in Guix@footnote{See
|
||||||
@file{gnu/packages/commencement.scm} in the @var{core-updates-next} branch in Guix
|
@file{gnu/packages/commencement.scm} in the @var{core-updates-next} branch in Guix
|
||||||
git
|
git
|
||||||
@url{http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/mes.scm?h=wip-bootstrap}}.
|
@url{http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/mes.scm?h=wip-bootstrap}}.
|
||||||
|
@ -622,11 +622,11 @@ glibc-source + binutils + gcc + glibc0 => glibc
|
||||||
|
|
||||||
@c This graph is generated from wip-bootstrap, doing:
|
@c This graph is generated from wip-bootstrap, doing:
|
||||||
|
|
||||||
@c ~/src/guix-boot/pre-inst-env guix graph --type=bag -e '(@@ (gnu packages commencement) gcc-mesboot)' doc/images/gcc-mesboot-graph.dot
|
@c ~/src/guix/core-updates/pre-inst-env guix graph --type=bag -e '(@@ (gnu packages commencement) gcc-mesboot)' > doc/images/gcc-mesboot-graph.dot
|
||||||
@c dot -T png doc/images/gcc-mesboot-graph.dot > doc/images/gcc-mesboot-graph.png
|
@c dot -T png doc/images/gcc-mesboot-graph.dot > doc/images/gcc-mesboot-graph.png
|
||||||
|
|
||||||
Here's a generated dependency diagram to for the final bootstrap gcc
|
Here's a generated dependency diagram to for the final bootstrap gcc
|
||||||
that builds the rest of GuixSD
|
that builds the rest of Guix.
|
||||||
|
|
||||||
@image{images/gcc-mesboot-graph,2in,,Reference graph of the gcc-mesboot}
|
@image{images/gcc-mesboot-graph,2in,,Reference graph of the gcc-mesboot}
|
||||||
|
|
||||||
|
@ -757,6 +757,11 @@ The initial size of the arena @pxref{5.3,,, sicp, SICP} in cells. Default: 20,0
|
||||||
|
|
||||||
The maximum size of the arena in cells. Default: 100,000,000.
|
The maximum size of the arena in cells. Default: 100,000,000.
|
||||||
|
|
||||||
|
@item MES_MAX_STRING
|
||||||
|
@vindex MES_MAX_STRING
|
||||||
|
|
||||||
|
The maximum size of a string. Default: 524,288.
|
||||||
|
|
||||||
@item MES_DEBUG
|
@item MES_DEBUG
|
||||||
@vindex MES_DEBUG
|
@vindex MES_DEBUG
|
||||||
|
|
||||||
|
@ -814,6 +819,12 @@ The @var{option}s can be among the following:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
|
|
||||||
|
@item --align
|
||||||
|
align globals
|
||||||
|
|
||||||
|
@item --base-address=ADRRESS
|
||||||
|
use BaseAddress ADDRESS [0x1000000]
|
||||||
|
|
||||||
@item -c
|
@item -c
|
||||||
@cindex compile
|
@cindex compile
|
||||||
preprocess, compile and assemble only; do not link
|
preprocess, compile and assemble only; do not link
|
||||||
|
@ -821,6 +832,12 @@ preprocess, compile and assemble only; do not link
|
||||||
@item -D @var{DEFINE}[=@var{VALUE}]
|
@item -D @var{DEFINE}[=@var{VALUE}]
|
||||||
@cindex define DEFINE [VALUE=1]
|
@cindex define DEFINE [VALUE=1]
|
||||||
|
|
||||||
|
@item -dumpmachine
|
||||||
|
@cindex arch
|
||||||
|
@cindex architecture
|
||||||
|
@cindex machine
|
||||||
|
display the compiler's target processor
|
||||||
|
|
||||||
@item -E
|
@item -E
|
||||||
preprocess only; do not compile, assemble or link
|
preprocess only; do not compile, assemble or link
|
||||||
|
|
||||||
|
@ -842,18 +859,30 @@ append DIR to library path
|
||||||
@item -l LIBNAME
|
@item -l LIBNAME
|
||||||
link with LIBNAME
|
link with LIBNAME
|
||||||
|
|
||||||
|
@item -m BITS
|
||||||
|
compile for BITS bits [32]
|
||||||
|
|
||||||
|
@item -O LEVEL
|
||||||
|
use optimizing LEVEL
|
||||||
|
|
||||||
@item -o FILE
|
@item -o FILE
|
||||||
write output to FILE
|
write output to FILE
|
||||||
|
|
||||||
@item -S
|
@item -S
|
||||||
preprocess and compile only; do not assemble or link
|
preprocess and compile only; do not assemble or link
|
||||||
|
|
||||||
|
@item --std=STANDARD
|
||||||
|
assume that the input sources are for STANDARD
|
||||||
|
|
||||||
@item -v, --version
|
@item -v, --version
|
||||||
display version and exit
|
display version and exit
|
||||||
|
|
||||||
@item -w,--write=TYPE
|
@item -w,--write=TYPE
|
||||||
dump Nyacc AST using TYPE @{pretty-print,write@}
|
dump Nyacc AST using TYPE @{pretty-print,write@}
|
||||||
|
|
||||||
|
@item -x LANGUAGE
|
||||||
|
specify LANGUAGE of the following input files
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
|
@ -1041,7 +1070,7 @@ Please send bug reports with full details to @email{bug-mes@@gnu.org}.
|
||||||
We would like to thank the following people for their help: Jeremiah
|
We would like to thank the following people for their help: Jeremiah
|
||||||
Orians, Peter de Wachter, rain1, Ricardo Wurmus, Rutger van Beusekom.
|
Orians, Peter de Wachter, rain1, Ricardo Wurmus, Rutger van Beusekom.
|
||||||
|
|
||||||
We also thank Ludovic Courtès for creating GuixSD and making the
|
We also thank Ludovic Courtès for creating GNU Guix and making the
|
||||||
bootstrap problem so painfully visible, John McCarthy for creating
|
bootstrap problem so painfully visible, John McCarthy for creating
|
||||||
LISP-1.5 and Alan Kay for their inspiring comment on
|
LISP-1.5 and Alan Kay for their inspiring comment on
|
||||||
@url{https://queue.acm.org/detail.cfm?id=1039523, Page 13}.
|
@url{https://queue.acm.org/detail.cfm?id=1039523, Page 13}.
|
||||||
|
|
|
@ -29,18 +29,14 @@
|
||||||
|
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
#ifndef __MES_SIZE_T
|
#include <sys/types.h>
|
||||||
#define __MES_SIZE_T
|
|
||||||
#undef size_t
|
|
||||||
typedef unsigned long size_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if _ALLOCA_UNSIGNED
|
#if _ALLOCA_UNSIGNED
|
||||||
void * alloca (unsigned size);
|
void *alloca (unsigned size);
|
||||||
#elif _ALLOCA_CHAR
|
#elif _ALLOCA_CHAR
|
||||||
char * alloca (int);
|
char *alloca (int);
|
||||||
#else
|
#else
|
||||||
void * alloca (size_t size);
|
void *alloca (size_t size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
22
include/ar.h
22
include/ar.h
|
@ -36,20 +36,20 @@
|
||||||
`struct ar_hdr', and as many bytes of member file data as its `ar_size'
|
`struct ar_hdr', and as many bytes of member file data as its `ar_size'
|
||||||
member indicates, for each member file. */
|
member indicates, for each member file. */
|
||||||
|
|
||||||
#define ARMAG "!<arch>\n" /* String that begins an archive file. */
|
#define ARMAG "!<arch>\n" /* String that begins an archive file. */
|
||||||
#define SARMAG 8 /* Size of that string. */
|
#define SARMAG 8 /* Size of that string. */
|
||||||
|
|
||||||
#define ARFMAG "`\n" /* String in ar_fmag at end of each header. */
|
#define ARFMAG "`\n" /* String in ar_fmag at end of each header. */
|
||||||
|
|
||||||
struct ar_hdr
|
struct ar_hdr
|
||||||
{
|
{
|
||||||
char ar_name[16]; /* Member file name, sometimes / terminated. */
|
char ar_name[16]; /* Member file name, sometimes / terminated. */
|
||||||
char ar_date[12]; /* File date, decimal seconds since Epoch. */
|
char ar_date[12]; /* File date, decimal seconds since Epoch. */
|
||||||
char ar_uid[6], ar_gid[6]; /* User and group IDs, in ASCII decimal. */
|
char ar_uid[6], ar_gid[6]; /* User and group IDs, in ASCII decimal. */
|
||||||
char ar_mode[8]; /* File mode, in ASCII octal. */
|
char ar_mode[8]; /* File mode, in ASCII octal. */
|
||||||
char ar_size[10]; /* File size, in ASCII decimal. */
|
char ar_size[10]; /* File size, in ASCII decimal. */
|
||||||
char ar_fmag[2]; /* Always contains ARFMAG. */
|
char ar_fmag[2]; /* Always contains ARFMAG. */
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include_next <assert.h>
|
#include_next <assert.h>
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
#define assert(x) ((x) ? (void)0 : assert_fail (#x))
|
#define assert(x) ((x) ? (void)0 : assert_fail (#x))
|
||||||
void assert_fail (char* s);
|
void assert_fail (char *s);
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_ASSERT_H
|
#endif // __MES_ASSERT_H
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -29,11 +29,23 @@
|
||||||
|
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
#include <endian.h>
|
#include <endian.h>
|
||||||
|
|
||||||
|
int isalnum (int c);
|
||||||
int isalpha (int c);
|
int isalpha (int c);
|
||||||
int isascii (int c);
|
int isascii (int c);
|
||||||
|
int iscntrl (int c);
|
||||||
int isdigit (int c);
|
int isdigit (int c);
|
||||||
int isxdigit (int c);
|
int isgraph (int c);
|
||||||
|
int islower (int c);
|
||||||
|
int isnumber (int c, int base);
|
||||||
|
int isprint (int c);
|
||||||
|
int ispunct (int c);
|
||||||
int isspace (int c);
|
int isspace (int c);
|
||||||
|
int isupper (int c);
|
||||||
|
int isxdigit (int c);
|
||||||
|
int tolower (int c);
|
||||||
|
int toupper (int c);
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_CTYPE_H
|
#endif // __MES_CTYPE_H
|
||||||
|
|
|
@ -41,18 +41,18 @@
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
int __getdirentries (int filedes, char *buffer, size_t nbytes, off_t *basep);
|
int __getdirentries (int filedes, char *buffer, size_t nbytes, off_t * basep);
|
||||||
|
|
||||||
struct dirent
|
struct dirent
|
||||||
{
|
{
|
||||||
ino_t d_ino;
|
ino_t d_ino;
|
||||||
off_t d_off;
|
off_t d_off;
|
||||||
unsigned short int d_reclen;
|
unsigned short int d_reclen;
|
||||||
#if 0
|
#if 0
|
||||||
unsigned char d_type;
|
unsigned char d_type;
|
||||||
#endif
|
#endif
|
||||||
char d_name[256]; /* We must not include limits.h! */
|
char d_name[256]; /* We must not include limits.h! */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Open a directory stream on NAME.
|
/* Open a directory stream on NAME.
|
||||||
Return a DIR stream on the directory, or NULL if it could not be opened. */
|
Return a DIR stream on the directory, or NULL if it could not be opened. */
|
||||||
|
@ -60,16 +60,16 @@ DIR *opendir (char const *name);
|
||||||
|
|
||||||
/* Close the directory stream DIRP.
|
/* Close the directory stream DIRP.
|
||||||
Return 0 if successful, -1 if not. */
|
Return 0 if successful, -1 if not. */
|
||||||
int closedir (DIR *dirp);
|
int closedir (DIR * dirp);
|
||||||
|
|
||||||
/* Read a directory entry from DIRP.
|
/* Read a directory entry from DIRP.
|
||||||
Return a pointer to a `struct dirent' describing the entry,
|
Return a pointer to a `struct dirent' describing the entry,
|
||||||
or NULL for EOF or error. The storage returned may be overwritten
|
or NULL for EOF or error. The storage returned may be overwritten
|
||||||
by a later readdir call on the same DIR stream. */
|
by a later readdir call on the same DIR stream. */
|
||||||
struct dirent *readdir (DIR *dirp);
|
struct dirent *readdir (DIR * dirp);
|
||||||
|
|
||||||
/* Rewind DIRP to the beginning of the directory. */
|
/* Rewind DIRP to the beginning of the directory. */
|
||||||
extern void rewinddir (DIR *dirp);
|
extern void rewinddir (DIR * dirp);
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -37,16 +37,16 @@
|
||||||
|
|
||||||
/* Directory stream type. */
|
/* Directory stream type. */
|
||||||
struct __dirstream
|
struct __dirstream
|
||||||
{
|
{
|
||||||
int fd; /* File descriptor. */
|
int fd; /* File descriptor. */
|
||||||
|
|
||||||
char *data; /* Directory block. */
|
char *data; /* Directory block. */
|
||||||
size_t allocation; /* Space allocated for the block. */
|
size_t allocation; /* Space allocated for the block. */
|
||||||
size_t size; /* Total valid data in the block. */
|
size_t size; /* Total valid data in the block. */
|
||||||
size_t offset; /* Current offset into the block. */
|
size_t offset; /* Current offset into the block. */
|
||||||
|
|
||||||
off_t filepos; /* Position of next entry to read. */
|
off_t filepos; /* Position of next entry to read. */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct __dirstream DIR;
|
typedef struct __dirstream DIR;
|
||||||
|
|
||||||
|
|
|
@ -38,14 +38,16 @@ int errno;
|
||||||
#define ENOENT 2
|
#define ENOENT 2
|
||||||
#define EINTR 4
|
#define EINTR 4
|
||||||
#define EIO 5
|
#define EIO 5
|
||||||
|
#define ENXIO 6
|
||||||
#define E2BIG 7
|
#define E2BIG 7
|
||||||
#define ENOEXEC 8
|
#define ENOEXEC 8
|
||||||
#define EBADF 9
|
#define EBADF 9
|
||||||
#define ECHILD 10
|
#define ECHILD 10
|
||||||
#define EAGAIN 11
|
#define EAGAIN 11
|
||||||
#define ENOMEM 12
|
#define ENOMEM 12
|
||||||
#define EACCES 13
|
#define EACCES 13
|
||||||
#define EEXIST 17
|
#define EEXIST 17
|
||||||
|
#define EXDEV 18
|
||||||
#define ENOTDIR 20
|
#define ENOTDIR 20
|
||||||
#define EISDIR 21
|
#define EISDIR 21
|
||||||
#define EINVAL 22
|
#define EINVAL 22
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
|
// *INDENT-OFF*
|
||||||
#define O_RDONLY 0
|
#define O_RDONLY 0
|
||||||
#define O_WRONLY 1
|
#define O_WRONLY 1
|
||||||
#define O_RDWR 2
|
#define O_RDWR 2
|
||||||
|
@ -37,6 +38,7 @@
|
||||||
#define O_TRUNC 0x200
|
#define O_TRUNC 0x200
|
||||||
#define O_APPEND 0x400
|
#define O_APPEND 0x400
|
||||||
#define O_DIRECTORY 0x10000
|
#define O_DIRECTORY 0x10000
|
||||||
|
// *INDENT-ON*
|
||||||
|
|
||||||
#define FD_CLOEXEC 1
|
#define FD_CLOEXEC 1
|
||||||
|
|
||||||
|
@ -46,6 +48,7 @@
|
||||||
#define F_GETFL 3
|
#define F_GETFL 3
|
||||||
#define F_SETFL 4
|
#define F_SETFL 4
|
||||||
|
|
||||||
|
#define creat(file_name, mode) open (file_name, O_WRONLY | O_CREAT | O_TRUNC, mode)
|
||||||
int dup (int old);
|
int dup (int old);
|
||||||
int dup2 (int old, int new);
|
int dup2 (int old, int new);
|
||||||
int fcntl (int filedes, int command, ...);
|
int fcntl (int filedes, int command, ...);
|
||||||
|
|
|
@ -26,4 +26,3 @@
|
||||||
#endif // (WITH_GLIBC)
|
#endif // (WITH_GLIBC)
|
||||||
|
|
||||||
#endif // __MES_FEATURES_H
|
#endif // __MES_FEATURES_H
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,19 @@
|
||||||
#define DBL_MIN_EXP -1021
|
#define DBL_MIN_EXP -1021
|
||||||
#define LDBL_MIN_EXP -1021
|
#define LDBL_MIN_EXP -1021
|
||||||
|
|
||||||
|
// gcc-4.6
|
||||||
|
#define DBL_EPSILON 1
|
||||||
|
#define DBL_MANT_DIG 1
|
||||||
|
#define DBL_MAX INT_MAX
|
||||||
|
#define DBL_MIN INT_MIN
|
||||||
|
|
||||||
|
#define FLT_RADIX 10
|
||||||
|
|
||||||
|
#define LDBL_EPSILON 1
|
||||||
|
#define LDBL_MANT_DIG 1
|
||||||
|
#define LDBL_MAX INT_MAX
|
||||||
|
#define LDBL_MIN INT_MIN
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_FLOAT_H
|
#endif // __MES_FLOAT_H
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#ifndef __MES_GRP_H
|
||||||
|
#define __MES_GRP_H 1
|
||||||
|
|
||||||
|
#if WITH_GLIBC
|
||||||
|
#undef __MES_GRP_H
|
||||||
|
#include_next <pwd.h>
|
||||||
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
|
struct group
|
||||||
|
{
|
||||||
|
char *gr_name;
|
||||||
|
gid_t gr_gid;
|
||||||
|
char **gr_mem;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct group *getgrent (void);
|
||||||
|
void endgrent (void);
|
||||||
|
void setgrent (void);
|
||||||
|
struct group *getgrgid (gid_t gid);
|
||||||
|
struct group *getgrnam (char const *name);
|
||||||
|
|
||||||
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
#endif // __MES_GRP_H
|
|
@ -28,7 +28,7 @@
|
||||||
#include_next <libgen.h>
|
#include_next <libgen.h>
|
||||||
|
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
char* dirname (char*);
|
char *dirname (char *);
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_LIBGEN_H
|
#endif // __MES_LIBGEN_H
|
||||||
|
|
|
@ -83,4 +83,13 @@
|
||||||
// make+POSIX
|
// make+POSIX
|
||||||
#define SYS_sigprocmask 0x7e
|
#define SYS_sigprocmask 0x7e
|
||||||
|
|
||||||
|
// tar
|
||||||
|
#define SYS_symlink 0x53
|
||||||
|
#define SYS_readlink 0x55
|
||||||
|
#define SYS_mknod 0x0e
|
||||||
|
|
||||||
|
// gcc-4.6.4
|
||||||
|
#define SYS_mmap 0x5a
|
||||||
|
#define SYS_munmap 0x5b
|
||||||
|
|
||||||
#endif // __MES_LINUX_X86_SYSCALL_H
|
#endif // __MES_LINUX_X86_SYSCALL_H
|
||||||
|
|
|
@ -77,7 +77,16 @@
|
||||||
#define SYS_getegid 0x6c
|
#define SYS_getegid 0x6c
|
||||||
#define SYS_getppid 0x6e
|
#define SYS_getppid 0x6e
|
||||||
|
|
||||||
// make+POSIX
|
// make+WITH_GLIBC
|
||||||
#define SYS_rt_sigprocmask 0x0e
|
#define SYS_rt_sigprocmask 0x0e
|
||||||
|
|
||||||
|
// tar
|
||||||
|
#define SYS_symlink 0x58
|
||||||
|
#define SYS_readlink 0x59
|
||||||
|
#define SYS_mknod 0x85
|
||||||
|
|
||||||
|
// gcc-4.6.4
|
||||||
|
#define SYS_mmap 0x09
|
||||||
|
#define SYS_munmap 0x0b
|
||||||
|
|
||||||
#endif // __MES_LINUX_X86_64_SYSCALL_H
|
#endif // __MES_LINUX_X86_64_SYSCALL_H
|
||||||
|
|
|
@ -29,13 +29,16 @@
|
||||||
|
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
|
// *INDENT-OFF*
|
||||||
#ifndef LC_ALL
|
#ifndef LC_ALL
|
||||||
#define LC_CTYPE 0
|
#define LC_CTYPE 0
|
||||||
#define LC_NUMERIC 1
|
#define LC_NUMERIC 1
|
||||||
#define LC_COLLATE 3
|
#define LC_COLLATE 3
|
||||||
#define LC_ALL 6
|
#define LC_ALL 6
|
||||||
#endif
|
#endif
|
||||||
char * setlocale (int category, char const *locale);
|
// *INDENT-ON*
|
||||||
|
|
||||||
|
char *setlocale (int category, char const *locale);
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,22 @@
|
||||||
#if WITH_GLIBC
|
#if WITH_GLIBC
|
||||||
#undef __MES_MATH_H
|
#undef __MES_MATH_H
|
||||||
#include_next <math.h>
|
#include_next <math.h>
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
double ldexp (double x, int exp);
|
|
||||||
#endif // ! WITH_GLIBC
|
|
||||||
|
|
||||||
|
double atan2 (double y, double x);
|
||||||
|
double ceil (double x);
|
||||||
|
double cos (double x);
|
||||||
|
double exp (double x);
|
||||||
double fabs (double number);
|
double fabs (double number);
|
||||||
|
double floor (double x);
|
||||||
|
long int labs (long int number);
|
||||||
|
double ldexp (double value, int exponent);
|
||||||
|
double log (double x);
|
||||||
|
double modf (double value, double *integer_part);
|
||||||
|
double pow (double base, double power);
|
||||||
|
double sin (double x);
|
||||||
|
double sqrt (double x);
|
||||||
|
|
||||||
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_MATH_H
|
#endif // __MES_MATH_H
|
||||||
|
|
|
@ -18,13 +18,8 @@
|
||||||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MES_LIBMES_MINI_H
|
#ifndef __MES_LIB_MINI_H
|
||||||
#define __MES_LIBMES_MINI_H
|
#define __MES_LIB_MINI_H
|
||||||
|
|
||||||
char **environ;
|
|
||||||
int g_stdin;
|
|
||||||
int g_stdout;
|
|
||||||
int g_stderr;
|
|
||||||
|
|
||||||
#if !WITH_GLIBC
|
#if !WITH_GLIBC
|
||||||
|
|
||||||
|
@ -64,26 +59,34 @@ int errno;
|
||||||
|
|
||||||
#endif //!WITH_LIBC
|
#endif //!WITH_LIBC
|
||||||
|
|
||||||
|
// CONSTANT STDIN 0
|
||||||
#ifndef STDIN
|
#ifndef STDIN
|
||||||
#define STDIN 0
|
#define STDIN 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// CONSTANT STDOUT 1
|
||||||
#ifndef STDOUT
|
#ifndef STDOUT
|
||||||
#define STDOUT 1
|
#define STDOUT 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// CONSTANT STDERR 2
|
||||||
#ifndef STDERR
|
#ifndef STDERR
|
||||||
#define STDERR 2
|
#define STDERR 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
char **environ;
|
||||||
|
int __stdin;
|
||||||
|
int __stdout;
|
||||||
|
int __stderr;
|
||||||
|
|
||||||
int eputs (char const* s);
|
int eputs (char const *s);
|
||||||
int puts (char const* s);
|
int puts (char const *s);
|
||||||
int oputs (char const* s);
|
int oputs (char const *s);
|
||||||
|
|
||||||
#if !WITH_GLIBC
|
#if !WITH_GLIBC
|
||||||
size_t strlen (char const* s);
|
size_t strlen (char const *s);
|
||||||
|
ssize_t _write ();
|
||||||
ssize_t write (int filedes, void const *buffer, size_t size);
|
ssize_t write (int filedes, void const *buffer, size_t size);
|
||||||
#endif // !WITH_GLIBC
|
#endif // !WITH_GLIBC
|
||||||
|
|
||||||
#endif //__MES_LIBMES_MINI_H
|
#endif //__MES_LIB_MINI_H
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -18,33 +18,36 @@
|
||||||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MES_LIBMES_H
|
#ifndef __MES_LIB_H
|
||||||
#define __MES_LIBMES_H
|
#define __MES_LIB_H
|
||||||
|
|
||||||
#include <libmes-mini.h>
|
#include <mes/lib-mini.h>
|
||||||
|
|
||||||
int __mes_debug ();
|
int __mes_debug ();
|
||||||
long abtol (char const** p, int base);
|
double abtod (char const **p, int base);
|
||||||
char const* ntoab (long number, int base, int signed_p);
|
long abtol (char const **p, int base);
|
||||||
char const* itoa (int number);
|
char *dtoab (double number, int base, int signed_p);
|
||||||
char const* ltoa (long number);
|
char *itoa (int number);
|
||||||
char const* ultoa (unsigned long number);
|
char *ltoa (long number);
|
||||||
char const* utoa (unsigned number);
|
char *ltoab (long x, int base);
|
||||||
char const* ltoab (long x, int base);
|
char *ntoab (long number, int base, int signed_p);
|
||||||
|
char *ultoa (unsigned long number);
|
||||||
|
char *utoa (unsigned number);
|
||||||
int atoi (char const *s);
|
int atoi (char const *s);
|
||||||
int eputc (int c);
|
int eputc (int c);
|
||||||
int fdgetc (int fd);
|
int fdgetc (int fd);
|
||||||
int fdputc (int c, int fd);
|
int fdputc (int c, int fd);
|
||||||
int fdputs (char const* s, int fd);
|
int fdputs (char const *s, int fd);
|
||||||
int fdungetc (int c, int fd);
|
int fdungetc (int c, int fd);
|
||||||
int _fdungetc_p (int fd);
|
int _fdungetc_p (int fd);
|
||||||
int isdigit (int c);
|
int isdigit (int c);
|
||||||
int isspace (int c);
|
int isspace (int c);
|
||||||
int isxdigit (int c);
|
int isxdigit (int c);
|
||||||
int _open3 (char const *file_name, int flags, int mask);
|
int mes_open (char const *file_name, int flags, int mask);
|
||||||
int _open2 (char const *file_name, int flags);
|
int _open2 (char const *file_name, int flags);
|
||||||
|
int _open3 (char const *file_name, int flags, int mask);
|
||||||
int oputc (int c);
|
int oputc (int c);
|
||||||
int oputs (char const* s);
|
int oputs (char const *s);
|
||||||
char *search_path (char const *file_name);
|
char *search_path (char const *file_name);
|
||||||
|
|
||||||
#endif //__MES_LIBMES_H
|
#endif //__MES_LIB_H
|
|
@ -23,7 +23,7 @@
|
||||||
#if WITH_GLIBC
|
#if WITH_GLIBC
|
||||||
#undef __MES_PWD_H
|
#undef __MES_PWD_H
|
||||||
#include_next <pwd.h>
|
#include_next <pwd.h>
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
struct passwd
|
struct passwd
|
||||||
{
|
{
|
||||||
|
@ -36,9 +36,9 @@ struct passwd
|
||||||
char *pw_shell;
|
char *pw_shell;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct passwd * getpwuid ();
|
struct passwd *getpwuid ();
|
||||||
|
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_PWD_H
|
#endif // __MES_PWD_H
|
||||||
|
|
|
@ -31,6 +31,7 @@ typedef long stack_t;
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
// *INDENT-OFF*
|
||||||
#define NSIG 30
|
#define NSIG 30
|
||||||
#define SIGHUP 1
|
#define SIGHUP 1
|
||||||
#define SIGINT 2
|
#define SIGINT 2
|
||||||
|
@ -85,40 +86,39 @@ typedef long stack_t;
|
||||||
#define SA_NOMASK SA_NODEFER
|
#define SA_NOMASK SA_NODEFER
|
||||||
#define SA_ONESHOT SA_RESETHAND
|
#define SA_ONESHOT SA_RESETHAND
|
||||||
|
|
||||||
|
|
||||||
typedef struct siginfo_t
|
typedef struct siginfo_t
|
||||||
{
|
{
|
||||||
int si_signo;
|
int si_signo;
|
||||||
int si_errno;
|
int si_errno;
|
||||||
int si_code;
|
int si_code;
|
||||||
int si_trapno;
|
int si_trapno;
|
||||||
pid_t si_pid;
|
pid_t si_pid;
|
||||||
uid_t si_uid;
|
uid_t si_uid;
|
||||||
int si_status;
|
int si_status;
|
||||||
clock_t si_utime;
|
clock_t si_utime;
|
||||||
clock_t si_stime;
|
clock_t si_stime;
|
||||||
sigval_t si_value;
|
sigval_t si_value;
|
||||||
int si_int;
|
int si_int;
|
||||||
void *si_ptr;
|
void *si_ptr;
|
||||||
int si_overrun;
|
int si_overrun;
|
||||||
int si_timerid;
|
int si_timerid;
|
||||||
void *si_addr;
|
void *si_addr;
|
||||||
long si_band;
|
long si_band;
|
||||||
int si_fd;
|
int si_fd;
|
||||||
short si_addr_lsb;
|
short si_addr_lsb;
|
||||||
void *si_lower;
|
void *si_lower;
|
||||||
void *si_upper;
|
void *si_upper;
|
||||||
int si_pkey;
|
int si_pkey;
|
||||||
void *si_call_addr;
|
void *si_call_addr;
|
||||||
int si_syscall;
|
int si_syscall;
|
||||||
unsigned int si_arch;
|
unsigned int si_arch;
|
||||||
} siginfo_t;
|
} siginfo_t;
|
||||||
|
// *INDENT-ON*
|
||||||
|
|
||||||
#if __MESC__
|
#if __MESC__
|
||||||
typedef long sighandler_t;
|
typedef long sighandler_t;
|
||||||
#else
|
#else
|
||||||
typedef void (*sighandler_t)(int);
|
typedef void (*sighandler_t) (int);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct sigaction
|
struct sigaction
|
||||||
|
@ -199,14 +199,14 @@ struct _libc_fpstate
|
||||||
typedef struct _libc_fpstate *fpregset_t;
|
typedef struct _libc_fpstate *fpregset_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
gregset_t gregs;
|
gregset_t gregs;
|
||||||
/* Due to Linux's history we have to use a pointer here. The SysV/i386
|
/* Due to Linux's history we have to use a pointer here. The SysV/i386
|
||||||
ABI requires a struct with the values. */
|
ABI requires a struct with the values. */
|
||||||
fpregset_t fpregs;
|
fpregset_t fpregs;
|
||||||
unsigned long int oldmask;
|
unsigned long int oldmask;
|
||||||
unsigned long int cr2;
|
unsigned long int cr2;
|
||||||
} mcontext_t;
|
} mcontext_t;
|
||||||
|
|
||||||
/* Userlevel context. */
|
/* Userlevel context. */
|
||||||
typedef struct ucontext
|
typedef struct ucontext
|
||||||
|
@ -221,20 +221,21 @@ typedef struct ucontext
|
||||||
#endif // !__i386__
|
#endif // !__i386__
|
||||||
|
|
||||||
int kill (pid_t pid, int signum);
|
int kill (pid_t pid, int signum);
|
||||||
int sigaction (int signum, struct sigaction const *act, struct sigaction *oldact);
|
int sigaction (int signum, struct sigaction const *act,
|
||||||
int sigaddset (sigset_t *set, int signum);
|
struct sigaction *oldact);
|
||||||
|
int sigaddset (sigset_t * set, int signum);
|
||||||
#if __MESC__
|
#if __MESC__
|
||||||
void* signal (int signum, void * action);
|
void *signal (int signum, void *action);
|
||||||
#else
|
#else
|
||||||
sighandler_t signal (int signum, sighandler_t action);
|
sighandler_t signal (int signum, sighandler_t action);
|
||||||
#endif
|
#endif
|
||||||
int sigemptyset (sigset_t *set);
|
int sigemptyset (sigset_t * set);
|
||||||
#ifndef SIG_BLOCK
|
#ifndef SIG_BLOCK
|
||||||
#define SIG_BLOCK 0
|
#define SIG_BLOCK 0
|
||||||
#define SIG_UNBLOCK 1
|
#define SIG_UNBLOCK 1
|
||||||
#define SIG_SETMASK 2
|
#define SIG_SETMASK 2
|
||||||
#endif
|
#endif
|
||||||
int sigprocmask (int how, sigset_t const *set, sigset_t *oldset);
|
int sigprocmask (int how, sigset_t const *set, sigset_t * oldset);
|
||||||
|
|
||||||
#endif //! WITH_GLIBC
|
#endif //! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -31,14 +31,15 @@
|
||||||
#define __FOO_VARARGS 1
|
#define __FOO_VARARGS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef long va_list;
|
typedef char *va_list;
|
||||||
#define va_start(ap, last) (void)((ap) = (char*)(&(last) + 1))
|
#define va_start(ap, last) (void)((ap) = (char*)(&(last) + 1))
|
||||||
#define va_arg(ap, type) (type)(((long*)((ap) = ((ap) + sizeof (void*))))[-1])
|
#define va_arg(ap, type) (type)(((long*)((ap) = ((ap) + sizeof (void*))))[-1])
|
||||||
#define va_end(ap) (void)((ap) = 0)
|
#define va_end(ap) (void)((ap) = 0)
|
||||||
#define va_copy(dest, src) dest = src
|
#define va_copy(dest, src) dest = src
|
||||||
|
|
||||||
int vfprintf (FILE *stream, char const *template, va_list ap);
|
int vfprintf (FILE * stream, char const *template, va_list ap);
|
||||||
int vprintf (char const* format, va_list ap);
|
int vfscanf (FILE * stream, char const *template, va_list ap);
|
||||||
|
int vprintf (char const *format, va_list ap);
|
||||||
int vsprintf (char *str, char const *format, va_list ap);
|
int vsprintf (char *str, char const *format, va_list ap);
|
||||||
int vsnprintf (char *str, size_t size, char const *format, va_list ap);
|
int vsnprintf (char *str, size_t size, char const *format, va_list ap);
|
||||||
int vsscanf (char const *s, char const *template, va_list ap);
|
int vsscanf (char const *s, char const *template, va_list ap);
|
||||||
|
|
|
@ -58,28 +58,10 @@ typedef int int32_t;
|
||||||
typedef unsigned long long uint64_t;
|
typedef unsigned long long uint64_t;
|
||||||
typedef long long int64_t;
|
typedef long long int64_t;
|
||||||
|
|
||||||
#ifndef __MES_SIZE_T
|
|
||||||
#define __MES_SIZE_T
|
|
||||||
#undef size_t
|
|
||||||
typedef unsigned long size_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __MES_INTPTR_T
|
|
||||||
#define __MES_INTPTR_T
|
|
||||||
#undef intptr_t
|
|
||||||
typedef long intptr_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// FIXME
|
|
||||||
typedef int intmax_t;
|
typedef int intmax_t;
|
||||||
typedef unsigned uintmax_t;
|
typedef unsigned uintmax_t;
|
||||||
typedef unsigned* uintptr_t;
|
|
||||||
|
|
||||||
#ifndef __MES_PTRDIFF_T
|
#include <sys/types.h>
|
||||||
#define __MES_PTRDIFF_T
|
|
||||||
#undef ptrdiff_t
|
|
||||||
typedef long ptrdiff_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define CHAR_BIT 8
|
#define CHAR_BIT 8
|
||||||
#define CHAR_MAX 255
|
#define CHAR_MAX 255
|
||||||
|
@ -103,6 +85,12 @@ typedef long ptrdiff_t;
|
||||||
|
|
||||||
#define INT_MIN -2147483648
|
#define INT_MIN -2147483648
|
||||||
#define INT_MAX 2147483647
|
#define INT_MAX 2147483647
|
||||||
|
|
||||||
|
#define SHRT_MAX INT16_MAX
|
||||||
|
#define SHRT_MIN INT16_MIN
|
||||||
|
#define USHRT_MAX UINT16_MAX
|
||||||
|
#define USHRT_MIN UINT16_MIN
|
||||||
|
|
||||||
#if __i386__
|
#if __i386__
|
||||||
#define LONG_MIN INT_MIN
|
#define LONG_MIN INT_MIN
|
||||||
#define LONG_MAX INT_MAX
|
#define LONG_MAX INT_MAX
|
||||||
|
@ -121,6 +109,8 @@ typedef long ptrdiff_t;
|
||||||
#define SIZE_MAX UINT64_MAX
|
#define SIZE_MAX UINT64_MAX
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define SSIZE_MAX LONG_MAX
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_STDINT_H
|
#endif // __MES_STDINT_H
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#ifndef __MES_STDIO_H
|
#ifndef __MES_STDIO_H
|
||||||
#define __MES_STDIO_H 1
|
#define __MES_STDIO_H 1
|
||||||
|
|
||||||
#include <libmes.h>
|
#include <mes/lib.h>
|
||||||
|
|
||||||
#if WITH_GLIBC
|
#if WITH_GLIBC
|
||||||
#ifndef _GNU_SOURCE
|
#ifndef _GNU_SOURCE
|
||||||
|
@ -32,9 +32,9 @@
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
#ifndef _IOFBF
|
#ifndef _IOFBF
|
||||||
#define _IOFBF 0 /* Fully buffered. */
|
#define _IOFBF 0 /* Fully buffered. */
|
||||||
#define _IOLBF 1 /* Line buffered. */
|
#define _IOLBF 1 /* Line buffered. */
|
||||||
#define _IONBF 2 /* No buffering. */
|
#define _IONBF 2 /* No buffering. */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef BUFSIZ
|
#ifndef BUFSIZ
|
||||||
|
@ -58,35 +58,37 @@
|
||||||
FILE *fdopen (int fd, char const *mode);
|
FILE *fdopen (int fd, char const *mode);
|
||||||
FILE *fopen (char const *file_name, char const *mode);
|
FILE *fopen (char const *file_name, char const *mode);
|
||||||
int eputc (int c);
|
int eputc (int c);
|
||||||
int eputs (char const* s);
|
int eputs (char const *s);
|
||||||
int fclose (FILE *stream);
|
int fclose (FILE * stream);
|
||||||
int feof (FILE *stream);
|
int feof (FILE * stream);
|
||||||
int ferror (FILE *stream);
|
int ferror (FILE * stream);
|
||||||
int fflush (FILE *stream);
|
int fflush (FILE * stream);
|
||||||
int fgetc (FILE* stream);
|
int fgetc (FILE * stream);
|
||||||
char *fgets (char *s, int size, FILE *stream);
|
char *fgets (char *s, int size, FILE * stream);
|
||||||
int fprintf (FILE *stream, char const *format, ...);
|
int fprintf (FILE * stream, char const *format, ...);
|
||||||
int fpurge (FILE *stream);
|
int fpurge (FILE * stream);
|
||||||
int fputc (int c, FILE *stream);
|
int fputc (int c, FILE * stream);
|
||||||
int fputs (char const* s, FILE *stream);
|
int fputs (char const *s, FILE * stream);
|
||||||
int fseek (FILE *stream, long offset, int whence);
|
int fscanf (FILE * stream, char const *template, ...);
|
||||||
int getc (FILE *stream);
|
int fseek (FILE * stream, long offset, int whence);
|
||||||
|
int getc (FILE * stream);
|
||||||
int getchar (void);
|
int getchar (void);
|
||||||
char *getlogin (void);
|
char *getlogin (void);
|
||||||
int printf (char const* format, ...);
|
int printf (char const *format, ...);
|
||||||
int putc (int c, FILE* stream);
|
int putc (int c, FILE * stream);
|
||||||
int putchar (int c);
|
int putchar (int c);
|
||||||
int puts (char const* s);
|
int puts (char const *s);
|
||||||
int remove (char const *file_name);
|
int remove (char const *file_name);
|
||||||
int setvbuf (FILE *stream, char *buf, int mode, size_t size);
|
void rewind (FILE * stream);
|
||||||
int snprintf(char *str, size_t size, char const *format, ...);
|
int setvbuf (FILE * stream, char *buf, int mode, size_t size);
|
||||||
int sprintf (char *str, char const* format, ...);
|
int snprintf (char *str, size_t size, char const *format, ...);
|
||||||
int sscanf (char const *str, const char *format, ...);
|
int sprintf (char *str, char const *format, ...);
|
||||||
int ungetc (int c, FILE* stream);
|
int sscanf (char const *str, char const *format, ...);
|
||||||
long ftell (FILE *stream);
|
int ungetc (int c, FILE * stream);
|
||||||
size_t fread (void *ptr, size_t size, size_t count, FILE *stream);
|
long ftell (FILE * stream);
|
||||||
size_t freadahead (FILE *fp);
|
size_t fread (void *ptr, size_t size, size_t count, FILE * stream);
|
||||||
size_t fwrite (void const *ptr, size_t size, size_t count, FILE *stream);
|
size_t freadahead (FILE * fp);
|
||||||
|
size_t fwrite (void const *ptr, size_t size, size_t count, FILE * stream);
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -26,22 +26,25 @@
|
||||||
#endif
|
#endif
|
||||||
#undef __MES_STDLIB_H
|
#undef __MES_STDLIB_H
|
||||||
#include_next <stdlib.h>
|
#include_next <stdlib.h>
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
|
|
||||||
|
void abort (void);
|
||||||
|
double atof (char const *s);
|
||||||
int atoi (char const *s);
|
int atoi (char const *s);
|
||||||
int atexit (void (*function) (void));
|
int atexit (void (*function) (void));
|
||||||
void * calloc (size_t nmemb, size_t size);
|
void *calloc (size_t nmemb, size_t size);
|
||||||
void _exit (int status);
|
void _exit (int status);
|
||||||
void exit (int status);
|
void exit (int status);
|
||||||
void free (void *ptr);
|
void free (void *ptr);
|
||||||
char* getenv (char const* s);
|
char *getenv (char const *s);
|
||||||
int setenv (char const* s, char const* v, int overwrite_p);
|
int setenv (char const *s, char const *v, int overwrite_p);
|
||||||
void unsetenv (char const *name);
|
void unsetenv (char const *name);
|
||||||
void *malloc (size_t);
|
void *malloc (size_t);
|
||||||
void qsort (void *base, size_t nmemb, size_t size, int (*compar)(void const *, void const *));
|
void qsort (void *base, size_t nmemb, size_t size,
|
||||||
|
int (*compar) (void const *, void const *));
|
||||||
int rand (void);
|
int rand (void);
|
||||||
void *realloc (void *p, size_t size);
|
void *realloc (void *p, size_t size);
|
||||||
double strtod (char const *string, char **tailptr);
|
double strtod (char const *string, char **tailptr);
|
||||||
|
@ -60,7 +63,8 @@ unsigned long long strtoull (char const *string, char **tailptr, int base);
|
||||||
typedef int (*comparison_fn_t) (void const *, void const *);
|
typedef int (*comparison_fn_t) (void const *, void const *);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void * bsearch (void const *key, void const *array, size_t count, size_t size, comparison_fn_t compare);
|
void *bsearch (void const *key, void const *array, size_t count, size_t size,
|
||||||
|
comparison_fn_t compare);
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -29,41 +29,28 @@
|
||||||
|
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
#ifndef NULL
|
#include <sys/types.h>
|
||||||
#define NULL 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __MES_SIZE_T
|
void *memchr (void const *block, int c, size_t size);
|
||||||
#define __MES_SIZE_T
|
|
||||||
#undef size_t
|
|
||||||
typedef unsigned long size_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __MES_SSIZE_T
|
|
||||||
#define __MES_SSIZE_T
|
|
||||||
#undef ssize_t
|
|
||||||
typedef long ssize_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void * memchr (void const *block, int c, size_t size);
|
|
||||||
void *memcpy (void *dest, void const *src, size_t n);
|
void *memcpy (void *dest, void const *src, size_t n);
|
||||||
void *memmove (void *dest, void const *src, size_t n);
|
void *memmove (void *dest, void const *src, size_t n);
|
||||||
void *memset (void *s, int c, size_t n);
|
void *memset (void *s, int c, size_t n);
|
||||||
void * memchr (void const *block, int c, size_t size);
|
void *memchr (void const *block, int c, size_t size);
|
||||||
int memcmp (void const *s1, void const *s2, size_t n);
|
int memcmp (void const *s1, void const *s2, size_t n);
|
||||||
|
|
||||||
char *strcat (char *dest, char const *src);
|
char *strcat (char *dest, char const *src);
|
||||||
char *strchr (char const *s, int c);
|
char *strchr (char const *s, int c);
|
||||||
int strcasecmp (char const *s1, char const *s2);
|
int strcasecmp (char const *s1, char const *s2);
|
||||||
int strcmp (char const*, char const*);
|
int strcmp (char const *, char const *);
|
||||||
char *strcpy (char *dest, char const *src);
|
char *strcpy (char *dest, char const *src);
|
||||||
size_t strlen (char const*);
|
size_t strlen (char const *);
|
||||||
char *strncpy (char *to, char const *from, size_t size);
|
char *strncpy (char *to, char const *from, size_t size);
|
||||||
int strncmp (char const*, char const*, size_t);
|
int strncmp (char const *, char const *, size_t);
|
||||||
char *strrchr (char const *s, int c);
|
char *strrchr (char const *s, int c);
|
||||||
char *strstr (char const *haystack, char const *needle);
|
char *strstr (char const *haystack, char const *needle);
|
||||||
char * strlwr (char *string);
|
char *strtok (char *new_string, char const *delimiters);
|
||||||
char * strupr (char *string);
|
char *strlwr (char *string);
|
||||||
|
char *strupr (char *string);
|
||||||
|
|
||||||
|
|
||||||
char *strerror (int errnum);
|
char *strerror (int errnum);
|
||||||
|
|
|
@ -26,4 +26,3 @@
|
||||||
#endif // (WITH_GLIBC)
|
#endif // (WITH_GLIBC)
|
||||||
|
|
||||||
#endif // __MES_STRINGS_H
|
#endif // __MES_STRINGS_H
|
||||||
|
|
||||||
|
|
|
@ -26,4 +26,3 @@
|
||||||
#endif // (WITH_GLIBC)
|
#endif // (WITH_GLIBC)
|
||||||
|
|
||||||
#endif // __MES_SYS_CDEFS_H
|
#endif // __MES_SYS_CDEFS_H
|
||||||
|
|
||||||
|
|
|
@ -33,4 +33,3 @@ int ioctl (int fd, unsigned long request, ...);
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_SYS_IOCTL_H
|
#endif // __MES_SYS_IOCTL_H
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2017,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -25,19 +25,26 @@
|
||||||
#include_next <sys/mman.h>
|
#include_next <sys/mman.h>
|
||||||
#else // ! WITH_GLIBC
|
#else // ! WITH_GLIBC
|
||||||
|
|
||||||
#ifndef __MES_SIZE_T
|
#include <sys/types.h>
|
||||||
#define __MES_SIZE_T
|
|
||||||
typedef unsigned long size_t;
|
#define MAP_SHARED 0x01
|
||||||
#endif
|
#define MAP_PRIVATE 0x02
|
||||||
|
#define MAP_ANONYMOUS 0x20
|
||||||
|
#define MAP_POPULATE 0x08000
|
||||||
|
|
||||||
|
#define MAP_ANON MAP_ANONYMOUS
|
||||||
|
#define MAP_FAILED ((void*)-1)
|
||||||
|
|
||||||
#define PROT_NONE 0
|
#define PROT_NONE 0
|
||||||
#define PROT_READ 1
|
#define PROT_READ 1
|
||||||
#define PROT_WRITE 2
|
#define PROT_WRITE 2
|
||||||
#define PROT_EXEC 4
|
#define PROT_EXEC 4
|
||||||
|
|
||||||
|
void *mmap (void *address, size_t length, int protect, int flags, int filedes,
|
||||||
|
off_t offset);
|
||||||
int mprotect (void *addr, size_t len, int prot);
|
int mprotect (void *addr, size_t len, int prot);
|
||||||
|
int munmap (void *addr, size_t length);
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_SYS_MMAN_H
|
#endif // __MES_SYS_MMAN_H
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,8 @@ struct rusage
|
||||||
|
|
||||||
#define RUSAGE_SELF 0
|
#define RUSAGE_SELF 0
|
||||||
#define RUSAGE_CHILDREN -1
|
#define RUSAGE_CHILDREN -1
|
||||||
|
#define RLIMIT_NOFILE 1024
|
||||||
|
#define OPEN_MAX RLIMIT_NOFILE
|
||||||
|
|
||||||
int getrusage (int processes, struct rusage *rusage);
|
int getrusage (int processes, struct rusage *rusage);
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,8 @@
|
||||||
#if WITH_GLIBC
|
#if WITH_GLIBC
|
||||||
#undef __MES_SYS_SELECT_H
|
#undef __MES_SYS_SELECT_H
|
||||||
#include_next <sys/select.h>
|
#include_next <sys/select.h>
|
||||||
#else //! WITH_GLIBC
|
#else //! WITH_GLIBC
|
||||||
typedef int fd_set;
|
typedef int fd_set;
|
||||||
#endif //! WITH_GLIBC
|
#endif //! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_SYS_SELECT_H
|
#endif // __MES_SYS_SELECT_H
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
typedef int mode_t;
|
typedef int mode_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// *INDENT-OFF*
|
||||||
#if __i386__
|
#if __i386__
|
||||||
struct stat
|
struct stat
|
||||||
{
|
{
|
||||||
|
@ -79,13 +80,16 @@ struct stat
|
||||||
unsigned long __foo1;
|
unsigned long __foo1;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
// *INDENT-ON*
|
||||||
|
|
||||||
int chmod (char const *file_name, mode_t mode);
|
int chmod (char const *file_name, mode_t mode);
|
||||||
int mkdir (char const *file_name, mode_t mode);
|
int mkdir (char const *file_name, mode_t mode);
|
||||||
|
int mknod (char const *file_name, mode_t mode, dev_t dev);
|
||||||
int chown (char const *file_name, uid_t owner, gid_t group);
|
int chown (char const *file_name, uid_t owner, gid_t group);
|
||||||
int rmdir (char const *file_name);
|
int rmdir (char const *file_name);
|
||||||
int stat (char const *file_name, struct stat *buf);
|
int stat (char const *file_name, struct stat *buf);
|
||||||
|
|
||||||
|
#define S_IFIFO 0010000
|
||||||
#define S_IFCHR 0020000
|
#define S_IFCHR 0020000
|
||||||
#define S_IFDIR 0040000
|
#define S_IFDIR 0040000
|
||||||
#define S_IFBLK 0060000
|
#define S_IFBLK 0060000
|
||||||
|
@ -93,6 +97,7 @@ int stat (char const *file_name, struct stat *buf);
|
||||||
#define S_IFLNK 0120000
|
#define S_IFLNK 0120000
|
||||||
#define S_IFMT 0170000
|
#define S_IFMT 0170000
|
||||||
|
|
||||||
|
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
|
||||||
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||||
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||||
|
|
||||||
|
|
|
@ -26,4 +26,3 @@
|
||||||
#endif // (WITH_GLIBC)
|
#endif // (WITH_GLIBC)
|
||||||
|
|
||||||
#endif // __MES_SYS_TIMEB_H
|
#endif // __MES_SYS_TIMEB_H
|
||||||
|
|
||||||
|
|
|
@ -135,6 +135,15 @@ typedef long ssize_t;
|
||||||
typedef unsigned uid_t;
|
typedef unsigned uid_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __WCHAR_T
|
||||||
|
#define __WCHAR_T
|
||||||
|
#ifndef __MES_WCHAR_T
|
||||||
|
#define __MES_WCHAR_T
|
||||||
|
#undef wchar_t
|
||||||
|
typedef int wchar_t;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
#endif // __MES_SYS_TYPES_H
|
#endif // __MES_SYS_TYPES_H
|
||||||
|
|
|
@ -26,4 +26,3 @@
|
||||||
#endif // (WITH_GLIBC)
|
#endif // (WITH_GLIBC)
|
||||||
|
|
||||||
#endif // __MES_SYS_UCONTEXT_H
|
#endif // __MES_SYS_UCONTEXT_H
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ struct user_fpregs_struct
|
||||||
long int fcs;
|
long int fcs;
|
||||||
long int foo;
|
long int foo;
|
||||||
long int fos;
|
long int fos;
|
||||||
long int st_space [20];
|
long int st_space[20];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct user_fpxregs_struct
|
struct user_fpxregs_struct
|
||||||
|
@ -51,8 +51,8 @@ struct user_fpxregs_struct
|
||||||
long int fos;
|
long int fos;
|
||||||
long int mxcsr;
|
long int mxcsr;
|
||||||
long int reserved;
|
long int reserved;
|
||||||
long int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
|
long int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
|
||||||
long int xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */
|
long int xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */
|
||||||
long int padding[56];
|
long int padding[56];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -77,32 +77,34 @@ struct user_regs_struct
|
||||||
long int xss;
|
long int xss;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// *INDENT-OFF*
|
||||||
struct user
|
struct user
|
||||||
{
|
{
|
||||||
struct user_regs_struct regs;
|
struct user_regs_struct regs;
|
||||||
int u_fpvalid;
|
int u_fpvalid;
|
||||||
struct user_fpregs_struct i387;
|
struct user_fpregs_struct i387;
|
||||||
unsigned long int u_tsize;
|
unsigned long int u_tsize;
|
||||||
unsigned long int u_dsize;
|
unsigned long int u_dsize;
|
||||||
unsigned long int u_ssize;
|
unsigned long int u_ssize;
|
||||||
unsigned long int start_code;
|
unsigned long int start_code;
|
||||||
unsigned long int start_stack;
|
unsigned long int start_stack;
|
||||||
long int signal;
|
long int signal;
|
||||||
int reserved;
|
int reserved;
|
||||||
struct user_regs_struct* u_ar0;
|
struct user_regs_struct *u_ar0;
|
||||||
struct user_fpregs_struct* u_fpstate;
|
struct user_fpregs_struct *u_fpstate;
|
||||||
unsigned long int magic;
|
unsigned long int magic;
|
||||||
char u_comm [32];
|
char u_comm [32];
|
||||||
int u_debugreg [8];
|
int u_debugreg [8];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define PAGE_SHIFT 12
|
#define PAGE_SHIFT 12
|
||||||
#define PAGE_SIZE (1UL << PAGE_SHIFT)
|
#define PAGE_SIZE (1UL << PAGE_SHIFT)
|
||||||
#define PAGE_MASK (~(PAGE_SIZE-1))
|
#define PAGE_MASK (~(PAGE_SIZE-1))
|
||||||
#define NBPG PAGE_SIZE
|
#define NBPG PAGE_SIZE
|
||||||
#define UPAGES 1
|
#define UPAGES 1
|
||||||
#define HOST_TEXT_START_ADDR (u.start_code)
|
#define HOST_TEXT_START_ADDR (u.start_code)
|
||||||
#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
|
#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
|
||||||
|
// *INDENT-ON*
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,14 @@
|
||||||
#define CS8 0000060
|
#define CS8 0000060
|
||||||
#define PARENB 0000400
|
#define PARENB 0000400
|
||||||
|
|
||||||
|
struct winsize
|
||||||
|
{
|
||||||
|
unsigned short ws_row;
|
||||||
|
unsigned short ws_col;
|
||||||
|
unsigned short ws_xpixel;
|
||||||
|
unsigned short ws_ypixel;
|
||||||
|
};
|
||||||
|
|
||||||
struct termio
|
struct termio
|
||||||
{
|
{
|
||||||
unsigned short c_iflag;
|
unsigned short c_iflag;
|
||||||
|
|
|
@ -31,7 +31,8 @@ typedef long int clockid_t;
|
||||||
typedef long int time_t;
|
typedef long int time_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct tm {
|
struct tm
|
||||||
|
{
|
||||||
int tm_sec;
|
int tm_sec;
|
||||||
int tm_min;
|
int tm_min;
|
||||||
int tm_hour;
|
int tm_hour;
|
||||||
|
@ -55,11 +56,13 @@ struct timespec
|
||||||
#endif // __MES_STRUCT_TIMESPEC
|
#endif // __MES_STRUCT_TIMESPEC
|
||||||
|
|
||||||
#define CLOCK_PROCESS_CPUTIME_ID 2
|
#define CLOCK_PROCESS_CPUTIME_ID 2
|
||||||
|
char *asctime (struct tm const *broken_time);
|
||||||
int clock_gettime (clockid_t clk_id, struct timespec *tp);
|
int clock_gettime (clockid_t clk_id, struct timespec *tp);
|
||||||
struct tm *localtime (time_t const *timep);
|
struct tm *localtime (time_t const *timep);
|
||||||
struct tm *gmtime (time_t const *time);
|
struct tm *gmtime (time_t const *time);
|
||||||
|
int mktime (struct tm *broken_time);
|
||||||
|
|
||||||
time_t time (time_t *tloc);
|
time_t time (time_t * tloc);
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,7 @@ unsigned int alarm (unsigned int seconds);
|
||||||
int close (int fd);
|
int close (int fd);
|
||||||
int execv (char const *file_name, char *const argv[]);
|
int execv (char const *file_name, char *const argv[]);
|
||||||
int execl (char const *file_name, char const *arg, ...);
|
int execl (char const *file_name, char const *arg, ...);
|
||||||
|
int execlp (char const *file_name, char const *arg, ...);
|
||||||
int execve (char const *file, char *const argv[], char *const env[]);
|
int execve (char const *file, char *const argv[], char *const env[]);
|
||||||
int execvp (char const *file, char *const argv[]);
|
int execvp (char const *file, char *const argv[]);
|
||||||
int fork (void);
|
int fork (void);
|
||||||
|
@ -72,19 +73,23 @@ int setgid (gid_t newgid);
|
||||||
int setuid (uid_t newuid);
|
int setuid (uid_t newuid);
|
||||||
uid_t geteuid (void);
|
uid_t geteuid (void);
|
||||||
gid_t getegid (void);
|
gid_t getegid (void);
|
||||||
|
pid_t getpgrp (void);
|
||||||
|
pid_t getpid (void);
|
||||||
|
int getpgid (pid_t pid);
|
||||||
int isatty (int fd);
|
int isatty (int fd);
|
||||||
int link (char const *oldname, char const *newname);
|
int link (char const *old_name, char const *new_name);
|
||||||
off_t lseek (int fd, off_t offset, int whence);
|
off_t lseek (int fd, off_t offset, int whence);
|
||||||
ssize_t read (int fd, void *buffer, size_t size);
|
ssize_t read (int fd, void *buffer, size_t size);
|
||||||
|
ssize_t readlink (char const *file_name, char *buffer, size_t size);
|
||||||
#if __SBRK_CHAR_PTRDIFF
|
#if __SBRK_CHAR_PTRDIFF
|
||||||
/* xmalloc in binutils <= 2.10.1 uses this old prototype */
|
/* xmalloc in binutils <= 2.10.1 uses this old prototype */
|
||||||
char * sbrk (ptrdiff_t delta);
|
char *sbrk (ptrdiff_t delta);
|
||||||
#else
|
#else
|
||||||
void * sbrk (intptr_t delta);
|
void *sbrk (intptr_t delta);
|
||||||
#endif
|
#endif
|
||||||
|
int symlink (char const *old_name, char const *new_name);
|
||||||
int unlink (char const *file_name);
|
int unlink (char const *file_name);
|
||||||
ssize_t write (int filedes, void const *buffer, size_t size);
|
ssize_t write (int filedes, void const *buffer, size_t size);
|
||||||
pid_t getpid (void);
|
|
||||||
|
|
||||||
#endif // ! WITH_GLIBC
|
#endif // ! WITH_GLIBC
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
void
|
void
|
||||||
assert_fail (char* s)
|
assert_fail (char *s)
|
||||||
{
|
{
|
||||||
eputs ("assert fail: ");
|
eputs ("assert fail: ");
|
||||||
eputs (s);
|
eputs (s);
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <libmes.h>
|
#include <mes/lib.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
isdigit (int c)
|
isdigit (int c)
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
isgraph (int c)
|
||||||
|
{
|
||||||
|
return c > 32 && c < 127;
|
||||||
|
}
|
|
@ -18,10 +18,11 @@
|
||||||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <libmes.h>
|
#include <mes/lib.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
isspace (int c)
|
isspace (int c)
|
||||||
{
|
{
|
||||||
return (c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r' || c == ' ');
|
return (c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'
|
||||||
|
|| c == ' ');
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <libmes.h>
|
#include <mes/lib.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
isxdigit (int c)
|
isxdigit (int c)
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
__getdirentries (int filedes, char *buffer, size_t nbytes, off_t *basep)
|
__getdirentries (int filedes, char *buffer, size_t nbytes, off_t * basep)
|
||||||
{
|
{
|
||||||
if (basep)
|
if (basep)
|
||||||
*basep = lseek (filedes, (off_t) 0, SEEK_CUR);
|
*basep = lseek (filedes, (off_t) 0, SEEK_CUR);
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
/* Close the directory stream DIRP.
|
/* Close the directory stream DIRP.
|
||||||
Return 0 if successful, -1 if not. */
|
Return 0 if successful, -1 if not. */
|
||||||
int
|
int
|
||||||
closedir (DIR *dirp)
|
closedir (DIR * dirp)
|
||||||
{
|
{
|
||||||
int filedes;
|
int filedes;
|
||||||
|
|
||||||
|
|
|
@ -47,12 +47,12 @@ opendir (char const *name)
|
||||||
if (name[0] == '\0')
|
if (name[0] == '\0')
|
||||||
{
|
{
|
||||||
/* POSIX.1-1990 says an empty name gets ENOENT;
|
/* POSIX.1-1990 says an empty name gets ENOENT;
|
||||||
but `open' might like it fine. */
|
but `open' might like it fine. */
|
||||||
errno = ENOENT;
|
errno = ENOENT;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = open (name, O_RDONLY|O_DIRECTORY);
|
fd = open (name, O_RDONLY | O_DIRECTORY);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ opendir (char const *name)
|
||||||
errno = save_errno;
|
errno = save_errno;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
dirp->data = (char *) (dirp + 1);
|
dirp->data = (char *)(dirp + 1);
|
||||||
dirp->allocation = allocation;
|
dirp->allocation = allocation;
|
||||||
dirp->fd = fd;
|
dirp->fd = fd;
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
/* Read a directory entry from DIRP. */
|
/* Read a directory entry from DIRP. */
|
||||||
struct dirent *
|
struct dirent *
|
||||||
readdir (DIR *dirp)
|
readdir (DIR * dirp)
|
||||||
{
|
{
|
||||||
struct dirent *dp;
|
struct dirent *dp;
|
||||||
int saved_errno = errno;
|
int saved_errno = errno;
|
||||||
|
@ -44,42 +44,43 @@ readdir (DIR *dirp)
|
||||||
size_t reclen;
|
size_t reclen;
|
||||||
|
|
||||||
if (dirp->offset >= dirp->size)
|
if (dirp->offset >= dirp->size)
|
||||||
{
|
{
|
||||||
/* We've emptied out our buffer. Refill it. */
|
/* We've emptied out our buffer. Refill it. */
|
||||||
|
|
||||||
size_t maxread;
|
size_t maxread;
|
||||||
ssize_t bytes;
|
ssize_t bytes;
|
||||||
|
|
||||||
maxread = dirp->allocation;
|
maxread = dirp->allocation;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
off_t base;
|
off_t base;
|
||||||
bytes = __getdirentries (dirp->fd, dirp->data, maxread, &base);
|
bytes = __getdirentries (dirp->fd, dirp->data, maxread, &base);
|
||||||
#else
|
#else
|
||||||
bytes = getdents (dirp->fd, dirp->data, maxread);
|
bytes = getdents (dirp->fd, dirp->data, maxread);
|
||||||
#endif
|
#endif
|
||||||
if (bytes <= 0)
|
if (bytes <= 0)
|
||||||
{
|
{
|
||||||
/* Don't modifiy errno when reaching EOF. */
|
/* Don't modifiy errno when reaching EOF. */
|
||||||
if (bytes == 0)
|
if (bytes == 0)
|
||||||
errno = saved_errno;
|
errno = saved_errno;
|
||||||
dp = 0;
|
dp = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dirp->size = (size_t) bytes;
|
dirp->size = (size_t)bytes;
|
||||||
|
|
||||||
/* Reset the offset into the buffer. */
|
/* Reset the offset into the buffer. */
|
||||||
dirp->offset = 0;
|
dirp->offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dp = (struct dirent *) &dirp->data[dirp->offset];
|
dp = (struct dirent *)&dirp->data[dirp->offset];
|
||||||
|
|
||||||
reclen = dp->d_reclen;
|
reclen = dp->d_reclen;
|
||||||
dirp->offset += reclen;
|
dirp->offset += reclen;
|
||||||
dirp->filepos = dp->d_off;
|
dirp->filepos = dp->d_off;
|
||||||
|
|
||||||
/* Skip deleted files. */
|
/* Skip deleted files. */
|
||||||
} while (dp->d_ino == 0);
|
}
|
||||||
|
while (dp->d_ino == 0);
|
||||||
|
|
||||||
return dp;
|
return dp;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
#include <libc+tcc.c>
|
#include <libc+tcc.c>
|
||||||
|
|
||||||
#if __GNU__
|
#if __GNU__
|
||||||
#include <linux/gnu.c>
|
#error TODO, see wip-hurd
|
||||||
#elif __linux__
|
#elif __linux__
|
||||||
#include <linux/gnu.c>
|
#include <linux/gnu.c>
|
||||||
#else
|
#else
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
// m4
|
// m4
|
||||||
#include <stdlib/abort.c>
|
#include <stdlib/abort.c>
|
||||||
#include <stdlib/atol.c>
|
#include <stdlib/atol.c>
|
||||||
#include <stub/atof.c>
|
#include <stdlib/atof.c>
|
||||||
#include <string/bcmp.c>
|
#include <string/bcmp.c>
|
||||||
#include <string/bcopy.c>
|
#include <string/bcopy.c>
|
||||||
#include <string/bzero.c>
|
#include <string/bzero.c>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
#include <stub/pclose.c>
|
#include <stub/pclose.c>
|
||||||
#include <stub/popen.c>
|
#include <stub/popen.c>
|
||||||
#include <string/rindex.c>
|
#include <string/rindex.c>
|
||||||
#include <stub/rewind.c>
|
#include <stdio/rewind.c> // for gcc-4.6.4; could be stubbed
|
||||||
#include <stub/setbuf.c>
|
#include <stub/setbuf.c>
|
||||||
#include <stub/system.c>
|
#include <stub/system.c>
|
||||||
#include <string/strerror.c>
|
#include <string/strerror.c>
|
||||||
|
@ -70,7 +70,8 @@
|
||||||
#include <stub/sys_siglist.c>
|
#include <stub/sys_siglist.c>
|
||||||
#include <stub/umask.c>
|
#include <stub/umask.c>
|
||||||
#include <stub/utime.c>
|
#include <stub/utime.c>
|
||||||
#include <stub/fscanf.c>
|
#include <stdio/fscanf.c> // for gcc-4.6.4; could be stubbed
|
||||||
|
#include <stdio/vfscanf.c> // dependency of fscanf
|
||||||
#include <ctype/isascii.c>
|
#include <ctype/isascii.c>
|
||||||
#include <stdlib/bsearch.c>
|
#include <stdlib/bsearch.c>
|
||||||
#include <stub/gmtime.c>
|
#include <stub/gmtime.c>
|
||||||
|
@ -83,7 +84,6 @@
|
||||||
#include <math/fabs.c>
|
#include <math/fabs.c>
|
||||||
|
|
||||||
// gcc
|
// gcc
|
||||||
|
|
||||||
#include <stdio/freopen.c>
|
#include <stdio/freopen.c>
|
||||||
#include <stub/times.c>
|
#include <stub/times.c>
|
||||||
#include <posix/sleep.c>
|
#include <posix/sleep.c>
|
||||||
|
@ -119,3 +119,31 @@
|
||||||
#include <stub/rand.c>
|
#include <stub/rand.c>
|
||||||
#include <stub/sigdelset.c>
|
#include <stub/sigdelset.c>
|
||||||
#include <stub/ttyname.c>
|
#include <stub/ttyname.c>
|
||||||
|
|
||||||
|
// gawk
|
||||||
|
#include <ctype/isgraph.c>
|
||||||
|
#include <stub/getpgid.c>
|
||||||
|
#include <stub/getpgrp.c>
|
||||||
|
// #include <mes/abtod.c> in libc+tcc for strtod,strtof (could be stubbed)
|
||||||
|
|
||||||
|
// tar
|
||||||
|
#include <posix/execlp.c>
|
||||||
|
#include <stub/getgrgid.c>
|
||||||
|
#include <stub/getgrnam.c>
|
||||||
|
#include <stub/mktime.c>
|
||||||
|
#include <stub/setgrent.c>
|
||||||
|
|
||||||
|
// gcc-4.6.4
|
||||||
|
#include <math/ceil.c>
|
||||||
|
#include <math/floor.c>
|
||||||
|
#include <math/labs.c>
|
||||||
|
#include <string/strtok.c>
|
||||||
|
#include <stub/atan2.c>
|
||||||
|
#include <stub/asctime.c>
|
||||||
|
#include <stub/cos.c>
|
||||||
|
#include <stub/exp.c>
|
||||||
|
#include <stub/log.c>
|
||||||
|
#include <stub/modf.c>
|
||||||
|
#include <stub/pow.c>
|
||||||
|
#include <stub/sin.c>
|
||||||
|
#include <stub/sqrt.c>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -61,6 +61,8 @@ int errno;
|
||||||
#include <ctype/isupper.c>
|
#include <ctype/isupper.c>
|
||||||
#include <ctype/tolower.c>
|
#include <ctype/tolower.c>
|
||||||
#include <ctype/toupper.c>
|
#include <ctype/toupper.c>
|
||||||
|
#include <mes/abtod.c> // implementation instead of stub for GNU gawk
|
||||||
|
#include <mes/dtoab.c> // implementation instead of stub for GNU gawk
|
||||||
#include <mes/search-path.c>
|
#include <mes/search-path.c>
|
||||||
#include <posix/execvp.c>
|
#include <posix/execvp.c>
|
||||||
#include <stdio/fclose.c>
|
#include <stdio/fclose.c>
|
||||||
|
@ -85,6 +87,7 @@ int errno;
|
||||||
#include <stdio/vsscanf.c>
|
#include <stdio/vsscanf.c>
|
||||||
#include <stdlib/calloc.c>
|
#include <stdlib/calloc.c>
|
||||||
#include <stdlib/qsort.c>
|
#include <stdlib/qsort.c>
|
||||||
|
#include <stdlib/strtod.c>
|
||||||
#include <stdlib/strtof.c>
|
#include <stdlib/strtof.c>
|
||||||
#include <stdlib/strtol.c>
|
#include <stdlib/strtol.c>
|
||||||
#include <stdlib/strtold.c>
|
#include <stdlib/strtold.c>
|
||||||
|
@ -93,7 +96,6 @@ int errno;
|
||||||
#include <stdlib/strtoull.c>
|
#include <stdlib/strtoull.c>
|
||||||
#include <string/memmem.c>
|
#include <string/memmem.c>
|
||||||
#include <string/memmove.c>
|
#include <string/memmove.c>
|
||||||
#include <string/memset.c>
|
|
||||||
#include <string/strcat.c>
|
#include <string/strcat.c>
|
||||||
#include <string/strchr.c>
|
#include <string/strchr.c>
|
||||||
#include <string/strlwr.c>
|
#include <string/strlwr.c>
|
||||||
|
@ -105,5 +107,4 @@ int errno;
|
||||||
#include <stub/ldexp.c>
|
#include <stub/ldexp.c>
|
||||||
#include <stub/mprotect.c>
|
#include <stub/mprotect.c>
|
||||||
#include <stub/localtime.c>
|
#include <stub/localtime.c>
|
||||||
#include <stub/strtod.c>
|
|
||||||
#include <stub/sigemptyset.c>
|
#include <stub/sigemptyset.c>
|
||||||
|
|
15
lib/libc.c
15
lib/libc.c
|
@ -21,10 +21,10 @@
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <libmes.h>
|
#include <mes/lib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <libmes.h>
|
#include <mes/lib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -40,8 +40,6 @@
|
||||||
#error both __GNU__ and _linux__ are undefined, choose one
|
#error both __GNU__ and _linux__ are undefined, choose one
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int g_stdin = 0;
|
|
||||||
|
|
||||||
void _env ();
|
void _env ();
|
||||||
|
|
||||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||||
|
@ -60,9 +58,9 @@ __mes_debug ()
|
||||||
|
|
||||||
|
|
||||||
#if !___GNU__
|
#if !___GNU__
|
||||||
#include <string/memcpy.c>
|
|
||||||
#include <stdlib/malloc.c>
|
|
||||||
#include <assert/assert.c>
|
#include <assert/assert.c>
|
||||||
|
#include <stdlib/malloc.c>
|
||||||
|
#include <string/memcpy.c>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio/getchar.c>
|
#include <stdio/getchar.c>
|
||||||
|
@ -76,15 +74,16 @@ __mes_debug ()
|
||||||
|
|
||||||
#include <string/memchr.c>
|
#include <string/memchr.c>
|
||||||
#include <string/memcmp.c>
|
#include <string/memcmp.c>
|
||||||
|
#include <string/memset.c>
|
||||||
#include <string/strcmp.c>
|
#include <string/strcmp.c>
|
||||||
#include <string/strcpy.c>
|
#include <string/strcpy.c>
|
||||||
#include <string/strncmp.c>
|
#include <string/strncmp.c>
|
||||||
|
|
||||||
#include <stdlib/free.c>
|
#include <stdlib/free.c>
|
||||||
#include <stdlib/realloc.c>
|
#include <stdlib/realloc.c>
|
||||||
#include <stdlib/getenv.c>
|
|
||||||
#include <stdlib/setenv.c>
|
|
||||||
|
|
||||||
|
#include <posix/getenv.c>
|
||||||
#include <posix/isatty.c>
|
#include <posix/isatty.c>
|
||||||
|
#include <posix/setenv.c>
|
||||||
#include <posix/wait.c>
|
#include <posix/wait.c>
|
||||||
#include <posix/execv.c>
|
#include <posix/execv.c>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* -*-comment-start: "//";comment-end:""-*-
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
* GNU Mes --- Maxwell Equations of Software
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
* Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
*
|
*
|
||||||
* This file is part of GNU Mes.
|
* This file is part of GNU Mes.
|
||||||
*
|
*
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
|
|
||||||
// m4
|
// m4
|
||||||
#include <stdlib/abort.c>
|
#include <stdlib/abort.c>
|
||||||
#include <stub/atof.c>
|
#include <stdlib/atof.c>
|
||||||
#include <string/bcmp.c>
|
#include <string/bcmp.c>
|
||||||
#include <string/bcopy.c>
|
#include <string/bcopy.c>
|
||||||
#include <string/bzero.c>
|
#include <string/bzero.c>
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
#include <stub/pclose.c>
|
#include <stub/pclose.c>
|
||||||
#include <stub/popen.c>
|
#include <stub/popen.c>
|
||||||
#include <string/rindex.c>
|
#include <string/rindex.c>
|
||||||
#include <stub/rewind.c>
|
#include <stdio/rewind.c> // for gcc-4.6.4; could be stubbed
|
||||||
#include <stub/setbuf.c>
|
#include <stub/setbuf.c>
|
||||||
#include <stub/system.c>
|
#include <stub/system.c>
|
||||||
#include <string/strerror.c>
|
#include <string/strerror.c>
|
||||||
|
@ -87,7 +87,8 @@
|
||||||
#include <stub/sys_siglist.c>
|
#include <stub/sys_siglist.c>
|
||||||
#include <stub/umask.c>
|
#include <stub/umask.c>
|
||||||
#include <stub/utime.c>
|
#include <stub/utime.c>
|
||||||
#include <stub/fscanf.c>
|
#include <stdio/fscanf.c> // for gcc-4.6.4; could be stubbed
|
||||||
|
#include <stdio/vfscanf.c> // dependency of fscanf
|
||||||
#include <ctype/isascii.c>
|
#include <ctype/isascii.c>
|
||||||
#include <stdlib/bsearch.c>
|
#include <stdlib/bsearch.c>
|
||||||
#include <stub/gmtime.c>
|
#include <stub/gmtime.c>
|
||||||
|
|
32
lib/libmes.c
32
lib/libmes.c
|
@ -18,7 +18,7 @@
|
||||||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <libmes.h>
|
#include <mes/lib.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -41,10 +41,36 @@
|
||||||
#include <mes/fdputs.c>
|
#include <mes/fdputs.c>
|
||||||
#include <mes/fdungetc.c>
|
#include <mes/fdungetc.c>
|
||||||
|
|
||||||
#if POSIX
|
#if WITH_GLIBC
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
// The Mes C Library defines and initializes these in crt1
|
||||||
|
int __stdin = STDIN;
|
||||||
|
int __stdout = STDOUT;
|
||||||
|
int __stderr = STDERR;
|
||||||
|
|
||||||
|
int
|
||||||
|
mes_open (char const *file_name, int flags, int mask)
|
||||||
|
{
|
||||||
|
__ungetc_init ();
|
||||||
|
int r = open (file_name, flags, mask);
|
||||||
|
if (r > 2)
|
||||||
|
__ungetc_buf[r] = -1;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
#include <mes/eputs.c>
|
#include <mes/eputs.c>
|
||||||
#include <mes/oputs.c>
|
#include <mes/oputs.c>
|
||||||
#endif // POSIX
|
|
||||||
|
#else // !WITH_GLIBC
|
||||||
|
|
||||||
|
int
|
||||||
|
mes_open (char const *file_name, int flags, int mask)
|
||||||
|
{
|
||||||
|
return _open3 (file_name, flags, mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // !WITH_GLIBC
|
||||||
|
|
||||||
#include <mes/eputc.c>
|
#include <mes/eputc.c>
|
||||||
#include <mes/oputc.c>
|
#include <mes/oputc.c>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
* along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <libmes.h>
|
#include <mes/lib.h>
|
||||||
|
|
||||||
double
|
double
|
||||||
__divdi3 (double a, double b)
|
__divdi3 (double a, double b)
|
||||||
|
@ -37,7 +37,7 @@ __moddi3 (double a, double b)
|
||||||
if (__mes_debug () && !stub)
|
if (__mes_debug () && !stub)
|
||||||
eputs ("__moddi3 stub\n");
|
eputs ("__moddi3 stub\n");
|
||||||
stub = 1;
|
stub = 1;
|
||||||
return ((int) a %(int)b);
|
return ((int)a % (int)b);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long long
|
unsigned long long
|
||||||
|
@ -120,7 +120,7 @@ long
|
||||||
int
|
int
|
||||||
#else // !__TINYCC_
|
#else // !__TINYCC_
|
||||||
long long
|
long long
|
||||||
#endif // !__TINYCC_
|
#endif // !__TINYCC_
|
||||||
__fixdfdi (double a1)
|
__fixdfdi (double a1)
|
||||||
{
|
{
|
||||||
static int stub = 0;
|
static int stub = 0;
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
access (char const *file_name, int how)
|
||||||
|
{
|
||||||
|
return _sys_call2 (SYS_access, (long)file_name, (int)how);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
long
|
||||||
|
brk (void *addr)
|
||||||
|
{
|
||||||
|
return _sys_call1 (SYS_brk, (long)addr);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
chdir (char const *file_name)
|
||||||
|
{
|
||||||
|
return _sys_call1 (SYS_chdir, (long)file_name);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
chmod (char const *file_name, mode_t mask)
|
||||||
|
{
|
||||||
|
return _sys_call2 (SYS_chmod, (long)file_name, (long)mask);
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
close (int filedes)
|
||||||
|
{
|
||||||
|
if (filedes > 2)
|
||||||
|
__ungetc_buf[filedes] = -1;
|
||||||
|
return _sys_call1 (SYS_close, (int)filedes);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
dup (int old)
|
||||||
|
{
|
||||||
|
return _sys_call1 (SYS_dup, (int)old);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
dup2 (int old, int new)
|
||||||
|
{
|
||||||
|
return _sys_call2 (SYS_dup2, (int)old, (int)new);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
execve (char const *file_name, char *const argv[], char *const env[])
|
||||||
|
{
|
||||||
|
return _sys_call3 (SYS_execve, (long)file_name, (long)argv, (long)env);
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
fcntl (int filedes, int command, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start (ap, command);
|
||||||
|
int data = va_arg (ap, int);
|
||||||
|
int r = _sys_call3 (SYS_fcntl, (int)filedes, (int)command, (int)data);
|
||||||
|
va_end (ap);
|
||||||
|
return r;
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
fork ()
|
||||||
|
{
|
||||||
|
return _sys_call (SYS_fork);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
fstat (int filedes, struct stat *statbuf)
|
||||||
|
{
|
||||||
|
return _sys_call2 (SYS_fstat, (int)filedes, (long)statbuf);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
fsync (int filedes)
|
||||||
|
{
|
||||||
|
return _sys_call1 (SYS_fsync, (int)filedes);
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *
|
||||||
|
_getcwd (char *buffer, size_t size)
|
||||||
|
{
|
||||||
|
int r = _sys_call2 (SYS_getcwd, (long)buffer, (long)size);
|
||||||
|
if (r >= 0)
|
||||||
|
return buffer;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
getcwd (char *buffer, size_t size)
|
||||||
|
{
|
||||||
|
static char buf[PATH_MAX];
|
||||||
|
if (buffer)
|
||||||
|
return _getcwd (buffer, size);
|
||||||
|
return _getcwd (buf, PATH_MAX);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
getdents (int filedes, char *buffer, size_t nbytes)
|
||||||
|
{
|
||||||
|
return _sys_call3 (SYS_getdents, (int)filedes, (long)buffer, (long)nbytes);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
gid_t
|
||||||
|
getegid ()
|
||||||
|
{
|
||||||
|
return _sys_call (SYS_getegid);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
uid_t
|
||||||
|
geteuid ()
|
||||||
|
{
|
||||||
|
return _sys_call (SYS_geteuid);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
gid_t
|
||||||
|
getgid ()
|
||||||
|
{
|
||||||
|
return _sys_call (SYS_getgid);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
pid_t
|
||||||
|
getpid ()
|
||||||
|
{
|
||||||
|
return _sys_call (SYS_getpid);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
pid_t
|
||||||
|
getppid ()
|
||||||
|
{
|
||||||
|
return _sys_call (SYS_getppid);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* -*-comment-start: "//";comment-end:""-*-
|
||||||
|
* GNU Mes --- Maxwell Equations of Software
|
||||||
|
* Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
*
|
||||||
|
* This file is part of GNU Mes.
|
||||||
|
*
|
||||||
|
* GNU 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.
|
||||||
|
*
|
||||||
|
* GNU 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 GNU Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
getrusage (int processes, struct rusage *rusage)
|
||||||
|
{
|
||||||
|
return _sys_call2 (SYS_getrusage, (int)processes, (long)rusage);
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue