150 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
/*
 | 
						|
 * Simulator Link script for Lattice Mico32.
 | 
						|
 * Contributed by Jon Beniston <jon@beniston.com>
 | 
						|
 *
 | 
						|
 * Redistribution and use in source and binary forms, with or without
 | 
						|
 * modification, are permitted provided that the following conditions
 | 
						|
 * are met:
 | 
						|
 * 1. Redistributions of source code must retain the above copyright
 | 
						|
 * notice, this list of conditions and the following disclaimer.
 | 
						|
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
						|
 * notice, this list of conditions and the following disclaimer in the
 | 
						|
 * documentation and/or other materials provided with the distribution.
 | 
						|
 *
 | 
						|
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 | 
						|
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
						|
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
						|
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 | 
						|
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
						|
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
						|
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
						|
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
						|
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
						|
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
						|
 * SUCH DAMAGE.
 | 
						|
 */
 | 
						|
 | 
						|
OUTPUT_FORMAT("elf32-lm32")
 | 
						|
ENTRY(_start)
 | 
						|
INPUT(crti.o crtbegin.o crt0.o crtend.o crtn.o)
 | 
						|
GROUP(-lgloss -lnosys -lc -lgcc)
 | 
						|
 | 
						|
MEMORY
 | 
						|
{
 | 
						|
    ram : ORIGIN = 0x00000000, LENGTH = 0x100000
 | 
						|
}
 | 
						|
 | 
						|
SECTIONS
 | 
						|
{
 | 
						|
 | 
						|
  .boot : { *(.boot) } > ram
 | 
						|
   
 | 
						|
  /* Code */
 | 
						|
  .text           :
 | 
						|
  {
 | 
						|
    . = ALIGN(4);
 | 
						|
    _ftext = .;
 | 
						|
    _ftext_rom = LOADADDR(.text);
 | 
						|
    *(.text .stub .text.* .gnu.linkonce.t.*)
 | 
						|
    *(.gnu.warning)
 | 
						|
    KEEP (*(.init))
 | 
						|
    KEEP (*(.fini))
 | 
						|
    /* Constructors and destructors */
 | 
						|
    KEEP (*crtbegin*.o(.ctors))
 | 
						|
    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
 | 
						|
    KEEP (*(SORT(.ctors.*)))
 | 
						|
    KEEP (*(.ctors))
 | 
						|
    KEEP (*crtbegin*.o(.dtors))
 | 
						|
    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
 | 
						|
    KEEP (*(SORT(.dtors.*)))
 | 
						|
    KEEP (*(.dtors))
 | 
						|
    KEEP (*(.jcr))
 | 
						|
    _etext = .;
 | 
						|
  } > ram =0 
 | 
						|
 | 
						|
  /* Exception handlers */
 | 
						|
  .eh_frame_hdr : { *(.eh_frame_hdr) } > ram
 | 
						|
  .eh_frame : { KEEP (*(.eh_frame)) } > ram
 | 
						|
  .gcc_except_table : { *(.gcc_except_table) *(.gcc_except_table.*) } > ram
 | 
						|
    
 | 
						|
  /* Read-only data */
 | 
						|
  .rodata         : 
 | 
						|
  { 
 | 
						|
    . = ALIGN(4);
 | 
						|
    _frodata = .;
 | 
						|
    _frodata_rom = LOADADDR(.rodata);
 | 
						|
    *(.rodata .rodata.* .gnu.linkonce.r.*) 
 | 
						|
    *(.rodata1)
 | 
						|
    _erodata = .;
 | 
						|
  } > ram
 | 
						|
        
 | 
						|
  /* Data */
 | 
						|
  .data           : 
 | 
						|
  {
 | 
						|
    . = ALIGN(4);
 | 
						|
    _fdata = .;
 | 
						|
    _fdata_rom = LOADADDR(.data);
 | 
						|
    *(.data .data.* .gnu.linkonce.d.*)
 | 
						|
    *(.data1)
 | 
						|
    SORT(CONSTRUCTORS)
 | 
						|
    _gp = ALIGN(16) + 0x7ff0;
 | 
						|
    *(.sdata .sdata.* .gnu.linkonce.s.*)
 | 
						|
    _edata = .;
 | 
						|
  } > ram 
 | 
						|
  
 | 
						|
  /* BSS */
 | 
						|
  .bss           :
 | 
						|
  {
 | 
						|
    . = ALIGN(4);
 | 
						|
    _fbss = .;
 | 
						|
    *(.dynsbss)
 | 
						|
    *(.sbss .sbss.* .gnu.linkonce.sb.*)
 | 
						|
    *(.scommon)
 | 
						|
    *(.dynbss)
 | 
						|
    *(.bss .bss.* .gnu.linkonce.b.*)
 | 
						|
    *(COMMON)
 | 
						|
    . = ALIGN(4);
 | 
						|
    _ebss = .;
 | 
						|
    _end = .;
 | 
						|
    PROVIDE (end = .);
 | 
						|
  } > ram
 | 
						|
  
 | 
						|
  /* First location in stack is highest address in RAM */
 | 
						|
  PROVIDE(_fstack = ORIGIN(ram) + LENGTH(ram) - 4);
 | 
						|
  
 | 
						|
  /* Stabs debugging sections.  */
 | 
						|
  .stab          0 : { *(.stab) }
 | 
						|
  .stabstr       0 : { *(.stabstr) }
 | 
						|
  .stab.excl     0 : { *(.stab.excl) }
 | 
						|
  .stab.exclstr  0 : { *(.stab.exclstr) }
 | 
						|
  .stab.index    0 : { *(.stab.index) }
 | 
						|
  .stab.indexstr 0 : { *(.stab.indexstr) }
 | 
						|
  .comment       0 : { *(.comment) }
 | 
						|
  
 | 
						|
  /* DWARF debug sections.
 | 
						|
     Symbols in the DWARF debugging sections are relative to the beginning
 | 
						|
     of the section so we begin them at 0.  */
 | 
						|
  /* DWARF 1 */
 | 
						|
  .debug          0 : { *(.debug) }
 | 
						|
  .line           0 : { *(.line) }
 | 
						|
  /* GNU DWARF 1 extensions */
 | 
						|
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
 | 
						|
  .debug_sfnames  0 : { *(.debug_sfnames) }
 | 
						|
  /* DWARF 1.1 and DWARF 2 */
 | 
						|
  .debug_aranges  0 : { *(.debug_aranges) }
 | 
						|
  .debug_pubnames 0 : { *(.debug_pubnames) }
 | 
						|
  /* DWARF 2 */
 | 
						|
  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
 | 
						|
  .debug_abbrev   0 : { *(.debug_abbrev) }
 | 
						|
  .debug_line     0 : { *(.debug_line) }
 | 
						|
  .debug_frame    0 : { *(.debug_frame) }
 | 
						|
  .debug_str      0 : { *(.debug_str) }
 | 
						|
  .debug_loc      0 : { *(.debug_loc) }
 | 
						|
  .debug_macinfo  0 : { *(.debug_macinfo) }
 | 
						|
  /* SGI/MIPS DWARF 2 extensions */
 | 
						|
  .debug_weaknames 0 : { *(.debug_weaknames) }
 | 
						|
  .debug_funcnames 0 : { *(.debug_funcnames) }
 | 
						|
  .debug_typenames 0 : { *(.debug_typenames) }
 | 
						|
  .debug_varnames  0 : { *(.debug_varnames) }
 | 
						|
}
 |