/* Script for ld -Ur: link w/out relocation, do create constructors */
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
	      "elf32-littlearm")
OUTPUT_ARCH(arm)
SECTIONS
{
  /* Read-only sections, merged into text segment: */
  .interp        : { *(.interp) }
  .note.gnu.build-id : { *(.note.gnu.build-id) }
  .hash          : { *(.hash) }
  .gnu.hash      : { *(.gnu.hash) }
  .dynsym        : { *(.dynsym) }
  .dynstr        : { *(.dynstr) }
  .gnu.version   : { *(.gnu.version) }
  .gnu.version_d : { *(.gnu.version_d) }
  .gnu.version_r : { *(.gnu.version_r) }
  .rel.init      : { *(.rel.init) }
  .rela.init     : { *(.rela.init) }
  .rel.text      : { *(.rel.text) }
  .rela.text     : { *(.rela.text) }
  .rel.fini      : { *(.rel.fini) }
  .rela.fini     : { *(.rela.fini) }
  .rel.rodata    : { *(.rel.rodata) }
  .rela.rodata   : { *(.rela.rodata) }
  .rel.data.rel.ro  : { *(.rel.data.rel.ro) }
  .rela.data.rel.ro  : { *(.rela.data.rel.ro) }
  .rel.data      : { *(.rel.data) }
  .rela.data     : { *(.rela.data) }
  .rel.tdata	 : { *(.rel.tdata) }
  .rela.tdata	 : { *(.rela.tdata) }
  .rel.tbss	 : { *(.rel.tbss) }
  .rela.tbss	 : { *(.rela.tbss) }
  .rel.ctors     : { *(.rel.ctors) }
  .rela.ctors    : { *(.rela.ctors) }
  .rel.dtors     : { *(.rel.dtors) }
  .rela.dtors    : { *(.rela.dtors) }
  .rel.got       : { *(.rel.got) }
  .rela.got      : { *(.rela.got) }
  .rel.bss       : { *(.rel.bss) }
  .rela.bss      : { *(.rela.bss) }
  .rel.iplt      :
    {
      *(.rel.iplt)
    }
  .rela.iplt     :
    {
      *(.rela.iplt)
    }
  .rel.plt       :
    {
      *(.rel.plt)
    }
  .rela.plt      :
    {
      *(.rela.plt)
    }
  .init          :
  {
    KEEP (*(.init))
  } =0
  .plt           : { *(.plt) }
  .iplt          : { *(.iplt) }
  .text          :
  {
    *(.text .stub)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
  } =0
  .fini          :
  {
    KEEP (*(.fini))
  } =0
  .rodata        : { *(.rodata) }
  .rodata1       : { *(.rodata1) }
  .ARM.extab 0 : { *(.ARM.extab) }
  .ARM.exidx 0 : { *(.ARM.exidx) }
  .eh_frame_hdr : { *(.eh_frame_hdr) }
  .eh_frame      : ONLY_IF_RO { KEEP (*(.eh_frame)) }
  .gcc_except_table  : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  /* Exception handling  */
  .eh_frame      : ONLY_IF_RW { KEEP (*(.eh_frame)) }
  .gcc_except_table  : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
  /* Thread Local Storage sections  */
  .tdata	 : { *(.tdata) }
  .tbss		 : { *(.tbss) }
  .preinit_array    :
  {
    KEEP (*(.preinit_array))
  }
  .init_array    :
  {
     KEEP (*(SORT(.init_array.*)))
     KEEP (*(.init_array))
  }
  .fini_array    :
  {
    KEEP (*(.fini_array))
    KEEP (*(SORT(.fini_array.*)))
  }
  .jcr           : { KEEP (*(.jcr)) }
  .dynamic       : { *(.dynamic) }
  .got           : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }
  .data          :
  {
    *(.data)
    SORT(CONSTRUCTORS)
  }
  .data1         : { *(.data1) }
  .bss           :
  {
   *(.dynbss)
   *(.bss)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.
      FIXME: Why do we need it? When there is no .bss section, we don't
      pad the .data section.  */
  }
  /* 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) }
  .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) }
  /* DWARF 3 */
  .debug_pubtypes 0 : { *(.debug_pubtypes) }
  .debug_ranges   0 : { *(.debug_ranges) }
  .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
  .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
}
