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

     1  
     2  MEMORY
     3  {
     4      FLASH_TEXT (rw) : ORIGIN = 0,                      LENGTH = __flash_size - _bootloader_size
     5      RAM (xrw)       : ORIGIN = 0x800000 + __ram_start, LENGTH = __ram_size
     6  }
     7  
     8  ENTRY(main)
     9  
    10  SECTIONS
    11  {
    12      .text :
    13      {
    14          KEEP(*(.vectors))
    15          KEEP(*(.text.__vector_RESET))
    16          KEEP(*(.text.main)) /* main must follow the reset handler */
    17          *(.text)
    18          *(.text.*)
    19          *(.progmem)
    20          *(.progmem.*)
    21          . = ALIGN(16); /* needed with ld.lld for some reasoon */
    22      }
    23  
    24      .stack (NOLOAD) :
    25      {
    26          . += _stack_size;
    27          _stack_top = .;
    28      } >RAM
    29  
    30      _sidata = LOADADDR(.data);
    31  
    32      .data :
    33      {
    34          _sdata = .;        /* used by startup code */
    35          *(.rodata)
    36          *(.rodata.*)
    37          *(.data)
    38          *(.data*)
    39          _edata = .;        /* used by startup code */
    40      } >RAM AT>FLASH_TEXT
    41  
    42      .bss :
    43      {
    44          _sbss = .;         /* used by startup code */
    45          *(.bss)
    46          *(.bss*)
    47          *(COMMON)
    48          _ebss = .;         /* used by startup code */
    49      } >RAM
    50  }
    51  
    52  /* For the memory allocator. */
    53  _heap_start = _ebss;
    54  _heap_end = ORIGIN(RAM) + LENGTH(RAM);
    55  _globals_start = _sdata;
    56  _globals_end = _ebss;