/* $OpenBSD: kern.ldscript,v 1.5 2017/03/22 10:47:29 kettenis Exp $ */ /* $NetBSD: ldscript.evbarm,v 1.2 2003/03/05 23:54:22 thorpej Exp $ */ OUTPUT_ARCH(aarch64) /* Define how we want our ELF binary to look like. */ PHDRS { text PT_LOAD; rodata PT_LOAD; data PT_LOAD; openbsd_randomize PT_OPENBSD_RANDOMIZE; } __ALIGN_SIZE = 0x200000; __kernel_base = @KERNEL_BASE_VIRT@; ENTRY(_start) SECTIONS { . = __kernel_base; PROVIDE (__text_start = .); .text : { *(.text .text.*) *(.stub) *(.glue_7t) *(.glue_7) } :text =0 PROVIDE (_etext = .); PROVIDE (etext = .); /* Move rodata to the next page, so we can nuke X and W bit on it */ . = ALIGN(__ALIGN_SIZE); PROVIDE (__rodata_start = .); .rodata : { *(.rodata .rodata.*) } :rodata PROVIDE (_erodata = .); /* Move .random to the next page, so we can add W bit on it and .data */ . = ALIGN(__ALIGN_SIZE); PROVIDE (__data_start = .); .openbsd.randomdata : { *(.openbsd.randomdata) } :openbsd_randomize :data .data : { *(.data .data.*) } :data .sdata : { *(.sdata .sdata.*) } :data PROVIDE (_edata = .); PROVIDE (__bss_start = .); .sbss : { *(.dynsbss) *(.sbss) *(.sbss.*) *(.scommon) } :data .bss : { *(.dynbss) *(.bss) *(.bss.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. */ . = ALIGN(64 / 8); } :data PROVIDE (_end = .); PROVIDE (end = .); }