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