1183878Sraj/* $FreeBSD$ */ 2183878Sraj 3183878SrajOUTPUT_ARCH(arm) 4183878SrajENTRY(_start) 5183878SrajSECTIONS 6183878Sraj{ 7183878Sraj /* Read-only sections, merged into text segment: */ 8236159Skientzle . = UBLDR_LOADADDR + SIZEOF_HEADERS; 9183878Sraj .interp : { *(.interp) } 10183878Sraj .hash : { *(.hash) } 11183878Sraj .dynsym : { *(.dynsym) } 12183878Sraj .dynstr : { *(.dynstr) } 13183878Sraj .gnu.version : { *(.gnu.version) } 14183878Sraj .gnu.version_d : { *(.gnu.version_d) } 15183878Sraj .gnu.version_r : { *(.gnu.version_r) } 16183878Sraj .rela.text : 17183878Sraj { *(.rela.text) *(.rela.gnu.linkonce.t*) } 18183878Sraj .rela.data : 19183878Sraj { *(.rela.data) *(.rela.gnu.linkonce.d*) } 20183878Sraj .rela.rodata : 21183878Sraj { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } 22183878Sraj .rela.got : { *(.rela.got) } 23183878Sraj .rela.got1 : { *(.rela.got1) } 24183878Sraj .rela.got2 : { *(.rela.got2) } 25183878Sraj .rela.ctors : { *(.rela.ctors) } 26183878Sraj .rela.dtors : { *(.rela.dtors) } 27183878Sraj .rela.init : { *(.rela.init) } 28183878Sraj .rela.fini : { *(.rela.fini) } 29183878Sraj .rela.bss : { *(.rela.bss) } 30183878Sraj .rela.plt : { *(.rela.plt) } 31183878Sraj .rela.sdata : { *(.rela.sdata) } 32183878Sraj .rela.sbss : { *(.rela.sbss) } 33183878Sraj .rela.sdata2 : { *(.rela.sdata2) } 34183878Sraj .rela.sbss2 : { *(.rela.sbss2) } 35183878Sraj .text : 36183878Sraj { 37183878Sraj *(.text) 38183878Sraj /* .gnu.warning sections are handled specially by elf32.em. */ 39183878Sraj *(.gnu.warning) 40183878Sraj *(.gnu.linkonce.t*) 41183878Sraj } =0 42183878Sraj _etext = .; 43183878Sraj PROVIDE (etext = .); 44183878Sraj .init : { *(.init) } =0 45183878Sraj .fini : { *(.fini) } =0 46183878Sraj .rodata : { *(.rodata) *(.gnu.linkonce.r*) } 47183878Sraj .rodata1 : { *(.rodata1) } 48183878Sraj .sdata2 : { *(.sdata2) } 49183878Sraj .sbss2 : { *(.sbss2) } 50183878Sraj /* Adjust the address for the data segment to the next page up. */ 51183878Sraj . = ((. + 0x1000) & ~(0x1000 - 1)); 52183878Sraj .data : 53183878Sraj { 54183878Sraj *(.data) 55183878Sraj *(.gnu.linkonce.d*) 56183878Sraj CONSTRUCTORS 57183878Sraj } 58183878Sraj .data1 : { *(.data1) } 59183878Sraj .got1 : { *(.got1) } 60183878Sraj .dynamic : { *(.dynamic) } 61183878Sraj /* Put .ctors and .dtors next to the .got2 section, so that the pointers 62183878Sraj get relocated with -mrelocatable. Also put in the .fixup pointers. 63183878Sraj The current compiler no longer needs this, but keep it around for 2.7.2 */ 64183878Sraj PROVIDE (_GOT2_START_ = .); 65183878Sraj .got2 : { *(.got2) } 66183878Sraj PROVIDE (__CTOR_LIST__ = .); 67183878Sraj .ctors : { *(.ctors) } 68183878Sraj PROVIDE (__CTOR_END__ = .); 69183878Sraj PROVIDE (__DTOR_LIST__ = .); 70183878Sraj .dtors : { *(.dtors) } 71183878Sraj PROVIDE (__DTOR_END__ = .); 72183878Sraj PROVIDE (_FIXUP_START_ = .); 73183878Sraj .fixup : { *(.fixup) } 74183878Sraj PROVIDE (_FIXUP_END_ = .); 75183878Sraj PROVIDE (_GOT2_END_ = .); 76183878Sraj PROVIDE (_GOT_START_ = .); 77183878Sraj .got : { *(.got) } 78183878Sraj .got.plt : { *(.got.plt) } 79183878Sraj PROVIDE (_GOT_END_ = .); 80183878Sraj /* We want the small data sections together, so single-instruction offsets 81183878Sraj can access them all, and initialized data all before uninitialized, so 82183878Sraj we can shorten the on-disk segment size. */ 83183878Sraj .sdata : { *(.sdata) } 84183878Sraj _edata = .; 85183878Sraj PROVIDE (edata = .); 86183878Sraj .sbss : 87183878Sraj { 88183878Sraj PROVIDE (__sbss_start = .); 89183878Sraj *(.sbss) 90183878Sraj *(.scommon) 91183878Sraj *(.dynsbss) 92183878Sraj PROVIDE (__sbss_end = .); 93183878Sraj } 94183878Sraj .plt : { *(.plt) } 95183878Sraj .bss : 96183878Sraj { 97183878Sraj PROVIDE (__bss_start = .); 98183878Sraj *(.dynbss) 99183878Sraj *(.bss) 100183878Sraj *(COMMON) 101183878Sraj } 102183878Sraj _end = . ; 103183878Sraj PROVIDE (end = .); 104183878Sraj /* Stabs debugging sections. */ 105183878Sraj .stab 0 : { *(.stab) } 106183878Sraj .stabstr 0 : { *(.stabstr) } 107183878Sraj /* DWARF debug sections. 108183878Sraj Symbols in the DWARF debugging sections are relative to the beginning 109183878Sraj of the section so we begin them at 0. */ 110183878Sraj /* DWARF 1 */ 111183878Sraj .debug 0 : { *(.debug) } 112183878Sraj .line 0 : { *(.line) } 113183878Sraj /* GNU DWARF 1 extensions */ 114183878Sraj .debug_srcinfo 0 : { *(.debug_srcinfo) } 115183878Sraj .debug_sfnames 0 : { *(.debug_sfnames) } 116183878Sraj /* DWARF 1.1 and DWARF 2 */ 117183878Sraj .debug_aranges 0 : { *(.debug_aranges) } 118183878Sraj .debug_pubnames 0 : { *(.debug_pubnames) } 119183878Sraj /* DWARF 2 */ 120183878Sraj .debug_info 0 : { *(.debug_info) } 121183878Sraj .debug_abbrev 0 : { *(.debug_abbrev) } 122183878Sraj .debug_line 0 : { *(.debug_line) } 123183878Sraj .debug_frame 0 : { *(.debug_frame) } 124183878Sraj .debug_str 0 : { *(.debug_str) } 125183878Sraj .debug_loc 0 : { *(.debug_loc) } 126183878Sraj .debug_macinfo 0 : { *(.debug_macinfo) } 127183878Sraj /* SGI/MIPS DWARF 2 extensions */ 128183878Sraj .debug_weaknames 0 : { *(.debug_weaknames) } 129183878Sraj .debug_funcnames 0 : { *(.debug_funcnames) } 130183878Sraj .debug_typenames 0 : { *(.debug_typenames) } 131183878Sraj .debug_varnames 0 : { *(.debug_varnames) } 132183878Sraj /* These must appear regardless of . */ 133183878Sraj} 134