home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.os.vms
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!sdd.hp.com!swrinde!elroy.jpl.nasa.gov!decwrl!deccrl!news.crl.dec.com!dbased.nuo.dec.com!e2big.mko.dec.com!quark.enet.dec.com!lionel
- From: lionel@quark.enet.dec.com (Steve Lionel)
- Subject: Re: ballooning EXE size
- Message-ID: <1992Dec29.180603.7743@e2big.mko.dec.com>
- Lines: 44
- Sender: usenet@e2big.mko.dec.com (Mr. USENET)
- Reply-To: lionel@quark.enet.dec.com (Steve Lionel)
- Organization: Digital Equipment Corporation, Nashua NH
- References: <01GSUT89O7JK000J0I@XRT.UPENN.EDU>
- Date: Tue, 29 Dec 1992 18:06:03 GMT
-
-
- In article <01GSUT89O7JK000J0I@XRT.UPENN.EDU>, BUHLE@XRT.UPENN.EDU
- ("E. Loren Buhle, Jr. [-662-3084]", 215) writes:
- |>
- |>I have a problem with the size of an executable going from ~1,000 blocks to
- |>something on the order of 75,000 blocks.
- |>
- |>What am I doing? I am charged with writing a small interface to some existing
- |>FORTRAN code. I have no control over the existing FORTRAN code and can only say
- |>that it makes extensive use of VAX-FORTRAN Structure/record/map statements. I
- |>don't own the large body of FORTRAN code and really don't relish the thought of
- |>rewriting it...
- |>
-
- Hi, Loren...
-
- I suspect what is happening is that you are crossing over the ISD_MAX linker
- boundary; the number of image sections above which the linker stops creating
- demand-zero image sections. If this happens, the linker will create
- copy-on-reference image sections for any new read/write data it sees,
- regardless of whether or not it is uninitialized, thus making your image big.
- To see if this is happening to you, look at the linker map for the number of
- image sections, shown in the summary at the end. If this is above 95, you're
- probably seeing this problem.
-
- The VAX FORTRAN release notes contain a section on how to deal with this.
- The most important thing is to use the linker COLLECT option statement to
- collect all the read/write PSECTs into a single cluster; or rather, two
- clusters if possible, one for uninitialized storage and one for initialized
- storage.
-
- If your local arrays are data-initialized to zero, remove the static
- initialization; replace it with a call to OTS$MOVE5 if needed. Consider using
- COMMON for your scratch storage if you know it won't be used by more than one
- routine at a time. Also, a forthcoming release of Fortran for OpenVMS VAX
- will have an AUTOMATIC statement which will allocate the local array on
- the stack, saving image space (but it won't be zero-initialized).
- --
-
- Steve Lionel lionel@quark.enet.dec.com
- SDT Languages Group
- Digital Equipment Corporation
- 110 Spit Brook Road
- Nashua, NH 03062
-