|  | /* Simple linker script for the ROS kernel. | 
|  | See the GNU ld 'info' manual ("info ld") to learn the syntax. */ | 
|  |  | 
|  | OUTPUT_ARCH("riscv") | 
|  | ENTRY(_start) | 
|  |  | 
|  | SECTIONS | 
|  | { | 
|  | /* Link the kernel for 0xFFFFFFFF80002000, but load it at 0x2000) */ | 
|  |  | 
|  | .text 0xFFFFFFFF80002000 : AT(0x2000) { | 
|  | *(.text .stub .text.* .gnu.linkonce.t.*) | 
|  | /* Define the 'etext' symbol to this value */ | 
|  | PROVIDE(etext = .); | 
|  | } | 
|  |  | 
|  | INCLUDE kern/linker_tables.ld | 
|  | INCLUDE kern/build_id.ld | 
|  |  | 
|  | .rodata : { | 
|  | *(.rodata .rodata.* .gnu.linkonce.r.*) | 
|  | } | 
|  |  | 
|  | /* Adjust the address for the data segment to the next page */ | 
|  | . = ALIGN(0x1000); | 
|  |  | 
|  | /* The data segment */ | 
|  | .data : { | 
|  | *(.data) | 
|  | *(.sdata) | 
|  | } | 
|  |  | 
|  | .bss : { | 
|  | PROVIDE(__start_bss = .); | 
|  | *(.bss) | 
|  | *(.sbss) | 
|  | PROVIDE(__stop_bss = .); | 
|  | } | 
|  |  | 
|  | .end : { | 
|  | PROVIDE(end = .); | 
|  | } | 
|  |  | 
|  | /DISCARD/ : { | 
|  | *(.eh_frame .note.GNU-stack) | 
|  | } | 
|  | } |