1 1.15 mlelstv /* $NetBSD: ldscript.evbarm,v 1.15 2023/02/11 19:09:57 mlelstv Exp $ */ 2 1.1 bsh 3 1.1 bsh ENTRY(KERNEL_BASE_phys) 4 1.1 bsh SECTIONS 5 1.1 bsh { 6 1.15 mlelstv KERNEL_BASE_phys = @KERNEL_BASE_PHYS@; 7 1.15 mlelstv KERNEL_BASE_virt = @KERNEL_BASE_VIRT@; 8 1.15 mlelstv 9 1.1 bsh /* Kernel start: */ 10 1.15 mlelstv .start (KERNEL_BASE_phys) : 11 1.1 bsh { 12 1.1 bsh *(.start) 13 1.10 uebayasi } 14 1.1 bsh 15 1.1 bsh /* Read-only sections, merged into text segment: */ 16 1.15 mlelstv .text (KERNEL_BASE_virt + ALIGN(SIZEOF(.start), ALIGNOF(.text))) : 17 1.15 mlelstv AT (LOADADDR(.start) + ALIGN(SIZEOF(.start), ALIGNOF(.text))) 18 1.1 bsh { 19 1.1 bsh *(.text) 20 1.1 bsh *(.text.*) 21 1.1 bsh *(.stub) 22 1.1 bsh *(.glue_7t) *(.glue_7) 23 1.10 uebayasi } 24 1.14 skrll 25 1.14 skrll PROVIDE(__rodata_start = .); 26 1.14 skrll .rodata : 27 1.14 skrll { 28 1.14 skrll *(.rodata) 29 1.14 skrll *(.rodata.*) 30 1.14 skrll . = ALIGN(64); 31 1.14 skrll __CTOR_LIST__ = .; 32 1.14 skrll *(.ctors) 33 1.14 skrll *(.init_array) 34 1.14 skrll __CTOR_END__ = .; 35 1.14 skrll } 36 1.14 skrll 37 1.1 bsh PROVIDE (__etext = .); 38 1.1 bsh PROVIDE (_etext = .); 39 1.1 bsh PROVIDE (etext = .); 40 1.14 skrll 41 1.4 matt /* Adjust the address for the data segment to start on the next large page 42 1.1 bsh boundary. */ 43 1.4 matt . = ALIGN(0x10000); 44 1.1 bsh .data : 45 1.1 bsh { 46 1.1 bsh __data_start = . ; 47 1.1 bsh *(.data) 48 1.1 bsh *(.data.*) 49 1.1 bsh } 50 1.6 jakllsch .sdata : 51 1.1 bsh { 52 1.6 jakllsch *(.sdata) 53 1.1 bsh *(.sdata.*) 54 1.1 bsh } 55 1.7 matt . = ALIGN(8); 56 1.1 bsh _edata = .; 57 1.1 bsh PROVIDE (edata = .); 58 1.1 bsh __bss_start = .; 59 1.1 bsh __bss_start__ = .; 60 1.1 bsh .sbss : 61 1.1 bsh { 62 1.1 bsh PROVIDE (__sbss_start = .); 63 1.1 bsh PROVIDE (___sbss_start = .); 64 1.1 bsh *(.dynsbss) 65 1.1 bsh *(.sbss) 66 1.1 bsh *(.sbss.*) 67 1.1 bsh *(.scommon) 68 1.1 bsh PROVIDE (__sbss_end = .); 69 1.1 bsh PROVIDE (___sbss_end = .); 70 1.1 bsh } 71 1.1 bsh .bss : 72 1.1 bsh { 73 1.9 uebayasi *(.dynbss) 74 1.9 uebayasi *(.bss) 75 1.9 uebayasi *(.bss.*) 76 1.9 uebayasi *(COMMON) 77 1.9 uebayasi /* Align here to ensure that the .bss section occupies space up to 78 1.9 uebayasi _end. Align after .bss to ensure correct alignment even if the 79 1.9 uebayasi .bss section disappears because there are no input sections. */ 80 1.9 uebayasi . = ALIGN(32 / 8); 81 1.1 bsh } 82 1.1 bsh . = ALIGN(32 / 8); 83 1.1 bsh _end = .; 84 1.1 bsh _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; 85 1.1 bsh PROVIDE (end = .); 86 1.1 bsh } 87