source: rtems/c/src/lib/libbsp/powerpc/score603e/startup/linkcmds @ 85c92574

4.104.114.84.95
Last change on this file since 85c92574 was 85c92574, checked in by Joel Sherrill <joel.sherrill@…>, on May 9, 2002 at 9:37:30 PM

2001-05-09 Joel Sherrill <joel@…>

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