On Fri, May 1, 2020 at 4:49 PM Paul Ruizendaal <
pnr@planet.nl> wrote:
Reading some more stuff about the road from 7th Edition to 8th Edition, this time about debuggers.
My current understanding is as follows:
- On 6th edition the debugger was ‘cdb’
One of the early USENIX tapes has a copy of ddt, which used the DEC DDT syntax from the PDP-10 and PDP-11s. I don't remember who created it. Might have been Harvard or Cooper-Union. I'm not sure I ever bothered to learn cdb, as we had ddt at CMU. What I don't remember is if it ran on Fifth Edition.
- On 7th edition it was ‘adb’, a rewrite / evolution from ‘cdb’
Mumble -- IIRC adb was an attempt at being common between the PDP-11 and the Interdata. Heavy use of the pre-processor. Typedefs did not get exist. Steve Johnson should chime in here. I thought it was a new code base.
Again, IIRC ddt did not just recompile on V7 and I needed something fast, as I was trying to write what would become a 68000 backend for the C compiler, so I just learned adb and never looked back until dbx.
- In 32V a new debugger appears, ‘sdb’.
I thought adb was still in 32V also, adb was definitely in the BSD 4.x codebase.
Its code seems a derivative from ‘adb’, but the command language is substantially reworked and it uses a modified variant of the a.out linker format - in essence the beginnings of ‘stabs’. Of course the compiler, assembler, linker and related tools all emit/recognize these new symbol table elements.
- The July 78 file note by London/Reiser does not mention a reworked debugger at all; the 32V tape that is on TUHS has ’sdb' files that are dated Feb/Mar 1979. This stuff must have been developed between July 78 and March 79.
- In the SysIII and 3BSD code on TUHS (from early 80 and late 79 respectively) the stabs format is more developed. For SysIII it is ‘VAX only’. With these roots, it is not surprising that it is also in 8th Edition.
Don't forget Mark Linton's thesis, dbx (which today has become gdb). I thought that was part of the original 4.1 (FastVax) tape; as part of the new compilers from Susan Graham's students. It certainly was part of 4.1c/4,2 as he had left for Stanford by then. [Note to Warren, we should put 4.1 in the browsing tree. The kernel is different enough from 4.0 and does have new utilities, although it was not nearly as different as 4.1c. The reality is until 4.2BSD came out with the networking support, most Vaxen running BSD were 4.1 not 4.0 based.
FWIW: Does anyone know if dbx ended up 8 or 9th - Norman/Rob?
I also thought it was someone in Graham's team that had added support for long identifiers. Mary Ann did you remember/can you think of who that might have been? But after that work was completed, the updated UCB compilers went back to MH at some point, what changed were folded in I do not know.
And of course, Steve started working on his new generation of compilers at USG (PCC2), which would land in the System V stream.
Two questions:
(1) According to Wikipedia the original author of the stabs format is unknown. It also says that the original author of ‘sdb’ is unknown. Is that correct, is the author really unknown?
I don't remember, but it is possible this was UCB work that went back to Bell.
BTW: wnj started out as a Graham student. His fingers were on a number of things (I think such as the Pascal subsystem in 1 and 2 BSD). It is possible he did something like the long identifiers, I just don't remember, when they went into the system or who did it. I thought that was with the Vax, as the compilers were pressed for code (address) space on the 16-bit systems.
(2) As far as I can tell, the ’sdb’ debugger was never back ported to 16 bit Unix, not in the SysIII line and not in the 2.xBSD line. It would seem to me that the simple stabs format of 32V would have lent itself to being back ported. Is it correct that no PDP11 Unix used (a simple) stabs tool chain and debugger?
I don't know who would have done the work, other than someone like Bostic (and he would have only done that if he needed it). When did the 2.xBSD line pick up the long identifiers? Keith must have had something as the Vax code started to assume them pretty soon after the feature was there. FWIW: until the Linton's source debugger, the debugger I remember that most of us used at UCB had been adb, not sdb.
The truth is that once the Vaxen showed up at UCB, most of the grad-students like Mary Ann or myself all had accounts on those systems, and things like the Cory Hall 70 were mostly undergrad machines being used for teaching. So most of the new work was being done in the Vax. Bostic got his start as an undergrad moving things back from the Vax to the machine(s) in Cory and Math/Statistics (which were 11's). But the machines being used for new features were definitely the Vax, so all of Graham's students in languages were doing compiler work (or Linton's debugger) was all vax based.