vms-2655: joint-e2e port link opts into the CRTL->RMS veneer + LIBVMSRMS$SHR (rung 3) - #1061
Merged
Merged
Conversation
…RMS$SHR (rung 3) build-joint-image.sh gains JOINT_CRTL_RMS_VENEER=1 (default 0, byte-identical otherwise), which composes rung 2's two-pass DECC$SHR veneer bootstrap (build-decc-veneer.sh) into the port-link recipe: pass 1 builds a bootstrap DECC$SHR to raise the OVMX producer graph through LIBVMSRMS$SHR, pass 2 rebuilds DECC$SHR with ALPHA_CRTL_RMS_USE so decc$fopen/fwrite/fread/fclose alias to the crtl_rms_stdio.c veneer instead of musl-POSIX. The final link adds --use LIBVMSRMS$SHR and stages LIBVMSRMS$SHR.EXE in OUTDIR alongside DECC$SHR/LIBOTS. Verified locally (docker + host LINK.EXE, ovmx-cross-alpha-vms:latest): - default (unset) build is byte-identical to before (zero UNDEF/MULDEF/ DEFERRED, same staged files). - JOINT_CRTL_RMS_VENEER=1 JOINT_MAIN=crtl_rms_test.c: DECC$SHR pass 2 logs the veneer wiring + sys$create/open/connect/put/get/close bound to LIBVMSRMS$SHR; the final joint_e2e.exe link is zero deferred/undef/muldef, EM_ALPHA/ET_DYN, and its own decc$fopen import binds to that same veneer-wired DECC$SHR producer -- the import-map chain proving the port image's fopen resolves to RMS, not musl-POSIX. Adds a toolchain-only CI leg (joint-e2e-alpha-crt0) exercising the veneer link with the same assertions; no qemu boot. The existing real-executive activation gates (run-module-gp-activation-alpha.sh's gate/crtl-rms-gate/ mf-gate) never set the new var, so they stay on the plain DECC$SHR path until the LLP64 width fix (vms-1fc) makes an RMS-routed fopen activation-safe on real /dev/vms -- that runtime proof is rung 4 (vms-f49). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FJZf62TMXxvy6fXzFQYfLQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
vms-2655):build-joint-image.shgains an opt-inJOINT_CRTL_RMS_VENEER=1(default 0, byte-identical otherwise) that composes rung 2's two-pass DECC$SHR veneer bootstrap (decc-veneer/build-decc-veneer.sh) into the port-link recipe — pass 1 raises the OVMX producer graph throughLIBVMSRMS$SHR, pass 2 rebuilds DECC$SHR withALPHA_CRTL_RMS_USEsodecc$fopen/fwrite/fread/fclosealias to thecrtl_rms_stdio.cveneer instead of musl-POSIX.--use LIBVMSRMS$SHRand stagesLIBVMSRMS$SHR.EXEin OUTDIR alongsideDECC$SHR/LIBOTS(the SYS$SHARE search-path set).joint-e2e-alpha-crt0) that buildscrtl_rms_test.cwith the veneer opted in and asserts: veneer-wired log line,sys$create/open/connect/put/get/closebound toLIBVMSRMS$SHRinside DECC$SHR's own pass-2 build, zero deferred/undef/muldef on the final port-image link, EM_ALPHA/ET_DYN, and the port image's owndecc$fopenimport binding to that same veneer-wired DECC$SHR producer.run-module-gp-activation-alpha.sh'sgate/crtl-rms-gate/mf-gate) never set the new var, so they stay on the plain DECC$SHR path. The runtime write-to-ODS-2 proof needs the LLP64 width fix (vms-1fc) and is rung 4 (vms-f49) — out of scope here.Verification (local, docker + host LINK.EXE,
ovmx-cross-alpha-vms:latest)JOINT_CRTL_RMS_VENEER=1 JOINT_MAIN=crtl_rms_test.c: DECC$SHR pass 2 logsmk_decc_shr: CRTL->RMS stdio veneer wired: decc$fopen/fwrite/fread/fclose -> ovmx_crtl_* (--use .../LIBVMSRMS$SHR.EXE)and bindssys$create/open/connect/put/get/closetoLIBVMSRMS$SHR.EXE; the finaljoint_e2e.exelink (post-crt0) is zero deferred/undef/muldef,%LINK-S-CREATED, .../joint_e2e.exe: EVAX/Alpha ET_DYN, readelf showsMachine: Alpha/Type: DYN; the image's owndecc$fopenimport binds to the veneer-wiredDECC$SHR.EXEproducer.Test plan
bash -nsyntax check on the modified scriptJOINT_CRTL_RMS_VENEER=1build produces the veneer-wiring + sys$* binding + zero-deferred/EM_ALPHA/ET_DYN evidence🤖 Generated with Claude Code
https://claude.ai/code/session_01FJZf62TMXxvy6fXzFQYfLQ