source: rtems/c/src/lib/libbsp/powerpc/score603e/startup/linkcmds @ 0b5da30a

4.104.114.84.95
Last change on this file since 0b5da30a was 238f450, checked in by Joel Sherrill <joel.sherrill@…>, on 04/08/02 at 15:56:21

2001-04-08 Joel Sherrill <joel@…>

  • startup/linkcmds: Per PR170, PR171, and PR172 add .eh_frame
  • Property mode set to 100644
File size: 5.7 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  }
63  .init           : { _init = .; __init = .; *(.init)           }
64  .fini           : { _fini = .; __fini = .; *(.fini)           }
65  .rodata         : { *(.rodata) *(.gnu.linkonce.r*) }
66  .rodata1        : { *(.rodata1)               }
67  .eh_frame       : { *.(eh_frame)              }
68  _etext = .;
69  PROVIDE (_etext = .);
70  PROVIDE (__SDATA2_START__ = .);
71  .sdata2         : { *(.sdata2)        }
72  .sbss2          : { *(.sbss2)         }
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  }
96  PROVIDE (__EXCEPT_START__ = .);
97  .gcc_except_table   : { *(.gcc_except_table) }
98  PROVIDE (__EXCEPT_END__ = .);
99
100  .data1          : { *(.data1)         }
101  .got1           : { *(.got1)          }
102  .dynamic        : { *(.dynamic)       }
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) }
108                PROVIDE (__GOT2_END__ = .);
109                PROVIDE (__CTOR_LIST__ = .);
110  .ctors          : { *(.ctors) }
111                PROVIDE (__CTOR_END__ = .);
112                PROVIDE (__DTOR_LIST__ = .);
113  .dtors          : { *(.dtors) }
114                PROVIDE (__DTOR_END__ = .);
115                PROVIDE (_FIXUP_START_ = .);
116  .fixup          : { *(.fixup) }
117                PROVIDE (_FIXUP_END_ = .);
118                PROVIDE (__FIXUP_END__ = .);
119                PROVIDE (_GOT2_END_ = .);
120  .got            : {
121    PROVIDE (_GOT_START_ = .);
122    s.got = .;
123    *(.got)
124  }     
125  .got.plt        : { *(.got.plt) }
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     _edata  =  .;
135  }
136  PROVIDE (_edata = .);
137  PROVIDE (RAM_END = ADDR(.text) + 10M);
138  . =  ALIGN(8) + 0x1000;
139  PROVIDE (__SBSS_START__ = .);
140  .sbss      :
141  {
142    PROVIDE (__sbss_start = .);
143    *(.sbss)
144    *(.scommon)
145    PROVIDE (__sbss_end = .);
146  }
147  PROVIDE (__SBSS_END__ = .);
148  .bss       :
149  {
150    PROVIDE (__bss_start = .);
151    *(.dynbss)
152    *(.bss)
153    *(COMMON)
154    . =  ALIGN(8) + 0x8000;
155    PROVIDE (__stack = .);
156    _end = . ;
157    PROVIDE (end = .);
158  }
159
160  /* These are needed for ELF backends which have not yet been
161     converted to the new style linker.  */
162  .stab 0 : { *(.stab) }
163  .stabstr 0 : { *(.stabstr) }
164  /* DWARF debug sections.
165     Symbols in the DWARF debugging sections are relative to the beginning
166     of the section so we begin them at 0.  */
167  /* DWARF 1 */
168  .debug          0 : { *(.debug) }
169  .line           0 : { *(.line) }
170  /* GNU DWARF 1 extensions */
171  .debug_srcinfo  0 : { *(.debug_srcinfo) }
172  .debug_sfnames  0 : { *(.debug_sfnames) }
173  /* DWARF 1.1 and DWARF 2 */
174  .debug_aranges  0 : { *(.debug_aranges) }
175  .debug_pubnames 0 : { *(.debug_pubnames) }
176  /* DWARF 2 */
177  .debug_info     0 : { *(.debug_info) }
178  .debug_abbrev   0 : { *(.debug_abbrev) }
179  .debug_line     0 : { *(.debug_line) }
180  .debug_frame    0 : { *(.debug_frame) }
181  .debug_str      0 : { *(.debug_str) }
182  .debug_loc      0 : { *(.debug_loc) }
183  .debug_macinfo  0 : { *(.debug_macinfo) }
184  /* SGI/MIPS DWARF 2 extensions */
185  .debug_weaknames 0 : { *(.debug_weaknames) }
186  .debug_funcnames 0 : { *(.debug_funcnames) }
187  .debug_typenames 0 : { *(.debug_typenames) }
188  .debug_varnames  0 : { *(.debug_varnames) }
189  /* These must appear regardless of  .  */
190}
Note: See TracBrowser for help on using the repository browser.