github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/targets/maixbit.ld (about)

     1  
     2  MEMORY
     3  {
     4      RAM (xrw) : ORIGIN = 0x80000000, LENGTH = 6M
     5  }
     6  
     7  _stack_size = 2K;
     8  
     9  SECTIONS
    10  {
    11      .text :
    12      {
    13          . = ALIGN(16);
    14          KEEP(*(.init))
    15          . = ALIGN(16);
    16          *(.text.handleInterruptASM)
    17          *(.text)
    18          *(.text.*)
    19          *(.rodata)
    20          *(.rodata.*)
    21          . = ALIGN(16);
    22      } >RAM
    23  
    24  
    25      /* Start address (in flash) of .data, used by startup code. */
    26      _sidata = LOADADDR(.data);
    27  
    28      /* Globals with initial value */
    29      .data :
    30      {
    31          . = ALIGN(16);
    32          /* see https://gnu-mcu-eclipse.github.io/arch/riscv/programmer/#the-gp-global-pointer-register */
    33          PROVIDE( __global_pointer$ = . + (4K / 2) );
    34          _sdata = .;        /* used by startup code */
    35          *(.sdata)
    36          *(.data .data.*)
    37          . = ALIGN(16);
    38          _edata = .;        /* used by startup code */
    39      } >RAM
    40  
    41      /* Zero-initialized globals  */
    42      .bss :
    43      {
    44          . = ALIGN(16);
    45          _sbss = .;         /* used by startup code */
    46          *(.sbss)
    47          *(.bss .bss.*)
    48          *(COMMON)
    49          . = ALIGN(16);
    50          _ebss = .;         /* used by startup code */
    51      } >RAM
    52  
    53      /DISCARD/ :
    54      {
    55          *(.eh_frame)       /* causes 'no memory region specified' error in lld */
    56      }
    57  }
    58  
    59  PROVIDE(_stack_top = ORIGIN(RAM) + LENGTH(RAM));
    60  
    61  /* For the memory allocator. */
    62  _heap_start = _ebss;
    63  _heap_end = ORIGIN(RAM) + LENGTH(RAM) - _stack_size;
    64  _globals_start = _sdata;
    65  _globals_end = _ebss;