OUTPUT_ARCH(riscv) ENTRY(_start) SECTIONS { . = LOAD_ADDR; . = ALIGN(PAGE_SIZE); .text : { provide(__text_start = .); *(.text.init) *(.text .text.*) . = ALIGN(8); PROVIDE(__text_end = .); } . = ALIGN(PAGE_SIZE); PROVIDE(__global_pointer$ = .); .rodata : { PROVIDE(__rodata_start = .); *(.rodata .rodata.*) . = ALIGN(8); PROVIDE(__rodata_end = .); } . = ALIGN(PAGE_SIZE); .data : { PROVIDE(__data_start = .); *(.sdata .sdata.*) *(.data .data.*) *(.readmostly.data) *(*.data) . = ALIGN(8); PROVIDE(__data_end = .); } . = ALIGN(PAGE_SIZE); PROVIDE(__stack_start = .); PROVIDE(__stack_end = __stack_start + (PAGE_SIZE * NPROC)); PROVIDE(__heap_start = __stack_end); }