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