Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!amdahl!ames!ll-xn!husc6!ut-sally!bcm!svedberg!rick From: rick@svedberg.bcm.tmc.edu (Richard H. Miller) Newsgroups: comp.lang.c Subject: Re: linkers (was MAJOR ANSI C FLAW) Message-ID: <414@uni2.bcm.tmc.edu> Date: Mon, 2-Nov-87 17:43:38 EST Article-I.D.: uni2.414 Posted: Mon Nov 2 17:43:38 1987 Date-Received: Fri, 6-Nov-87 04:23:02 EST References: <1132@gilsys.UUCP> <1246@bsu-cs.UUCP> <6543@brl-smoke.ARPA> <1678@geac.UUCP> Sender: Unknown@bcm.tmc.edu Lines: 19 Keywords: linkers name-length Summary: linkers & upgrades In article <1678@geac.UUCP>, daveb@geac.UUCP writes: > > Actually its fairly easy to change a linker (you add a record type, > however un-unix-like that might sound) > What is hard is doing it *quickly*. You have to wait (on average) > about three releases before dropping support for the old stuff. > Actually, you probably will not ever be able to drop 'old' stuff. In the mainframe environment I use (OS-1100), we seem to usually get around this by having 'new' language compilers output relocatable files with version numbers in the header. (In this case, 'old' relocatable files would have a lower version number or non-existent version number in them). The linker is smart enough to understand that it is working with old style code and uses the rules established for them to build executable code. Thus we can link in relocatable modules many years old without having to recompile them. (We have some relocatable modules which haven't been compiled for 10 years). This seems like a useful solution to allow the use of 'old' code and still add functionality and take advantage of newer techniques, languages, etc.)