1179404Sobrien# Linker script for MIPS systems.
2179404Sobrien# Ian Lance Taylor <ian@cygnus.com>.
3179404Sobrien# These variables may be overridden by the emulation file.  The
4179404Sobrien# defaults are appropriate for a DECstation running Ultrix.
5179404Sobrientest -z "$ENTRY" && ENTRY=__start
6179404Sobrien
7179404Sobrienif [ -z "$EMBEDDED" ]; then
8179404Sobrien  test -z "$TEXT_START_ADDR" && TEXT_START_ADDR="0x400000 + SIZEOF_HEADERS"
9179404Sobrienelse
10179404Sobrien  test -z "$TEXT_START_ADDR" && TEXT_START_ADDR="0x400000"
11179404Sobrienfi
12179404Sobrienif test "x$LD_FLAG" = "xn" -o "x$LD_FLAG" = "xN"; then
13179404Sobrien  DATA_ADDR=.
14179404Sobrienelse
15179404Sobrien  test -z "$DATA_ADDR" && DATA_ADDR=0x10000000
16179404Sobrienfi
17179404Sobriencat <<EOF
18179404SobrienOUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
19179404Sobrien	      "${LITTLE_OUTPUT_FORMAT}")
20179404Sobrien${LIB_SEARCH_DIRS}
21179404Sobrien
22179404SobrienENTRY(${ENTRY})
23179404Sobrien
24179404SobrienSECTIONS
25179404Sobrien{
26179404Sobrien  ${RELOCATING+. = ${TEXT_START_ADDR};}
27179404Sobrien  .text : {
28179404Sobrien    ${RELOCATING+ _ftext = . };
29179404Sobrien    *(.init)
30179404Sobrien    ${RELOCATING+ eprol  =  .};
31179404Sobrien    *(.text)
32179404Sobrien    *(.fini)
33179404Sobrien    ${RELOCATING+ etext  =  .};
34179404Sobrien    ${RELOCATING+ _etext  =  .};
35179404Sobrien  }
36179404Sobrien  ${RELOCATING+. = ${DATA_ADDR};}
37179404Sobrien  .rdata : {
38179404Sobrien    *(.rdata)
39179404Sobrien  }
40179404Sobrien  ${RELOCATING+ _fdata = ALIGN(16);}
41179404Sobrien  .data : {
42179404Sobrien    *(.data)
43179404Sobrien    ${CONSTRUCTING+CONSTRUCTORS}
44179404Sobrien  }
45179404Sobrien  ${RELOCATING+ _gp = ALIGN(16) + 0x8000;}
46179404Sobrien  .lit8 : {
47179404Sobrien    *(.lit8)
48179404Sobrien  }
49179404Sobrien  .lit4 : {
50179404Sobrien    *(.lit4)
51179404Sobrien  }
52179404Sobrien  .sdata : {
53179404Sobrien    *(.sdata)
54179404Sobrien  }
55179404Sobrien  ${RELOCATING+ edata  =  .;}
56179404Sobrien  ${RELOCATING+ _edata  =  .;}
57179404Sobrien  ${RELOCATING+ _fbss = .;}
58179404Sobrien  .sbss : {
59179404Sobrien    *(.sbss)
60179404Sobrien    *(.scommon)
61179404Sobrien  }
62179404Sobrien  .bss : {
63179404Sobrien    *(.bss)
64179404Sobrien    *(COMMON)
65179404Sobrien  }
66179404Sobrien  ${RELOCATING+ end = .;}
67179404Sobrien  ${RELOCATING+ _end = .;}
68179404Sobrien}
69179404SobrienEOF
70