1281494Sandrew/* $FreeBSD: stable/11/sys/conf/ldscript.arm64 317146 2017-04-19 15:46:34Z andrew $ */ 2281494SandrewOUTPUT_ARCH(aarch64) 3281494SandrewENTRY(_start) 4281494Sandrew 5281494SandrewSEARCH_DIR(/usr/lib); 6281494SandrewSECTIONS 7281494Sandrew{ 8281494Sandrew /* Read-only sections, merged into text segment: */ 9281494Sandrew . = kernbase + SIZEOF_HEADERS; 10281494Sandrew .text : 11281494Sandrew { 12281494Sandrew *(.text) 13281494Sandrew *(.stub) 14281494Sandrew /* .gnu.warning sections are handled specially by elf32.em. */ 15281494Sandrew *(.gnu.warning) 16281494Sandrew *(.gnu.linkonce.t*) 17281494Sandrew } =0x9090 18281494Sandrew _etext = .; 19281494Sandrew PROVIDE (etext = .); 20281494Sandrew .fini : { *(.fini) } =0x9090 21317146Sandrew .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } 22281494Sandrew .rodata1 : { *(.rodata1) } 23281494Sandrew .interp : { *(.interp) } 24281494Sandrew .hash : { *(.hash) } 25281494Sandrew .dynsym : { *(.dynsym) } 26281494Sandrew .dynstr : { *(.dynstr) } 27281494Sandrew .gnu.version : { *(.gnu.version) } 28281494Sandrew .gnu.version_d : { *(.gnu.version_d) } 29281494Sandrew .gnu.version_r : { *(.gnu.version_r) } 30281494Sandrew .rel.text : 31281494Sandrew { *(.rel.text) *(.rel.gnu.linkonce.t*) } 32281494Sandrew .rela.text : 33281494Sandrew { *(.rela.text) *(.rela.gnu.linkonce.t*) } 34281494Sandrew .rel.data : 35281494Sandrew { *(.rel.data) *(.rel.gnu.linkonce.d*) } 36281494Sandrew .rela.data : 37281494Sandrew { *(.rela.data) *(.rela.gnu.linkonce.d*) } 38281494Sandrew .rel.rodata : 39281494Sandrew { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } 40281494Sandrew .rela.rodata : 41281494Sandrew { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } 42281494Sandrew .rel.got : { *(.rel.got) } 43281494Sandrew .rela.got : { *(.rela.got) } 44281494Sandrew .rel.ctors : { *(.rel.ctors) } 45281494Sandrew .rela.ctors : { *(.rela.ctors) } 46281494Sandrew .rel.dtors : { *(.rel.dtors) } 47281494Sandrew .rela.dtors : { *(.rela.dtors) } 48281494Sandrew .rel.init : { *(.rel.init) } 49281494Sandrew .rela.init : { *(.rela.init) } 50281494Sandrew .rel.fini : { *(.rel.fini) } 51281494Sandrew .rela.fini : { *(.rela.fini) } 52281494Sandrew .rel.bss : { *(.rel.bss) } 53281494Sandrew .rela.bss : { *(.rela.bss) } 54281494Sandrew .rel.plt : { *(.rel.plt) } 55281494Sandrew .rela.plt : { *(.rela.plt) } 56281494Sandrew .init : { *(.init) } =0x9090 57281494Sandrew .plt : { *(.plt) } 58281494Sandrew 59281494Sandrew . = ALIGN(4); 60281494Sandrew _extab_start = .; 61281494Sandrew PROVIDE(extab_start = .); 62281494Sandrew .ARM.extab : { *(.ARM.extab) } 63281494Sandrew _extab.end = .; 64281494Sandrew PROVIDE(extab_end = .); 65281494Sandrew 66281494Sandrew _exidx_start = .; 67281494Sandrew PROVIDE(exidx_start = .); 68281494Sandrew .ARM.exidx : { *(.ARM.exidx) } 69281494Sandrew _exidx_end = .; 70281494Sandrew PROVIDE(exidx_end = .); 71281494Sandrew 72281494Sandrew /* Adjust the address for the data segment. We want to adjust up to 73281494Sandrew the same address within the page on the next page up. */ 74281494Sandrew . = ALIGN(0x1000) + (. & (0x1000 - 1)) ; 75281494Sandrew .data : 76281494Sandrew { 77281494Sandrew *(.data) 78281494Sandrew *(.gnu.linkonce.d*) 79281494Sandrew } 80281494Sandrew .data1 : { *(.data1) } 81281494Sandrew . = ALIGN(32 / 8); 82281494Sandrew _start_ctors = .; 83281494Sandrew PROVIDE (start_ctors = .); 84281494Sandrew .ctors : 85281494Sandrew { 86281494Sandrew *(.ctors) 87281494Sandrew } 88281494Sandrew _stop_ctors = .; 89281494Sandrew PROVIDE (stop_ctors = .); 90281494Sandrew .dtors : 91281494Sandrew { 92281494Sandrew *(.dtors) 93281494Sandrew } 94281494Sandrew .got : { *(.got.plt) *(.got) } 95281494Sandrew .dynamic : { *(.dynamic) } 96281494Sandrew /* We want the small data sections together, so single-instruction offsets 97281494Sandrew can access them all, and initialized data all before uninitialized, so 98281494Sandrew we can shorten the on-disk segment size. */ 99281494Sandrew . = ALIGN(8); 100281494Sandrew .sdata : { *(.sdata) } 101281494Sandrew _edata = .; 102281494Sandrew PROVIDE (edata = .); 103281494Sandrew __bss_start = .; 104281494Sandrew .sbss : { *(.sbss) *(.scommon) } 105281494Sandrew .bss : 106281494Sandrew { 107281494Sandrew *(.dynbss) 108281494Sandrew *(.bss) 109281494Sandrew *(COMMON) 110281494Sandrew } 111281494Sandrew . = ALIGN(8); 112281494Sandrew _end = . ; 113281494Sandrew PROVIDE (end = .); 114281494Sandrew /* Stabs debugging sections. */ 115281494Sandrew .stab 0 : { *(.stab) } 116281494Sandrew .stabstr 0 : { *(.stabstr) } 117281494Sandrew .stab.excl 0 : { *(.stab.excl) } 118281494Sandrew .stab.exclstr 0 : { *(.stab.exclstr) } 119281494Sandrew .stab.index 0 : { *(.stab.index) } 120281494Sandrew .stab.indexstr 0 : { *(.stab.indexstr) } 121281494Sandrew .comment 0 : { *(.comment) } 122281494Sandrew /* DWARF debug sections. 123281494Sandrew Symbols in the DWARF debugging sections are relative to the beginning 124281494Sandrew of the section so we begin them at 0. */ 125281494Sandrew /* DWARF 1 */ 126281494Sandrew .debug 0 : { *(.debug) } 127281494Sandrew .line 0 : { *(.line) } 128281494Sandrew /* GNU DWARF 1 extensions */ 129281494Sandrew .debug_srcinfo 0 : { *(.debug_srcinfo) } 130281494Sandrew .debug_sfnames 0 : { *(.debug_sfnames) } 131281494Sandrew /* DWARF 1.1 and DWARF 2 */ 132281494Sandrew .debug_aranges 0 : { *(.debug_aranges) } 133281494Sandrew .debug_pubnames 0 : { *(.debug_pubnames) } 134281494Sandrew /* DWARF 2 */ 135281494Sandrew .debug_info 0 : { *(.debug_info) } 136281494Sandrew .debug_abbrev 0 : { *(.debug_abbrev) } 137281494Sandrew .debug_line 0 : { *(.debug_line) } 138281494Sandrew .debug_frame 0 : { *(.debug_frame) } 139281494Sandrew .debug_str 0 : { *(.debug_str) } 140281494Sandrew .debug_loc 0 : { *(.debug_loc) } 141281494Sandrew .debug_macinfo 0 : { *(.debug_macinfo) } 142281494Sandrew /* SGI/MIPS DWARF 2 extensions */ 143281494Sandrew .debug_weaknames 0 : { *(.debug_weaknames) } 144281494Sandrew .debug_funcnames 0 : { *(.debug_funcnames) } 145281494Sandrew .debug_typenames 0 : { *(.debug_typenames) } 146281494Sandrew .debug_varnames 0 : { *(.debug_varnames) } 147281494Sandrew /* These must appear regardless of . */ 148281494Sandrew} 149