/*      $NetBSD: kern.ldscript.kaslr,v 1.5 2018/01/21 11:21:40 maxv Exp $       */

#include "assym.h"

ENTRY(_start)
SECTIONS
{
       .text.user : SUBALIGN(PAGE_SIZE)
       {
               __text_user_start = . ;
               *(.text.user)
               . = ALIGN(PAGE_SIZE);
               __text_user_end = . ;
       } =0xCC

       .text :
       {
               *(.text)
               *(.text.*)
               *(.stub)
       } =0xCC
       _etext = . ;
       PROVIDE (etext = .) ;

       __rodata_start = . ;

       .rodata.hotpatch :
       {
               __rodata_hotpatch_start = . ;
               *(.rodata.hotpatch)
               __rodata_hotpatch_end = . ;
       }

       .rodata :
       {
               *(.rodata)
               *(.rodata.*)
       }

       __data_start = . ;
       .data :
       {
               *(.data)
       }

       .data.cacheline_aligned : SUBALIGN(COHERENCY_UNIT)
       {
               *(.data.cacheline_aligned)
               . = ALIGN(COHERENCY_UNIT);
       }
       .data.read_mostly : SUBALIGN(COHERENCY_UNIT)
       {
               *(.data.read_mostly)
               . = ALIGN(COHERENCY_UNIT);
       }

       _edata = . ;
       PROVIDE (edata = .) ;
       __bss_start = . ;
       .bss :
       {
               *(.bss)
               *(.bss.*)
               *(COMMON)
       }

       /* End of the kernel image */
       __kernel_end = . ;

       _end = . ;
       PROVIDE (end = .) ;
       .note.netbsd.ident :
       {
               KEEP(*(.note.netbsd.ident));
       }

       /DISCARD/ :
       {
               *(.SUNW_ctf)
               *(.SUNW_ctf.*)
       }
}