On Thu, Mar 29, 2018 at 09:35PM -0500, Charles H. Sauer 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:
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.
 
Jack responded, credits Larry regarding AIX 1 & 2 and adds a little about AIX 3 re-implementation:
Larry was definitely the driving force behind shared library support in AIX on the RT. While I did some minor compiler optimization work in that timeframe, I didn't work on the linker, which was the traditional Unix "ld" implementation, ported by ISC. I don't remember what, if any, special work they may have done to support shared libraries.
 
I had more to do with the RS/6000 implementation. That linker had been written at Yorktown by Greg Chaiten (of information theory fame). It was highly optimized for fast loading with shared libraries. All load-time external references were collected into a Table of Contents that fit in a few contiguous pages. The rest of the executable was read-only, with pages that could be shared and reused by multiple processes.
--
joq