XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESystem

【Rust】XFE系统,基于Rust和汇编

公开
关注 0 Fork 0 Star 0
UTF-8
OUTPUT_FORMAT(elf64-x86-64)
OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)

PHDRS {
    requests PT_LOAD FLAGS(6);
    text PT_LOAD FLAGS(5);
    rodata PT_LOAD FLAGS(4);
    data PT_LOAD FLAGS(6);
    tls PT_TLS FLAGS(4);
    eh_frame PT_GNU_EH_FRAME FLAGS(4);
}

SECTIONS {
    . = 0xffffffff80000000;
    __xfe_kernel_start = .;
    .limine_requests : {
        KEEP(*(.limine_requests_start))
        KEEP(*(.limine_requests))
        KEEP(*(.limine_requests_end))
    } :requests

    . = ALIGN(4096);
    .text : {
        *(.text .text.* .ltext .ltext.*)
        __managedcode_a = .;
        __start___managedcode = .;
        KEEP(*(__managedcode))
        __managedcode_z = .;
        __stop___managedcode = .;
        KEEP(*(__xfe_zero_managedcode))
        __unbox_a = .;
        __start___unbox = .;
        KEEP(*(__unbox))
        __unbox_z = .;
        __stop___unbox = .;
        KEEP(*(__xfe_zero_unbox))
    } :text

    . = ALIGN(4096);
    .rodata : {
        *(.rodata .rodata.* .lrodata .lrodata.* .rdata .rdata.*)
        *(.gcc_except_table .gcc_except_table.*)
        *(*lsda*)
        . = ALIGN(8);
        __modules_a = .;
        __start___modules = .;
        KEEP(*(__modules))
        __modules_z = .;
        __stop___modules = .;
        KEEP(*(__xfe_zero_modules))
        KEEP(*(.dotnet_eh_table))
    } :rodata
    .eh_frame : { KEEP(*(.eh_frame .eh_frame.*)) } :rodata
    .eh_frame_hdr : { __eh_frame_hdr_start = .; *(.eh_frame_hdr) __eh_frame_hdr_end = .; } :rodata :eh_frame

    . = ALIGN(4096);
    .data : {
        *(.data .data.* .ldata .ldata.*)
        *(.got .got.* .igot .igot.*)
        . = ALIGN(8);
        __init_array_start = .;
        KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*)))
        KEEP(*(.init_array))
        __init_array_end = .;
        *(.fini_array .fini_array.*)
    } :data
    .tdata ALIGN(16) : ALIGN(16) {
        __tls_start = .;
        *(.tdata .tdata.*)
        . = ALIGN(16);
        __tls_init_end = .;
    } :data :tls
    .tbss ALIGN(16) (NOLOAD) : ALIGN(16) {
        *(.tbss .tbss.*)
        __tls_end = .;
    } :data :tls
    __tls_align = MAX(16, MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)));
    .bss (NOLOAD) : {
        __xfe_bss_start = .;
        *(.bss .bss.* .lbss .lbss.* COMMON)
        __xfe_bss_end = .;
    } :data
    . = ALIGN(4096);
    __xfe_kernel_end = .;
    /DISCARD/ : { *(.comment .note.GNU-stack .note.gnu.property) }
}