OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [crx/] [sim.ld] - Diff between revs 158 and 816

Only display areas with differences | Details | Blame | View Log

Rev 158 Rev 816
/* Example Linker Script for linking NS CRX elf32 files. */
/* Example Linker Script for linking NS CRX elf32 files. */
OUTPUT_FORMAT("elf32-crx")
OUTPUT_FORMAT("elf32-crx")
OUTPUT_ARCH(crx)
OUTPUT_ARCH(crx)
/*
/*
 The libh.a library includes various CR default handlers.
 The libh.a library includes various CR default handlers.
 The libsim.a library includes low-level functions, which
 The libsim.a library includes low-level functions, which
 are used as an interface to communicate with the simulator.
 are used as an interface to communicate with the simulator.
*/
*/
GROUP(-lc -lsim -lh -lgcc)
GROUP(-lc -lsim -lh -lgcc)
/*
/*
 The next line forces the entry point (_start in this script)
 The next line forces the entry point (_start in this script)
 to be entered in the output file as an undefined symbol.
 to be entered in the output file as an undefined symbol.
 It is needed in case the entry point is not called explicitly
 It is needed in case the entry point is not called explicitly
 (which is the usual case) AND is in an archive.
 (which is the usual case) AND is in an archive.
*/
*/
EXTERN(_start)
EXTERN(_start)
ENTRY(_start)
ENTRY(_start)
/* Define memory regions */
/* Define memory regions */
MEMORY
MEMORY
{
{
  rom  : ORIGIN = 0x2,  LENGTH = 3M
  rom  : ORIGIN = 0x2,  LENGTH = 3M
  ram  : ORIGIN = 4M,   LENGTH = 10M
  ram  : ORIGIN = 4M,   LENGTH = 10M
}
}
SECTIONS
SECTIONS
{
{
  .init :
  .init :
  {
  {
    __INIT_START = .;
    __INIT_START = .;
    KEEP (*(.init))
    KEEP (*(.init))
    __INIT_END = .;
    __INIT_END = .;
  } > rom
  } > rom
  .fini :
  .fini :
  {
  {
    __FINI_START = .;
    __FINI_START = .;
    KEEP (*(.fini))
    KEEP (*(.fini))
    __FINI_END = .;
    __FINI_END = .;
  } > rom
  } > rom
  .jcr :
  .jcr :
  {
  {
    KEEP (*(.jcr))
    KEEP (*(.jcr))
  } > rom
  } > rom
  .text :
  .text :
  {
  {
    __TEXT_START = .;
    __TEXT_START = .;
    *(.text) *(.text.*) *(.gnu.linkonce.t.*)
    *(.text) *(.text.*) *(.gnu.linkonce.t.*)
    __TEXT_END = .;
    __TEXT_END = .;
  } > rom
  } > rom
  .rdata :
  .rdata :
  {
  {
     __RDATA_START = .;
     __RDATA_START = .;
     *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*)
     *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*)
     __RDATA_END = .;
     __RDATA_END = .;
  } > rom
  } > rom
  .ctor ALIGN(4) :
  .ctor ALIGN(4) :
  {
  {
    __CTOR_START = .;
    __CTOR_START = .;
    KEEP (*crtbegin*.o(.ctors))
    KEEP (*crtbegin*.o(.ctors))
    KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))
    KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
    KEEP (*(.ctors))
    __CTOR_END = .;
    __CTOR_END = .;
  } > rom
  } > rom
  .dtor ALIGN(4) :
  .dtor ALIGN(4) :
  {
  {
    __DTOR_START = .;
    __DTOR_START = .;
    KEEP (*crtbegin*.o(.dtors))
    KEEP (*crtbegin*.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))
    KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
    KEEP (*(.dtors))
    __DTOR_END = .;
    __DTOR_END = .;
  } > rom
  } > rom
  .data :
  .data :
  {
  {
    __DATA_START = .;
    __DATA_START = .;
    *(.data_4) *(.data_2) *(.data_1) *(.data) *(.data.*) *(.gnu.linkonce.d.*)
    *(.data_4) *(.data_2) *(.data_1) *(.data) *(.data.*) *(.gnu.linkonce.d.*)
    __DATA_END = .;
    __DATA_END = .;
  } > ram AT > rom
  } > ram AT > rom
  .bss (NOLOAD) :
  .bss (NOLOAD) :
  {
  {
    __BSS_START = .;
    __BSS_START = .;
    *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) *(.bss.*) *(.gnu.linkonce.b.*)
    *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) *(.bss.*) *(.gnu.linkonce.b.*)
    __BSS_END = .;
    __BSS_END = .;
  } > ram
  } > ram
/*
/*
 You may change the sizes of the following sections to fit the actual
 You may change the sizes of the following sections to fit the actual
 size your program requires.
 size your program requires.
 The heap and stack are aligned to the bus width, as a speed optimization
 The heap and stack are aligned to the bus width, as a speed optimization
 for accessing data located there.
 for accessing data located there.
*/
*/
  .heap :
  .heap :
  {
  {
    . = ALIGN(4);
    . = ALIGN(4);
    __HEAP_START = .;
    __HEAP_START = .;
    . += 0x2000;
    . += 0x2000;
    __HEAP_MAX = .;
    __HEAP_MAX = .;
  } > ram
  } > ram
  .stack :
  .stack :
  {
  {
    . = ALIGN(4);
    . = ALIGN(4);
    . += 0x6000;
    . += 0x6000;
    __STACK_START = .;
    __STACK_START = .;
  } > ram
  } > ram
  .istack :
  .istack :
  {
  {
    . = ALIGN(4);
    . = ALIGN(4);
    . += 0x100;
    . += 0x100;
    __ISTACK_START = .;
    __ISTACK_START = .;
  } > ram
  } > ram
}
}
__DATA_IMAGE_START = LOADADDR(.data);
__DATA_IMAGE_START = LOADADDR(.data);
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.