1129199Scognet/* $FreeBSD: releng/11.0/sys/conf/ldscript.arm 261227 2014-01-28 09:12:04Z andrew $ */ 2129199ScognetOUTPUT_ARCH(arm) 3129199ScognetENTRY(_start) 4129199Scognet 5129199ScognetSEARCH_DIR(/usr/lib); 6129199ScognetSECTIONS 7129199Scognet{ 8129199Scognet /* Read-only sections, merged into text segment: */ 9135672Scognet . = KERNVIRTADDR + SIZEOF_HEADERS; 10152742Scognet .text : 11152742Scognet { 12152742Scognet *(.text) 13152742Scognet *(.stub) 14152742Scognet /* .gnu.warning sections are handled specially by elf32.em. */ 15152742Scognet *(.gnu.warning) 16152742Scognet *(.gnu.linkonce.t*) 17152742Scognet } =0x9090 18152742Scognet _etext = .; 19152742Scognet PROVIDE (etext = .); 20152742Scognet .fini : { *(.fini) } =0x9090 21152742Scognet .rodata : { *(.rodata) *(.gnu.linkonce.r*) } 22152742Scognet .rodata1 : { *(.rodata1) } 23152742Scognet .interp : { *(.interp) } 24129199Scognet .hash : { *(.hash) } 25129199Scognet .dynsym : { *(.dynsym) } 26129199Scognet .dynstr : { *(.dynstr) } 27129199Scognet .gnu.version : { *(.gnu.version) } 28129199Scognet .gnu.version_d : { *(.gnu.version_d) } 29129199Scognet .gnu.version_r : { *(.gnu.version_r) } 30129199Scognet .rel.text : 31129199Scognet { *(.rel.text) *(.rel.gnu.linkonce.t*) } 32129199Scognet .rela.text : 33129199Scognet { *(.rela.text) *(.rela.gnu.linkonce.t*) } 34129199Scognet .rel.data : 35129199Scognet { *(.rel.data) *(.rel.gnu.linkonce.d*) } 36129199Scognet .rela.data : 37129199Scognet { *(.rela.data) *(.rela.gnu.linkonce.d*) } 38129199Scognet .rel.rodata : 39129199Scognet { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } 40129199Scognet .rela.rodata : 41129199Scognet { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } 42129199Scognet .rel.got : { *(.rel.got) } 43129199Scognet .rela.got : { *(.rela.got) } 44129199Scognet .rel.ctors : { *(.rel.ctors) } 45129199Scognet .rela.ctors : { *(.rela.ctors) } 46129199Scognet .rel.dtors : { *(.rel.dtors) } 47129199Scognet .rela.dtors : { *(.rela.dtors) } 48129199Scognet .rel.init : { *(.rel.init) } 49129199Scognet .rela.init : { *(.rela.init) } 50129199Scognet .rel.fini : { *(.rel.fini) } 51129199Scognet .rela.fini : { *(.rela.fini) } 52129199Scognet .rel.bss : { *(.rel.bss) } 53129199Scognet .rela.bss : { *(.rela.bss) } 54129199Scognet .rel.plt : { *(.rel.plt) } 55129199Scognet .rela.plt : { *(.rela.plt) } 56129199Scognet .init : { *(.init) } =0x9090 57129199Scognet .plt : { *(.plt) } 58152742Scognet 59248122Sandrew . = ALIGN(4); 60245675Sandrew _extab_start = .; 61245675Sandrew PROVIDE(extab_start = .); 62245675Sandrew .ARM.extab : { *(.ARM.extab) } 63245675Sandrew _extab.end = .; 64245675Sandrew PROVIDE(extab_end = .); 65245675Sandrew 66245675Sandrew _exidx_start = .; 67245675Sandrew PROVIDE(exidx_start = .); 68245675Sandrew .ARM.exidx : { *(.ARM.exidx) } 69245675Sandrew _exidx_end = .; 70245675Sandrew PROVIDE(exidx_end = .); 71245675Sandrew 72129199Scognet /* Adjust the address for the data segment. We want to adjust up to 73129199Scognet the same address within the page on the next page up. */ 74129199Scognet . = ALIGN(0x1000) + (. & (0x1000 - 1)) ; 75129199Scognet .data : 76129199Scognet { 77129199Scognet *(.data) 78129199Scognet *(.gnu.linkonce.d*) 79129199Scognet CONSTRUCTORS 80129199Scognet } 81129199Scognet .data1 : { *(.data1) } 82129199Scognet . = ALIGN(32 / 8); 83129199Scognet _start_ctors = .; 84129199Scognet PROVIDE (start_ctors = .); 85129199Scognet .ctors : 86129199Scognet { 87129199Scognet *(.ctors) 88129199Scognet } 89129199Scognet _stop_ctors = .; 90129199Scognet PROVIDE (stop_ctors = .); 91129199Scognet .dtors : 92129199Scognet { 93129199Scognet *(.dtors) 94129199Scognet } 95129199Scognet .got : { *(.got.plt) *(.got) } 96129199Scognet .dynamic : { *(.dynamic) } 97129199Scognet /* We want the small data sections together, so single-instruction offsets 98129199Scognet can access them all, and initialized data all before uninitialized, so 99129199Scognet we can shorten the on-disk segment size. */ 100129199Scognet .sdata : { *(.sdata) } 101129199Scognet _edata = .; 102129199Scognet PROVIDE (edata = .); 103129199Scognet __bss_start = .; 104129199Scognet .sbss : { *(.sbss) *(.scommon) } 105129199Scognet .bss : 106129199Scognet { 107129199Scognet *(.dynbss) 108129199Scognet *(.bss) 109129199Scognet *(COMMON) 110261227Sandrew . = ALIGN(32 / 8); 111261227Sandrew _ebss = .; 112261227Sandrew /* A section for the initial page table, it doesn't need to be in the 113261227Sandrew kernel file, however unlike normal .bss entries should not be zeroed 114261227Sandrew out as we use it before the .bss section is cleared. */ 115261227Sandrew *(.init_pagetable) 116129199Scognet } 117129199Scognet . = ALIGN(32 / 8); 118129199Scognet _end = . ; 119129199Scognet PROVIDE (end = .); 120129199Scognet /* Stabs debugging sections. */ 121129199Scognet .stab 0 : { *(.stab) } 122129199Scognet .stabstr 0 : { *(.stabstr) } 123129199Scognet .stab.excl 0 : { *(.stab.excl) } 124129199Scognet .stab.exclstr 0 : { *(.stab.exclstr) } 125129199Scognet .stab.index 0 : { *(.stab.index) } 126129199Scognet .stab.indexstr 0 : { *(.stab.indexstr) } 127129199Scognet .comment 0 : { *(.comment) } 128129199Scognet /* DWARF debug sections. 129129199Scognet Symbols in the DWARF debugging sections are relative to the beginning 130129199Scognet of the section so we begin them at 0. */ 131129199Scognet /* DWARF 1 */ 132129199Scognet .debug 0 : { *(.debug) } 133129199Scognet .line 0 : { *(.line) } 134129199Scognet /* GNU DWARF 1 extensions */ 135129199Scognet .debug_srcinfo 0 : { *(.debug_srcinfo) } 136129199Scognet .debug_sfnames 0 : { *(.debug_sfnames) } 137129199Scognet /* DWARF 1.1 and DWARF 2 */ 138129199Scognet .debug_aranges 0 : { *(.debug_aranges) } 139129199Scognet .debug_pubnames 0 : { *(.debug_pubnames) } 140129199Scognet /* DWARF 2 */ 141129199Scognet .debug_info 0 : { *(.debug_info) } 142129199Scognet .debug_abbrev 0 : { *(.debug_abbrev) } 143129199Scognet .debug_line 0 : { *(.debug_line) } 144129199Scognet .debug_frame 0 : { *(.debug_frame) } 145129199Scognet .debug_str 0 : { *(.debug_str) } 146129199Scognet .debug_loc 0 : { *(.debug_loc) } 147129199Scognet .debug_macinfo 0 : { *(.debug_macinfo) } 148129199Scognet /* SGI/MIPS DWARF 2 extensions */ 149129199Scognet .debug_weaknames 0 : { *(.debug_weaknames) } 150129199Scognet .debug_funcnames 0 : { *(.debug_funcnames) } 151129199Scognet .debug_typenames 0 : { *(.debug_typenames) } 152129199Scognet .debug_varnames 0 : { *(.debug_varnames) } 153129199Scognet /* These must appear regardless of . */ 154129199Scognet} 155