source: rtems/c/src/lib/libbsp/powerpc/ep1a/startup/linkcmds @ d1f57b5

4.104.114.95
Last change on this file since d1f57b5 was d1f57b5, checked in by Joel Sherrill <joel.sherrill@…>, on 03/03/08 at 23:07:47

2008-03-03 Joel Sherrill <joel.sherrill@…>

  • startup/linkcmds: Add wildcard to gcc_except_table section so programs compiled with gcc 4.3.x can link.
  • 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.67 Mhz * 1000) / 4 cycles per click
11 */
12
13SECTIONS
14{
15  .vectors 0x00100 :
16  {
17    *(.vectors)
18  }
19
20  /* Read-only sections, merged into text segment: */
21  /* SDS ROM worked at 0x30000                     */
22  . = 0x30000;
23  .interp   : { *(.interp) }
24  .hash           : { *(.hash)          }
25  .dynsym         : { *(.dynsym)                }
26  .dynstr         : { *(.dynstr)                }
27  .rela.text      : { *(.rela.text)     }
28  .rela.data      : { *(.rela.data)     }
29  .rela.rodata    : { *(.rela.rodata)   }
30  .rela.got       : { *(.rela.got)      }
31  .rela.got1      : { *(.rela.got1)     }
32  .rela.got2      : { *(.rela.got2)     }
33  .rela.ctors     : { *(.rela.ctors)    }
34  .rela.dtors     : { *(.rela.dtors)    }
35  .rela.init      : { *(.rela.init)     }
36  .rela.fini      : { *(.rela.fini)     }
37  .rela.bss       : { *(.rela.bss)      }
38  .rela.plt       : { *(.rela.plt)      }
39  .rela.sdata     : { *(.rela.sdata2)   }
40  .rela.sbss      : { *(.rela.sbss2)    }
41  .rela.sdata2    : { *(.rela.sdata2)   }
42  .rela.sbss2     : { *(.rela.sbss2)    }
43  .plt   : { *(.plt) }
44  .text      :
45  {
46    _start = .;
47    *(.text*)
48    /*
49     * Special FreeBSD sysctl sections.
50     */
51    . = ALIGN (16);
52    __start_set_sysctl_set = .;
53    *(set_sysctl_*);
54    __stop_set_sysctl_set = ABSOLUTE(.);
55    *(set_domain_*);
56    *(set_pseudo_*);
57
58    *(.gnu.linkonce.t.*)
59    *(.descriptors)
60    /* .gnu.warning sections are handled specially by elf32.em.  */
61    *(.gnu.warning)
62  } =0
63  .init           : { _init = .; *(.init)       }
64  .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) *(.gnu.linkonce.s2.*)  }
72  .sbss2          : { *(.sbss2) *(.gnu.linkonce.sb2.*)  }
73  PROVIDE (__SBSS2_START__ = .);
74  .sbss2   : { *(.sbss2) }
75  PROVIDE (__SBSS2_END__ = .);
76  /* Adjust the address for the data segment.  We want to adjust up to
77     the same address within the page on the next page up.  It would
78     be more correct to do this:
79       . = ALIGN(0x40000) + (ALIGN(8) & (0x40000 - 1));
80     The current expression does not correctly handle the case of a
81     text segment ending precisely at the end of a page; it causes the
82     data segment to skip a page.  The above expression does not have
83     this problem, but it will currently (2/95) cause BFD to allocate
84     a single segment, combining both text and data, for this case.
85     This will prevent the text segment from being shared among
86     multiple executions of the program; I think that is more
87     important than losing a page of the virtual address space (note
88     that no actual memory is lost; the page which is skipped can not
89     be referenced).  */
90  . =  ALIGN(8) + 0x40000;
91  PROVIDE (sdata = .);
92  .data    :
93  {
94    PROVIDE(__DATA_START__ = ABSOLUTE(.) );
95    *(.data)
96    *(.gnu.linkonce.d.*)
97    CONSTRUCTORS
98  }
99  PROVIDE (__EXCEPT_START__ = .);
100  .gcc_except_table   : { *(.gcc_except_table*) }
101  PROVIDE (__EXCEPT_END__ = .);
102
103  .data1   : { *(.data1) }
104  .got1           : { *(.got1) }
105  .dynamic        : { *(.dynamic) }
106  /* Put .ctors and .dtors next to the .got2 section, so that the pointers
107     get relocated with -mrelocatable. Also put in the .fixup pointers.
108     The current compiler no longer needs this, but keep it around for 2.7.2  */
109                PROVIDE (_GOT2_START_ = .);
110  .got2           :  { *(.got2) }
111                PROVIDE (__GOT2_END__ = .);
112                PROVIDE (__CTOR_LIST__ = .);
113  .ctors          : { *(.ctors) }
114                PROVIDE (__CTOR_END__ = .);
115                PROVIDE (__DTOR_LIST__ = .);
116  .dtors          : { *(.dtors) }
117                PROVIDE (__DTOR_END__ = .);
118                PROVIDE (_FIXUP_START_ = .);
119  .fixup          : { *(.fixup) }
120                PROVIDE (_FIXUP_END_ = .);
121                PROVIDE (__FIXUP_END__ = .);
122                PROVIDE (_GOT2_END_ = .);
123                PROVIDE (_GOT_START_ = .);
124  s.got = .;
125  .got            : { *(.got) }
126  .got.plt        : { *(.got.plt) }
127                PROVIDE (_GOT_END_ = .);
128                PROVIDE (__GOT_END__ = .);
129  /* We want the small data sections together, so single-instruction offsets
130     can access them all, and initialized data all before uninitialized, so
131     we can shorten the on-disk segment size.  */
132  PROVIDE (__SDATA_START__ = .);
133  .sdata     : { *(.sdata*) *(.gnu.linkonce.s.*)        }
134  _edata  =  .;
135  PROVIDE (edata = .);
136  PROVIDE (RAM_END = ADDR(.text) + 10M);
137  . =  ALIGN(8) + 0x1000;
138  PROVIDE (__SBSS_START__ = .);
139  .sbss      :
140  {
141    PROVIDE (__sbss_start = .);
142    *(.sbss*)
143    *(.scommon)
144    PROVIDE (__sbss_end = .);
145  }
146  PROVIDE (__SBSS_END__ = .);
147  .bss       :
148  {
149   PROVIDE (__bss_start = .);
150   *(.dynbss)
151   *(.bss .bss* .gnu.linkonce.b*)
152   *(COMMON)
153   PROVIDE (__bss_end = .);
154  }
155  . =  ALIGN(8) + 0x8000;
156  PROVIDE (__stack = .);
157  _end = . ;
158  __rtems_end = . ;
159  PROVIDE (end = .);
160
161  /* These are needed for ELF backends which have not yet been
162     converted to the new style linker.  */
163  .stab 0 : { *(.stab) }
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.