source: rtems/c/src/lib/libbsp/arm/arm_bare_bsp/startup/linkcmds @ 2d354ea6

4.104.114.84.95
Last change on this file since 2d354ea6 was 08330bf, checked in by Joel Sherrill <joel.sherrill@…>, on 07/27/00 at 01:04:11

Port of RTEMS to the ARM processor family by Eric Valette
<valette@…> and Emmanuel Raguet <raguet@…>
of Canon CRF - Communication Dept. This port includes a
basic BSP that is sufficient to link hello world.

  • Property mode set to 100644
File size: 6.6 KB
Line 
1OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
2              "elf32-littlearm")
3OUTPUT_ARCH(arm)
4ENTRY(_start)
5SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib);
6MEMORY {
7        FLASH (rx)  : ORIGIN = 0x200000, LENGTH = 512K
8        RAM   (!rx) : ORIGIN = 0x400000, LENGTH = 128K
9}
10
11/* Do we need any of these for elf?
12   __DYNAMIC = 0;    */
13SECTIONS
14{
15  /* Read-only sections, merged into text segment: */
16/*  . = 0 + SIZEOF_HEADERS;*/
17  .hash          : { *(.hash)                   } > FLASH
18  .dynsym        : { *(.dynsym)                 } > FLASH
19  .dynstr        : { *(.dynstr)                 } > FLASH
20  .gnu.version   : { *(.gnu.version)            } > FLASH
21  .gnu.version_d   : { *(.gnu.version_d)        } > FLASH
22  .gnu.version_r   : { *(.gnu.version_r)        } > FLASH
23  .rel.init      : { *(.rel.init)               } > FLASH
24  .rela.init     : { *(.rela.init)              } > FLASH
25  .rel.text      :
26    {
27      *(.rel.text)
28      *(.rel.text.*)
29      *(.rel.gnu.linkonce.t*)
30    } > FLASH
31  .rela.text     :
32    {
33      *(.rela.text)
34      *(.rela.text.*)
35      *(.rela.gnu.linkonce.t*)
36    } > FLASH
37  .rel.fini      : { *(.rel.fini)       } > FLASH
38  .rela.fini     : { *(.rela.fini)      } > FLASH
39  .rel.rodata    :
40    {
41      *(.rel.rodata)
42      *(.rel.rodata.*)
43      *(.rel.gnu.linkonce.r*)
44    } > FLASH
45  .rela.rodata   :
46    {
47      *(.rela.rodata)
48      *(.rela.rodata.*)
49      *(.rela.gnu.linkonce.r*)
50    } > FLASH
51  .rel.data      :
52    {
53      *(.rel.data)
54      *(.rel.data.*)
55      *(.rel.gnu.linkonce.d*)
56    } > FLASH
57  .rela.data     :
58    {
59      *(.rela.data)
60      *(.rela.data.*)
61      *(.rela.gnu.linkonce.d*)
62    } > FLASH
63  .rel.ctors     : { *(.rel.ctors)      } > FLASH
64  .rela.ctors    : { *(.rela.ctors)     } > FLASH
65  .rel.dtors     : { *(.rel.dtors)      } > FLASH
66  .rela.dtors    : { *(.rela.dtors)     } > FLASH
67  .rel.got       : { *(.rel.got)        } > FLASH
68  .rela.got      : { *(.rela.got)       } > FLASH
69  .rel.sdata     :
70    {
71      *(.rel.sdata)
72      *(.rel.sdata.*)
73      *(.rel.gnu.linkonce.s*)
74    } > FLASH
75  .rela.sdata     :
76    {
77      *(.rela.sdata)
78      *(.rela.sdata.*)
79      *(.rela.gnu.linkonce.s*)
80    } > FLASH
81  .rel.sbss      : { *(.rel.sbss)               } > FLASH
82  .rela.sbss     : { *(.rela.sbss)              } > FLASH
83  .rel.bss       : { *(.rel.bss)                } > FLASH
84  .rela.bss      : { *(.rela.bss)               } > FLASH
85  .rel.plt       : { *(.rel.plt)                } > FLASH
86  .rela.plt      : { *(.rela.plt)               } > FLASH
87  .init          :
88  {
89    KEEP (*(.init))
90  } > FLASH   /*=0*/
91  .plt      : { *(.plt) } > FLASH
92  .text      :
93  {
94    *(.text)
95    *(.text.*)
96    *(.stub)
97    /* .gnu.warning sections are handled specially by elf32.em.  */
98    *(.gnu.warning)
99    *(.gnu.linkonce.t*)
100    *(.glue_7t) *(.glue_7)
101  } > FLASH  /*=0*/
102  _etext = .;
103  PROVIDE (etext = .);
104  .fini      :
105  {
106    KEEP (*(.fini))
107  } > FLASH  /*=0*/
108  .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) } > FLASH
109  .rodata1   : { *(.rodata1) } > FLASH
110  _erodata = ABSOLUTE(.);
111  PROVIDE (erodata =  ABSOLUTE(.));
112  /* Adjust the address for the data segment.  We want to adjust up to
113     the same address within the page on the next page up.  */
114  . = ALIGN(256);
115  _begdata = ALIGN(256);
116  .arm_end_text :
117  {
118    . = ALIGN(256);
119    _initdata = ALIGN(256);
120  } > FLASH     
121  .data : AT (_begdata)
122  {
123    *(.data)
124    *(.data.*)
125    *(.gnu.linkonce.d*)
126    SORT(CONSTRUCTORS)
127  } > RAM
128  .data1   : { *(.data1) } > RAM
129  .eh_frame : { *(.eh_frame) } > RAM
130  .gcc_except_table : { *(.gcc_except_table) } > RAM
131  .ctors   :
132  {
133    /* gcc uses crtbegin.o to find the start of
134       the constructors, so we make sure it is
135       first.  Because this is a wildcard, it
136       doesn't matter if the user does not
137       actually link against crtbegin.o; the
138       linker won't look for a file to match a
139       wildcard.  The wildcard also means that it
140       doesn't matter which directory crtbegin.o
141       is in.  */
142    KEEP (*crtbegin.o(.ctors))
143    /* We don't want to include the .ctor section from
144       from the crtend.o file until after the sorted ctors.
145       The .ctor section from the crtend file contains the
146       end of ctors marker and it must be last */
147    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
148    KEEP (*(SORT(.ctors.*)))
149    KEEP (*(.ctors))
150  } > RAM
151   .dtors         :
152  {
153    KEEP (*crtbegin.o(.dtors))
154    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
155    KEEP (*(SORT(.dtors.*)))
156    KEEP (*(.dtors))
157  } > RAM
158  .got           : { *(.got.plt) *(.got) } > RAM
159  .dynamic       : { *(.dynamic) } > RAM
160  /* We want the small data sections together, so single-instruction offsets
161     can access them all, and initialized data all before uninitialized, so
162     we can shorten the on-disk segment size.  */
163  .sdata     :
164  {
165    *(.sdata)
166    *(.sdata.*)
167    *(.gnu.linkonce.s.*)
168  } > RAM
169  .arm_data :
170  { 
171  _edata = .;
172  __bss_start = .;
173  __bss_start__ = .;
174  } > RAM
175  .sbss      :
176  {
177    *(.dynsbss)
178    *(.sbss)
179    *(.sbss.*)
180    *(.scommon)
181  } > RAM
182  .bss       :
183  {
184   *(.dynbss)
185   *(.bss)
186   *(.bss.*)
187   *(COMMON)
188   /* Align here to ensure that the .bss section occupies space up to
189      _end.  Align after .bss to ensure correct alignment even if the
190      .bss section disappears because there are no input sections.  */
191   . = ALIGN(32 / 8);
192  } > RAM
193  . = ALIGN(32 / 8);
194  .arm_end :
195  {
196  _end = .;
197  _bss_end__ = . ;
198  __bss_end__ = . ;
199  __end__ = . ;
200  } > RAM
201  /* Stabs debugging sections.  */
202  .stab 0 : { *(.stab) }
203  .stabstr 0 : { *(.stabstr) }
204  .stab.excl 0 : { *(.stab.excl) }
205  .stab.exclstr 0 : { *(.stab.exclstr) }
206  .stab.index 0 : { *(.stab.index) }
207  .stab.indexstr 0 : { *(.stab.indexstr) }
208  .comment 0 : { *(.comment) }
209  /* DWARF debug sections.
210     Symbols in the DWARF debugging sections are relative to the beginning
211     of the section so we begin them at 0.  */
212  /* DWARF 1 */
213  .debug          0 : { *(.debug) }
214  .line           0 : { *(.line) }
215  /* GNU DWARF 1 extensions */
216  .debug_srcinfo  0 : { *(.debug_srcinfo) }
217  .debug_sfnames  0 : { *(.debug_sfnames) }
218  /* DWARF 1.1 and DWARF 2 */
219  .debug_aranges  0 : { *(.debug_aranges) }
220  .debug_pubnames 0 : { *(.debug_pubnames) }
221  /* DWARF 2 */
222  .debug_info     0 : { *(.debug_info) }
223  .debug_abbrev   0 : { *(.debug_abbrev) }
224  .debug_line     0 : { *(.debug_line) }
225  .debug_frame    0 : { *(.debug_frame) }
226  .debug_str      0 : { *(.debug_str) }
227  .debug_loc      0 : { *(.debug_loc) }
228  .debug_macinfo  0 : { *(.debug_macinfo) }
229  /* SGI/MIPS DWARF 2 extensions */
230  .debug_weaknames 0 : { *(.debug_weaknames) }
231  .debug_funcnames 0 : { *(.debug_funcnames) }
232  .debug_typenames 0 : { *(.debug_typenames) }
233  .debug_varnames  0 : { *(.debug_varnames) }
234  /*.stack 0x80000 : { _stack = .; *(.stack) }*/
235  /* These must appear regardless of  .  */
236}
237
238
239
240
Note: See TracBrowser for help on using the repository browser.