crosstool bloat

David Karlton dkarlton@themediamall.com
Mon Sep 19 15:00:00 GMT 2005



Dave Korn wrote:
> ----Original Message----
> 
>>From: Dave Korn
>>Sent: 19 September 2005 15:26
> 
> 
>>----Original Message----
>>
>>>From: Peter Barada
>>>Sent: 19 September 2005 15:17
>>
>>>>That's exactly what I did, and the bloated one had an additional
>>>>section: 
>>>>
>>>>Idx Name          Size      VMA       LMA       File off  Algn
>>>>10 .MIPS.stubs   000000a0  00400e50  00400e50  00000e50  2**2
>>>>
>>>>but I don't know what this really means.
>>>
>>>That section size is only 160 bytes in size.  What section is the
>>>other 60k in?
>>
>>
>>  Yep, post the full output from "objdump -x".  
> 
>                                     ^^^^^^^^^^^^
> 
> 
>   ... from both before and after versions of your simplest 'hello world'
> testcase.  (should have been clearer about that first time round).
> 
> 
>     cheers,
>       DaveK


You guys are my heroes.  I wrote a simple hello world program.  Here are 
the executable sizes:

-rwxr-xr-x  1 dkarlton users  9956 2005-09-19 10:55 hello.3.2.3
-rwxr-xr-x  1 dkarlton users 71522 2005-09-19 10:54 hello.3.3.4
-rw-r--r--  1 dkarlton users    75 2005-09-19 10:53 hello.c
-rwxr-xr-x  1 dkarlton users  8671 2005-09-19 10:54 hello.x86


And here's the output from 'objdump -x' for the bloated version:

*******************************************

dkarlton@fox:~/test> objdump -x hello.3.3.4

hello.3.3.4:     file format elf32-little
hello.3.3.4
architecture: UNKNOWN!, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x00400600

Program Header:
     PHDR off    0x00000034 vaddr 0x00400034 paddr 0x00400034 align 2**2
          filesz 0x000000e0 memsz 0x000000e0 flags r-x
   INTERP off    0x00000114 vaddr 0x00400114 paddr 0x00400114 align 2**0
          filesz 0x0000000d memsz 0x0000000d flags r--
0x70000000 off    0x00000144 vaddr 0x00400144 paddr 0x00400144 align 2**2
          filesz 0x00000018 memsz 0x00000018 flags r--
     LOAD off    0x00000000 vaddr 0x00400000 paddr 0x00400000 align 2**16
          filesz 0x00000ac0 memsz 0x00000ac0 flags r-x
     LOAD off    0x00010000 vaddr 0x10000000 paddr 0x10000000 align 2**16
          filesz 0x00000090 memsz 0x000000a0 flags rw-
  DYNAMIC off    0x0000015c vaddr 0x0040015c paddr 0x0040015c align 2**2
          filesz 0x000003a6 memsz 0x000003a6 flags rwx
     NOTE off    0x00000124 vaddr 0x00400124 paddr 0x00400124 align 2**2
          filesz 0x00000020 memsz 0x00000020 flags r--

Dynamic Section:
   NEEDED      libgcc_s.so.1
   NEEDED      libc.so.6
   INIT        0x400548
   FINI        0x400a40
   HASH        0x400254
   STRTAB      0x400408
   SYMTAB      0x4002e8
   STRSZ       0xfa
   SYMENT      0x10
   0x70000016  0x10000020
   DEBUG       0x0
   PLTGOT      0x10000040
   REL         0x0
   RELSZ       0x0
   RELENT      0x8
   0x70000001  0x1
   0x70000005  0x2
   0x70000006  0x400000
   0x7000000a  0x7
   0x70000011  0x12
   0x70000012  0x1f
   0x70000013  0x5
   VERNEED     0x400528
   VERNEEDNUM  0x1
   VERSYM      0x400502

Version References:
   required from libc.so.6:
     0x0d696910 0x00 02 GLIBC_2.0

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
   0 .interp       0000000d  00400114  00400114  00000114  2**0
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   1 .note.ABI-tag 00000020  00400124  00400124  00000124  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   2 .dynamic      000000f8  0040015c  0040015c  0000015c  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   3 .hash         00000094  00400254  00400254  00000254  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   4 .dynsym       00000120  004002e8  004002e8  000002e8  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   5 .dynstr       000000fa  00400408  00400408  00000408  2**0
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   6 .gnu.version  00000024  00400502  00400502  00000502  2**1
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   7 .gnu.version_r 00000020  00400528  00400528  00000528  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   8 .init         000000ac  00400548  00400548  00000548  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, CODE
   9 .text         00000410  00400600  00400600  00000600  2**4
                   CONTENTS, ALLOC, LOAD, READONLY, CODE
  10 .MIPS.stubs   00000030  00400a10  00400a10  00000a10  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, CODE
  11 .fini         0000005c  00400a40  00400a40  00000a40  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, CODE
  12 .rodata       00000020  00400aa0  00400aa0  00000aa0  2**4
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
  13 .data         00000020  10000000  10000000  00010000  2**4
                   CONTENTS, ALLOC, LOAD, DATA
  14 .rld_map      00000004  10000020  10000020  00010020  2**2
                   CONTENTS, ALLOC, LOAD, DATA
  15 .eh_frame     00000004  10000024  10000024  00010024  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
  16 .ctors        00000008  10000028  10000028  00010028  2**2
                   CONTENTS, ALLOC, LOAD, DATA
  17 .dtors        00000008  10000030  10000030  00010030  2**2
                   CONTENTS, ALLOC, LOAD, DATA
  18 .jcr          00000004  10000038  10000038  00010038  2**2
                   CONTENTS, ALLOC, LOAD, DATA
  19 .got          00000050  10000040  10000040  00010040  2**4
                   CONTENTS, ALLOC, LOAD, DATA
  20 .sbss         00000000  10000090  10000090  00010090  2**0
                   ALLOC
  21 .bss          00000010  10000090  10000090  00010090  2**4
                   ALLOC
  22 .comment      0000007e  00000000  00000000  00010090  2**0
                   CONTENTS, READONLY
  23 .pdr          00000060  00000000  00000000  00010488  2**2
                   CONTENTS, READONLY
  24 .mdebug.abi32 00000000  00000000  00000000  000104e8  2**0
                   CONTENTS, READONLY
SYMBOL TABLE:
00400114 l    d  .interp        00000000
00400124 l    d  .note.ABI-tag  00000000
00400144 l    d  *ABS*  00000000
0040015c l    d  .dynamic       00000000
00400254 l    d  .hash  00000000
004002e8 l    d  .dynsym        00000000
00400408 l    d  .dynstr        00000000
00400502 l    d  .gnu.version   00000000
00400528 l    d  .gnu.version_r 00000000
00400548 l    d  .init  00000000
00400600 l    d  .text  00000000
00400a10 l    d  .MIPS.stubs    00000000
00400a40 l    d  .fini  00000000
00400aa0 l    d  .rodata        00000000
10000000 l    d  .data  00000000
10000020 l    d  .rld_map       00000000
10000024 l    d  .eh_frame      00000000
10000028 l    d  .ctors 00000000
10000030 l    d  .dtors 00000000
10000038 l    d  .jcr   00000000
10000040 l    d  .got   00000000
10000090 l    d  .sbss  00000000
10000090 l    d  .bss   00000000
00000000 l    d  .comment       00000000
00000000 l    d  *ABS*  00000000
00000000 l    d  *ABS*  00000000
00000000 l    d  *ABS*  00000000
00000000 l    d  *ABS*  00000000
00000000 l    d  .pdr   00000000
00000000 l    d  .mdebug.abi32  00000000
00000000 l    d  *ABS*  00000000
00000000 l    d  *ABS*  00000000
00000000 l    d  *ABS*  00000000
00000000 l    df *ABS*  00000000              <command line>
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/config.h
00000000 l    df *ABS*  00000000              <command line>
00000000 l    df *ABS*  00000000              <built-in>
00400658 l       .text  00000000              hlt
00000000 l    df *ABS*  00000000              abi-note.S
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/abi-tag.h
00000000 l    df *ABS*  00000000              abi-note.S
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/config.h
00000000 l    df *ABS*  00000000              abi-note.S
00000000 l    df *ABS*  00000000              <command line>
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/config.h
00000000 l    df *ABS*  00000000              <command line>
00000000 l    df *ABS*  00000000              <built-in>
00000000 l    df *ABS*  00000000              abi-note.S
00000000 l    df *ABS*  00000000              init.c
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/crti.S
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/defs.h
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/crti.S
00000000 l    df *ABS*  00000000              <command line>
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/config.h
00000000 l    df *ABS*  00000000              <command line>
00000000 l    df *ABS*  00000000              <built-in>
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/crti.S
00400660 l     F .text  00000000              call_gmon_start
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/gcc-3.3.4/gcc/crtstuff.c
10000028 l     O .ctors 00000000              __CTOR_LIST__
10000030 l     O .dtors 00000000              __DTOR_LIST__
10000038 l     O .jcr   00000000              __JCR_LIST__
10000014 l     O .data  00000000              p.0
10000090 l     O .bss   00000001              completed.1
004006b0 l     F .text  00000000              __do_global_dtors_aux
00400770 l     F .text  00000000              frame_dummy
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/gcc-3.3.4/gcc/crtstuff.c
1000002c l     O .ctors 00000000              __CTOR_END__
10000034 l     O .dtors 00000000              __DTOR_END__
10000024 l     O .eh_frame      00000000              __FRAME_END__
10000038 l     O .jcr   00000000              __JCR_END__
00400980 l     F .text  00000000              __do_global_ctors_aux
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/crtn.S
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/defs.h
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/crtn.S
00000000 l    df *ABS*  00000000              <command line>
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/config.h
00000000 l    df *ABS*  00000000              <command line>
00000000 l    df *ABS*  00000000              <built-in>
00000000 l    df *ABS*  00000000 
/home/dkarlton/crosstool-0.38/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-glibc/csu/crtn.S
00000000 l    df *ABS*  00000000              hello.c
00000000 l    df *ABS*  00000000              elf-init.c
10000000 g       .data  00000000              _fdata
10008030 g    d  *ABS*  00000000              _gp_disp
00000001 g    d  *ABS*  00000000              _DYNAMIC_LINKING
0040015c g     O .dynamic       00000000              _DYNAMIC
10008030 g       *ABS*  00000000              _gp
10000000 g       *ABS*  00000000              __fini_array_end
10000010 g     O .data  00000000              .hidden __dso_handle
004008e0 g     F .text  00000000              __libc_csu_fini
00400548 g     F .init  00000000              _init
00400600 g     F .text  00000000              __start
00400600 g       .text  00000000              _ftext
10000020 g     O .rld_map       00000000              __RLD_MAP
10000000 g       *ABS*  00000000              __fini_array_start
00400840 g     F .text  00000000              __libc_csu_init
10000090 g       *ABS*  00000000              __bss_start
004007e0 g     F .text  00000000              main
00400a10       F *UND*  00000000              __libc_start_main@@GLIBC_2.0
10000000 g       *ABS*  00000000              __init_array_end
10000000  w    O .data  00000000              data_start
00400a20       F *UND*  00000000              printf@@GLIBC_2.0
00400a40 g     F .fini  00000000              _fini
10000090 g       *ABS*  00000000              _edata
10000040 g     O .got   00000000              _GLOBAL_OFFSET_TABLE_
100000a0 g       *ABS*  00000000              _end
10000000 g       *ABS*  00000000              __init_array_start
00400aa0 g     O .rodata        00000004              _IO_stdin_used
10000000 g     O .data  00000000              __data_start
00000000  w      *UND*  00000000              _Jv_RegisterClasses
10000090 g       *ABS*  00000000              _fbss
00000000  w      *UND*  00000000              __gmon_start__


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list