TORS=".tors :
	{
	  ___ctors = . ;
	  *(.ctors)
	  ___ctors_end = . ;
	  ___dtors = . ;
	  *(.dtors)
	  ___dtors_end = . ;
	} > ram"

cat <<EOF
OUTPUT_FORMAT("${OUTPUT_FORMAT}")
OUTPUT_ARCH(h8300s)
${RELOCATING+ENTRY ("_start")}

/* The memory size is 256KB to coincide with the simulator.
   Don't change either without considering the other.  */

MEMORY
{
	/* 0xc4 is a magic entry.  We should have the linker just
	   skip over it one day...  */
	vectors : o = 0x0000, l = 0xc4
	magicvectors : o = 0xc4, l = 0x3c
	/* We still only use 256k as the main ram size.  */
	ram    : o = 0x0100, l = 0x3fefc
	/* The stack starts at the top of main ram.  */
	topram : o = 0x3fffc, l = 0x4
	/* This holds variables in the "tiny" sections.  */
	tiny   : o = 0xff8000, l = 0x7f00
	/* At the very top of the address space is the 8-bit area.  */
	eight  : o = 0xffff00, l = 0x100
}

SECTIONS
{
.vectors :
	{
	  /* Use something like this to place a specific
	     function's address into the vector table.

	     LONG (ABSOLUTE (_foobar)).  */

	  *(.vectors)
	} ${RELOCATING+ > vectors}

.text :
	{
	  *(.rodata)
	  *(.text)
	  *(.strings)
   	  ${RELOCATING+ _etext = . ; }
	} ${RELOCATING+ > ram}

${CONSTRUCTING+${TORS}}

.data :
	{
	  *(.data)
	  ${RELOCATING+ _edata = . ; }
	} ${RELOCATING+ > ram}

.bss :
	{
	  ${RELOCATING+ _bss_start = . ;}
	  *(.bss)
	  *(COMMON)
	  ${RELOCATING+ _end = . ;  }
	} ${RELOCATING+ >ram}

.stack :
	{
	  ${RELOCATING+ _stack = . ; }
	  *(.stack)
	} ${RELOCATING+ > topram}

.tiny :
	{
	  *(.tiny)
	} ${RELOCATING+ > tiny}

.eight :
	{
	  *(.eight)
	} ${RELOCATING+ > eight}

.stab 0 ${RELOCATING+(NOLOAD)} :
	{
	  [ .stab ]
	}

.stabstr 0 ${RELOCATING+(NOLOAD)} :
	{
	  [ .stabstr ]
	}
}
EOF
