1e5acd89cSAndrew Turner/* $FreeBSD$ */ 2e5acd89cSAndrew TurnerOUTPUT_ARCH(aarch64) 3e5acd89cSAndrew TurnerENTRY(_start) 4e5acd89cSAndrew Turner 5e5acd89cSAndrew TurnerSEARCH_DIR(/usr/lib); 6e5acd89cSAndrew TurnerSECTIONS 7e5acd89cSAndrew Turner{ 8e5acd89cSAndrew Turner /* Read-only sections, merged into text segment: */ 9e5acd89cSAndrew Turner . = kernbase + SIZEOF_HEADERS; 10e5acd89cSAndrew Turner .text : 11e5acd89cSAndrew Turner { 12e5acd89cSAndrew Turner *(.text) 13e5acd89cSAndrew Turner *(.stub) 14e5acd89cSAndrew Turner /* .gnu.warning sections are handled specially by elf32.em. */ 15e5acd89cSAndrew Turner *(.gnu.warning) 16e5acd89cSAndrew Turner *(.gnu.linkonce.t*) 17e5acd89cSAndrew Turner } =0x9090 18e5acd89cSAndrew Turner _etext = .; 19e5acd89cSAndrew Turner PROVIDE (etext = .); 20e5acd89cSAndrew Turner .fini : { *(.fini) } =0x9090 216f0c70d4SAndrew Turner .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } 22e5acd89cSAndrew Turner .rodata1 : { *(.rodata1) } 23e5acd89cSAndrew Turner .interp : { *(.interp) } 24e5acd89cSAndrew Turner .hash : { *(.hash) } 25e5acd89cSAndrew Turner .dynsym : { *(.dynsym) } 26e5acd89cSAndrew Turner .dynstr : { *(.dynstr) } 27e5acd89cSAndrew Turner .gnu.version : { *(.gnu.version) } 28e5acd89cSAndrew Turner .gnu.version_d : { *(.gnu.version_d) } 29e5acd89cSAndrew Turner .gnu.version_r : { *(.gnu.version_r) } 30*74cd06b4SEd Maste .note.gnu.build-id : { 31*74cd06b4SEd Maste PROVIDE (__build_id_start = .); 32*74cd06b4SEd Maste *(.note.gnu.build-id) 33*74cd06b4SEd Maste PROVIDE (__build_id_end = .); 34*74cd06b4SEd Maste } 35e5acd89cSAndrew Turner .rel.text : 36e5acd89cSAndrew Turner { *(.rel.text) *(.rel.gnu.linkonce.t*) } 37e5acd89cSAndrew Turner .rela.text : 38e5acd89cSAndrew Turner { *(.rela.text) *(.rela.gnu.linkonce.t*) } 39e5acd89cSAndrew Turner .rel.data : 40e5acd89cSAndrew Turner { *(.rel.data) *(.rel.gnu.linkonce.d*) } 41e5acd89cSAndrew Turner .rela.data : 42e5acd89cSAndrew Turner { *(.rela.data) *(.rela.gnu.linkonce.d*) } 43e5acd89cSAndrew Turner .rel.rodata : 44e5acd89cSAndrew Turner { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } 45e5acd89cSAndrew Turner .rela.rodata : 46e5acd89cSAndrew Turner { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } 47e5acd89cSAndrew Turner .rel.got : { *(.rel.got) } 48e5acd89cSAndrew Turner .rela.got : { *(.rela.got) } 49e5acd89cSAndrew Turner .rel.ctors : { *(.rel.ctors) } 50e5acd89cSAndrew Turner .rela.ctors : { *(.rela.ctors) } 51e5acd89cSAndrew Turner .rel.dtors : { *(.rel.dtors) } 52e5acd89cSAndrew Turner .rela.dtors : { *(.rela.dtors) } 53e5acd89cSAndrew Turner .rel.init : { *(.rel.init) } 54e5acd89cSAndrew Turner .rela.init : { *(.rela.init) } 55e5acd89cSAndrew Turner .rel.fini : { *(.rel.fini) } 56e5acd89cSAndrew Turner .rela.fini : { *(.rela.fini) } 57e5acd89cSAndrew Turner .rel.bss : { *(.rel.bss) } 58e5acd89cSAndrew Turner .rela.bss : { *(.rela.bss) } 59e5acd89cSAndrew Turner .rel.plt : { *(.rel.plt) } 60e5acd89cSAndrew Turner .rela.plt : { *(.rela.plt) } 61e5acd89cSAndrew Turner .init : { *(.init) } =0x9090 62e5acd89cSAndrew Turner .plt : { *(.plt) } 63e5acd89cSAndrew Turner 64e5acd89cSAndrew Turner . = ALIGN(4); 65e5acd89cSAndrew Turner _extab_start = .; 66e5acd89cSAndrew Turner PROVIDE(extab_start = .); 67e5acd89cSAndrew Turner .ARM.extab : { *(.ARM.extab) } 68e5acd89cSAndrew Turner _extab.end = .; 69e5acd89cSAndrew Turner PROVIDE(extab_end = .); 70e5acd89cSAndrew Turner 71e5acd89cSAndrew Turner _exidx_start = .; 72e5acd89cSAndrew Turner PROVIDE(exidx_start = .); 73e5acd89cSAndrew Turner .ARM.exidx : { *(.ARM.exidx) } 74e5acd89cSAndrew Turner _exidx_end = .; 75e5acd89cSAndrew Turner PROVIDE(exidx_end = .); 76e5acd89cSAndrew Turner 77e5acd89cSAndrew Turner /* Adjust the address for the data segment. We want to adjust up to 78e5acd89cSAndrew Turner the same address within the page on the next page up. */ 79e5acd89cSAndrew Turner . = ALIGN(0x1000) + (. & (0x1000 - 1)) ; 80e5acd89cSAndrew Turner .data : 81e5acd89cSAndrew Turner { 82e5acd89cSAndrew Turner *(.data) 83e5acd89cSAndrew Turner *(.gnu.linkonce.d*) 84e5acd89cSAndrew Turner } 85e5acd89cSAndrew Turner .data1 : { *(.data1) } 86e5acd89cSAndrew Turner . = ALIGN(32 / 8); 87e5acd89cSAndrew Turner _start_ctors = .; 88e5acd89cSAndrew Turner PROVIDE (start_ctors = .); 89e5acd89cSAndrew Turner .ctors : 90e5acd89cSAndrew Turner { 91e5acd89cSAndrew Turner *(.ctors) 92e5acd89cSAndrew Turner } 93e5acd89cSAndrew Turner _stop_ctors = .; 94e5acd89cSAndrew Turner PROVIDE (stop_ctors = .); 95e5acd89cSAndrew Turner .dtors : 96e5acd89cSAndrew Turner { 97e5acd89cSAndrew Turner *(.dtors) 98e5acd89cSAndrew Turner } 99e5acd89cSAndrew Turner .got : { *(.got.plt) *(.got) } 100e5acd89cSAndrew Turner .dynamic : { *(.dynamic) } 101e5acd89cSAndrew Turner /* We want the small data sections together, so single-instruction offsets 102e5acd89cSAndrew Turner can access them all, and initialized data all before uninitialized, so 103e5acd89cSAndrew Turner we can shorten the on-disk segment size. */ 104e5acd89cSAndrew Turner . = ALIGN(8); 105e5acd89cSAndrew Turner .sdata : { *(.sdata) } 106e5acd89cSAndrew Turner _edata = .; 107e5acd89cSAndrew Turner PROVIDE (edata = .); 108e5acd89cSAndrew Turner __bss_start = .; 109e5acd89cSAndrew Turner .sbss : { *(.sbss) *(.scommon) } 110e5acd89cSAndrew Turner .bss : 111e5acd89cSAndrew Turner { 112e5acd89cSAndrew Turner *(.dynbss) 113e5acd89cSAndrew Turner *(.bss) 114e5acd89cSAndrew Turner *(COMMON) 115e5acd89cSAndrew Turner } 116e5acd89cSAndrew Turner . = ALIGN(8); 117e5acd89cSAndrew Turner _end = . ; 118e5acd89cSAndrew Turner PROVIDE (end = .); 119e5acd89cSAndrew Turner /* Stabs debugging sections. */ 120e5acd89cSAndrew Turner .stab 0 : { *(.stab) } 121e5acd89cSAndrew Turner .stabstr 0 : { *(.stabstr) } 122e5acd89cSAndrew Turner .stab.excl 0 : { *(.stab.excl) } 123e5acd89cSAndrew Turner .stab.exclstr 0 : { *(.stab.exclstr) } 124e5acd89cSAndrew Turner .stab.index 0 : { *(.stab.index) } 125e5acd89cSAndrew Turner .stab.indexstr 0 : { *(.stab.indexstr) } 126e5acd89cSAndrew Turner .comment 0 : { *(.comment) } 127e5acd89cSAndrew Turner /* DWARF debug sections. 128e5acd89cSAndrew Turner Symbols in the DWARF debugging sections are relative to the beginning 129e5acd89cSAndrew Turner of the section so we begin them at 0. */ 130e5acd89cSAndrew Turner /* DWARF 1 */ 131e5acd89cSAndrew Turner .debug 0 : { *(.debug) } 132e5acd89cSAndrew Turner .line 0 : { *(.line) } 133e5acd89cSAndrew Turner /* GNU DWARF 1 extensions */ 134e5acd89cSAndrew Turner .debug_srcinfo 0 : { *(.debug_srcinfo) } 135e5acd89cSAndrew Turner .debug_sfnames 0 : { *(.debug_sfnames) } 136e5acd89cSAndrew Turner /* DWARF 1.1 and DWARF 2 */ 137e5acd89cSAndrew Turner .debug_aranges 0 : { *(.debug_aranges) } 138e5acd89cSAndrew Turner .debug_pubnames 0 : { *(.debug_pubnames) } 139e5acd89cSAndrew Turner /* DWARF 2 */ 140e5acd89cSAndrew Turner .debug_info 0 : { *(.debug_info) } 141e5acd89cSAndrew Turner .debug_abbrev 0 : { *(.debug_abbrev) } 142e5acd89cSAndrew Turner .debug_line 0 : { *(.debug_line) } 143e5acd89cSAndrew Turner .debug_frame 0 : { *(.debug_frame) } 144e5acd89cSAndrew Turner .debug_str 0 : { *(.debug_str) } 145e5acd89cSAndrew Turner .debug_loc 0 : { *(.debug_loc) } 146e5acd89cSAndrew Turner .debug_macinfo 0 : { *(.debug_macinfo) } 147e5acd89cSAndrew Turner /* SGI/MIPS DWARF 2 extensions */ 148e5acd89cSAndrew Turner .debug_weaknames 0 : { *(.debug_weaknames) } 149e5acd89cSAndrew Turner .debug_funcnames 0 : { *(.debug_funcnames) } 150e5acd89cSAndrew Turner .debug_typenames 0 : { *(.debug_typenames) } 151e5acd89cSAndrew Turner .debug_varnames 0 : { *(.debug_varnames) } 152e5acd89cSAndrew Turner /* These must appear regardless of . */ 153e5acd89cSAndrew Turner} 154