1d2734d58SJake Burkholder/* $FreeBSD$ */ 2*491fb274SDimitry AndricOUTPUT_FORMAT("elf64-sparc-freebsd", "elf64-sparc-freebsd", 3*491fb274SDimitry Andric "elf64-sparc-freebsd") 4d2734d58SJake BurkholderOUTPUT_ARCH(sparc:v9) 5d2734d58SJake BurkholderENTRY(_start) 61030d2baSJake BurkholderSEARCH_DIR(/usr/lib); 7d2734d58SJake BurkholderSECTIONS 8d2734d58SJake Burkholder{ 9d2734d58SJake Burkholder /* Read-only sections, merged into text segment: */ 1053beacfaSJake Burkholder . = kernbase + SIZEOF_HEADERS; 11d2734d58SJake Burkholder .interp : { *(.interp) } 12d2734d58SJake Burkholder .hash : { *(.hash) } 13d2734d58SJake Burkholder .dynsym : { *(.dynsym) } 14d2734d58SJake Burkholder .dynstr : { *(.dynstr) } 15d2734d58SJake Burkholder .gnu.version : { *(.gnu.version) } 16d2734d58SJake Burkholder .gnu.version_d : { *(.gnu.version_d) } 17d2734d58SJake Burkholder .gnu.version_r : { *(.gnu.version_r) } 18d2734d58SJake Burkholder .rel.init : { *(.rel.init) } 19d2734d58SJake Burkholder .rela.init : { *(.rela.init) } 20d2734d58SJake Burkholder .rel.text : 21d2734d58SJake Burkholder { 22d2734d58SJake Burkholder *(.rel.text) 23d2734d58SJake Burkholder *(.rel.text.*) 24d2734d58SJake Burkholder *(.rel.gnu.linkonce.t.*) 25d2734d58SJake Burkholder } 26d2734d58SJake Burkholder .rela.text : 27d2734d58SJake Burkholder { 28d2734d58SJake Burkholder *(.rela.text) 29d2734d58SJake Burkholder *(.rela.text.*) 30d2734d58SJake Burkholder *(.rela.gnu.linkonce.t.*) 31d2734d58SJake Burkholder } 32d2734d58SJake Burkholder .rel.fini : { *(.rel.fini) } 33d2734d58SJake Burkholder .rela.fini : { *(.rela.fini) } 34d2734d58SJake Burkholder .rel.rodata : 35d2734d58SJake Burkholder { 36d2734d58SJake Burkholder *(.rel.rodata) 37d2734d58SJake Burkholder *(.rel.rodata.*) 38d2734d58SJake Burkholder *(.rel.gnu.linkonce.r.*) 39d2734d58SJake Burkholder } 40d2734d58SJake Burkholder .rela.rodata : 41d2734d58SJake Burkholder { 42d2734d58SJake Burkholder *(.rela.rodata) 43d2734d58SJake Burkholder *(.rela.rodata.*) 44d2734d58SJake Burkholder *(.rela.gnu.linkonce.r.*) 45d2734d58SJake Burkholder } 46d2734d58SJake Burkholder .rel.data : 47d2734d58SJake Burkholder { 48d2734d58SJake Burkholder *(.rel.data) 49d2734d58SJake Burkholder *(.rel.data.*) 50d2734d58SJake Burkholder *(.rel.gnu.linkonce.d.*) 51d2734d58SJake Burkholder } 52d2734d58SJake Burkholder .rela.data : 53d2734d58SJake Burkholder { 54d2734d58SJake Burkholder *(.rela.data) 55d2734d58SJake Burkholder *(.rela.data.*) 56d2734d58SJake Burkholder *(.rela.gnu.linkonce.d.*) 57d2734d58SJake Burkholder } 58d2734d58SJake Burkholder .rel.ctors : { *(.rel.ctors) } 59d2734d58SJake Burkholder .rela.ctors : { *(.rela.ctors) } 60d2734d58SJake Burkholder .rel.dtors : { *(.rel.dtors) } 61d2734d58SJake Burkholder .rela.dtors : { *(.rela.dtors) } 62d2734d58SJake Burkholder .rel.got : { *(.rel.got) } 63d2734d58SJake Burkholder .rela.got : { *(.rela.got) } 64d2734d58SJake Burkholder .rel.sdata : 65d2734d58SJake Burkholder { 66d2734d58SJake Burkholder *(.rel.sdata) 67d2734d58SJake Burkholder *(.rel.sdata.*) 68d2734d58SJake Burkholder *(.rel.gnu.linkonce.s.*) 69d2734d58SJake Burkholder } 70d2734d58SJake Burkholder .rela.sdata : 71d2734d58SJake Burkholder { 72d2734d58SJake Burkholder *(.rela.sdata) 73d2734d58SJake Burkholder *(.rela.sdata.*) 74d2734d58SJake Burkholder *(.rela.gnu.linkonce.s.*) 75d2734d58SJake Burkholder } 76d2734d58SJake Burkholder .rel.sbss : 77d2734d58SJake Burkholder { 78d2734d58SJake Burkholder *(.rel.sbss) 79d2734d58SJake Burkholder *(.rel.sbss.*) 80d2734d58SJake Burkholder *(.rel.gnu.linkonce.sb.*) 81d2734d58SJake Burkholder } 82d2734d58SJake Burkholder .rela.sbss : 83d2734d58SJake Burkholder { 84d2734d58SJake Burkholder *(.rela.sbss) 85d2734d58SJake Burkholder *(.rela.sbss.*) 86d2734d58SJake Burkholder *(.rel.gnu.linkonce.sb.*) 87d2734d58SJake Burkholder } 88d2734d58SJake Burkholder .rel.sdata2 : 89d2734d58SJake Burkholder { 90d2734d58SJake Burkholder *(.rel.sdata2) 91d2734d58SJake Burkholder *(.rel.sdata2.*) 92d2734d58SJake Burkholder *(.rel.gnu.linkonce.s2.*) 93d2734d58SJake Burkholder } 94d2734d58SJake Burkholder .rela.sdata2 : 95d2734d58SJake Burkholder { 96d2734d58SJake Burkholder *(.rela.sdata2) 97d2734d58SJake Burkholder *(.rela.sdata2.*) 98d2734d58SJake Burkholder *(.rela.gnu.linkonce.s2.*) 99d2734d58SJake Burkholder } 100d2734d58SJake Burkholder .rel.sbss2 : 101d2734d58SJake Burkholder { 102d2734d58SJake Burkholder *(.rel.sbss2) 103d2734d58SJake Burkholder *(.rel.sbss2.*) 104d2734d58SJake Burkholder *(.rel.gnu.linkonce.sb2.*) 105d2734d58SJake Burkholder } 106d2734d58SJake Burkholder .rela.sbss2 : 107d2734d58SJake Burkholder { 108d2734d58SJake Burkholder *(.rela.sbss2) 109d2734d58SJake Burkholder *(.rela.sbss2.*) 110d2734d58SJake Burkholder *(.rela.gnu.linkonce.sb2.*) 111d2734d58SJake Burkholder } 112d2734d58SJake Burkholder .rel.bss : 113d2734d58SJake Burkholder { 114d2734d58SJake Burkholder *(.rel.bss) 115d2734d58SJake Burkholder *(.rel.bss.*) 116d2734d58SJake Burkholder *(.rel.gnu.linkonce.b.*) 117d2734d58SJake Burkholder } 118d2734d58SJake Burkholder .rela.bss : 119d2734d58SJake Burkholder { 120d2734d58SJake Burkholder *(.rela.bss) 121d2734d58SJake Burkholder *(.rela.bss.*) 122d2734d58SJake Burkholder *(.rela.gnu.linkonce.b.*) 123d2734d58SJake Burkholder } 124d2734d58SJake Burkholder .rel.plt : { *(.rel.plt) } 125d2734d58SJake Burkholder .rela.plt : { *(.rela.plt) } 126d2734d58SJake Burkholder .init : 127d2734d58SJake Burkholder { 128d2734d58SJake Burkholder KEEP (*(.init)) 12953beacfaSJake Burkholder } =0x1000000 130d2734d58SJake Burkholder .text : 131d2734d58SJake Burkholder { 132d2734d58SJake Burkholder *(.trap) 133d2734d58SJake Burkholder *(.text) 134d2734d58SJake Burkholder *(.text.*) 135d2734d58SJake Burkholder *(.stub) 136d2734d58SJake Burkholder /* .gnu.warning sections are handled specially by elf32.em. */ 137d2734d58SJake Burkholder *(.gnu.warning) 138d2734d58SJake Burkholder *(.gnu.linkonce.t.*) 13953beacfaSJake Burkholder } =0x1000000 140d2734d58SJake Burkholder .fini : 141d2734d58SJake Burkholder { 142d2734d58SJake Burkholder KEEP (*(.fini)) 14353beacfaSJake Burkholder } =0x1000000 144d2734d58SJake Burkholder PROVIDE (__etext = .); 145d2734d58SJake Burkholder PROVIDE (_etext = .); 146d2734d58SJake Burkholder PROVIDE (etext = .); 147d2734d58SJake Burkholder .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) } 148d2734d58SJake Burkholder .rodata1 : { *(.rodata1) } 149d2734d58SJake Burkholder .sdata2 : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) } 150d2734d58SJake Burkholder .sbss2 : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) } 151d2734d58SJake Burkholder . = ALIGN(0x2000) + (. & (0x2000 - 1)); 152d2734d58SJake Burkholder .data : 153d2734d58SJake Burkholder { 154d2734d58SJake Burkholder *(.data) 155d2734d58SJake Burkholder *(.data.*) 156d2734d58SJake Burkholder *(.gnu.linkonce.d.*) 157d2734d58SJake Burkholder } 158d2734d58SJake Burkholder .data1 : { *(.data1) } 159d2734d58SJake Burkholder .eh_frame : { KEEP (*(.eh_frame)) } 160d2734d58SJake Burkholder .gcc_except_table : { *(.gcc_except_table) } 161d2734d58SJake Burkholder .ctors : 162d2734d58SJake Burkholder { 163d2734d58SJake Burkholder /* gcc uses crtbegin.o to find the start of 164d2734d58SJake Burkholder the constructors, so we make sure it is 165d2734d58SJake Burkholder first. Because this is a wildcard, it 166d2734d58SJake Burkholder doesn't matter if the user does not 167d2734d58SJake Burkholder actually link against crtbegin.o; the 168d2734d58SJake Burkholder linker won't look for a file to match a 169d2734d58SJake Burkholder wildcard. The wildcard also means that it 170d2734d58SJake Burkholder doesn't matter which directory crtbegin.o 171d2734d58SJake Burkholder is in. */ 172d2734d58SJake Burkholder KEEP (*crtbegin.o(.ctors)) 173d2734d58SJake Burkholder /* We don't want to include the .ctor section from 174d2734d58SJake Burkholder from the crtend.o file until after the sorted ctors. 175d2734d58SJake Burkholder The .ctor section from the crtend file contains the 176d2734d58SJake Burkholder end of ctors marker and it must be last */ 177d2734d58SJake Burkholder KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) 178d2734d58SJake Burkholder KEEP (*(SORT(.ctors.*))) 179d2734d58SJake Burkholder KEEP (*(.ctors)) 180d2734d58SJake Burkholder } 181d2734d58SJake Burkholder .dtors : 182d2734d58SJake Burkholder { 183d2734d58SJake Burkholder KEEP (*crtbegin.o(.dtors)) 184d2734d58SJake Burkholder KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) 185d2734d58SJake Burkholder KEEP (*(SORT(.dtors.*))) 186d2734d58SJake Burkholder KEEP (*(.dtors)) 187d2734d58SJake Burkholder } 188d2734d58SJake Burkholder .plt : { *(.plt) } 189d2734d58SJake Burkholder .got : { *(.got.plt) *(.got) } 190d2734d58SJake Burkholder .dynamic : { *(.dynamic) } 191d2734d58SJake Burkholder /* We want the small data sections together, so single-instruction offsets 192d2734d58SJake Burkholder can access them all, and initialized data all before uninitialized, so 193d2734d58SJake Burkholder we can shorten the on-disk segment size. */ 194d2734d58SJake Burkholder .sdata : 195d2734d58SJake Burkholder { 196d2734d58SJake Burkholder *(.sdata) 197d2734d58SJake Burkholder *(.sdata.*) 198d2734d58SJake Burkholder *(.gnu.linkonce.s.*) 199d2734d58SJake Burkholder } 200d2734d58SJake Burkholder _edata = .; 201d2734d58SJake Burkholder PROVIDE (edata = .); 202d2734d58SJake Burkholder __bss_start = .; 203d2734d58SJake Burkholder .sbss : 204d2734d58SJake Burkholder { 205d2734d58SJake Burkholder PROVIDE (__sbss_start = .); 206d2734d58SJake Burkholder PROVIDE (___sbss_start = .); 207d2734d58SJake Burkholder *(.dynsbss) 208d2734d58SJake Burkholder *(.sbss) 209d2734d58SJake Burkholder *(.sbss.*) 210d2734d58SJake Burkholder *(.gnu.linkonce.sb.*) 211d2734d58SJake Burkholder *(.scommon) 212d2734d58SJake Burkholder PROVIDE (__sbss_end = .); 213d2734d58SJake Burkholder PROVIDE (___sbss_end = .); 214d2734d58SJake Burkholder } 215d2734d58SJake Burkholder .bss : 216d2734d58SJake Burkholder { 217d2734d58SJake Burkholder *(.dynbss) 218d2734d58SJake Burkholder *(.bss) 219d2734d58SJake Burkholder *(.bss.*) 220d2734d58SJake Burkholder *(.gnu.linkonce.b.*) 221d2734d58SJake Burkholder *(COMMON) 222d2734d58SJake Burkholder /* Align here to ensure that the .bss section occupies space up to 223d2734d58SJake Burkholder _end. Align after .bss to ensure correct alignment even if the 224d2734d58SJake Burkholder .bss section disappears because there are no input sections. */ 225d2734d58SJake Burkholder . = ALIGN(64 / 8); 226d2734d58SJake Burkholder } 227d2734d58SJake Burkholder . = ALIGN(64 / 8); 228d2734d58SJake Burkholder _end = .; 229d2734d58SJake Burkholder PROVIDE (end = .); 230d2734d58SJake Burkholder /* Stabs debugging sections. */ 231d2734d58SJake Burkholder .stab 0 : { *(.stab) } 232d2734d58SJake Burkholder .stabstr 0 : { *(.stabstr) } 233d2734d58SJake Burkholder .stab.excl 0 : { *(.stab.excl) } 234d2734d58SJake Burkholder .stab.exclstr 0 : { *(.stab.exclstr) } 235d2734d58SJake Burkholder .stab.index 0 : { *(.stab.index) } 236d2734d58SJake Burkholder .stab.indexstr 0 : { *(.stab.indexstr) } 237d2734d58SJake Burkholder .comment 0 : { *(.comment) } 238d2734d58SJake Burkholder /* DWARF debug sections. 239d2734d58SJake Burkholder Symbols in the DWARF debugging sections are relative to the beginning 240d2734d58SJake Burkholder of the section so we begin them at 0. */ 241d2734d58SJake Burkholder /* DWARF 1 */ 242d2734d58SJake Burkholder .debug 0 : { *(.debug) } 243d2734d58SJake Burkholder .line 0 : { *(.line) } 244d2734d58SJake Burkholder /* GNU DWARF 1 extensions */ 245d2734d58SJake Burkholder .debug_srcinfo 0 : { *(.debug_srcinfo) } 246d2734d58SJake Burkholder .debug_sfnames 0 : { *(.debug_sfnames) } 247d2734d58SJake Burkholder /* DWARF 1.1 and DWARF 2 */ 248d2734d58SJake Burkholder .debug_aranges 0 : { *(.debug_aranges) } 249d2734d58SJake Burkholder .debug_pubnames 0 : { *(.debug_pubnames) } 250d2734d58SJake Burkholder /* DWARF 2 */ 251d2734d58SJake Burkholder .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } 252d2734d58SJake Burkholder .debug_abbrev 0 : { *(.debug_abbrev) } 253d2734d58SJake Burkholder .debug_line 0 : { *(.debug_line) } 254d2734d58SJake Burkholder .debug_frame 0 : { *(.debug_frame) } 255d2734d58SJake Burkholder .debug_str 0 : { *(.debug_str) } 256d2734d58SJake Burkholder .debug_loc 0 : { *(.debug_loc) } 257d2734d58SJake Burkholder .debug_macinfo 0 : { *(.debug_macinfo) } 258d2734d58SJake Burkholder /* SGI/MIPS DWARF 2 extensions */ 259d2734d58SJake Burkholder .debug_weaknames 0 : { *(.debug_weaknames) } 260d2734d58SJake Burkholder .debug_funcnames 0 : { *(.debug_funcnames) } 261d2734d58SJake Burkholder .debug_typenames 0 : { *(.debug_typenames) } 262d2734d58SJake Burkholder .debug_varnames 0 : { *(.debug_varnames) } 263d2734d58SJake Burkholder /* These must appear regardless of . */ 264d2734d58SJake Burkholder} 265