ARM Compiler toolchain Using the Linker - ARM Information Center
ARM Compiler toolchain Using the Linker - ARM Information Center
ARM Compiler toolchain Using the Linker - ARM Information Center
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
GNU ld script support in armlink<br />
9.8 Example GNU ld script for linking an <strong>ARM</strong> Linux shared object<br />
The following ld script example is for linking of a shared library, and is similar to that for an<br />
application. The shared library starts at 0 + SIZEOF_HEADERS.<br />
Use <strong>the</strong> armlink --linker_script command-line option to specify an ld script file.<br />
SECTIONS<br />
{<br />
. = 0 + SIZEOF_HEADERS;<br />
.hash : { *(.hash) }<br />
.gnu.hash : { *(.gnu.hash) }<br />
.dynsym : { *(.dynsym) }<br />
.dynstr : { *(.dynstr) }<br />
.version : { *(.version) }<br />
.version_d : { *(.version_d) }<br />
.version_r : { *(.version_r) }<br />
.rel.dyn : { *(.rel.dyn) }<br />
.rel.plt : { *(.rel.plt) }<br />
.init : { KEEP (*(.init)) }<br />
.plt : { *(.plt) }<br />
.text : { *(.text .text.*) }<br />
.fini : { KEEP (*(.fini)) }<br />
.rodata : { *(.rodata .rodata.*) }<br />
.<strong>ARM</strong>.extab : { *(.<strong>ARM</strong>.extab*) }<br />
__exidx_start = .;<br />
.<strong>ARM</strong>.exidx : { *(.<strong>ARM</strong>.exidx*) }<br />
__exidx_end = .;<br />
.interp : { *(.interp) }<br />
. = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT<br />
(MAXPAGESIZE) - 1));<br />
. = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));<br />
.tdata : { *(.tdata .tdata.*) }<br />
.tbss : { *(.tbss .tbss.*) }<br />
.preinit_array :<br />
{<br />
PROVIDE_HIDDEN (__preinit_array_start = .);<br />
KEEP (*(.preinit_array))<br />
PROVIDE_HIDDEN (__preinit_array_end = .);<br />
}<br />
.init_array :<br />
{<br />
PROVIDE_HIDDEN (__init_array_start = .);<br />
KEEP (*(SORT(.init_array.*)))<br />
KEEP (*(.init_array))<br />
PROVIDE_HIDDEN (__init_array_end = .);<br />
}<br />
.fini_array :<br />
{<br />
PROVIDE_HIDDEN (__fini_array_start = .);<br />
KEEP (*(.fini_array))<br />
KEEP (*(SORT(.fini_array.*)))<br />
PROVIDE_HIDDEN (__fini_array_end = .);<br />
}<br />
.dynamic : { *(.dynamic) }<br />
.got : { *(.got.plt) *(.got) }<br />
.data :<br />
{<br />
*(.data .data.*)<br />
}<br />
.bss :<br />
<strong>ARM</strong> DUI 0474C Copyright © 2010-2011 <strong>ARM</strong>. All rights reserved. 9-14<br />
ID080411 Non-Confidential