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

     1  PHDRS
     2  {
     3    text    PT_LOAD FLAGS(5) /* Read | Execute */;
     4    rodata  PT_LOAD FLAGS(4) /* Read */;
     5    data    PT_LOAD FLAGS(6) /* Read | Write */;
     6    bss     PT_LOAD FLAGS(6) /* Read | Write */;
     7    dynamic PT_DYNAMIC;
     8  }
     9  
    10  SECTIONS
    11  {
    12    /* Code and file header */
    13    . = 0;
    14  
    15    .text : ALIGN(0x1000) {
    16      HIDDEN(__text_start = .);
    17      KEEP(*(.text.jmp))
    18  
    19      . = 0x80;
    20      KEEP(*(.text.start))
    21  
    22      *(.text .text.*)
    23      *(.plt .plt.*)
    24  
    25      HIDDEN(__text_end = .);
    26      HIDDEN(__text_size = . - __text_start);
    27    }
    28  
    29    /* Read-only sections */
    30    . = ALIGN(0x1000);
    31  
    32    HIDDEN(__rodata_start = .);
    33    .rodata : { *(.rodata .rodata.*) }  :rodata
    34  
    35    .mod0 : {
    36      KEEP(crt0.nso.o(.data.mod0))
    37      KEEP(crt0.nro.o(.data.mod0))
    38      KEEP(crt0.lib.nro.o(.data.mod0))
    39    }
    40  
    41    .dynsym            : { *(.dynsym) } :rodata
    42    .dynstr            : { *(.dynstr) } :rodata
    43    .rela.dyn          : { *(.rela.*) } :rodata
    44  
    45    HIDDEN(__rodata_end = .);
    46    HIDDEN(__rodata_size = . - __rodata_start);
    47  
    48    /* Read-write sections */
    49    . = ALIGN(0x1000);
    50  
    51    .data : {
    52      HIDDEN(__data_start = .);
    53  
    54      *(.data .data.*)
    55      *(.got .got.*)
    56      *(.got.plt .got.plt.*)
    57  
    58      HIDDEN(__data_end = .);
    59      HIDDEN(__data_size = . - __data_start);
    60    } :data
    61  
    62    .dynamic : {
    63      HIDDEN(__dynamic_start = .);
    64      *(.dynamic)
    65    }
    66  
    67    /* BSS section */
    68    . = ALIGN(0x1000);
    69    .bss : {
    70      HIDDEN(__bss_start = .);
    71  
    72      *(.bss .bss.*)
    73      *(COMMON)
    74      . = ALIGN(8);
    75  
    76      HIDDEN(__bss_end = .);
    77      HIDDEN(__bss_size = . - __bss_start);
    78    } : bss
    79  
    80    /DISCARD/ :
    81    {
    82      *(.eh_frame) /* This is probably unnecessary and bloats the binary. */
    83      *(.eh_frame_hdr)
    84    }
    85  }