STARTUP(cygmon-crt0.o)
ENTRY(__start)
GROUP(-lcygmon -lc -lcygmon -lgcc)
SEARCH_DIR(.)
__DYNAMIC  =  0;

/*
 * Allocate the stack to be at the top of memory, since the stack
 * grows down
 */
PROVIDE (__stack = 0x500000);

/*
 * Initalize some symbols to be zero so we can reference them in the
 * crt0 without core dumping. These functions are all optional, but
 * we do this so we can have our crt0 always use them if they exist. 
 * This is so BSPs work better when using the crt0 installed with gcc.
 * We have to initalize them twice, so we multiple object file
 * formats, as some prepend an underscore.
 */
PROVIDE (hardware_init_hook = 0);
PROVIDE (software_init_hook = 0);
PROVIDE (__mem_start = 0x100000);
PROVIDE (___mem_start = 0x100000);
SECTIONS
{	
  . = 0x100000;
  .text : {
     _ftext = . ;
    *(.init)
     eprol  =  .;
    *(.text)
    PROVIDE (__runtime_reloc_start = .);
    *(.rel.sdata)
    PROVIDE (__runtime_reloc_stop = .);
    *(.fini)
     __CTOR_LIST__ = .;
    CONSTRUCTORS
    LONG(-1)
    *(.ctors)
    LONG(0)
    __CTOR_END__ = .;
    __DTOR_LIST__ = .;
    LONG(-1)
    *(.dtors)
     LONG(0)
    __DTOR_END__ = .;
    PROVIDE(_etext  =  .);
    PROVIDE(__etext  =  .);
  }
  . = .;
  .rdata : {
    *(.rdata)
  }
  .rodata : {
    *(.rodata)
  }
  .eh_frame :
  {
    PROVIDE (__EH_FRAME_BEGIN__ = .);
    *(.eh_frame)
    PROVIDE (__EH_FRAME_END__ = .);
  }
  _fdata = ALIGN(16);
  .data : {
    *(.data)
    *(.gcc_except_table)
    *(.gcc_exc)
  }
  . = ALIGN(8);
  _gp = . + 0x8000;
  __global = . + 0x8000;
  .lit8 : {
    *(.lit8)
  }
  .lit4 : {
    *(.lit4)
  }
  .sdata : {
    *(.sdata)
  }
  . = ALIGN(4);
   PROVIDE(_edata  =  .);
   PROVIDE(__edata  =  .);
   fbss = .;
   _fbss = .;
  .sbss : {
    PROVIDE(__bss_start = .);
    *(.sbss)
    *(.scommon)
  }
  .bss : {
    *(.bss)
    *(COMMON)
    PROVIDE(__bss_end = .);
  }
  PROVIDE(_end = .);
  PROVIDE(__end = .);
}
