Warning, /bsps/powerpc/shared/start/linkcmds.share is written in an unsupported language. File is not indexed.
0001 OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
0002 "elf32-powerpc")
0003 OUTPUT_ARCH(powerpc)
0004
0005 /* Do we need any of these for elf?
0006 __DYNAMIC = 0; */
0007 MEMORY {
0008 VECTORS : ORIGIN = 0x0 , LENGTH = 0x3000
0009 CODE : ORIGIN = 0x3000 , LENGTH = 32M - 0x3000
0010 }
0011
0012 /*
0013 * The upper layer linker command file may optionally define the symbol
0014 * bsp_section_small_data_area_size. By default, the small data area is
0015 * defined by the .sdata and .sbss input sections. Define
0016 * bsp_section_small_data_area_size, if you want to make space available for
0017 * dynamically loaded libraries (libdl). Small memory targets which do not use
0018 * libdl, should not define this symbol.
0019 */
0020
0021 SECTIONS
0022 {
0023 .entry_point_section :
0024 {
0025 KEEP(*(.entry_point_section))
0026 } > VECTORS
0027
0028 /*
0029 * This section is used only if NO_DYNAMIC_EXCEPTION_VECTOR_INSTALL
0030 * is defined in vectors/vectors.S
0031 */
0032 .vectors :
0033 {
0034 *(.vectors)
0035 } > VECTORS
0036
0037 /* Read-only sections, merged into text segment: */
0038 .interp : { *(.interp) } > CODE
0039 .hash : { *(.hash) } > CODE
0040 .dynsym : { *(.dynsym) } > CODE
0041 .dynstr : { *(.dynstr) } > CODE
0042 .gnu.version : { *(.gnu.version) } > CODE
0043 .gnu.version_d : { *(.gnu.version_d) } > CODE
0044 .gnu.version_r : { *(.gnu.version_r) } > CODE
0045 .rela.text :
0046 { *(.rela.text) *(.rela.gnu.linkonce.t*) } > CODE
0047 .rela.data :
0048 { *(.rela.data) *(.rela.gnu.linkonce.d*) } > CODE
0049 .rela.rodata :
0050 { *(.rela.rodata*) *(.rela.gnu.linkonce.r*) } > CODE
0051 .rela.got : { *(.rela.got) } > CODE
0052 .rela.got1 : { *(.rela.got1) } > CODE
0053 .rela.got2 : { *(.rela.got2) } > CODE
0054 .rela.ctors : { *(.rela.ctors) } > CODE
0055 .rela.dtors : { *(.rela.dtors) } > CODE
0056 .rela.init : { *(.rela.init) } > CODE
0057 .rela.fini : { *(.rela.fini) } > CODE
0058 .rela.bss : { *(.rela.bss) } > CODE
0059 .rela.plt : { *(.rela.plt) } > CODE
0060 .rela.sdata : { *(.rela.sdata) } > CODE
0061 .rela.sbss : { *(.rela.sbss) } > CODE
0062 .rela.sdata2 : { *(.rela.sdata2) } > CODE
0063 .rela.sbss2 : { *(.rela.sbss2) } > CODE
0064 .rela.dyn : { *(.rela.dyn) } > CODE
0065
0066 .init : { KEEP(*(.init)) } > CODE
0067
0068 .text :
0069 {
0070 *(.text*)
0071
0072 /*
0073 * Special FreeBSD sysctl sections.
0074 */
0075 . = ALIGN (16);
0076 __start_set_sysctl_set = .;
0077 *(set_sysctl_*);
0078 __stop_set_sysctl_set = ABSOLUTE(.);
0079 *(set_domain_*);
0080 *(set_pseudo_*);
0081
0082 /* .gnu.warning sections are handled specially by elf32.em. */
0083 *(.gnu.warning)
0084 *(.gnu.linkonce.t*)
0085 } > CODE
0086
0087 .fini : { _fini = .; KEEP(*(.fini)) } > CODE
0088
0089 .rodata : { *(.rodata*) KEEP (*(SORT(.rtemsroset.*))) *(.gnu.linkonce.r*) } > CODE
0090 .rodata1 : { *(.rodata1) } > CODE
0091
0092 .tdata : {
0093 _TLS_Data_begin = .;
0094 *(.tdata .tdata.* .gnu.linkonce.td.*)
0095 _TLS_Data_end = .;
0096 } >CODE
0097
0098 .tbss : {
0099 _TLS_BSS_begin = .;
0100 *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
0101 _TLS_BSS_end = .;
0102 } >CODE
0103
0104 _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
0105 _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
0106 _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
0107 _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
0108 _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
0109 _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
0110
0111 /* Adjust the address for the data segment. We want to adjust up to
0112 the same address within the page on the next page up. */
0113 . = ALIGN(0x10000) + (. & (0x10000 - 1));
0114 /* Ensure the __preinit_array_start label is properly aligned. We
0115 could instead move the label definition inside the section, but
0116 the linker would then create the section even if it turns out to
0117 be empty, which isn't pretty. */
0118 . = ALIGN(32 / 8);
0119 PROVIDE (__preinit_array_start = .);
0120 .preinit_array : { *(.preinit_array) } >CODE
0121 PROVIDE (__preinit_array_end = .);
0122 PROVIDE (__init_array_start = .);
0123 .init_array : { *(.init_array) } >CODE
0124 PROVIDE (__init_array_end = .);
0125 PROVIDE (__fini_array_start = .);
0126 .fini_array : { *(.fini_array) } >CODE
0127 PROVIDE (__fini_array_end = .);
0128
0129 .sdata2 : {PROVIDE (_SDA2_BASE_ = 32768); *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } >CODE
0130 .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
0131 /* avoid empty sdata2/sbss2 area -- __eabi would not set up r2
0132 * which may be important if run-time loading is used
0133 */
0134 . += 1;
0135 PROVIDE (__SBSS2_END__ = .);
0136 } >CODE
0137 .eh_frame_hdr : { *(.eh_frame_hdr) } >CODE
0138 .eh_frame : { KEEP (*(.eh_frame)) } >CODE
0139
0140 /* NOTE: if the BSP uses page tables, the correctness of
0141 * '_etext' (and __DATA_START__) is CRUCIAL - otherwise,
0142 * an invalid mapping may result!!!
0143 */
0144 _etext = .;
0145 PROVIDE (etext = .);
0146
0147 /* Adjust the address for the data segment. We want to adjust up to
0148 the same address within the page on the next page up. It would
0149 be more correct to do this:
0150 . = ALIGN(0x40000) + (ALIGN(8) & (0x40000 - 1));
0151 The current expression does not correctly handle the case of a
0152 text segment ending precisely at the end of a page; it causes the
0153 data segment to skip a page. The above expression does not have
0154 this problem, but it will currently (2/95) cause BFD to allocate
0155 a single segment, combining both text and data, for this case.
0156 This will prevent the text segment from being shared among
0157 multiple executions of the program; I think that is more
0158 important than losing a page of the virtual address space (note
0159 that no actual memory is lost; the page which is skipped can not
0160 be referenced). */
0161 . = ALIGN(0x1000);
0162 .data ALIGN(0x1000) :
0163 {
0164 /* NOTE: if the BSP uses page tables, the correctness of
0165 * '__DATA_START__' (and _etext) is CRUCIAL - otherwise,
0166 * an invalid mapping may result!!!
0167 */
0168 PROVIDE(__DATA_START__ = ABSOLUTE(.) );
0169 *(.data .data.* .gnu.linkonce.d*)
0170 KEEP (*(SORT(.rtemsrwset.*)))
0171 SORT(CONSTRUCTORS)
0172 } > CODE
0173 .data1 : { *(.data1) } > CODE
0174 PROVIDE (__EXCEPT_START__ = .);
0175 .gcc_except_table : { *(.gcc_except_table .gcc_except_table.*) } > CODE
0176 PROVIDE (__EXCEPT_END__ = .);
0177 .got1 : { *(.got1) } > CODE
0178 /* Put .ctors and .dtors next to the .got2 section, so that the pointers
0179 get relocated with -mrelocatable. Also put in the .fixup pointers.
0180 The current compiler no longer needs this, but keep it around for 2.7.2 */
0181 PROVIDE (_GOT2_START_ = .);
0182 .got2 : { *(.got2) } > CODE
0183 .dynamic : { *(.dynamic) } > CODE
0184
0185 .ctors : {
0186 KEEP (*ecrti.o(.ctors))
0187 KEEP (*crtbegin.o(.ctors))
0188 KEEP (*crtbegin?.o(.ctors))
0189 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o *ecrtn.o) .ctors))
0190 KEEP (*(SORT(.ctors.*)))
0191 KEEP (*(.ctors))
0192 } > CODE
0193 .dtors : {
0194 KEEP (*ecrti.o(.dtors))
0195 KEEP (*crtbegin.o(.dtors))
0196 KEEP (*crtbegin?.o(.dtors))
0197 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o *ecrtn.o) .dtors))
0198 KEEP (*(SORT(.dtors.*)))
0199 KEEP (*(.dtors))
0200 } > CODE
0201
0202
0203 PROVIDE (_FIXUP_START_ = .);
0204 .fixup : { *(.fixup) } > CODE
0205 PROVIDE (_FIXUP_END_ = .);
0206 PROVIDE (_GOT2_END_ = .);
0207 PROVIDE (_GOT_START_ = .);
0208
0209 .got : { *(.got) } > CODE
0210 .got.plt : { *(.got.plt) } > CODE
0211
0212 PROVIDE (_GOT_END_ = .);
0213
0214 .jcr : { KEEP (*(.jcr)) } > CODE
0215
0216 /* We want the small data sections together, so single-instruction offsets
0217 can access them all, and initialized data all before uninitialized, so
0218 we can shorten the on-disk segment size. */
0219 .sdata : {
0220 bsp_section_sdata_begin = .;
0221 PROVIDE (_SDA_BASE_ = 32768);
0222 *(.sdata*) *(.gnu.linkonce.s.*)
0223 bsp_section_sdata_end = .;
0224 } > CODE
0225 _edata = .;
0226 PROVIDE (edata = .);
0227 .sbss :
0228 {
0229 bsp_section_sbss_begin = .;
0230 PROVIDE (__sbss_start = .);
0231 *(.dynsbss)
0232 *(.sbss* .gnu.linkonce.sb.*)
0233 *(.scommon)
0234 /* avoid empty sdata/sbss area -- __eabi would not set up r13
0235 * which may be important if run-time loading is used
0236 */
0237 . += 1;
0238 PROVIDE (__SBSS_END__ = .);
0239 PROVIDE (__sbss_end = .);
0240 bsp_section_sbss_end = .;
0241 bsp_section_sdata_libdl_begin = .;
0242 . = DEFINED(bsp_section_small_data_area_size) ?
0243 bsp_section_sdata_begin + bsp_section_small_data_area_size : .;
0244 bsp_section_sdata_libdl_end = .;
0245 } > CODE
0246 .plt : { *(.plt) } > CODE
0247 .bss :
0248 {
0249 PROVIDE (__bss_start = .);
0250 *(.dynbss)
0251 *(.bss .bss* .gnu.linkonce.b*)
0252 *(COMMON)
0253 . = ALIGN(16);
0254 PROVIDE (__bss_end = .);
0255 } > CODE
0256 .noinit (NOLOAD) : {
0257 *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
0258 } > CODE
0259 .rtemsstack (NOLOAD) : {
0260 *(SORT(.rtemsstack.*))
0261 } >CODE
0262 . = ALIGN(16);
0263 _end = . ;
0264 __rtems_end = . ;
0265 PROVIDE (end = .);
0266 /DISCARD/ :
0267 {
0268 *(.comment)
0269 }
0270
0271
0272 /* Stabs debugging sections. */
0273 .stab 0 : { *(.stab) }
0274 .stabstr 0 : { *(.stabstr) }
0275 .stab.excl 0 : { *(.stab.excl) }
0276 .stab.exclstr 0 : { *(.stab.exclstr) }
0277 .stab.index 0 : { *(.stab.index) }
0278 .stab.indexstr 0 : { *(.stab.indexstr) }
0279 .comment 0 : { *(.comment) }
0280
0281 /* DWARF debug sections.
0282 Symbols in the DWARF debugging sections are relative to the beginning
0283 of the section so we begin them at 0. */
0284 /* DWARF 1 */
0285 .debug 0 : { *(.debug) }
0286 .line 0 : { *(.line) }
0287
0288 /* GNU DWARF 1 extensions */
0289 .debug_srcinfo 0 : { *(.debug_srcinfo) }
0290 .debug_sfnames 0 : { *(.debug_sfnames) }
0291
0292 /* DWARF 1.1 and DWARF 2 */
0293 .debug_aranges 0 : { *(.debug_aranges) }
0294 .debug_pubnames 0 : { *(.debug_pubnames) }
0295
0296 /* DWARF 2 */
0297 .debug_info 0 : { *(.debug_info) }
0298 .debug_abbrev 0 : { *(.debug_abbrev) }
0299 .debug_line 0 : { *(.debug_line) }
0300 .debug_frame 0 : { *(.debug_frame) }
0301 .debug_str 0 : { *(.debug_str) }
0302 .debug_loc 0 : { *(.debug_loc) }
0303 .debug_macinfo 0 : { *(.debug_macinfo) }
0304
0305 /* SGI/MIPS DWARF 2 extensions */
0306 .debug_weaknames 0 : { *(.debug_weaknames) }
0307 .debug_funcnames 0 : { *(.debug_funcnames) }
0308 .debug_typenames 0 : { *(.debug_typenames) }
0309 .debug_varnames 0 : { *(.debug_varnames) }
0310 /* These must appear regardless of . */
0311 }