9.6 armlink によって使用されるデフォルトの GNU ld スクリプト

リンカには、独自の ld スクリプトを指定しない場合に GNU モードに適用できるデフォルトの ld スクリプトがあります。

ld スクリプトを必要とするコマンドラインオプションを使用する場合、--linker_script コマンドラインオプションで使用するスクリプトを指定できます。スクリプトを指定しない場合、armlink によって使用されるデフォルトの ld スクリプトは、実行可能ファイルと共有オブジェクトのどちらをビルドするかによって異なります。

Default ld script when building an executable

SECTIONS {   PROVIDE(__executable_start = 0x0008000);   .= 0x00008000 + SIZEOF_HEADERS;   .interp         :{ *(.interp) }   .note.ABI-tag   :{ *(.note.ABI-tag) }   .hash           :{ *(.hash) }   .dynsym         :{ *(.dynsym) }   .dynstr         :{ *(.dynstr) }   .version        :{ *(.version) }   .version_d      :{ *(.version_d) }   .version_r      :{ *(.version_r) }   .rel.dyn        :{ *(.rel.dyn) }   .rela.dyn       :{ *(.rela.dyn) }   .rel.plt        :{ *(.rel.plt) }   .rela.plt       :{ *(.rela.plt) }   .init           :{ KEEP (*(.init)) }   .plt            :{ *(.plt) }   .text           :{ *(.text .text.*) }   .fini           :{ KEEP (*(.fini)) }   PROVIDE(__etext = .);   PROVIDE(_etext = .);   PROVIDE(etext = .);   .rodata         :{ *(.rodata .rodata.*) }    __exidx_start = .;   .ARM.exidx   :{ *(.ARM.exidx*) }    __exidx_end = .;   .= ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .)& (CONSTANT (MAXPAGESIZE) - 1));   .= DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));   .tdata             :{ *(.tdata .tdata.*) }   .tbss              :{ *(.tbss .tbss.*) }   .preinit_array     :{      PROVIDE_HIDDEN (__preinit_array_start = .);       KEEP (*(.preinit_array))      PROVIDE_HIDDEN (__preinit_array_end = .);    }   .init_array     :{      PROVIDE_HIDDEN (__init_array_start = .);       KEEP (*(.init_array*))      PROVIDE_HIDDEN (__init_array_end = .);    }   .fini_array     :{      PROVIDE_HIDDEN (__fini_array_start = .);       KEEP (*(.fini_array*))      PROVIDE_HIDDEN (__fini_array_end = .);    }   .dynamic        :{ *(.dynamic) }   .got            :{ *(.got.plt) *(.got) }   .data           :{     __data_start = .;     *(.data .data.*)   }   _edata = .;   PROVIDE(edata = .);   __bss_start = .;   __bss_start__ = .;   .bss            :{    *(.bss .bss.*)    .= ALIGN(.!= 0 ?32 / 8 :1);   }   __bss_end__ = .;   _bss_end__ = .;   .= ALIGN(4);   __end = .;   _end = .;   PROVIDE(end = .); }

Default ld script when building a shared object

SECTIONS {   .= 0 + SIZEOF_HEADERS;   .note.ABI-tag   :{ *(.note.ABI-tag) }   .hash           :{ *(.hash) }   .dynsym         :{ *(.dynsym) }   .dynstr         :{ *(.dynstr) }   .version        :{ *(.version) }   .version_d      :{ *(.version_d) }   .version_r      :{ *(.version_r) }   .rel.dyn        :{ *(.rel.dyn) }   .rela.dyn       :{ *(.rela.dyn) }   .rel.plt        :{ *(.rel.plt) }   .rela.plt       :{ *(.rela.plt) }   .init           :{ KEEP (*(.init)) }   .plt            :{ *(.plt) }   .text           :{ *(.text .text.*) }   .fini           :{ KEEP (*(.fini)) }   PROVIDE(__etext = .);   PROVIDE(_etext = .);   PROVIDE(etext = .);   .rodata         :{ *(.rodata .rodata.*) }    __exidx_start = .;   .ARM.exidx   :{ *(.ARM.exidx*) }    __exidx_end = .;   .interp         :{ *(.interp) }   .= ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .)& (CONSTANT (MAXPAGESIZE) - 1));   .= DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));   .tdata             :{ *(.tdata .tdata.*) }   .tbss              :{ *(.tbss .tbss.*) }   .preinit_array     :{      PROVIDE_HIDDEN (__preinit_array_start = .);       KEEP (*(.preinit_array))      PROVIDE_HIDDEN (__preinit_array_end = .);    }   .init_array     :{      PROVIDE_HIDDEN (__init_array_start = .);       KEEP (*(.init_array*))      PROVIDE_HIDDEN (__init_array_end = .);    }   .fini_array     :{      PROVIDE_HIDDEN (__fini_array_start = .);       KEEP (*(.fini_array*))      PROVIDE_HIDDEN (__fini_array_end = .);    }   .dynamic        :{ *(.dynamic) }   .got            :{ *(.got.plt) *(.got) }   .data           :{     __data_start = .;     *(.data .data.*)   }   _edata = .;   PROVIDE(edata = .);   __bss_start = .;   __bss_start__ = .;   .bss            :{    *(.bss .bss.*)    .= ALIGN(.!= 0 ?32 / 8 :1);   }   __bss_end__ = .;   _bss_end__ = .;   .= ALIGN(4);   __end = .;   _end = .;   PROVIDE(end = .); }

Default ld script when building a --ldpartial partially linked object

SECTIONS {   .interp       0  :{ *(.interp) }   .note.ABI-tag 0  :{ *(.note.ABI-tag) }   .hash         0  :{ *(.hash) }   .dynsym       0  :{ *(.dynsym) }   .dynstr       0  :{ *(.dynstr) }   .version      0  :{ *(.version) }   .version_d    0  :{ *(.version_d) }   .version_r    0  :{ *(.version_r) }   .rel.dyn      0  :{ *(.rel.dyn) }   .rel.plt      0  :{ *(.rel.plt) }   .init         0  :{ KEEP (*(.init)) }   .plt          0  :{ *(.plt) }   .text         0  :{ *(.text) }   .fini         0  :{ KEEP (*(.fini)) }   .rodata       0  :{ *(.rodata) }   .ARM.exidx    0  :{ *(.ARM.exidx*) }   .tdata        0  :{ *(.tdata) }   .tbss         0  :{ *(.tbss) }   .preinit_array   0  :{      KEEP (*(.preinit_array))   }   .dynamic      0  :{ *(.dynamic) }   .got          0  :{ *(.got.plt) *(.got) }   .data         0  :{     *(.data)   }   .bss          0  :{    *(.bss)   } }
関連する概念
9.1 GNU ld スクリプトのサポートと制限について
関連する参考文書
12.82 --ldpartial
12.88 --linker_script=ld_script
非機密扱いPDF file icon PDF 版ARM DUI0474JJ
Copyright © 2010-2013 ARM.All rights reserved.