Path: utzoo!attcan!uunet!world!madd From: madd@world.std.com (jim frost) Newsgroups: comp.unix.aix Subject: Re: AIX V3.1 (RS/6000) linker problems Message-ID: <1990Nov5.233058.23322@world.std.com> Date: 5 Nov 90 23:30:58 GMT References: <1990Oct25.024421.7418@onecom> <1052@nlsun1.oracle.nl> Organization: Saber Software Lines: 35 bengsig@oracle.nl (Bjorn Engsig) writes: >Article <1990Oct25.024421.7418@onecom> by john@baldur.uucp (John Brinegar) says: >| >|I have been having problems with the linker under AIX V3.1 (RS/6000). It >|seems that when linking a large executable (many libraries), the linker >|eats up all paging space and the bind is killed by signal 9. This is correct. In a different article someone asked if the 3001 patch corrected the problem. It does not. We haven't applied the 3002 patch yet. >Frequent readers of this group will know that the linker on AIX 3.1 is using >extreme amount of paging space. It also does much more for you than other >Unix linkers, like solving all references at once by having a complete symbol >table of all libraries. This isn't so much a function of their linker as of their linking conventions. The conventions allow shared libraries to be linked in without paging in very much of the executable you're linking, allowing for very fast startup times for executables which use shared libraries. The TOC linking convention is very elegant, but it does have its limitations. You cannot have, for instance, more than 2^14 (16384) global symbols (TOC table entries -- one TOC per global variable or global function) per function. As of the 3001 update (and I believe 3002) the linker cannot build more than one TOC per a.out, effectively limiting programs to 2^14 global symbols. This is a surprisingly low number given the effort that went into supporting large executables on the RS/6000. I have received no word on whether or not they plan to correct this deficiency. jim frost saber software jimf@saber.com