Warning, /bsps/nios2/nios2_iss/start/linkcmds is written in an unsupported language. File is not indexed.
0001 /* generated.x
0002 *
0003 * Machine generated for a CPU named "cpu_0" as defined in:
0004 * D:\eb2_nios2\kawkos.ptf
0005 *
0006 * Generated: 2005-07-10 11:52:46.899
0007 *
0008 */
0009
0010 /*
0011
0012 DO NOT MODIFY THIS FILE
0013
0014 Changing this file will have subtle consequences
0015 which will almost certainly lead to a nonfunctioning
0016 system. If you do modify this file, be aware that your
0017 changes will be overwritten and lost when this file
0018 is generated again.
0019
0020 DO NOT MODIFY THIS FILE
0021
0022 */
0023
0024 RamBase = DEFINED(RamBase) ? RamBase : 0x00000000;
0025 RamSize = DEFINED(RamSize) ? RamSize : 0x00800000;
0026 RamEnd = RamBase + RamSize;
0027 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
0028
0029 MEMORY
0030 {
0031 reset : ORIGIN = 0x00000000, LENGTH = 0x00000600
0032 exceptions : ORIGIN = 0x00000600, LENGTH = 0x00000A00
0033 onchip_memory_0 : ORIGIN = 0x00001000, LENGTH = 0x007FF000
0034 }
0035
0036 /* Define symbols for each memory base-address */
0037 __alt_mem_onchip_memory_0 = 0x00000000 ;
0038
0039 __nios2_icache_size = 4096 ;
0040 __nios2_icache_line_size = 32 ;
0041 __nios2_dcache_size = 0 ;
0042 __nios2_dcache_line_size = 4 ;
0043
0044 OUTPUT_FORMAT( "elf32-littlenios2",
0045 "elf32-littlenios2",
0046 "elf32-littlenios2" )
0047 OUTPUT_ARCH( nios2 )
0048 ENTRY(start)
0049 STARTUP(start.o)
0050
0051 /* Do we need any of these for elf?
0052 __DYNAMIC = 0;
0053 */
0054
0055 SECTIONS
0056 {
0057 .entry :
0058 {
0059 KEEP (*(.entry))
0060 } > reset
0061
0062 .exceptions :
0063 {
0064 PROVIDE (__ram_exceptions_start = ABSOLUTE(.));
0065 . = ALIGN(0x20);
0066 *(.irq)
0067 KEEP (*(.exceptions.entry.label));
0068 KEEP (*(.exceptions.entry.user));
0069 KEEP (*(.exceptions.entry));
0070 KEEP (*(.exceptions.irqtest.user));
0071 KEEP (*(.exceptions.irqtest));
0072 KEEP (*(.exceptions.irqhandler.user));
0073 KEEP (*(.exceptions.irqhandler));
0074 KEEP (*(.exceptions.irqreturn.user));
0075 KEEP (*(.exceptions.irqreturn));
0076 KEEP (*(.exceptions.notirq.label));
0077 KEEP (*(.exceptions.notirq.user));
0078 KEEP (*(.exceptions.notirq));
0079 KEEP (*(.exceptions.soft.user));
0080 KEEP (*(.exceptions.soft));
0081 KEEP (*(.exceptions.unknown.user));
0082 KEEP (*(.exceptions.unknown));
0083 KEEP (*(.exceptions.exit.label));
0084 KEEP (*(.exceptions.exit.user));
0085 KEEP (*(.exceptions.exit));
0086 KEEP (*(.exceptions));
0087 PROVIDE (__ram_exceptions_end = ABSOLUTE(.));
0088 } > exceptions
0089
0090 PROVIDE (__flash_exceptions_start = LOADADDR(.exceptions));
0091
0092 .text :
0093 {
0094 /*
0095 * All code sections are merged into the text output section, along with
0096 * the read only data sections.
0097 *
0098 */
0099
0100 PROVIDE (stext = ABSOLUTE(.));
0101
0102 *(.interp)
0103 *(.hash)
0104 *(.dynsym)
0105 *(.dynstr)
0106 *(.gnu.version)
0107 *(.gnu.version_d)
0108 *(.gnu.version_r)
0109 *(.rel.init)
0110 *(.rela.init)
0111 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
0112 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
0113 *(.rel.fini)
0114 *(.rela.fini)
0115 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
0116 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
0117 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
0118 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
0119 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
0120 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
0121 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
0122 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
0123 *(.rel.ctors)
0124 *(.rela.ctors)
0125 *(.rel.dtors)
0126 *(.rela.dtors)
0127 *(.rel.got)
0128 *(.rela.got)
0129 *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
0130 *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
0131 *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
0132 *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
0133 *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
0134 *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
0135 *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
0136 *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
0137 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
0138 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
0139 *(.rel.plt)
0140 *(.rela.plt)
0141
0142 KEEP (*(.init))
0143 *(.plt)
0144 *(.text .stub .text.* .gnu.linkonce.t.*)
0145
0146 /* Special FreeBSD sysctl sections. */
0147 . = ALIGN (16);
0148 __start_set_sysctl_set = .;
0149 *(set_sysctl_*);
0150 __stop_set_sysctl_set = ABSOLUTE(.);
0151 *(set_domain_*);
0152 *(set_pseudo_*);
0153
0154 /* .gnu.warning sections are handled specially by elf32.em. */
0155
0156 *(.gnu.warning.*)
0157 KEEP (*(.fini))
0158 PROVIDE (__etext = ABSOLUTE(.));
0159 PROVIDE (_etext = ABSOLUTE(.));
0160 PROVIDE (etext = ABSOLUTE(.));
0161
0162 *(.eh_frame_hdr)
0163 /* Ensure the __preinit_array_start label is properly aligned. We
0164 could instead move the label definition inside the section, but
0165 the linker would then create the section even if it turns out to
0166 be empty, which isn't pretty. */
0167 . = ALIGN(32 / 8);
0168 PROVIDE (__preinit_array_start = ABSOLUTE(.));
0169 *(.preinit_array)
0170 PROVIDE (__preinit_array_end = ABSOLUTE(.));
0171 PROVIDE (__init_array_start = ABSOLUTE(.));
0172 *(.init_array)
0173 PROVIDE (__init_array_end = ABSOLUTE(.));
0174 PROVIDE (__fini_array_start = ABSOLUTE(.));
0175 *(.fini_array)
0176 PROVIDE (__fini_array_end = ABSOLUTE(.));
0177 SORT(CONSTRUCTORS)
0178 KEEP (*(.eh_frame))
0179 *(.gcc_except_table*)
0180 *(.dynamic)
0181 PROVIDE (__CTOR_LIST__ = ABSOLUTE(.));
0182 KEEP (*(.ctors))
0183 KEEP (*(SORT(.ctors.*)))
0184 PROVIDE (__CTOR_END__ = ABSOLUTE(.));
0185 PROVIDE (__DTOR_LIST__ = ABSOLUTE(.));
0186 KEEP (*(.dtors))
0187 KEEP (*(SORT(.dtors.*)))
0188 PROVIDE (__DTOR_END__ = ABSOLUTE(.));
0189 KEEP (*(.jcr))
0190 . = ALIGN(32 / 8);
0191 } > onchip_memory_0 = 0x3a880100 /* NOP on Nios2 (big endian) */
0192
0193 .rodata :
0194 {
0195 PROVIDE (__ram_rodata_start = ABSOLUTE(.));
0196 . = ALIGN(32 / 8);
0197 *(.rodata .rodata.* .gnu.linkonce.r.*)
0198 *(.rodata1)
0199 KEEP (*(SORT(.rtemsroset.*)))
0200 } > onchip_memory_0
0201
0202 .tdata : {
0203 _TLS_Data_begin = .;
0204 *(.tdata .tdata.* .gnu.linkonce.td.*)
0205 _TLS_Data_end = .;
0206 } > onchip_memory_0
0207
0208 .tbss : {
0209 _TLS_BSS_begin = .;
0210 *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
0211 _TLS_BSS_end = .;
0212 . = ALIGN(32 / 8);
0213 PROVIDE (__ram_rodata_end = ABSOLUTE(.));
0214 } > onchip_memory_0
0215
0216 _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
0217 _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
0218 _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
0219 _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
0220 _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
0221 _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
0222
0223 PROVIDE (__flash_rodata_start = LOADADDR(.rodata));
0224
0225 .rwdata :
0226 {
0227 PROVIDE (__ram_rwdata_start = ABSOLUTE(.));
0228 . = ALIGN(32 / 8);
0229 *(.got.plt) *(.got)
0230 *(.data1)
0231 *(.data .data.* .gnu.linkonce.d.*)
0232 KEEP (*(SORT(.rtemsrwset.*)))
0233
0234 _gp = ABSOLUTE(. + 0x8000);
0235 PROVIDE(gp = _gp);
0236
0237 *(.sdata .sdata.* .gnu.linkonce.s.*)
0238 *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
0239
0240 . = ALIGN(32 / 8);
0241 _edata = ABSOLUTE(.);
0242 PROVIDE (edata = ABSOLUTE(.));
0243 PROVIDE (__ram_rwdata_end = ABSOLUTE(.));
0244 } > onchip_memory_0
0245
0246 PROVIDE (__flash_rwdata_start = LOADADDR(.rwdata));
0247
0248 .bss :
0249 {
0250 __bss_start = ABSOLUTE(.);
0251 PROVIDE (__sbss_start = ABSOLUTE(.));
0252 PROVIDE (___sbss_start = ABSOLUTE(.));
0253
0254 *(.dynsbss)
0255 *(.sbss .sbss.* .gnu.linkonce.sb.*)
0256 *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
0257 *(.scommon)
0258
0259 PROVIDE (__sbss_end = ABSOLUTE(.));
0260 PROVIDE (___sbss_end = ABSOLUTE(.));
0261
0262 *(.dynbss)
0263 *(.bss .bss.* .gnu.linkonce.b.*)
0264 *(COMMON)
0265
0266 . = ALIGN(32 / 8);
0267 __bss_end = ABSOLUTE(.);
0268 } > onchip_memory_0
0269
0270 .noinit (NOLOAD) : {
0271 *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
0272 } > onchip_memory_0
0273
0274 .rtemsstack (NOLOAD) : {
0275 _stack_low = ABSOLUTE(.);
0276 *(SORT(.rtemsstack.*))
0277 _stack_high = ABSOLUTE(.);
0278 WorkAreaBase = .;
0279 } > onchip_memory_0
0280
0281 /*
0282 * One output section for each of the available partitions. These are not
0283 * used by default, but can be used by users applications using the .section
0284 * directive.
0285 *
0286 * The memory partition used for the heap is treated in special way, i.e. a
0287 * symbol is added to point to the heap start.
0288 *
0289 * Note that when running from flash, these sections are not loaded by the
0290 * HAL.
0291 *
0292 */
0293
0294 .onchip_memory_0 :
0295 {
0296 PROVIDE (_alt_partition_onchip_memory_0_start = ABSOLUTE(.));
0297 *(.onchip_memory_0 .onchip_memory_0.*)
0298 . = ALIGN(32 / 8);
0299 PROVIDE (_alt_partition_onchip_memory_0_end = ABSOLUTE(.));
0300 _end = ABSOLUTE(.);
0301 end = ABSOLUTE(.);
0302
0303 } > onchip_memory_0
0304
0305 PROVIDE (_alt_partition_onchip_memory_0_load_addr = LOADADDR(.onchip_memory_0));
0306
0307 /*
0308 * Stabs debugging sections.
0309 *
0310 */
0311
0312 .stab 0 : { *(.stab) }
0313 .stabstr 0 : { *(.stabstr) }
0314 .stab.excl 0 : { *(.stab.excl) }
0315 .stab.exclstr 0 : { *(.stab.exclstr) }
0316 .stab.index 0 : { *(.stab.index) }
0317 .stab.indexstr 0 : { *(.stab.indexstr) }
0318 .comment 0 : { *(.comment) }
0319 /* DWARF debug sections.
0320 Symbols in the DWARF debugging sections are relative to the beginning
0321 of the section so we begin them at 0. */
0322 /* DWARF 1 */
0323 .debug 0 : { *(.debug) }
0324 .line 0 : { *(.line) }
0325 /* GNU DWARF 1 extensions */
0326 .debug_srcinfo 0 : { *(.debug_srcinfo) }
0327 .debug_sfnames 0 : { *(.debug_sfnames) }
0328 /* DWARF 1.1 and DWARF 2 */
0329 .debug_aranges 0 : { *(.debug_aranges) }
0330 .debug_pubnames 0 : { *(.debug_pubnames) }
0331 /* DWARF 2 */
0332 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
0333 .debug_abbrev 0 : { *(.debug_abbrev) }
0334 .debug_line 0 : { *(.debug_line) }
0335 .debug_frame 0 : { *(.debug_frame) }
0336 .debug_str 0 : { *(.debug_str) }
0337 .debug_loc 0 : { *(.debug_loc) }
0338 .debug_macinfo 0 : { *(.debug_macinfo) }
0339 /* SGI/MIPS DWARF 2 extensions */
0340 .debug_weaknames 0 : { *(.debug_weaknames) }
0341 .debug_funcnames 0 : { *(.debug_funcnames) }
0342 .debug_typenames 0 : { *(.debug_typenames) }
0343 .debug_varnames 0 : { *(.debug_varnames) }
0344
0345 /* Altera debug extensions */
0346 .debug_alt_sim_info 0 : { *(.debug_alt_sim_info) }
0347 }
0348 /* provide a pointer for the stack */
0349
0350 /*
0351 * Don't override this, override the __alt_stack_* symbols instead.
0352 */
0353 __alt_data_end = 0x00800000;
0354
0355 /*
0356 * The next two symbols define the location of the default stack. You can
0357 * override them to move the stack to a different memory.
0358 */
0359 PROVIDE( __alt_stack_pointer = _stack_high );
0360 PROVIDE( __alt_stack_limit = _stack_low );
0361
0362 /*
0363 * This symbol controls where the start of the heap is. If the stack is
0364 * contiguous with the heap then the stack will contract as memory is
0365 * allocated to the heap.
0366 * Override this symbol to put the heap in a different memory.
0367 */
0368 PROVIDE( __alt_heap_start = end );
0369