LinxCoreModel is the Rust modeling workspace for LinxCore.
Project policy and verification entrypoints:
- contributor guidance:
CONTRIBUTING.md - security process:
SECURITY.md - workspace layout:
docs/project/layout.md - crosscheck gates:
docs/verification/crosscheck-gates.md - latest gate report:
docs/bringup/gates/latest.json
Current workspace contents:
isa: shared architectural types and trace contractself: static ELF loading for LinxISA user-mode programsruntime: guest runtime state and syscall shim scaffoldingfuncmodel: first functional engine pathcamodel: first stage-structured cycle engine pathtrace: commit JSONL andlinxtrace.v1emissioncosim: M1 JSONL lockstep protocol helpersdse: sweep and report generationlx-tools:lx-run,lx-cosim,lx-trace,lx-sweep
Current crate layout:
camodel:core/,frontend/,issue/,backend/,control/,decode/,trace/funcmodel:core/,exec/,memory/,syscalls/,trace/trace:linxtrace/,commit/,schema/cosim:protocol/,compare/,qemu/lx-tools: shared helpers incli/, thin binaries inbin/
The current implementation lands the full workspace shape, executable lx-*
surface, static ELF loading, runtime bootstrap, syscall allowlist scaffolding,
commit/pipeview emission, lockstep compare helpers, and a full table-driven
LinxISA v0.4 decoder sourced from a vendored copy of the canonical ISA JSON.
Current functional-engine status:
- decodes the full canonical
v0.4instruction corpus, including 16/32/48/64-bit forms - bootstraps a Linux-style user stack and places the initial stack pointer in
sp - executes a substantial user-mode scalar subset in Rust:
ALU/immediate ops,
Wvariants, compares, shifts, loads/stores,SETC,SETRET,J/JR,SSRGET/SSRSET, compressed scalar forms, and basic block/macro control flow - forwards the current user-mode syscall subset through a host shim:
read,write,eventfd2,epoll_create1,epoll_ctl,epoll_pwait,openat,close,lseek,fstat,futex,getcwd,dup3,fcntl,ioctl,pipe2,pselect6,ppoll,newfstatat,readlinkat,getrandom,prctl,madvise,membarrier,rseq,sigaltstack,set_tid_address,set_robust_list,setuid,setgid,setresuid,getresuid,setresgid,getresgid,uname,getppid,wait4,sysinfo,prlimit64,brk,mmap,munmap,mprotect,rt_sigaction,rt_sigprocmask,clock_gettime,getpid,getuid,geteuid,getgid,getegid,gettid,exit,exit_group - enforces guest page permissions for architectural loads/stores and syscall
copy-in/copy-out, including
mprotect-driven access changes - normalizes host errno values to Linux guest errno numbers before returning through the Linx Linux-user syscall ABI
- emits commit JSONL and
linxtrace.v1traces from the executing functional path
Still incomplete in this phase:
- many ISA classes remain unsupported in the functional executor, especially FP, atomics, wide HL forms, and full privileged behavior
- syscall ABI coverage is pragmatic bring-up coverage, not a complete Linux user ABI
futexcurrently implements the single-processWAIT/WAKEsubset only; there is no real waiter queue or multi-thread scheduler yetsysinfoandprlimit64currently expose deterministic single-process model values suitable for libc bring-up, not host-kernel passthroughsetxidcoverage is currently single-process identity-state emulation for libc startup and credential probes, not full Linux credential or threading semanticsgetrandomcurrently returns deterministic model-generated bytes so user-mode bring-up and regression traces stay reproducible across hostsprctl,madvise, andmembarriercurrently implement the small single-process subset needed for libc/thread-runtime bring-up, not the full Linux kernel surfacerseqcurrently supports deterministic single-thread register/unregister bring-up semantics and initializes the guest ABI fields the runtime is expected to readioctlcurrently implements deterministic tty-styleTIOCGWINSZ,TIOCGPGRP, andTIOCSPGRPbehavior for guest stdio fds onlyppollcurrently marshals guestpollfdarrays onto hostpoll(2)and ignores signal-mask effects beyond guest-memory validationpselect6currently marshals guestfd_setbitmaps onto hostpoll(2)and validates, but does not apply, guest signal maskseventfd2andepoll_*currently run through a deterministic user-mode shim: eventfd readiness is backed by internal counter state plus a pollable host pipe, and epoll wait reuses hostpoll(2)across registered guest fdswait4currently reports deterministic single-process-ECHILDsemantics after validating guest status/rusage pointers; there is not yet a modeled child-task tablesigaltstackcurrently tracks deterministic single-thread alternate-stack state for libc/runtime queries; it does not imply modeled signal delivery yet- bootstrap auxv now includes deterministic
AT_MINSIGSTKSZ,AT_PLATFORM,AT_HWCAP*,AT_CLKTCK, andAT_SYSINFO_EHDRentries for libc startup paths - cycle-accurate execution and QEMU lockstep remain separate follow-on work
Minimum structural check:
bash tools/ci/check_repo_layout.shFull repo-local gate pack:
bash tools/regression/run_crosschecks.shTo require the local CLI smoke on a previously built bring-up ELF:
bash tools/regression/run_crosschecks.sh --require-smoke