nanos_sdk 0.2.1

Rust SDK for Ledger device applications
SECTIONS
{
  .text :
  {
    _text = .;
    _nvram_start = .;

    *(.boot*)
    *(.text*)
    *(.rodata*) 

    . = ALIGN(PAGE_SIZE);
    _etext = .;
  } > FLASH

  .nvm_data : ALIGN(PAGE_SIZE)
  {
    _nvram_data = .;
    *(.nvm_data*)
    . = ALIGN(PAGE_SIZE);
    _envram_data = .;
    _install_parameters = .;
    _nvram_end = .;
  } > FLASH 

  .data : ALIGN(4)
  {
    _data = .;
    *(vtable)
    *(.data*)
    _edata = .;
  } > SRAM

  ASSERT( (_edata - _data) <= 0, ".data section must be empty" )

  .bss :
  {
    _bss = .;
    *(.bss*)
    _ebss = .;

    . = ALIGN(4);
    app_stack_canary = .;
    . += 4;
    _stack_validation = .;
    . = _stack_validation + STACK_SIZE;
    _stack = ABSOLUTE(END_STACK) - STACK_SIZE;
    _estack = ABSOLUTE(END_STACK);
  } > SRAM

  .ledger.api_level (INFO): { KEEP(*(.ledger.api_level)) }

  .stack_sizes (INFO):
  {
    KEEP(*(.stack_sizes));
  }

  /DISCARD/ :
  {
    libc.a ( * )
    libm.a ( * )
    libgcc.a ( * )
    *(.ARM.exidx* .gnu.linkonce.armexidx.*)
    *(.debug_info)
  }
}

PROVIDE(_nvram = ABSOLUTE(_nvram_start));
PROVIDE(_envram = ABSOLUTE(_nvram_end));