OUTPUT_FORMAT("binary", "binary", "binary")
OUTPUT_ARCH(m68k)
ENTRY(start)
SEARCH_DIR(/usr/lib);
/*__DYNAMIC = 0; */
PROVIDE (__stack = 0);
SECTIONS
{
 . = TEXTADDR;
 .text :
 ALIGN(2)
 SUBALIGN(2)
 {
   CREATE_OBJECT_SYMBOLS
   *(.text)
   *(.rodata)
   /* The next six sections are for SunOS dynamic linking.  The order
      is important.  */
   *(.dynrel)
   *(.hash)
   *(.dynsym)
   *(.dynstr)
   *(.rules)
   *(.need)
   etext = .;
   _etext = .;
 }
 .data :
 ALIGN(2)
 SUBALIGN(2)
 {
   /* The first three sections are for SunOS dynamic linking.  */
   *(.dynamic)
   *(.got)
   *(.plt)
   *(.data)
   *(.linux-dynamic) /* For Linux dynamic linking.  */
   CONSTRUCTORS
   edata  =  .;
   _edata  =  .;
 }
 . = TEXTADDR + TEXTDATASIZE;

 /* Place uint32_t startregs[16] out of bss */
 PROVIDE(startregs = .);
 . += 0x40/* sizeof(startregs) */;

 .bss :
 {
   __bss_start = .;
  *(.bss)
  *(COMMON)
  end = ALIGN(4) ;
  _end = ALIGN(4) ;
 }
 /DISCARD/ : { *(.ident) *(.stab) *(.stabstr) }
}

ASSERT(first_kbyte - TEXTADDR <= 1024, "Error: first_kbyte exceeds 1KB");
ASSERT(_end <= BOOT_TEXTADDR, "Error: _end conflicts BOOT_TEXT");