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