GNU gcc / ld节之间的额外字节数

时间:2014-04-21 07:27:01

标签: c++ gcc arm ld newlib

我将arm-eabi-gcc (ver 4.6.4 / binutils 2.24)newlib (ver 2.1.0)一起使用(不含AngelSWI)。

我不使用Exception也不使用RTTI

链接器脚本与默认情况几乎相同。

在链接文件中,在.eh_frame部分之后还有额外的32K空间。

我可以删除这个额外的空间吗?


Idx Name          Size      VMA       LMA       File off  Algn

  4 .rodata       00000498  402f23a0  402f23a0  0000a3a0  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .ARM.exidx    00000008  402f2838  402f2838  0000a838  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .eh_frame     00000004  402f2840  402f2840  0000a840  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  7 .init_array   00000004  402fa844  402fa844  0000a844  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  8 .fini_array   00000004  402fa848  402fa848  0000a848  2**2
                  CONTENTS, ALLOC, LOAD, DATA

  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
  .rodata1        : { *(.rodata1) }
  .ARM.extab   : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
   PROVIDE_HIDDEN (__exidx_start = .);
  .ARM.exidx   : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
   PROVIDE_HIDDEN (__exidx_end = .);
  .eh_frame_hdr : { *(.eh_frame_hdr) }
  .eh_frame        : ONLY_IF_RO { KEEP (*(.eh_frame)) }
  .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table
  .gcc_except_table.*) }
  /* These sections are generated by the Sun/Oracle C++ compiler.  */
  .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
  .exception_ranges*) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1));
  /* Exception handling  */
  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
  .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
  .exception_ranges   : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) }
  /* Thread Local Storage sections  */
  .tdata      : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
  .tbss       : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
  .preinit_array     :
  {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array))
    PROVIDE_HIDDEN (__preinit_array_end = .);
  }
  .init_array     :
  {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT(.init_array.*)))
    KEEP (*(.init_array ))
    PROVIDE_HIDDEN (__init_array_end = .);
  }
  .fini_array     :
  {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(SORT(.fini_array.*)))
    KEEP (*(.fini_array ))
    PROVIDE_HIDDEN (__fini_array_end = .);
  }

问候。

0 个答案:

没有答案