nanofil/survey/glibc/mixed.nix
User glibc with some of its units compiled by nanofil, and programs run against it and against the stock one (docs/zsys.md, *Running nanofil's glibc*). By hand, not CI: the glibc build takes a while.
nix build -f nanofil/survey/glibc/mixed.nix check -o /tmp/glibc-mixed-check nix build -f nanofil/survey/glibc/mixed.nix glibc -o /tmp/glibc-mixed
glibc is the staging toolchain's own filc-glibc, rebuilt with one change: CC is a wrapper that, for each unit named in units (paths under the build directory, such as string/strlen.os), compiles the preprocessed unit with nanofil (opt, -O by default) and assembles it with GNU as over filcc's object; every other compile is filcc's. The units may be ordinary .c files or the syscall stubs make-syscalls.sh pipes in on stdin. glibc's own make then links libc.so from them. Each unit nanofil compiles is listed in $out/nanofil/compiled, any it fails on (which keep filcc's object) in $out/nanofil/failed.
check builds GNU hello and the programs in run/ with filcc, against the stock glibc, and runs each twice: as built, and with LD_LIBRARY_PATH naming this glibc's lib, which the loader searches before the RUNPATH. It fails unless the second run loads this glibc's libc.so; $out/verdict says whether stdout, stderr and the exit status of every invocation agree, and $out/diff shows where they do not.
| repo | default ../../.. |
| units | default ./run/units.txt |
| opt | default "-O" |