/* Script for ld -Ur: link w/out relocation, do create constructors */
/* Copyright (C) 2014-2019 Free Software Foundation, Inc.
   Copying and distribution of this script, with or without modification,
   are permitted in any medium without royalty provided the copyright
   notice and this notice are preserved.  */
OUTPUT_FORMAT("elf32-littlearm-symbian", "elf32-bigarm-symbian",
	      "elf32-littlearm-symbian")
OUTPUT_ARCH(arm)
SECTIONS
{
  /* Read-only sections, merged into text segment: */
  /* Define Image$$ER_RO$$Base.  */
  .init         0 :
  {
    KEEP (*(SORT_NONE(.init)))
  } =0
  .text         0 :
  {
    *(.text .stub)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
  } =0
  .fini         0 :
  {
    KEEP (*(SORT_NONE(.fini)))
  } =0
  /* The SymbianOS kernel requires that the PLT go at the end of the
     text section.  */
  .plt          0 : { *(.plt) }
  /* Define Image$$ER_RO$$Limit.  */
  .rodata       0 : { *(.rodata) }
  .rodata1      0 : { *(.rodata1) }
  /* On SymbianOS, put  .init_array and friends in the read-only
     segment; there is no runtime relocation applied to these
     arrays.  */
  .preinit_array   0 :
  {
    KEEP (*(.preinit_array))
  }
  .ARM.extab 0 : { *(.ARM.extab) }
  .ARM.exidx 0 : { *(.ARM.exidx) }
  .eh_frame_hdr 0 : { *(.eh_frame_hdr) }
  .eh_frame     0 : ONLY_IF_RO { KEEP (*(.eh_frame)) }
  .gcc_except_table 0 : ONLY_IF_RO { KEEP (*(.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     0 : ONLY_IF_RW { KEEP (*(.eh_frame)) }
  .gcc_except_table 0 : ONLY_IF_RW { KEEP (*(.gcc_except_table)) }
  /* Thread Local Storage sections  */
  .tdata	0 : { *(.tdata) }
  .tbss		0 : { *(.tbss) }
  .jcr          0 : { KEEP (*(.jcr)) }
  .data         0 :
  {
    *(.data)
    SORT(CONSTRUCTORS)
  }
  .data1        0 : { *(.data1) }
  .bss          0 :
  {
   *(.bss)
  }
    .stack        0 :
  {
    *(.stack)
  }
  /* These sections are not mapped under the BPABI.  */
  .dynamic      0 : { *(.dynamic) }
  .hash         0 : { *(.hash) }
  .dynsym       0 : { *(.dynsym) }
  .dynstr       0 : { *(.dynstr) }
  .gnu.version  0 : { *(.gnu.version) }
  .gnu.version_d 0: { *(.gnu.version_d) }
  .gnu.version_r 0: { *(.gnu.version_r) }
  .interp       0 : { *(.interp) }
  /* 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) }
  /* DWARF Extension.  */
  .debug_macro    0 : { *(.debug_macro) }
  .debug_addr     0 : { *(.debug_addr) }
.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
/* This section contains data that is not initialised during load
   *or* application reset.  */
 .noinit (NOLOAD) :
 {
   . = ALIGN(2);
   PROVIDE (__noinit_start = .);
   *(.noinit)
   . = ALIGN(2);
   PROVIDE (__noinit_end = .);
 }
  .rel.init     0 : { *(.rel.init) }
  .rela.init    0 : { *(.rela.init) }
  .rel.text     0 : { *(.rel.text) }
  .rela.text    0 : { *(.rela.text) }
  .rel.fini     0 : { *(.rel.fini) }
  .rela.fini    0 : { *(.rela.fini) }
  .rel.rodata   0 : { *(.rel.rodata) }
  .rela.rodata  0 : { *(.rela.rodata) }
  .rel.data.rel.ro 0 : { *(.rel.data.rel.ro) }
  .rela.data.rel.ro 0 : { *(.rela.data.rel.ro) }
  .rel.data     0 : { *(.rel.data) }
  .rela.data    0 : { *(.rela.data) }
  .rel.tdata	0 : { *(.rel.tdata) }
  .rela.tdata	0 : { *(.rela.tdata) }
  .rel.tbss	0 : { *(.rel.tbss) }
  .rela.tbss	0 : { *(.rela.tbss) }
  .rel.ctors    0 : { *(.rel.ctors) }
  .rela.ctors   0 : { *(.rela.ctors) }
  .rel.dtors    0 : { *(.rel.dtors) }
  .rela.dtors   0 : { *(.rela.dtors) }
  .rel.bss      0 : { *(.rel.bss) }
  .rela.bss     0 : { *(.rela.bss) }
  .rel.init_array  0 : { *(.rel.init_array) }
  .rela.init_array 0 : { *(.rela.init_array) }
  .rel.fini_array  0 : { *(.rel.fini_array) }
  .rela.fini_array 0 : { *(.rela.fini_array) }
  .rel.plt      0 : { *(.rel.plt) }
  .rela.plt     0 : { *(.rela.plt) }
  .rel.other    0 : { *(.rel.*) }
  .rela.other   0 : { *(.rela.*) }
  .reli.other   0 : { *(.reli.*) }
}
