


symcompact(1)	    UNIX Programmer's Manual	    symcompact(1)



NAME
     symcompact - string compaction for object files

SYNOPSIS
     symcompact [ object_name ... ]

DESCRIPTION
     symcompact reduces the symbol table size of an executable
     file.  This is done by removing unnecessary overlay transfer
     vectors (text symbols beginning with a tilde).  In a nono-
     verlaid program there is no need for both the underscore
     (_foo) and tilde (~foo) text symbol and only the underscore
     form is kept.  For overlaid programs if the symbol is in the
     base segment the tilde form is not needed and again only the
     underscore form is preserved.  Running symcompact typically
     reduces the kernel symbol table size by 250 or so symbols.

     It is possible to run both symcompact and strcompact to
     achieve an even higher degree of symbol and string table
     compaction.  The normal sequence is to run symcompact first
     followed by strcompact.  If symcompact runs out of memory it
     will be necessary to reverse the order and run symcompact a
     second time - see the BUGS note below.

     The user must have write permission to the object/executable
     file.

     symcompact writes to _s_t_d_e_r_r the count of symbols removed
     from the symbol table.

     symcompact exits 0 if successful, and >0 if an error
     occurred.

SEE ALSO
     symcompact(1), symorder(1)

BUGS
     This program can partially negate the benefits of strcompact
     because multiple references to identical strings cause addi-
     tional strings to be placed in the string table.  Running
     strcompact again after running this program fixes this prob-
     lem.

     The _r_e_g_i_s_t_e_r local symbol type is removed from the
     executable/object file.  Since the debugger really doesn't
     know how to deal with those symbols this is not much of a
     loss and saves quite a bit of space both in the symbol table
     and the string table.

     symcompact should not be run on .o files that will be passed
     to the linker.  The linker will need the tilde form of the
     symbol if an overlaid executable is being created.



Printed 11/26/99	January 25, 1994			1



