News for hackers. Stuff that matters.
Re:Restoration of First Edition Unix Kernel Sources by kps on Sunday September 13, 2015 @12:17PM (#10211841)

  > The data section must be nearly out of space.
It is for space, but the 11/20 didn't have split I/D. The specific answer¹ is ‘worse’:

  A second, less noticeable, but astonishing peculiarity is
  the space allocation: temporary storage is allocated that
  deliberately overwrites the beginning of the program,
  smashing its initialization code to save space.  
That is, use of the ospace() ‘array’ overlaps the beginning of main().

¹ https://www.bell-labs.com/usr/dmr/www/primevalC.html

Re:Restoration of First Edition Unix Kernel Sources by acqq on Sunday September 13, 2015 @02:04PM (#10212200)
So it is a kind of "overlay" where the data buffer overlaps the piece of the code. I find the explanation of jhallenworld is correct.
Re:Restoration of First Edition Unix Kernel Sources by kps on Sunday September 13, 2015 @03:04PM (#10212433)
In a sense, but ‘overlay’ generally means more than just re-using memory — it's reading in different sections of (usually) code in place of others; in modern terms, it's sort of like paging, but structured explicitly and (usually) manually at build/link time.

PDP-11 Unix did eventually support overlays, but I don't think they were widely used. The ‘Unix way’ would be to have (as this C compiler does) separate programs run consecutively with intermediate state in temporary files.

Re:Restoration of First Edition Unix Kernel Sources by acqq on Sunday September 13, 2015 @03:27PM (#10212493)
> it's sort of like paging, but structured explicitly and (usually) manually at build/link time.

And this is "a poor man's" overlay of the data buffer over the piece of the code, specified explicitly and manually at the time of writing the program (the "bigger" overlay mechanisms I know of are also specified at the time of writing the program, not at the time of build or link). As the "scratch" area was overlaid, nothing has to be loaded, that's the only difference to the typical overlay where more often some code would also be overwritten over some other code. The other difference to the "classical," "bigger" overlay is that this was done exactly once over the life of the program.