From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=BAYES_00,INVALID_DATE, MSGID_SHORT,REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!cs.utexas.edu!uunet!seas.gwu.edu!mfeldman From: mfeldman@seas.gwu.edu (Michael Feldman) Newsgroups: comp.lang.ada Subject: Re: Reducing size of Ada's EXE files Message-ID: <3049@sparko.gwu.edu> Date: 15 Apr 91 17:16:32 GMT References: <437@wrdis01.af.mil> <1991Apr12.235101.7245@jpl-devvax.jpl.nasa.gov> Reply-To: mfeldman@seas.gwu.edu () Organization: The George Washington University, Washington D.C. List-Id: In article <1991Apr12.235101.7245@jpl-devvax.jpl.nasa.gov> larryc@poe.jpl.nasa.gov (Larry Carroll) writes: >What most of us complain about is the amount of code that gets linked into an >executable which will never be executed. On DEC Ada, for instance, whenever >you used a subprogram from a package, you got the whole package linked in. >So if the subprogram was 3 KBytes & the package was 3 MBytes, you got a >1000 times as much code in your executable. Hmmm. After all these years, DEC Ada doesn't have an optimizer that removes unused subprograms? Are you really sure of this? > >Agreed, it takes a smart linker to know just what part of a package you need. >For instance, any variables global to a package which are used by the desired >subprogram will need to be linked in. Any initialization code you include at >the end of the package, & all the subprograms & global variables they use, >must be linked. And so on. But eventually such smart linkers must become >available if Ada is to compete successfully with other languages. > >Anyone know which vendors supply such linkers? Three I am familiar with are the TeleSoft, Meridian, and Janus/Ada families. Indeed they throw away unused subprograms. In my experience, invoking this global optimization, as it's usually called, requires both compiling and linking with a command-line switch set, because preparing for and doing this optimization takes time and space, and one doesn't want to do it unnecessarily. It's hard to imagine that, this far into the lifetimes of the prevalent Ada compiler families, their vendors haven't given at least _some_ attention to this. What's the experience in netland? (Before answering "my compiler won't do this" you might do well to read the documentation...) Mike Feldman