Skip to content

CC/370 v1.6.2

Choose a tag to compare

@github-actions github-actions released this 13 Oct 18:53
· 9 commits to main since this release
7b7506e

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 CSECT in one object and a COM in another, for example separately compiled routines sharing an external variable that one of them initialises. When an object with the COM came after the one with the CSECT, ld370 1.6.1 and earlier turned the CSECT into an empty common area. Its data, an initial value such as DC F'100', was gone, and the link still ended with rc 0.
  • What 1.6.2 does: the CSECT keeps 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 COM longer than the CSECT of 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 ld370 from 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 | sh

With 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 install

Or 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 with NAME COM
    came after one with NAME CSECT, ld370 turned the CSECT into a common area:
    its text was dropped -- an initial value such as DC 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 ends brew install
    with "Broken pipe". The README and the User's Guide say what helps: set
    HOMEBREW_GITHUB_API_TOKEN to any GitHub token with read access, or run
    the command again.