12159047fSniklas# Linker script for MIPS systems.
22159047fSniklas# Ian Lance Taylor <ian@cygnus.com>.
32159047fSniklas# These variables may be overridden by the emulation file.  The
42159047fSniklas# defaults are appropriate for a DECstation running Ultrix.
52159047fSniklastest -z "$ENTRY" && ENTRY=__start
6*191aa565Sniklas
7*191aa565Sniklasif [ -z "$EMBEDDED" ]; then
82159047fSniklas  test -z "$TEXT_START_ADDR" && TEXT_START_ADDR="0x400000 + SIZEOF_HEADERS"
9*191aa565Sniklaselse
10*191aa565Sniklas  test -z "$TEXT_START_ADDR" && TEXT_START_ADDR="0x400000"
11*191aa565Sniklasfi
122159047fSniklasif test "x$LD_FLAG" = "xn" -o "x$LD_FLAG" = "xN"; then
132159047fSniklas  DATA_ADDR=.
142159047fSniklaselse
152159047fSniklas  test -z "$DATA_ADDR" && DATA_ADDR=0x10000000
162159047fSniklasfi
172159047fSniklascat <<EOF
182159047fSniklasOUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
192159047fSniklas	      "${LITTLE_OUTPUT_FORMAT}")
202159047fSniklas${LIB_SEARCH_DIRS}
212159047fSniklas
222159047fSniklasENTRY(${ENTRY})
232159047fSniklas
242159047fSniklasSECTIONS
252159047fSniklas{
262159047fSniklas  ${RELOCATING+. = ${TEXT_START_ADDR};}
272159047fSniklas  .text : {
282159047fSniklas    ${RELOCATING+ _ftext = . };
292159047fSniklas    *(.init)
302159047fSniklas    ${RELOCATING+ eprol  =  .};
312159047fSniklas    *(.text)
322159047fSniklas    ${RELOCATING+PROVIDE (__runtime_reloc_start = .);}
332159047fSniklas    *(.rel.sdata)
342159047fSniklas    ${RELOCATING+PROVIDE (__runtime_reloc_stop = .);}
352159047fSniklas    *(.fini)
362159047fSniklas    ${RELOCATING+ etext  =  .};
372159047fSniklas    ${RELOCATING+ _etext  =  .};
382159047fSniklas  }
392159047fSniklas  ${RELOCATING+. = ${DATA_ADDR};}
402159047fSniklas  .rdata : {
412159047fSniklas    *(.rdata)
422159047fSniklas  }
432159047fSniklas  ${RELOCATING+ _fdata = ALIGN(16);}
442159047fSniklas  .data : {
452159047fSniklas    *(.data)
462159047fSniklas    ${CONSTRUCTING+CONSTRUCTORS}
472159047fSniklas  }
482159047fSniklas  ${RELOCATING+ _gp = ALIGN(16) + 0x8000;}
492159047fSniklas  .lit8 : {
502159047fSniklas    *(.lit8)
512159047fSniklas  }
522159047fSniklas  .lit4 : {
532159047fSniklas    *(.lit4)
542159047fSniklas  }
552159047fSniklas  .sdata : {
562159047fSniklas    *(.sdata)
572159047fSniklas  }
582159047fSniklas  ${RELOCATING+ edata  =  .;}
592159047fSniklas  ${RELOCATING+ _edata  =  .;}
602159047fSniklas  ${RELOCATING+ _fbss = .;}
612159047fSniklas  .sbss : {
622159047fSniklas    *(.sbss)
632159047fSniklas    *(.scommon)
642159047fSniklas  }
652159047fSniklas  .bss : {
662159047fSniklas    *(.bss)
672159047fSniklas    *(COMMON)
682159047fSniklas  }
692159047fSniklas  ${RELOCATING+ end = .;}
702159047fSniklas  ${RELOCATING+ _end = .;}
712159047fSniklas}
722159047fSniklasEOF
73