Repository navigation
CC/370 v1.6.2
CC/370 (cc370) 1.6.2 is a patch release of the host-native MVS 3.8j toolchain. It fixes ld370 for a common area (COM) that has the name of a control section (CSECT). The compiler, the assembler and the other tools are unchanged from 1.6.1 apart from the version they report. It is a drop-in for 1.6.1; the requirements are unchanged (LIBC/370 >= 2.3.0, maclib370 >= 1.0.0).
Read this first: what a caller can see
- Who needs it: anyone who links objects in which one name is a
CSECTin one object and aCOMin another, for example separately compiled routines sharing an external variable that one of them initialises. When an object with theCOMcame after the one with theCSECT,ld3701.6.1 and earlier turned theCSECTinto an empty common area. Its data, an initial value such asDC F'100', was gone, and the link still ended with rc 0. - What 1.6.2 does: the
CSECTkeeps its place and its data however the objects are ordered, as the IBM linkage editor does. For the orders that link, measured against it, the module text is byte-identical. - A new error: a
COMlonger than theCSECTof its name now stops the link, with rc 1, both lengths named and no module written. The IBM linkage editor reports the same case as an error (IEW0552). - Relink a module built with an earlier
ld370from such objects.
Fixed: before and now
| objects, in link order | 1.6.1 | 1.6.2 |
|---|---|---|
COUNT COM, COUNT CSECT with DC F'100' |
SD with 100 | SD with 100 |
COUNT CSECT with DC F'100', then COUNT COM |
empty common area, rc 0 | SD with 100 |
COUNT COM, COUNT CSECT, COUNT COM |
empty common area, rc 0 | SD with 100 |
COUNT CSECT (4 bytes), COUNT COM (8 bytes) |
common area of 8, data lost | rc 1, IEW0552, no module |
The README and the User's Guide also tell Linux users what to do when brew install stops with "Broken pipe" (a Homebrew issue): set HOMEBREW_GITHUB_API_TOKEN, or run it again.
Install
curl -fsSL https://github.com/mvslovers/cc370/releases/latest/download/install.sh | shWith Homebrew (macOS, Linux):
brew trust mvslovers/tap # once
brew install mvslovers/tap/cc370 # cc370 and, as its dependencies, libc370 and maclib370
brew upgrade mvslovers/tap/cc370 # an existing installOr the pieces, all listed in SHA256SUMS:
| file | what |
|---|---|
cc370-1.6.2-{darwin,linux}-{amd64,arm64}.tar.gz |
the toolchain for one host |
cc370_1.6.2_{amd64,arm64}.deb |
Debian/Ubuntu; depends on libc370-dev (>= 2.3.0) and maclib370 (>= 1.0.0) |
cc370-1.6.2.{x86_64,aarch64}.rpm |
Fedora/RHEL; requires libc370-devel and maclib370 the same way |
install.sh |
the installer above |
ml01-0001-0.pdf, ml01-0002-0.pdf |
CC/370 User's Guide and Command Reference, Draft edition, for 1.6.2 |
Full changelog
Fixed
ld370: a common area of the name of a control section binds to the
control section, in either order (#941). When an object withNAME COM
came after one withNAME CSECT, ld370 turned the CSECT into a common area:
its text was dropped -- an initial value such asDC F'100'was gone -- and
every reference went to an empty area, rc 0. A common before the CSECT was
already right. Now the CSECT keeps its place and its data however the
objects are ordered, as the IBM linkage editor does (measured: identical
text). A common longer than the control section of its name is an error,
as there (IEW0552): ld370 names both lengths, ends with rc 1 and writes no
module.
Documentation
- Homebrew on Linux: "Broken pipe". Homebrew 7 looks for macOS keychain
credentials on Linux too, and that lookup sometimes endsbrew install
with "Broken pipe". The README and the User's Guide say what helps: set
HOMEBREW_GITHUB_API_TOKENto any GitHub token with read access, or run
the command again.