ENTRY(__aarch64_entry);

SECTIONS {
    . = 0x0;

    PROVIDE(__kernel_start = .);

    .text : {
        *(.text.entry)
        *(.text*)
    }

    . = ALIGN(4K);

    .rodata : {
        *(.rodata*)
        *(.eh_frame*)

        . = ALIGN(16);
        PROVIDE(__init_array_start = .);
        KEEP(*(.init_array*));
        PROVIDE(__init_array_end = .);
    }

    . = ALIGN(4K);

    .rela : {
        PROVIDE(__rela_start = .);
        *(.rela*)
        PROVIDE(__rela_end = .);
    }

    .got : {
        *(.got*)
    }

    .dynamic : {
        *(.dynamic)
    }

    . = ALIGN(4K);

    .data : {
        *(.data*)
    }

    . = ALIGN(4K);
    PROVIDE(__bss_start = .);

    .bss : {
        *(COMMON)
        *(.bss*)
    }

    . = ALIGN(4K);
    PROVIDE(__bss_end = .);
    PROVIDE(__kernel_end = .);
    PROVIDE(__kernel_size = __kernel_end - __kernel_start);

    .dynsym : {
        *(.dynsym)
    }

    .gnu.hash : {
        *(.gnu.hash)
    }

    .hash : {
        *(.hash)
    }

    .dynstr : {
        *(.dynstr)
    }
}
