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 }