主要是涉及对某一个段的权限的配置, 以及给某一个段起一个变量名称, 方便后续使用

#include "platform.h"

OUTPUT_ARCH( "riscv" )
ENTRY( _start )
MEMORY
{    
    /*
     * wxa!ri 权限定义, w 可写, x:可执行!r 不可以读,i 可以分配
    */
    ram   (wxa!ri) : ORIGIN = 0x80000000, LENGTH = LENGTH_RAM
}
SECTIONS
{
    .text : {
        PROVIDE(_text_start = .);
        *(.text .text.*)
        PROVIDE(_text_end = .);
    } >ram

    .rodata : {
        PROVIDE(_rodata_start = .);
        *(.rodata .rodata.*)
        PROVIDE(_rodata_end = .);
    } >ram

    .data : {
        . = ALIGN(4096);
        PROVIDE(_data_start = .);
        *(.sdata .sdata.*)
        *(.data .data.*)
        PROVIDE(_data_end = .);
    } >ram

    .bss :{
    
        PROVIDE(_bss_start = .);
        *(.sbss .sbss.*)
        *(.bss .bss.*)
        *(COMMON)
        PROVIDE(_bss_end = .);
    } >ram
    /*
     * PROVIDE 相当于定义了变量
    */
    PROVIDE(_memory_start = ORIGIN(ram));
    PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram));

    PROVIDE(_heap_start = _bss_end);
    PROVIDE(_heap_size = _memory_end - _heap_start);
}

putao
5 声望0 粉丝

推动世界向前发展,改善民生。


引用和评论

0 条评论