06.02.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!