From: fitch@ittc.wec.com (Ken Fitch)
Newsgroups: comp.os.vms
Subject: PCA limitation / Unix "strip" for VMS
Keywords: PCA,strip
Date: 24 Jan 93 18:15:02 GMT
Organization: Westinghouse Electric Corp., ITTC, Pgh. PA.

The DECset Performance & Coverage Analyzer (PCA) is having trouble
digesting an executable with a large number of debug symbols.
When run it gives the message:

=================================================================
/user/krf/appr_bm> run testexec_pca

        VAX PCA Collector Version V4.0-80

PCAC> g
%PCA-E-INCDST, incorrect DST nesting in module RPDINIT. Datafile not set.
%PCA-I-NODATACOL, exiting with no data collection phase
=================================================================

(Note that the pathname prompt simply betrays my Unix orientation.)

When I say large executable, I mean (output cleaned up a little to
minimize linewrap):


USER3:[USER.KRF.APPR_BM]TESTEXEC_PCA.EXE;1  24-JAN-1993 11:53  VAX-11 Linker V05-13  Page  182

                                                 +----------------+
                                                 ! Image Synopsis !
                                                 +----------------+

Virtual memory allocated:     00000200 00FA81FF 00FA8000 (16416768. bytes, 32064. pages)
Stack size:                                             20. pages
Image header virtual block limits:                       1.        3. (    3. blocks)
Image binary virtual block limits:                       4.    19221. (19218. blocks)
Image name and identification:                    TESTEXEC_PCA 01
System component mask:                             00000010
	SYS$K_VERSION_PROCESS_SCHED                      1,80
Number of files:                                        35.
Number of modules:                                     820.
Number of program sections:                            877.
Number of global symbols:                             2282.
Number of image sections:                               95.
User transfer address:                            00D6E000
Debugger transfer address:                        00F6162F
Number of address fixups:                            60040.
Number of code references to shareable images:          72.
Image type:                                       EXECUTABLE.
Map format:        DEFAULT in file USER3:[USER.KRF.APPR_BM]TESTEXEC_PCA.MAP;63
Estimated map length:                             1231. blocks
                                              +---------------------+
                                              ! Link Run Statistics !
                                              +---------------------+

Performance Indicators                            Page Faults	CPU Time	Elapsed Time
----------------------                            -----------	--------	------------
    Command processing:                                   615	00:00:04.41	00:00:08.01
    Pass 1:                                              1452	00:00:11.72	00:02:39.97
    Allocation/Relocation:                                537	00:00:00.28	00:00:00.41
    Pass 2:                                            121712	00:02:12.56	00:08:24.92
    Map data after object module synopsis:               1333	00:00:02.46	00:00:04.54
    Symbol table output:                                   50	00:00:00.08	00:00:00.71
Total run values:                                      125699	00:02:31.51	00:11:18.56

Using a working set limited to 60000 pages and 137972 pages of data storage (excluding image)

Total number object records read (both passes):   141276
    of which 69547 were in libraries and 60481 were DEBUG data records containing 46019172 bytes
40943406 bytes of DEBUG data were written,starting at VBN 19785 with 26975 blocks allocated

Number of modules extracted explicitly             = 0
    with 747 extracted to resolve undefined symbols

2461 library searches were for symbols not in the library searched

A total of 55 global symbol table records was written

LINK/DEBUG/MAP=TESTEXEC_PCA/EXE=TESTEXEC_PCA.EXE/DEBUG=SYS$LIBRARY:PCA$OBJ.OBJ 
	TESTEXEC.OBJ,SETPAM.OBJ,TESTEXEC_PATCHES.OBJ,SIM$INC:[SIMEXEC]SIMEXEC/OPT,
	SIM$INC:[DATAPOOL]CLUSTERS_NOSHR/OPT,SIM$INC:[DATAPOOL]PSECT_MOD/OPT,
	LEVEL_:LINK_LIBRARIES/OPT,LEVEL_:GSMATCH/OPT,
	USER3:[USER.KRF.APPR_BM]DEFAULTS.OLB/LIBRARY

====================================================================================


The description of this error in the documentation says to submit
an SPR to DEC if the same module works with the regular debugger.
It seems to (I can "set module" to the module PCA complains about
if I use the normal debugger), and in any case, if I substitute 
a null version of that program, 
PCA simply complains about another one.  This implies that I'm
simply bumping up against some limit in PCA.  This may or may
not be fixable, but I'd rather not wait months or years for a fix.

The application which I'm trying to use PCA on is still growing
(it's in a development phase), so we'd still like to
have all the symbols in the subroutines for debugging purposes.
It takes a long time to recompile everything, so I'd rather not
do that if I can avoid it.

What I'd like to find out is:

	- is there a known workaround for the PCA problem?

	- is there something I can specify to LINK to tell it
	  to ignore debug symbols for a _subset_ of library modules?

	- is there a VMS equivalent of the Unix "strip" command
	  that I can apply to object files?  (Ideally, this
	  would also work on an object library on a selective
	  basis.)  For what I'm doing with PCA, I can "a priori"
	  determine that many of the modules don't need debug  
 	  symbols.  By giving PCA less to cope with, I could
	  presumably work around the problem.

	- could I create my own equivalent of "strip" by somehow 
	  setting the count of debug symbols in the object module 
	  header (or wherever) to zero?  If this is feasible, can
	  someone recommend a good starting point so I don't have
	  to develop this from scratch?

Thanks in advance,

Ken Fitch, fitch@ittc.pgh.wec.com
--
Kenneth R. Fitch
fitch@ittc.wec.com
uunet!ittc!fpb
(412)733-6435