Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!cbosgd!ucbvax!CORY.BERKELEY.EDU!dillon From: dillon@CORY.BERKELEY.EDU.UUCP Newsgroups: comp.sys.amiga Subject: Re: Run-time named library vectors... suggestion for 1.3 Message-ID: <8706062051.AA18605@cory.Berkeley.EDU> Date: Sat, 6-Jun-87 16:51:00 EDT Article-I.D.: cory.8706062051.AA18605 Posted: Sat Jun 6 16:51:00 1987 Date-Received: Sun, 7-Jun-87 09:50:13 EDT Sender: daemon@ucbvax.BERKELEY.EDU Lines: 43 > What about load speed? AmigaDOS is already pretty slow at loading >executables, and doing run-time linking would presumably make it slower. >You'd probably want to make a trade-off between putting things in >run-time libraries and in regular libraries. Load speed isn't a problem. No relocation need be done at all, since all references have already been resolved to a single vector location (containing a jump instruction). Thus, you simply go linearly through the function-names list, find the vector, and stick it in the proper vector table slot. Assuming a hash based system-library-vector-names-list, you could have 500 DIFFERENT names and you still wouldn't notice the load lag. > Again, for the sake of saving disk space, you probably want to >make a tradeoff between putting stuff in these libraries and in regular >compile-time libraries. You wouldn't, for example, necessarily put >the entire ANSI C standard library in one of these things; it would >take up a chunk of the Workbench disk with many functions never being used. Well, for starters, you would want all the current library vectors in... for all the amiga libraries (they can still be disk based, with the code not necessarily loaded into RAM... the *system* still has a notion of vector groups). It would be nice if most of the C library were also implemented... perhaps those functions which do not depend on STDIO (like strcmp, etc...). Eventually, I would like to see STDIO comletely implemented. > Another point: the new linker should also check the resultant >executable to make sure unresolved function calls would actually be >resolved by existing library functions (presumably the linker could >get a list of names of library functions from Exec somehow). If the >function would not be resolved in this fashion, then an unresolved >linker error message should be printed. This is not really necessary, >since the loader would do the same thing, but it would be a handy >service (since the linker could provide more complete information >about where the symbol was unresolved than the loader.) Right, but since this would limit what you are linking to your current machine (either that, or have lots of namelists lying around), you want an option to disable it. ... better, make it a warning message only. The system will abort a LoadSeg() if it can't find a vector name. -Matt