source: rtems/c/src/lib/libbsp/powerpc/score603e/startup/linkcmds @ 4217b96

4.104.114.84.9
Last change on this file since 4217b96 was 4217b96, checked in by Joel Sherrill <joel.sherrill@…>, on Feb 8, 2006 at 12:28:38 PM

2006-02-08 Joel Sherrill <joel@…>

  • startup/linkcmds: Add sections required by newer gcc versions.
  • Property mode set to 100644
File size: 6.1 KB
Line 
1OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
2              "elf32-powerpc")
3
4OUTPUT_ARCH(powerpc)
5ENTRY(_start)
6
7/*
8 *  Number of Decrementer countdowns per millisecond
9 *
10 *  Calculated by:  (66 Mhz * 1000) / 4 cycles per click
11 */
12
13PROVIDE(CPU_PPC_CLICKS_PER_MS = 16500);
14
15MEMORY
16  {
17        VECTORS : ORIGIN = 0, LENGTH = 64K
18        RAM : ORIGIN = 1M, LENGTH = 31M
19        EPROM : ORIGIN = 0xFFF00000, LENGTH = 0x80000
20  }
21
22SECTIONS
23{
24  .vectors 0x00100 :
25  {
26    *(.vectors)
27  }
28
29  /* Read-only sections, merged into text segment: */
30  /* SDS ROM worked at 0x30000                     */
31  .interp         : { *(.interp) }
32  .hash           : { *(.hash)          }
33  .dynsym         : { *(.dynsym)                }
34  .dynstr         : { *(.dynstr)                }
35  .rela.text      : { *(.rela.text)     }
36  .rela.data      : { *(.rela.data)     }
37  .rela.rodata    : { *(.rela.rodata)   }
38  .rela.got       : { *(.rela.got)      }
39  .rela.got1      : { *(.rela.got1)     }
40  .rela.got2      : { *(.rela.got2)     }
41  .rela.ctors     : { *(.rela.ctors)    }
42  .rela.dtors     : { *(.rela.dtors)    }
43  .rela.init      : { *(.rela.init)     }
44  .rela.fini      : { *(.rela.fini)     }
45  .rela.bss       : { *(.rela.bss)      }
46  .rela.plt       : { *(.rela.plt)      }
47  .rela.sdata     : { *(.rela.sdata2)   }
48  .rela.sbss      : { *(.rela.sbss2)    }
49  .rela.sdata2    : { *(.rela.sdata2)   }
50  .rela.sbss2     : { *(.rela.sbss2)    }
51  .plt   : { *(.plt) }
52 .text  0x100000:
53  {
54   
55    *(.text*)
56    *(.gnu.linkonce.t.*)
57    *(.descriptors)
58
59    /*
60     * Special FreeBSD sysctl sections.
61     */
62    . = ALIGN (16);
63    __start_set_sysctl_set = .;
64    *(set_sysctl_*);
65    __stop_set_sysctl_set = ABSOLUTE(.);
66    *(set_domain_*);
67    *(set_pseudo_*);
68
69    /* .gnu.warning sections are handled specially by elf32.em.  */
70    *(.gnu.warning)
71  }  >RAM
72  .init           : { _init = .; __init = .; *(.init)           } >RAM
73  .fini           : { _fini = .; __fini = .; *(.fini)           } >RAM
74  .rodata         : { *(.rodata*) *(.gnu.linkonce.r*) } >RAM
75  .rodata1        : { *(.rodata1)               } >RAM
76  .eh_frame       : { *.(eh_frame)              } >RAM
77  _etext = .;
78  PROVIDE (_etext = .);
79  PROVIDE (__SDATA2_START__ = .);
80  .sdata2         : { *(.sdata2) *(.gnu.linkonce.s2.*)  } >RAM
81  .sbss2          : { *(.sbss2) *(.gnu.linkonce.sb2.*)  } >RAM
82  PROVIDE (__SBSS2_END__ = .);
83  /* Adjust the address for the data segment.  We want to adjust up to
84     the same address within the page on the next page up.  It would
85     be more correct to do this:
86       . = ALIGN(0x40000) + (ALIGN(8) & (0x40000 - 1));
87     The current expression does not correctly handle the case of a
88     text segment ending precisely at the end of a page; it causes the
89     data segment to skip a page.  The above expression does not have
90     this problem, but it will currently (2/95) cause BFD to allocate
91     a single segment, combining both text and data, for this case.
92     This will prevent the text segment from being shared among
93     multiple executions of the program; I think that is more
94     important than losing a page of the virtual address space (note
95     that no actual memory is lost; the page which is skipped can not
96     be referenced).  */
97  . =  ALIGN(8) + 0x40000;
98  PROVIDE (sdata = .);
99  .data    :
100  {
101   *(.data)
102    *(.data.*)
103    *(.gnu.linkonce.d.*)
104    CONSTRUCTORS
105  } >RAM
106  PROVIDE (__EXCEPT_START__ = .);
107  .gcc_except_table   : { *(.gcc_except_table) } >RAM
108  PROVIDE (__EXCEPT_END__ = .);
109
110  .data1          : { *(.data1)         } >RAM
111  .got1           : { *(.got1)          } >RAM
112  .dynamic        : { *(.dynamic)       } >RAM
113  /* Put .ctors and .dtors next to the .got2 section, so that the pointers
114     get relocated with -mrelocatable. Also put in the .fixup pointers.
115     The current compiler no longer needs this, but keep it around for 2.7.2  */
116                PROVIDE (_GOT2_START_ = .);
117  .got2           :  { *(.got2) } >RAM
118                PROVIDE (__GOT2_END__ = .);
119                PROVIDE (__CTOR_LIST__ = .);
120  .ctors          : { *(.ctors) } >RAM
121                PROVIDE (__CTOR_END__ = .);
122                PROVIDE (__DTOR_LIST__ = .);
123  .dtors          : { *(.dtors) } >RAM
124                PROVIDE (__DTOR_END__ = .);
125                PROVIDE (_FIXUP_START_ = .);
126  .fixup          : { *(.fixup) } >RAM
127                PROVIDE (_FIXUP_END_ = .);
128                PROVIDE (__FIXUP_END__ = .);
129                PROVIDE (_GOT2_END_ = .);
130  .got            : {
131    PROVIDE (_GOT_START_ = .);
132    s.got = .;
133    *(.got)
134  }      >RAM
135  .got.plt        : { *(.got.plt) } >RAM
136                PROVIDE (_GOT_END_ = .);
137                PROVIDE (__GOT_END__ = .);
138  /* We want the small data sections together, so single-instruction offsets
139     can access them all, and initialized data all before uninitialized, so
140     we can shorten the on-disk segment size.  */
141  PROVIDE (__SDATA_START__ = .);
142  .sdata          : {
143     *(.sdata*)
144     *(.gnu.linkonce.s.*)
145     _edata  =  .;
146  } >RAM
147  PROVIDE (_edata = .);
148  PROVIDE (RAM_END = ADDR(.text) + 10M);
149  . =  ALIGN(8) + 0x1000;
150  PROVIDE (__SBSS_START__ = .);
151  .sbss      :
152  {
153    PROVIDE (__sbss_start = .);
154    *(.sbss*)
155    *(.scommon)
156    *(.gnu.linkonce.sb.*)
157    PROVIDE (__sbss_end = .);
158  } >RAM
159  PROVIDE (__SBSS_END__ = .);
160  .bss       :
161  {
162    PROVIDE (__bss_start = .);
163    *(.dynbss)
164    *(.bss* .gnu.linkonce.b.*)
165    *(COMMON)
166    . =  ALIGN(8) + 0x8000;
167    PROVIDE (__stack = .);
168    _end = . ;
169    PROVIDE (end = .);
170  } >RAM
171
172  /* These are needed for ELF backends which have not yet been
173     converted to the new style linker.  */
174  .stab 0 : { *(.stab) } >RAM
175  .stabstr 0 : { *(.stabstr) }
176  /* DWARF debug sections.
177     Symbols in the DWARF debugging sections are relative to the beginning
178     of the section so we begin them at 0.  */
179  /* DWARF 1 */
180  .debug          0 : { *(.debug) }
181  .line           0 : { *(.line) }
182  /* GNU DWARF 1 extensions */
183  .debug_srcinfo  0 : { *(.debug_srcinfo) }
184  .debug_sfnames  0 : { *(.debug_sfnames) }
185  /* DWARF 1.1 and DWARF 2 */
186  .debug_aranges  0 : { *(.debug_aranges) }
187  .debug_pubnames 0 : { *(.debug_pubnames) }
188  /* DWARF 2 */
189  .debug_info     0 : { *(.debug_info) }
190  .debug_abbrev   0 : { *(.debug_abbrev) }
191  .debug_line     0 : { *(.debug_line) }
192  .debug_frame    0 : { *(.debug_frame) }
193  .debug_str      0 : { *(.debug_str) }
194  .debug_loc      0 : { *(.debug_loc) }
195  .debug_macinfo  0 : { *(.debug_macinfo) }
196  /* SGI/MIPS DWARF 2 extensions */
197  .debug_weaknames 0 : { *(.debug_weaknames) }
198  .debug_funcnames 0 : { *(.debug_funcnames) }
199  .debug_typenames 0 : { *(.debug_typenames) }
200  .debug_varnames  0 : { *(.debug_varnames) }
201  /* These must appear regardless of  .  */
202}
Note: See TracBrowser for help on using the repository browser.