Large size of egcs debug symbol tables.

Gabe Foster gabe@sgrail.com
Wed Sep 9 12:19:00 GMT 1998


Hello,

	At my company we have been experimenting with using the egcs c/c++
compiler to compile our large (750,000+ lines) code base.  We are using:

> g++ -v
Reading specs from
/usr/local/lib/gcc-lib/mips-sgi-irix6.4/egcs-2.91.57/specs
gcc version egcs-2.91.57 19980901 (egcs-1.1 release)

	The compiler is a bit slower and more processor intensive that the SGI
c/c++ compiler, but follows the standard more closely, and seems to
produces faster code in some cases.

	However, when our source is compiled with the -g option, the objects
often double in size when compared to the SGI compiler.  Our system is
large enough that just starting gdb/ddd with the executable takes up all
of my 512M of RAM!  I have not even started to run the program, just the
started the debugger.

	when I run size and ls on a single file compiled with the two C++
compilers this is what I get:

g++:
> size UT_Vector3.o


           Section           Size        Physical        Virtual
                                         Address         Address

             .symtab       14672               0               0        
           .shstrtab         518               0               0        
             .strtab        8391               0               0        
               .text       15384               0               0        
             .rodata         364               0               0        
       .MIPS.options          64               0               0        
            .reginfo          24               0               0        
39417 + 0 + 0 = 39417

> ls -l UT_Vector3.o
-rw-r--r--    1 gabe     creator   120984 Sep  8 12:46 UT_Vector3.o

SGI C++:
> size UT_Vector3.o


           Section           Size        Physical        Virtual
                                         Address         Address

             .symtab        1504               0               0        
           .shstrtab         560               0               0        
             .strtab        2326               0               0        
               .text       34048               0               0        
               .sbss           8               0               0        
           __cplinit           8               0               0        
               .data          12               0               0        
               .lit4          36               0               0        
             .srdata           2               0               0        
       .MIPS.options          72               0               0        
            .reginfo          24               0               0        
38572 + 20 + 8 = 38600

> ls -l UT_Vector3.o
-rw-r--r--    1 gabe     creator    83280 Aug 17 18:35 UT_Vector3.o


When I do an 'nm -B' on the symbol tables, I see many 'extra' symbols
that are named:

00000004 T .LCFI0
00000008 T .LCFI1
000000b4 T .LCFI10
000014b0 T .LCFI100
000014b4 T .LCFI101
000014b8 T .LCFI102
000014bc T .LCFI103
...

Is there any way to make the symbol tables smaller?  The system is
almost unusable with the huge tables, and the debugger runs like a dog
under the weight of all those large objects.

Thank you for your time and attention,
	--> Gabe Foster


-- 
 * J. Gabriel Foster         Silicon Grail       gabe@sgrail.com *
 *                   Cashing in on being a nerd.                 *



More information about the Gcc mailing list