On Thu, Mar 29, 2018 at 8:34 PM, Charles H. Sauer <sauer@technologists.com> wrote:


On Mar 29, 2018, at 9:10 PM, Larry McVoy <lm@mcvoy.com> wrote:

On Thu, Mar 29, 2018 at 08:35:50PM -0500, Charles H. Sauer wrote:


On Mar 29, 2018, at 7:40 PM, Clem Cole <clemc@ccc.com> wrote:



On Thu, Mar 29, 2018 at 5:37 PM, Paul Winalski <paul.winalski@gmail.com <mailto:paul.winalski@gmail.com>> wrote:
Also, when was symbol preemption invented?  Traditional shared library
designs such as in IBM System/370, VMS, and Windows NT doesn't have
it.  As one who worked on optimizations in compilers, I came to hate
symbol preemption because it prohibits many useful optimizations.  ELF
does provide a way to turn it off, but it's on by default--you have to
explicitly declare symbols as protected or hidden via source language
pragmas to get rid of it.

???Unless it came from a place like Sun or Sun where Larry or Charlie might remember, I suspect that Steve Johnson is probably best to answer this part of your question -- assuming that it was created during his time in the compiler team in Summit.

But, I don't remember when it came on to the scene frankly because it did not effect me.   I think it might have been in the original COFF which came from those days, but its possible its from one of the many bastardization of COFF that occurred after its birth.    I don't remember it being in any of the a.out flavors and I don't think macho has it.

As an OS guy, all I remember about it frankly is you and some the compiler folks b*tching about it as a misfeature of UNIX at lunch ;-)

???
???


I???m not sure if Clem meant to type ???Sun or IBM where Larry or Charlie??? ???

I don???t readily find any documentation or history older than AIX 4.2, well beyond my tenure, but I believe we had shared libraries from the very beginning with AIX on the RT, presumably based on a.out. My recollection is that this was driven by (late) Larry Loucks, with assistance from Jack O???Quin and several of the ISC folks.

What was the underlying technology that enabled them in AIX?

I didn’t pay much attention to this at the time, and don’t remember specifics. 

Given the change in focus from RT to RS/6000 in the transition from AIX 2 to AIX 3, and all of the other changes that occurred in AIX 3, I assume we started with something very primitive in AIX 1 and re-implemented for AIX 3. 

Wikipedia says AIX v3 did shared libraries in 1990. SunOS 4.0 had them in 1988, also from wikipedia (though I can confirm 4.0 had shared libraries now). I recall vaguely working with them in 1991 when porting OI from SunOS to AIX 3.mumble, iirc. xlC was the weirdest C++ compiler at the time (which effectively means it wasn't cfront based). But I can't say with absolute certainty....

I’ve sent Jack a note about this discussion. Unless he or ISC folks chime in, or I find someone else to comment or provide documentation, I probably can’t add more. Rick Simpson wrote an article for Byte that might have something about this. He probably contributed to the initial design and (presumed) re-design.

I'd love to see something more definitive than my memory at the time + vague backup from Wikipedia...  http://ps-2.kev009.com/rs6000/aix_ps_pdf/programming/using_shared_libraries.pdf is a primary source, but talks of AIX 4.1

Warner