181084Sjake/* $FreeBSD$ */ 2218822SdimOUTPUT_FORMAT("elf64-sparc-freebsd", "elf64-sparc-freebsd", 3218822Sdim "elf64-sparc-freebsd") 481084SjakeOUTPUT_ARCH(sparc:v9) 581084SjakeENTRY(_start) 6115969SjakeSEARCH_DIR(/usr/lib); 781084SjakeSECTIONS 881084Sjake{ 981084Sjake /* Read-only sections, merged into text segment: */ 1083756Sjake . = kernbase + SIZEOF_HEADERS; 1181084Sjake .interp : { *(.interp) } 1281084Sjake .hash : { *(.hash) } 1381084Sjake .dynsym : { *(.dynsym) } 1481084Sjake .dynstr : { *(.dynstr) } 1581084Sjake .gnu.version : { *(.gnu.version) } 1681084Sjake .gnu.version_d : { *(.gnu.version_d) } 1781084Sjake .gnu.version_r : { *(.gnu.version_r) } 1881084Sjake .rel.init : { *(.rel.init) } 1981084Sjake .rela.init : { *(.rela.init) } 2081084Sjake .rel.text : 2181084Sjake { 2281084Sjake *(.rel.text) 2381084Sjake *(.rel.text.*) 2481084Sjake *(.rel.gnu.linkonce.t.*) 2581084Sjake } 2681084Sjake .rela.text : 2781084Sjake { 2881084Sjake *(.rela.text) 2981084Sjake *(.rela.text.*) 3081084Sjake *(.rela.gnu.linkonce.t.*) 3181084Sjake } 3281084Sjake .rel.fini : { *(.rel.fini) } 3381084Sjake .rela.fini : { *(.rela.fini) } 3481084Sjake .rel.rodata : 3581084Sjake { 3681084Sjake *(.rel.rodata) 3781084Sjake *(.rel.rodata.*) 3881084Sjake *(.rel.gnu.linkonce.r.*) 3981084Sjake } 4081084Sjake .rela.rodata : 4181084Sjake { 4281084Sjake *(.rela.rodata) 4381084Sjake *(.rela.rodata.*) 4481084Sjake *(.rela.gnu.linkonce.r.*) 4581084Sjake } 4681084Sjake .rel.data : 4781084Sjake { 4881084Sjake *(.rel.data) 4981084Sjake *(.rel.data.*) 5081084Sjake *(.rel.gnu.linkonce.d.*) 5181084Sjake } 5281084Sjake .rela.data : 5381084Sjake { 5481084Sjake *(.rela.data) 5581084Sjake *(.rela.data.*) 5681084Sjake *(.rela.gnu.linkonce.d.*) 5781084Sjake } 5881084Sjake .rel.ctors : { *(.rel.ctors) } 5981084Sjake .rela.ctors : { *(.rela.ctors) } 6081084Sjake .rel.dtors : { *(.rel.dtors) } 6181084Sjake .rela.dtors : { *(.rela.dtors) } 6281084Sjake .rel.got : { *(.rel.got) } 6381084Sjake .rela.got : { *(.rela.got) } 6481084Sjake .rel.sdata : 6581084Sjake { 6681084Sjake *(.rel.sdata) 6781084Sjake *(.rel.sdata.*) 6881084Sjake *(.rel.gnu.linkonce.s.*) 6981084Sjake } 7081084Sjake .rela.sdata : 7181084Sjake { 7281084Sjake *(.rela.sdata) 7381084Sjake *(.rela.sdata.*) 7481084Sjake *(.rela.gnu.linkonce.s.*) 7581084Sjake } 7681084Sjake .rel.sbss : 7781084Sjake { 7881084Sjake *(.rel.sbss) 7981084Sjake *(.rel.sbss.*) 8081084Sjake *(.rel.gnu.linkonce.sb.*) 8181084Sjake } 8281084Sjake .rela.sbss : 8381084Sjake { 8481084Sjake *(.rela.sbss) 8581084Sjake *(.rela.sbss.*) 8681084Sjake *(.rel.gnu.linkonce.sb.*) 8781084Sjake } 8881084Sjake .rel.sdata2 : 8981084Sjake { 9081084Sjake *(.rel.sdata2) 9181084Sjake *(.rel.sdata2.*) 9281084Sjake *(.rel.gnu.linkonce.s2.*) 9381084Sjake } 9481084Sjake .rela.sdata2 : 9581084Sjake { 9681084Sjake *(.rela.sdata2) 9781084Sjake *(.rela.sdata2.*) 9881084Sjake *(.rela.gnu.linkonce.s2.*) 9981084Sjake } 10081084Sjake .rel.sbss2 : 10181084Sjake { 10281084Sjake *(.rel.sbss2) 10381084Sjake *(.rel.sbss2.*) 10481084Sjake *(.rel.gnu.linkonce.sb2.*) 10581084Sjake } 10681084Sjake .rela.sbss2 : 10781084Sjake { 10881084Sjake *(.rela.sbss2) 10981084Sjake *(.rela.sbss2.*) 11081084Sjake *(.rela.gnu.linkonce.sb2.*) 11181084Sjake } 11281084Sjake .rel.bss : 11381084Sjake { 11481084Sjake *(.rel.bss) 11581084Sjake *(.rel.bss.*) 11681084Sjake *(.rel.gnu.linkonce.b.*) 11781084Sjake } 11881084Sjake .rela.bss : 11981084Sjake { 12081084Sjake *(.rela.bss) 12181084Sjake *(.rela.bss.*) 12281084Sjake *(.rela.gnu.linkonce.b.*) 12381084Sjake } 12481084Sjake .rel.plt : { *(.rel.plt) } 12581084Sjake .rela.plt : { *(.rela.plt) } 12681084Sjake .init : 12781084Sjake { 12881084Sjake KEEP (*(.init)) 12983756Sjake } =0x1000000 13081084Sjake .text : 13181084Sjake { 13281084Sjake *(.trap) 13381084Sjake *(.text) 13481084Sjake *(.text.*) 13581084Sjake *(.stub) 13681084Sjake /* .gnu.warning sections are handled specially by elf32.em. */ 13781084Sjake *(.gnu.warning) 13881084Sjake *(.gnu.linkonce.t.*) 13983756Sjake } =0x1000000 14081084Sjake .fini : 14181084Sjake { 14281084Sjake KEEP (*(.fini)) 14383756Sjake } =0x1000000 14481084Sjake PROVIDE (__etext = .); 14581084Sjake PROVIDE (_etext = .); 14681084Sjake PROVIDE (etext = .); 14781084Sjake .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) } 14881084Sjake .rodata1 : { *(.rodata1) } 14981084Sjake .sdata2 : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) } 15081084Sjake .sbss2 : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) } 15181084Sjake . = ALIGN(0x2000) + (. & (0x2000 - 1)); 15281084Sjake .data : 15381084Sjake { 15481084Sjake *(.data) 15581084Sjake *(.data.*) 15681084Sjake *(.gnu.linkonce.d.*) 15781084Sjake SORT(CONSTRUCTORS) 15881084Sjake } 15981084Sjake .data1 : { *(.data1) } 16081084Sjake .eh_frame : { KEEP (*(.eh_frame)) } 16181084Sjake .gcc_except_table : { *(.gcc_except_table) } 16281084Sjake .ctors : 16381084Sjake { 16481084Sjake /* gcc uses crtbegin.o to find the start of 16581084Sjake the constructors, so we make sure it is 16681084Sjake first. Because this is a wildcard, it 16781084Sjake doesn't matter if the user does not 16881084Sjake actually link against crtbegin.o; the 16981084Sjake linker won't look for a file to match a 17081084Sjake wildcard. The wildcard also means that it 17181084Sjake doesn't matter which directory crtbegin.o 17281084Sjake is in. */ 17381084Sjake KEEP (*crtbegin.o(.ctors)) 17481084Sjake /* We don't want to include the .ctor section from 17581084Sjake from the crtend.o file until after the sorted ctors. 17681084Sjake The .ctor section from the crtend file contains the 17781084Sjake end of ctors marker and it must be last */ 17881084Sjake KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) 17981084Sjake KEEP (*(SORT(.ctors.*))) 18081084Sjake KEEP (*(.ctors)) 18181084Sjake } 18281084Sjake .dtors : 18381084Sjake { 18481084Sjake KEEP (*crtbegin.o(.dtors)) 18581084Sjake KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) 18681084Sjake KEEP (*(SORT(.dtors.*))) 18781084Sjake KEEP (*(.dtors)) 18881084Sjake } 18981084Sjake .plt : { *(.plt) } 19081084Sjake .got : { *(.got.plt) *(.got) } 19181084Sjake .dynamic : { *(.dynamic) } 19281084Sjake /* We want the small data sections together, so single-instruction offsets 19381084Sjake can access them all, and initialized data all before uninitialized, so 19481084Sjake we can shorten the on-disk segment size. */ 19581084Sjake .sdata : 19681084Sjake { 19781084Sjake *(.sdata) 19881084Sjake *(.sdata.*) 19981084Sjake *(.gnu.linkonce.s.*) 20081084Sjake } 20181084Sjake _edata = .; 20281084Sjake PROVIDE (edata = .); 20381084Sjake __bss_start = .; 20481084Sjake .sbss : 20581084Sjake { 20681084Sjake PROVIDE (__sbss_start = .); 20781084Sjake PROVIDE (___sbss_start = .); 20881084Sjake *(.dynsbss) 20981084Sjake *(.sbss) 21081084Sjake *(.sbss.*) 21181084Sjake *(.gnu.linkonce.sb.*) 21281084Sjake *(.scommon) 21381084Sjake PROVIDE (__sbss_end = .); 21481084Sjake PROVIDE (___sbss_end = .); 21581084Sjake } 21681084Sjake .bss : 21781084Sjake { 21881084Sjake *(.dynbss) 21981084Sjake *(.bss) 22081084Sjake *(.bss.*) 22181084Sjake *(.gnu.linkonce.b.*) 22281084Sjake *(COMMON) 22381084Sjake /* Align here to ensure that the .bss section occupies space up to 22481084Sjake _end. Align after .bss to ensure correct alignment even if the 22581084Sjake .bss section disappears because there are no input sections. */ 22681084Sjake . = ALIGN(64 / 8); 22781084Sjake } 22881084Sjake . = ALIGN(64 / 8); 22981084Sjake _end = .; 23081084Sjake PROVIDE (end = .); 23181084Sjake /* Stabs debugging sections. */ 23281084Sjake .stab 0 : { *(.stab) } 23381084Sjake .stabstr 0 : { *(.stabstr) } 23481084Sjake .stab.excl 0 : { *(.stab.excl) } 23581084Sjake .stab.exclstr 0 : { *(.stab.exclstr) } 23681084Sjake .stab.index 0 : { *(.stab.index) } 23781084Sjake .stab.indexstr 0 : { *(.stab.indexstr) } 23881084Sjake .comment 0 : { *(.comment) } 23981084Sjake /* DWARF debug sections. 24081084Sjake Symbols in the DWARF debugging sections are relative to the beginning 24181084Sjake of the section so we begin them at 0. */ 24281084Sjake /* DWARF 1 */ 24381084Sjake .debug 0 : { *(.debug) } 24481084Sjake .line 0 : { *(.line) } 24581084Sjake /* GNU DWARF 1 extensions */ 24681084Sjake .debug_srcinfo 0 : { *(.debug_srcinfo) } 24781084Sjake .debug_sfnames 0 : { *(.debug_sfnames) } 24881084Sjake /* DWARF 1.1 and DWARF 2 */ 24981084Sjake .debug_aranges 0 : { *(.debug_aranges) } 25081084Sjake .debug_pubnames 0 : { *(.debug_pubnames) } 25181084Sjake /* DWARF 2 */ 25281084Sjake .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } 25381084Sjake .debug_abbrev 0 : { *(.debug_abbrev) } 25481084Sjake .debug_line 0 : { *(.debug_line) } 25581084Sjake .debug_frame 0 : { *(.debug_frame) } 25681084Sjake .debug_str 0 : { *(.debug_str) } 25781084Sjake .debug_loc 0 : { *(.debug_loc) } 25881084Sjake .debug_macinfo 0 : { *(.debug_macinfo) } 25981084Sjake /* SGI/MIPS DWARF 2 extensions */ 26081084Sjake .debug_weaknames 0 : { *(.debug_weaknames) } 26181084Sjake .debug_funcnames 0 : { *(.debug_funcnames) } 26281084Sjake .debug_typenames 0 : { *(.debug_typenames) } 26381084Sjake .debug_varnames 0 : { *(.debug_varnames) } 26481084Sjake /* These must appear regardless of . */ 26581084Sjake} 266