source: rtems/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base @ c7cba209

Last change on this file since c7cba209 was c7cba209, checked in by Sebastian Huber <sebastian.huber@…>, on 04/18/12 at 10:17:44

Add libbsd sections

  • Property mode set to 100644
File size: 4.7 KB
Line 
1/*  linkcmds
2 *
3 *  $Id$
4 */
5
6OUTPUT_ARCH(sparc)
7__DYNAMIC  =  0;
8
9/*
10 * The memory map looks like this:
11 * +--------------------+ <- low memory
12 * | .text              |
13 * |        etext       |
14 * |        ctor list   | the ctor and dtor lists are for
15 * |        dtor list   | C++ support
16 * |        _endtext    |
17 * +--------------------+
18 * | .data              | initialized data goes here
19 * |        _sdata      |
20 * |        _edata      |
21 * +--------------------+
22 * | .bss               |
23 * |        __bss_start | start of bss, cleared by crt0
24 * |        _end        | start of heap, used by sbrk()
25 * +--------------------+
26 * |    heap space      |
27 * |        _ENDHEAP    |
28 * |    stack space     |
29 * |        __stack     | top of stack
30 * +--------------------+ <- high memory
31 */
32
33_RAM_END = _RAM_START + _RAM_SIZE;
34
35_PROM_END = _PROM_START + _PROM_SIZE;
36
37/*
38 *  Alternate names without leading _.
39 */
40
41PROM_START = _PROM_START;
42PROM_SIZE = _PROM_SIZE;
43PROM_END = _PROM_END;
44
45RAM_START = _RAM_START;
46RAM_SIZE = _RAM_SIZE;
47RAM_END = _RAM_END;
48
49/*
50 * SPARC monitor assumes this is present to provide proper RTEMS awareness.
51 */
52EXTERN(rtems_get_version_string);
53
54/*
55 * stick everything in ram (of course)
56 */
57SECTIONS
58{
59  .text :
60  {
61    CREATE_OBJECT_SYMBOLS
62    text_start = .;
63    _text_start = .;
64    *(.text*)
65    . = ALIGN (16);
66
67    /*
68     * Special FreeBSD sysctl sections.
69     */
70    . = ALIGN (16);
71    __start_set_sysctl_set = .;
72    *(set_sysctl_*);
73    __stop_set_sysctl_set = ABSOLUTE(.);
74    *(set_domain_*);
75    *(set_pseudo_*);
76
77    *(.eh_frame)
78    . = ALIGN (16);
79
80    *(.gnu.linkonce.t*)
81
82    /*
83     * C++ constructors
84     */
85    /* gcc uses crtbegin.o to find the start of
86       the constructors, so we make sure it is
87       first.  Because this is a wildcard, it
88       doesn't matter if the user does not
89       actually link against crtbegin.o; the
90       linker won't look for a file to match a
91       wildcard.  The wildcard also means that it
92       doesn't matter which directory crtbegin.o
93       is in.  */
94    KEEP (*crtbegin.o(.ctors))
95    KEEP (*crtbegin?.o(.ctors))
96    /* We don't want to include the .ctor section from
97       the crtend.o file until after the sorted ctors.
98       The .ctor section from the crtend file contains the
99       end of ctors marker and it must be last */
100    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
101    KEEP (*(SORT(.ctors.*)))
102    KEEP (*(.ctors))
103    KEEP (*crtbegin.o(.dtors))
104    KEEP (*crtbegin?.o(.dtors))
105    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
106    KEEP (*(SORT(.dtors.*)))
107    KEEP (*(.dtors))
108
109    _rodata_start = . ;
110    *(.rodata*)
111    *(.gnu.linkonce.r*)
112    _erodata = ALIGN( 0x10 ) ;
113
114    etext = ALIGN(0x10);
115    _etext = .;
116    *(.init)
117    *(.fini)
118    *(.lit)
119    *(.shdata)
120    . = ALIGN (16);
121    _endtext = .;
122  } > ram
123  .rela.dyn       :
124    {
125      *(.rela.init)
126      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
127      *(.rela.fini)
128      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
129      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
130      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
131      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
132      *(.rela.ctors)
133      *(.rela.dtors)
134      *(.rela.got)
135      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
136    } >ram
137  .robsdsets : {
138    /* Special FreeBSD linker set sections */
139    __start_set_sysctl_set = .;
140    *(set_sysctl_*);
141    __stop_set_sysctl_set = .;
142    *(set_domain_*);
143    *(set_pseudo_*);
144    _bsd__start_set_modmetadata_set = .;
145    *(_bsd_set_modmetadata_set);
146    _bsd__stop_set_modmetadata_set = .;
147    _bsd__start_set_sysctl_set = .;
148    *(_bsd_set_sysctl_set);
149    _bsd__stop_set_sysctl_set = .;
150    __start_pcpu_set = .;
151    *(set_pcpu);
152    __stop_pcpu_set = .;
153  } >ram
154  .rwbsdsets : {
155    /* Special FreeBSD linker set sections */
156    _bsd__start_set_sysinit_set = .;
157    *(_bsd_set_sysinit_set);
158    _bsd__stop_set_sysinit_set = .;
159  } >ram
160  .data :
161  {
162    data_start = .;
163    _data_start = .;
164    _sdata = . ;
165    *(.data*)
166    *(.gnu.linkonce.d*)
167    *(.gcc_except_table*)
168    . = ALIGN(0x10);
169    edata = .;
170    _edata = .;
171  } > ram
172  .dynamic        : { *(.dynamic)       } >ram
173  .jcr            : { *(.jcr)           } >ram
174  .got            : { *(.got)           } >ram
175  .plt            : { *(.plt)           } >ram
176  .hash           : { *(.hash)          } >ram
177  .dynrel         : { *(.dynrel)        } >ram
178  .dynsym         : { *(.dynsym)        } >ram
179  .dynstr         : { *(.dynstr)        } >ram
180  .hash           : { *(.hash)          } >ram
181  .shbss :
182  {
183    *(.shbss)
184  } > ram
185  .bss :
186  {
187    __bss_start = ALIGN(0x8);
188    _bss_start = .;
189    bss_start = .;
190    *(.bss .bss* .gnu.linkonce.b*)
191    *(COMMON)
192    . = ALIGN (16);
193    end = .;
194    _end = ALIGN(0x8);
195    __end = ALIGN(0x8);
196  } > ram
197  .stab . (NOLOAD) :
198  {
199    [ .stab ]
200  }
201  .stabstr . (NOLOAD) :
202  {
203    [ .stabstr ]
204  }
205}
Note: See TracBrowser for help on using the repository browser.