On Fri, May 1, 2020 at 4:49 PM Paul Ruizendaal <pnr(a)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.