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. 

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.