Skip to content

vms-65a: the real xgcc driver compiles AND links hello.c on OVMX/Alpha (system() via LIB$SPAWN, $CREPRC on Alpha, getcwd, LINK default search) - #1792

Merged
baron-3dl merged 17 commits into
mainfrom
work/vms-65a-xgcc-link
Oct 19, 2026
Merged

baron-3dl merged 17 commits into
mainfrom
work/vms-65a-xgcc-link

Conversation

@baron-3dl

@baron-3dl baron-3dl commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

The real xgcc driver (host alpha-dec-vms) compiles and links a C program unaided on OVMX/Alpha: cc1, as, the port's ld wrapper (system() -> LIB$SPAWN -> DCL LINK -> LINK.EXE); DCL DUMP of HELLO.EXE equals the cross driver's image; RUN prints the line, status 1.

OVMX surface walls fixed (nothing in GCC/binutils):

  • DEC C system(): LIB$SPAWN, bound as a real import of the RMS-backed DECC$SHR (crtl_process.c, --use LIBVMS$SHR); musl's clone-based system() was ENOSYS.
  • $CREPRC/LIB$SPAWN create subprocesses on Alpha: the task fork comes from libvmssys (vms_kif_task_fork), the executive registers the child (VMS PID); it returned SS$_UNSUPPORTED (fork was a host-absent stub).
  • DCL fed over a mailbox ends with the last command's status (a failed command was a success to its creator).
  • DEC C getcwd(buf,size,vms_flag) returns the executive's default directory (VMS or Unix form), not the substrate's "/".
  • LINK.EXE default /SYSLIB /SYSSHR search (+ /NOSYSLIB /NOSYSSHR) with host tests.
    Gate: xgcclink-gate, selftest with 10 negative controls; system() good/bad command asserted in the guest.

🤖 Generated with Claude Code

@baron-3dl
baron-3dl force-pushed the work/vms-65a-xgcc-link branch 2 times, most recently from b026872 to 9c66ac2 Compare October 18, 2026 21:52
baron-3dl and others added 16 commits October 19, 2026 00:37
…VMX/Alpha (cc1, as, ld -> DCL LINK -> LINK.EXE); LINK's default /SYSLIB /SYSSHR search

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…E.a)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…slated: filed separately), -L Unix style

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…r reading walls

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nd returns the VMS condition value; the port's ld wrapper links through it (musl system()'s clone was ENOSYS)

The gate runs a good and a bad system() command first (rc odd / SS$_ABORT).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…vation), not a private spawn; the command's VMS status comes back

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…) (musl's decorated system.o also defines decc$system)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…-backed DECC$SHR (crtl_system.c, linked --use LIBVMS$SHR); decc$system rebound in place

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…/ LIB$SPAWN create subprocesses on Alpha (they returned SS$_UNSUPPORTED: fork was a host-absent stub)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…system() reported a failed command as success); gate shows the options file and cwd

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…utive-registered by $CREPRC), not DECC$SHR; DEC C getcwd returns the process default directory (VMS or Unix form) the options file needs

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@baron-3dl
baron-3dl force-pushed the work/vms-65a-xgcc-link branch from 9c66ac2 to 3ab91ec Compare October 19, 2026 00:37
@baron-3dl baron-3dl changed the title vms-65a: the real xgcc driver compiles AND links hello.c on OVMX/Alpha vms-65a: the real xgcc driver compiles AND links hello.c on OVMX/Alpha (system() via LIB$SPAWN, $CREPRC on Alpha, getcwd, LINK default search) Oct 19, 2026
… (release cuts pin it) and is declared unwired for the host census

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@baron-3dl
baron-3dl added this pull request to the merge queue Oct 19, 2026
Merged via the queue into main with commit 17a1985 Oct 19, 2026
176 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant