Date: Thu, 23 Feb 2023 18:38:25 +0000
Subject: [TUHS] Re: Origins of the SGS (System Generation Software)
and COFF (Common Object File Format)
For the sake of timelines:
June 1980 - Publication date on the front page of the 3.0 manual in which the utilities
are still very much research for PDP-11 and 32V-ish for VAX where distinctions matter.
June 1981 - Publication date on the front page of the 4.1 manual in which the man-pages
very much refer to all of this as the "3B-20 object format"
June 1982 - Publication date on the front page of the 5.0 manual by which point these
same pages had been edited and extended to describe the "common object file
format"
Additions at the 1981 release include dump(1), list(1), and the ld-prefixed library
routines for managing these object files. These likewise persist in 5.0, SysV, and beyond
as COFF-related tools.
So this puts the backstop of what would become COFF at at least '81.
- Matt G.
The surviving source code for SysV R2 supports this timeline:
- The header files (start from
https://github.com/ryanwoodsmall/oldsysv/blob/master/sysvr2-vax/src/head/a.…) have
dates of late ’82, early ’83.
- The source for exec() has a comment that refers to the 4xx magic formats as “pre 5.0
stuff”.
- The COFF format headers are #ifdef’ed for the 3B series.
Interestingly, the lowest magic numbers in the 5xx series are not for the 3B, but for the
“Basic-16” and for the “x86”. That led me to this paper:
https://www.bell-labs.com/usr/dmr/www/otherports/newp.pdf
It seems that the roots of COFF go back to the initial portability effort for V7 and in
particular the 8086 port (which was done in 1978 according to the paper).