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