Repository navigation
CC/370 v1.4.0
CC/370 (cc370) 1.4.0 is a minor release of the host-native MVS 3.8j toolchain. The driver no longer links a separate crt0.o: the C startup @@CRT0 now comes from libc.a by automatic library call. This needs LIBC/370 (libc370) >= 2.3.0, which is where the startup moved into the archive. Compiling, assembling and every other command line behave as in 1.3.1. With LIBC/370 2.3.0 or later it is a drop-in; install.sh picks the newest LIBC/370 that accepts this CC/370 (2.3.1 today).
Read this first: what a caller can see
- A link through the driver (
cc370 foo.c -o foo) needs LIBC/370 >= 2.3.0. Against an older LIBC/370,mainfails to link because@@CRT0is unresolved. The packages enforce the floor: the.debhasDepends/Breaksand the.rpmhasRequires/Conflictson LIBC/370 2.3.0. To upgrade an existing install, runinstall.shagain orbrew upgrade; either brings in the matching libc370. @@CRT0no longer has to sit at offset 0 of the load module. The directory entry points to it wherever it lands (0x80 for a plain hello world), andld370 --packreads a bare member's entry from its CESD.- A link that calls
ld370directly with its own object list is unaffected.
Changed: before and now
| 1.3.1 | 1.4.0 | |
|---|---|---|
| startup on a driver link | crt0.o named on the link line, first in the module |
@@CRT0 pulled from libc.a by autocall, entry set in the directory |
| LIBC/370 required | >= 2.1.0 | >= 2.3.0 |
Install
curl -fsSL https://github.com/mvslovers/cc370/releases/latest/download/install.sh | shinstall.sh asks the GitHub API for the release lists, which allows 60 requests an hour per address. When that is used up, it says so, names the minutes until the reset and stops with rc 1. Retry later, set GITHUB_TOKEN, or name the releases with CC370_VERSION= and LIBC370_VERSION=. (The install.sh first attached to this release reported that case as "no LIBC/370 release fits" and installed CC/370 alone; it was replaced on 2026-10-05.)
With Homebrew (macOS, Linux):
brew trust mvslovers/tap # once
brew install mvslovers/tap/cc370 # cc370 and, as its dependency, libc370
brew upgrade mvslovers/tap/cc370 # an existing installOr the pieces, all listed in SHA256SUMS:
| file | what |
|---|---|
cc370-1.4.0-{darwin,linux}-{amd64,arm64}.tar.gz |
the toolchain for one host |
cc370_1.4.0_{amd64,arm64}.deb |
Debian/Ubuntu; depends on libc370-dev (>= 2.3.0) |
cc370-1.4.0.{x86_64,aarch64}.rpm |
Fedora/RHEL; requires libc370-devel the same way |
install.sh |
the installer above |
ml01-0001-0.pdf |
CC/370 User's Guide, Draft edition |
ml01-0002-0.pdf |
CC/370 Command Reference, Draft edition |
The two manuals were added to this release on 2026-10-07, together with their lines in SHA256SUMS; the lines of the other files are unchanged. They describe CC/370 1.4; what is marked "From CC/370 1.5.0 on" (-mrent) is not in this release. The Draft edition still lacks the figures whose output is captured on MVS.
Full changelog
Changed
- The link no longer names
crt0.o; it needs LIBC/370 >= 2.3.0
(libc370#159). Since LIBC/370 2.3.0 the startup@@CRT0is a member of
libc.a, andmain's stub refers to it, so the automatic library call
pulls it like any other routine. The driver's startfile is empty, and the
packages require LIBC/370 2.3.0 (.debDepends/Breaks,.rpm
Requires/Conflicts). With an older LIBC/370 amainwould not link.
@@CRT0no longer has to sit at offset 0: the directory's entry points to
it, andld370 --packtakes a bare member's entry from its CESD (#850).