Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!rutgers!sri-spam!ames!ucbcad!ucbvax!decvax!decwrl!sun!amdcad!amd!intelca!mipos3!omepd!uoregon!hp-pcd!orstcs!johng From: johng@orstcs.UUCP Newsgroups: comp.arch Subject: Re: implementing shared libraries Message-ID: <242800001@orstcs> Date: Sat, 25-Apr-87 03:30:00 EDT Article-I.D.: orstcs.242800001 Posted: Sat Apr 25 03:30:00 1987 Date-Received: Wed, 29-Apr-87 00:45:51 EDT References: <12823@watnot.UUCP> Lines: 15 Nf-ID: #R:watnot.UUCP:-1282300:orstcs:242800001:000:866 Nf-From: orstcs.cs.ORST.EDU!johng Apr 25 01:30:00 1987 Apollo implements shared libraries. Each new window you create you 'inlib' the library you want. Things are linked at program invokation. I think the linking of the AEGIS (operating system) calls are also postponed until then also. This allows for some neat tricks to be played. You can overlay your own routines over or around the operating system calls. One example, I wanted to catch and log all mouse movements before the application program could munch on them, so I made my own version of the gpr_event_wait() which looked like the real thing to the application program. When it was called, it called the real gpr_event_wait(), logged the transaction, and returned the data. I could do this without modifying the application's source, or even recompiling since it was all done at invocation time. John Gregor {tektronix, hp-pcd}!orstcs!johng