From 1a7f2a866ea638dce6bbac83a4f5fcd686f51795 Mon Sep 17 00:00:00 2001
From: Ian Lance Taylor <ian@airs.com>
Date: Tue, 13 May 1997 03:30:20 +0000
Subject: [PATCH] 	* scripttempl/elfmips.sc: Remove. 	*
 scripttempl/elf.sc: Set ENTRY based on target.  Permit 	TEXT_DYNAMIC
 to control .dynamic segment.  Permit 	SHLIB_TEXT_START_ADDR to set start of
 shared object.  Support 	INITIAL_READONLY_SECTIONS.  Put .stub in
 .text.  Only put 	.gnu.linkonce.t* in .text when relocating.  Support 
 OTHER_TEXT_SECTIONS.  Support SHLIB_DATA_ADDR as well as 	DATA_ADDR. 
 Support OTHER_GOT_SYMBOLS and OTHER_GOT_SECTIONS. 	*
 emulparams/elf32b4300.sh (SCRIPT_NAME): Set to elf. 	(DATA_ADDR): Don't
 set. 	(INITIAL_READONLY_SECTIONS): Rename from OTHER_READONLY_SECTIONS. 
 (OTHER_TEXT_SECTIONS): Set. 	(OTHER_GOT_SECTIONS): Rename from
 OTHER_READWRITE_SECTIONS. 	(MACHINE): Set to empty string. 	*
 emulparams/elf32l4300.sh: Likewise. 	* emulparams/elf32ebmip.sh: Likewise. 
 * emulparams/elf32elmip.sh: Likewise. 	* emulparams/elf32bmip.sh: Likewise. 
 Also: 	(TEXT_DYNAMIC): Set. 	* emulparams/elf32lmips.sh: Likewise. 	*
 Makefile.in (eelf32bmips.c): Depend upon elf.sc rather than 	elfmips.sc. 
 (eelf32ebmips.c, eelf32elmips.c, eelf32lmip.c): Likewise.

---
 ld/ChangeLog              |  26 +++++
 ld/scripttempl/.Sanitize  |   1 -
 ld/scripttempl/elfmips.sc | 207 --------------------------------------
 3 files changed, 26 insertions(+), 208 deletions(-)
 delete mode 100644 ld/scripttempl/elfmips.sc

diff --git a/ld/ChangeLog b/ld/ChangeLog
index e8dd49583ec..653260a37ff 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,29 @@
+Mon May 12 23:22:58 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+	* scripttempl/elfmips.sc: Remove.
+	* scripttempl/elf.sc: Set ENTRY based on target.  Permit
+	TEXT_DYNAMIC to control .dynamic segment.  Permit
+	SHLIB_TEXT_START_ADDR to set start of shared object.  Support
+	INITIAL_READONLY_SECTIONS.  Put .stub in .text.  Only put
+	.gnu.linkonce.t* in .text when relocating.  Support
+	OTHER_TEXT_SECTIONS.  Support SHLIB_DATA_ADDR as well as
+	DATA_ADDR.  Support OTHER_GOT_SYMBOLS and OTHER_GOT_SECTIONS.
+	* emulparams/elf32b4300.sh (SCRIPT_NAME): Set to elf.
+	(DATA_ADDR): Don't set.
+	(INITIAL_READONLY_SECTIONS): Rename from OTHER_READONLY_SECTIONS.
+	(OTHER_TEXT_SECTIONS): Set.
+	(OTHER_GOT_SECTIONS): Rename from OTHER_READWRITE_SECTIONS.
+	(MACHINE): Set to empty string.
+	* emulparams/elf32l4300.sh: Likewise.
+	* emulparams/elf32ebmip.sh: Likewise.
+	* emulparams/elf32elmip.sh: Likewise.
+	* emulparams/elf32bmip.sh: Likewise.  Also:
+	(TEXT_DYNAMIC): Set.
+	* emulparams/elf32lmips.sh: Likewise.
+	* Makefile.in (eelf32bmips.c): Depend upon elf.sc rather than
+	elfmips.sc.
+	(eelf32ebmips.c, eelf32elmips.c, eelf32lmip.c): Likewise.
+
 Mon May 12 11:11:06 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
 
 	* scripttempl/elf.sc: Don't align the data segment on the next 8
diff --git a/ld/scripttempl/.Sanitize b/ld/scripttempl/.Sanitize
index 6bb42746dad..3e969d72198 100644
--- a/ld/scripttempl/.Sanitize
+++ b/ld/scripttempl/.Sanitize
@@ -58,7 +58,6 @@ delta68.sc
 ebmon29k.sc
 elf.sc
 elfd10v.sc
-elfmips.sc
 elfppc.sc
 go32coff.sc
 h8300.sc
diff --git a/ld/scripttempl/elfmips.sc b/ld/scripttempl/elfmips.sc
deleted file mode 100644
index 9dae3e53483..00000000000
--- a/ld/scripttempl/elfmips.sc
+++ /dev/null
@@ -1,207 +0,0 @@
-#
-# Unusual variables checked by this code:
-#	NOP - two byte opcode for no-op (defaults to 0)
-#	DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
-#	OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
-#		(e.g., .PARISC.milli)
-#	OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
-#		(e.g., .PARISC.global)
-#	OTHER_SECTIONS - at the end
-#	EXECUTABLE_SYMBOLS - symbols that must be defined for an
-#		executable (e.g., _DYNAMIC_LINK)
-#	TEXT_START_SYMBOLS - symbols that appear at the start of the
-#		.text section.
-#	DATA_START_SYMBOLS - symbols that appear at the start of the
-#		.data section.
-#	OTHER_BSS_SYMBOLS - symbols that appear at the start of the
-#		.bss section besides __bss_start.
-#	EMBEDDED - whether this is for an embedded system. 
-#
-# When adding sections, do note that the names of some sections are used
-# when specifying the start address of the next.
-#
-
-# We use a start address of __start for Irix 5 and GNU/Linux/MIPS,
-# _start for other targets.  This is for compatibility with Irix 5,
-# and with old MIPS ELF toolchains.
-if [ -z "$ENTRY" ]; then
-  case "${target}" in
-  mips*-*-irix5*) ENTRY=__start ;;
-  mips*-*-linux*) ENTRY=__start ;;
-  *) ENTRY=_start ;;
-  esac
-fi
-
-# if this is for an embedded system, don't add SIZEOF_HEADERS.
-if [ -z "$EMBEDDED" ]; then
-   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
-else
-   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
-fi
-
-test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
-test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
-test "$LD_FLAG" = "N" && DATA_ADDR=.
-INTERP=".interp   ${RELOCATING-0} : { *(.interp) 	}"
-cat <<EOF
-OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
-	      "${LITTLE_OUTPUT_FORMAT}")
-OUTPUT_ARCH(${ARCH})
-ENTRY(${ENTRY})
-
-${RELOCATING+${LIB_SEARCH_DIRS}}
-${RELOCATING+/* Do we need any of these for elf?
-   __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}}  */}
-${RELOCATING+${EXECUTABLE_SYMBOLS}}
-${RELOCATING- /* For some reason, the Solaris linker makes bad executables
-  if gld -r is used and the intermediate file has sections starting
-  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
-  bug.  But for now assigning the zero vmas works.  */}
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  ${CREATE_SHLIB-${RELOCATING+. = ${TEXT_BASE_ADDRESS};}}
-  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR} + SIZEOF_HEADERS;}}
-  ${CREATE_SHLIB-${INTERP}}
-  .reginfo     ${RELOCATING-0} : { *(.reginfo) }
-  .dynamic     ${RELOCATING-0} : { *(.dynamic) }
-  .dynstr      ${RELOCATING-0} : { *(.dynstr)		}
-  .dynsym      ${RELOCATING-0} : { *(.dynsym)		}
-  .hash        ${RELOCATING-0} : { *(.hash)		}
-  .rel.text    ${RELOCATING-0} :
-    { *(.rel.text) *(.rel.gnu.linkonce.t*) }
-  .rela.text   ${RELOCATING-0} :
-    { *(.rela.text) *(.rela.gnu.linkonce.t*) }
-  .rel.data    ${RELOCATING-0} :
-    { *(.rel.data) *(.rel.gnu.linkonce.d*) }
-  .rela.data   ${RELOCATING-0} :
-    { *(.rela.data) *(.rela.gnu.linkonce.d*) }
-  .rel.rodata  ${RELOCATING-0} :
-    { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
-  .rela.rodata ${RELOCATING-0} :
-    { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
-  .rel.got     ${RELOCATING-0} : { *(.rel.got)		}
-  .rela.got    ${RELOCATING-0} : { *(.rela.got)		}
-  .rel.ctors   ${RELOCATING-0} : { *(.rel.ctors)	}
-  .rela.ctors  ${RELOCATING-0} : { *(.rela.ctors)	}
-  .rel.dtors   ${RELOCATING-0} : { *(.rel.dtors)	}
-  .rela.dtors  ${RELOCATING-0} : { *(.rela.dtors)	}
-  .rel.init    ${RELOCATING-0} : { *(.rel.init)	}
-  .rela.init   ${RELOCATING-0} : { *(.rela.init)	}
-  .rel.fini    ${RELOCATING-0} : { *(.rel.fini)	}
-  .rela.fini   ${RELOCATING-0} : { *(.rela.fini)	}
-  .rel.bss     ${RELOCATING-0} : { *(.rel.bss)		}
-  .rela.bss    ${RELOCATING-0} : { *(.rela.bss)		}
-  .rel.plt     ${RELOCATING-0} : { *(.rel.plt)		}
-  .rela.plt    ${RELOCATING-0} : { *(.rela.plt)		}
-  .rodata  ${RELOCATING-0} : { *(.rodata) *(.gnu.linkonce.r*) }
-  .rodata1 ${RELOCATING-0} : { *(.rodata1) }
-  .init        ${RELOCATING-0} : { *(.init)	} =${NOP-0}
-  .text    ${RELOCATING-0} :
-  {
-    ${RELOCATING+${TEXT_START_SYMBOLS}}
-    *(.text)
-    *(.stub)
-    /* .gnu.warning sections are handled specially by elf32.em.  */
-    *(.gnu.warning)
-    ${RELOCATING+*(.gnu.linkonce.t*)}
-    ${RELOCATING+*(.mips16.fn.*)}
-    ${RELOCATING+*(.mips16.call.*)}
-  } =${NOP-0}
-  ${RELOCATING+_etext = .;}
-  ${RELOCATING+PROVIDE (etext = .);}
-  .fini    ${RELOCATING-0} : { *(.fini)    } =${NOP-0}
-
-  /* Adjust the address for the data segment.  We want to adjust up to
-     the same address within the page on the next page up.  It would
-     be more correct to do this:
-       ${RELOCATING+. = ${DATA_ADDR-ALIGN(${MAXPAGESIZE})
-		+ ((ALIGN(8) + ${MAXPAGESIZE} - ALIGN(${MAXPAGESIZE}))
-		   & (${MAXPAGESIZE} - 1)};}
-     The current expression does not correctly handle the case of a
-     text segment ending precisely at the end of a page; it causes the
-     data segment to skip a page.  The above expression does not have
-     this problem, but it will currently (2/95) cause BFD to allocate
-     a single segment, combining both text and data, for this case.
-     This will prevent the text segment from being shared among
-     multiple executions of the program; I think that is more
-     important than losing a page of the virtual address space (note
-     that no actual memory is lost; the page which is skipped can not
-     be referenced).  */
-  ${CREATE_SHLIB-${RELOCATING+. += ${DATA_ADDR} - ${TEXT_START_ADDR};}}
-  ${CREATE_SHLIB-${RELOCATING+. += 0x10000;}}
-  ${CREATE_SHLIB+${RELOCATING+. = ALIGN(${MAXPAGESIZE}) + (ALIGN(8) & (${MAXPAGESIZE} - 1));}}
-  .data  ${RELOCATING-0} :
-  {
-    ${RELOCATING+${DATA_START_SYMBOLS}}
-    *(.data)
-    *(.gnu.linkonce.d*)
-    ${CONSTRUCTING+CONSTRUCTORS}
-  }
-  .data1 ${RELOCATING-0} : { *(.data1) }
-  .ctors       ${RELOCATING-0} : { *(.ctors)   }
-  .dtors       ${RELOCATING-0} : { *(.dtors)   }
-  ${RELOCATING+${OTHER_GOT_SYMBOLS}}
-  .got         ${RELOCATING-0} :
-  {
-    *(.got.plt) *(.got)
-   }
-  /* We want the small data sections together, so single-instruction offsets
-     can access them all, and initialized data all before uninitialized, so
-     we can shorten the on-disk segment size.  */
-  .sdata   ${RELOCATING-0} : { *(.sdata) }
-  ${RELOCATING+${OTHER_READWRITE_SECTIONS}}
-  ${RELOCATING+_edata  =  .;}
-  ${RELOCATING+PROVIDE (edata = .);}
-  ${RELOCATING+__bss_start = .;}
-  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
-  .sbss    ${RELOCATING-0} : { *(.sbss) *(.scommon) }
-  .bss     ${RELOCATING-0} :
-  {
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-  }
-  ${RELOCATING+_end = . ;}
-  ${RELOCATING+PROVIDE (end = .);}
-
-  /* These are needed for ELF backends which have not yet been
-     converted to the new style linker.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-
-  /* DWARF debug sections.
-     Symbols in the DWARF debugging sections are relative to the beginning
-     of the section so we begin them at 0.  */
-
-  /* DWARF 1 */
-  .debug          0 : { *(.debug) }
-  .line           0 : { *(.line) }
-
-  /* GNU DWARF 1 extensions */
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-
-  /* DWARF 1.1 and DWARF 2 */
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-
-  /* DWARF 2 */
-  .debug_info     0 : { *(.debug_info) }
-  .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
-  .debug_frame    0 : { *(.debug_frame) }
-  .debug_str      0 : { *(.debug_str) }
-  .debug_loc      0 : { *(.debug_loc) }
-  .debug_macinfo  0 : { *(.debug_macinfo) }
-
-  /* SGI/MIPS DWARF 2 extensions */
-  .debug_weaknames 0 : { *(.debug_weaknames) }
-  .debug_funcnames 0 : { *(.debug_funcnames) }
-  .debug_typenames 0 : { *(.debug_typenames) }
-  .debug_varnames  0 : { *(.debug_varnames) }
-
-  /* These must appear regardless of ${RELOCATING}.  */
-  ${OTHER_SECTIONS}
-}
-EOF