Use ${CONSTRUCTING...} to enclose constructors and destructors.
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 39a6b79..359aae6 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,18 @@
+2000-11-08  Nick Clifton  <nickc@redhat.com>
+
+	* scripttempl/h8300.sc: Use ${CONSTRUCTING...} to enclose
+	constructors and destructors.
+	* scripttempl/h8300h.sc: Ditto.
+	* scripttempl/h8300s.sc: Ditto.
+	* scripttempl/h8500.sc: Ditto.
+	* scripttempl/h8500b.sc: Ditto.
+	* scripttempl/h8500c.sc: Ditto.
+	* scripttempl/h8500m.sc: Ditto.
+	* scripttempl/h8500s.sc: Ditto.
+	* scripttempl/v850.sc: Ditto.
+	* scripttempl/w65.sc: Ditto.
+	* scripttempl/z8000.sc: Ditto.
+
 2000-11-06  Alan Modra  <alan@linuxcare.com.au>
 
 	Merge most place_orphan changes from mainline.
diff --git a/ld/scripttempl/h8300.sc b/ld/scripttempl/h8300.sc
index f2f876e..6f4cdce 100644
--- a/ld/scripttempl/h8300.sc
+++ b/ld/scripttempl/h8300.sc
@@ -1,3 +1,13 @@
+TORS=".tors :
+  {
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;
+  } > ram"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(${ARCH})
@@ -18,52 +28,60 @@
 
 SECTIONS 				
 { 					
-.vectors : {
-	/* Use something like this to place a specific function's address
-	   into the vector table. 
+.vectors :
+	 {
+	  /* Use something like this to place a specific
+	     function's address into the vector table. 
 
-	SHORT(ABSOLUTE(_foobar)) */
+	     SHORT (ABSOLUTE (_foobar)).  */
 
-	*(.vectors)
+	  *(.vectors)
         } ${RELOCATING+ > vectors}
 
-.text :	{ 					
-	*(.rodata) 				
-	*(.text) 				
-	*(.strings)
-   	${RELOCATING+ _etext = . ; }
+.text :
+	{ 					
+	  *(.rodata) 				
+	  *(.text) 				
+	  *(.strings)
+   	  ${RELOCATING+ _etext = . ; }
 	} ${RELOCATING+ > ram}
-.tors : {
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
+	
+	${CONSTRUCTING+${TORS}}
+	
+.data :
+	{
+	  *(.data)
+	  *(.tiny)
+	  ${RELOCATING+ _edata = . ; }
 	} ${RELOCATING+ > ram}
-.data : {
-	*(.data)
-	*(.tiny)
-	${RELOCATING+ _edata = . ; }
-	} ${RELOCATING+ > ram}
-.bss : {
-	${RELOCATING+ _bss_start = . ;}
-	*(.bss)
-	*(COMMON)
-	${RELOCATING+ _end = . ;  }
+	
+.bss :
+	{
+	  ${RELOCATING+ _bss_start = . ;}
+	  *(.bss)
+	  *(COMMON)
+	  ${RELOCATING+ _end = . ;  }
 	} ${RELOCATING+ >ram}
-.stack : {
-	${RELOCATING+ _stack = . ; }
-	*(.stack)
+	
+.stack :
+	{
+	  ${RELOCATING+ _stack = . ; }
+	  *(.stack)
 	} ${RELOCATING+ > topram}
-.eight : {
-	*(.eight)
+	
+.eight :
+	{
+	  *(.eight)
 	} ${RELOCATING+ > eight}
-.stab 0 ${RELOCATING+(NOLOAD)} : {
-	[ .stab ]
+	
+.stab 0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stab ]
 	}
-.stabstr 0 ${RELOCATING+(NOLOAD)} : {
-	[ .stabstr ]
+	
+.stabstr 0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stabstr ]
 	}
 }
 EOF
diff --git a/ld/scripttempl/h8300h.sc b/ld/scripttempl/h8300h.sc
index d1cfd86..e543df9 100644
--- a/ld/scripttempl/h8300h.sc
+++ b/ld/scripttempl/h8300h.sc
@@ -1,3 +1,13 @@
+TORS=".tors :
+  {
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;
+  } > ram"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(h8300h)
@@ -24,53 +34,64 @@
 
 SECTIONS 				
 { 					
-.vectors : {
-	/* Use something like this to place a specific function's address
-	   into the vector table.
+.vectors :
+	{
+	  /* Use something like this to place a specific
+	     function's address into the vector table.
 
-	LONG(ABSOLUTE(_foobar)) */
+	     LONG (ABSOLUTE (_foobar)).  */
 
-	*(.vectors)
+	  *(.vectors)
 	} ${RELOCATING+ > vectors}
-.text :	{ 					
-	*(.rodata) 				
-	*(.text) 				
-	*(.strings)
-   	${RELOCATING+ _etext = . ; }
+	
+.text :
+	{ 					
+	  *(.rodata) 				
+	  *(.text) 				
+	  *(.strings)
+   	  ${RELOCATING+ _etext = . ; }
 	} ${RELOCATING+ > ram}
-.tors : {
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
+	
+	${CONSTRUCTING+${TORS}}
+	
+.data :
+	{
+	  *(.data)
+	  ${RELOCATING+ _edata = . ; }
 	} ${RELOCATING+ > ram}
-.data : {
-	*(.data)
-	${RELOCATING+ _edata = . ; }
-	} ${RELOCATING+ > ram}
-.bss : {
-	${RELOCATING+ _bss_start = . ;}
-	*(.bss)
-	*(COMMON)
-	${RELOCATING+ _end = . ;  }
+	
+.bss :
+	{
+	  ${RELOCATING+ _bss_start = . ;}
+	  *(.bss)
+	  *(COMMON)
+	  ${RELOCATING+ _end = . ;  }
 	} ${RELOCATING+ >ram}
-.stack : {
-	${RELOCATING+ _stack = . ; }
-	*(.stack)
+	
+.stack :
+	{
+	  ${RELOCATING+ _stack = . ; }
+	  *(.stack)
 	} ${RELOCATING+ > topram}
-.tiny : {
-	*(.tiny)
+	
+.tiny :
+	{
+	  *(.tiny)
 	} ${RELOCATING+ > tiny}
-.eight : {
-	*(.eight)
+	
+.eight :
+	{
+	  *(.eight)
 	} ${RELOCATING+ > eight}
-.stab 0 ${RELOCATING+(NOLOAD)} : {
-	[ .stab ]
+	
+.stab 0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stab ]
 	}
-.stabstr 0 ${RELOCATING+(NOLOAD)} : {
-	[ .stabstr ]
+	
+.stabstr 0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stabstr ]
 	}
 }
 EOF
diff --git a/ld/scripttempl/h8300s.sc b/ld/scripttempl/h8300s.sc
index 45474fc..b8a3ea5 100644
--- a/ld/scripttempl/h8300s.sc
+++ b/ld/scripttempl/h8300s.sc
@@ -1,3 +1,13 @@
+TORS=".tors :
+  {
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;
+  } > ram"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(h8300s)
@@ -24,53 +34,64 @@
 
 SECTIONS 				
 { 					
-.vectors : {
-	/* Use something like this to place a specific function's address
-	   into the vector table.
+.vectors :
+	 {
+	  /* Use something like this to place a specific function's address
+	     into the vector table.
 
-	LONG(ABSOLUTE(_foobar)) */
+	     LONG (ABSOLUTE (_foobar)).  */
 
-	*(.vectors)
+	  *(.vectors)
 	} ${RELOCATING+ > vectors}
-.text :	{ 					
-	*(.rodata) 				
-	*(.text) 				
-	*(.strings)
-   	${RELOCATING+ _etext = . ; }
+	
+.text :
+	{ 					
+	  *(.rodata) 				
+	  *(.text) 				
+	  *(.strings)
+   	  ${RELOCATING+ _etext = . ; }
 	} ${RELOCATING+ > ram}
-.tors : {
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
+	
+	${CONSTRUCTING+${TORS}}
+	
+.data :
+	{
+	  *(.data)
+	  ${RELOCATING+ _edata = . ; }
 	} ${RELOCATING+ > ram}
-.data : {
-	*(.data)
-	${RELOCATING+ _edata = . ; }
-	} ${RELOCATING+ > ram}
-.bss : {
-	${RELOCATING+ _bss_start = . ;}
-	*(.bss)
-	*(COMMON)
-	${RELOCATING+ _end = . ;  }
+	
+.bss :
+	{
+	  ${RELOCATING+ _bss_start = . ;}
+	  *(.bss)
+	  *(COMMON)
+	  ${RELOCATING+ _end = . ;  }
 	} ${RELOCATING+ >ram}
-.stack : {
-	${RELOCATING+ _stack = . ; }
-	*(.stack)
+	
+.stack :
+	{
+	  ${RELOCATING+ _stack = . ; }
+	  *(.stack)
 	} ${RELOCATING+ > topram}
-.tiny : {
-	*(.tiny)
+	
+.tiny :
+	{
+	  *(.tiny)
 	} ${RELOCATING+ > tiny}
-.eight : {
-	*(.eight)
+	
+.eight :
+	{
+	  *(.eight)
 	} ${RELOCATING+ > eight}
-.stab 0 ${RELOCATING+(NOLOAD)} : {
-	[ .stab ]
+	
+.stab 0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stab ]
 	}
-.stabstr 0 ${RELOCATING+(NOLOAD)} : {
-	[ .stabstr ]
+	
+.stabstr 0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stabstr ]
 	}
 }
 EOF
diff --git a/ld/scripttempl/h8500.sc b/ld/scripttempl/h8500.sc
index d6a39ee..f6e88c6 100644
--- a/ld/scripttempl/h8500.sc
+++ b/ld/scripttempl/h8500.sc
@@ -1,3 +1,11 @@
+TORS="
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(${ARCH})
@@ -8,52 +16,47 @@
 { 					
 .text ${RELOCATING+ 0x0000 } :
 	{ 					
-	  *(.text) 				
-
-   	 ${RELOCATING+ _etext = . ; }
+	  *(.text)
+   	  ${RELOCATING+ _etext = . ; }
 	}
 
-
 .data  ${RELOCATING+ . } :
 	{
-	*(.data)
-	${RELOCATING+ _edata = . ; }
+	  *(.data)
+	  ${RELOCATING+ _edata = . ; }
 	} 
 
 .rdata  ${RELOCATING+ . } :
 	{
-	*(.rdata); 
+	  *(.rdata); 
 	  *(.strings)
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
-} 
+	  
+	  ${CONSTRUCTING+${TORS}}
+	} 
 
 .bss  ${RELOCATING+ . } :
 	{
-	${RELOCATING+ __start_bss = . ; }
-	*(.bss)
-	*(COMMON)
-	${RELOCATING+ _end = . ;  }
+	  ${RELOCATING+ __start_bss = . ; }
+	  *(.bss)
+	  *(COMMON)
+	  ${RELOCATING+ _end = . ;  }
 	}
 
 .stack  ${RELOCATING+ 0xfff0} :
 	{
-	${RELOCATING+ _stack = . ; }
-	*(.stack)
+	  ${RELOCATING+ _stack = . ; }
+	  *(.stack)
 	} 
 
-  .stab  0 ${RELOCATING+(NOLOAD)} : 
-  {
-    [ .stab ]
-  }
-  .stabstr  0 ${RELOCATING+(NOLOAD)} :
-  {
-    [ .stabstr ]
-  }
+.stab  0 ${RELOCATING+(NOLOAD)} : 
+	{
+	  [ .stab ]
+	}
+	
+.stabstr  0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stabstr ]
+	}
 }
 EOF
 
diff --git a/ld/scripttempl/h8500b.sc b/ld/scripttempl/h8500b.sc
index ef5fa2c..a64eebc 100644
--- a/ld/scripttempl/h8500b.sc
+++ b/ld/scripttempl/h8500b.sc
@@ -1,3 +1,11 @@
+TORS="
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(${ARCH})
@@ -24,13 +32,9 @@
 	{
 	*(.rdata); 
 	  *(.strings)
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
-} 
+	  
+	${CONSTRUCTING+${TORS}}
+	} 
 
 .bss  ${RELOCATING+ 0x40000} :
 	{
diff --git a/ld/scripttempl/h8500c.sc b/ld/scripttempl/h8500c.sc
index 03880e3..bc69649 100644
--- a/ld/scripttempl/h8500c.sc
+++ b/ld/scripttempl/h8500c.sc
@@ -1,3 +1,11 @@
+TORS="
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(${ARCH})
@@ -20,15 +28,12 @@
 	${RELOCATING+ _edata = . ; }
 	} ${RELOCATING+ > ram}
 
-.rdata 0x30000  : {
+.rdata 0x30000  :
+       {
 	*(.rdata); 
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
-}  ${RELOCATING+ > ram}
+	  
+	${CONSTRUCTING+${TORS}}
+	}  ${RELOCATING+ > ram}
 
 .bss  0x40000 :
 	{
diff --git a/ld/scripttempl/h8500m.sc b/ld/scripttempl/h8500m.sc
index 040a4a7..06ce2af 100644
--- a/ld/scripttempl/h8500m.sc
+++ b/ld/scripttempl/h8500m.sc
@@ -1,3 +1,11 @@
+TORS="
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(${ARCH})
@@ -9,50 +17,46 @@
 .text ${RELOCATING+ 0x10000} :
 	{ 					
 	  *(.text) 				
-   	 ${RELOCATING+ _etext = . ; }
+   	  ${RELOCATING+ _etext = . ; }
 	}
 
-
 .data  ${RELOCATING+ 0x20000} :
 	{
-	*(.data)
-	${RELOCATING+ _edata = . ; }
+	  *(.data)
+	  ${RELOCATING+ _edata = . ; }
 	} 
 
 .rdata  ${RELOCATING+ . } :
 	{
-	*(.rdata); 
+	  *(.rdata); 
 	  *(.strings)
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
+	  
+	${CONSTRUCTING+${TORS}}
 	} 
 
 .bss  ${RELOCATING+ . } :
 	{
-	${RELOCATING+ __start_bss = . ; }
-	*(.bss)
-	*(COMMON)
-	${RELOCATING+ _end = . ;  }
+	  ${RELOCATING+ __start_bss = . ; }
+	  *(.bss)
+	  *(COMMON)
+	  ${RELOCATING+ _end = . ;  }
 	}
 
 .stack  ${RELOCATING+ 0x2fff0} :
 	{
-	${RELOCATING+ _stack = . ; }
-	*(.stack)
+	  ${RELOCATING+ _stack = . ; }
+	  *(.stack)
 	} 
 
-  .stab  0 ${RELOCATING+(NOLOAD)} : 
-  {
-    [ .stab ]
-  }
-  .stabstr  0 ${RELOCATING+(NOLOAD)} :
-  {
-    [ .stabstr ]
-  }
+.stab  0 ${RELOCATING+(NOLOAD)} : 
+        {
+          [ .stab ]
+	}
+	
+.stabstr  0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stabstr ]
+	}
 }
 EOF
 
diff --git a/ld/scripttempl/h8500s.sc b/ld/scripttempl/h8500s.sc
index 11615d8..2567489 100644
--- a/ld/scripttempl/h8500s.sc
+++ b/ld/scripttempl/h8500s.sc
@@ -1,3 +1,11 @@
+TORS="
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(${ARCH})
@@ -8,50 +16,47 @@
 { 					
 .text ${RELOCATING+ 0x10000 } :
 	{ 					
-	*(.text) 				
-   	${RELOCATING+ _etext = . ; }
+	  *(.text) 				
+   	  ${RELOCATING+ _etext = . ; }
 	}
 
 .rdata  ${RELOCATING+ 0x20000 } :
 	{
-	*(.rdata); 
-	*(.strings)
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
+	  *(.rdata); 
+	  *(.strings)
+	  
+	  ${CONSTRUCTING+${TORS}}
 	}
 
 .data  ${RELOCATING+ . } :
 	{
-	*(.data)
-	${RELOCATING+ _edata = . ; }
+	  *(.data)
+	  ${RELOCATING+ _edata = . ; }
 	} 
 
 .bss  ${RELOCATING+ .} :
 	{
-	${RELOCATING+ __start_bss = . ; }
-	*(.bss)
-	*(COMMON)
-	${RELOCATING+ _end = . ;  }
+	  ${RELOCATING+ __start_bss = . ; }
+	  *(.bss)
+	  *(COMMON)
+	  ${RELOCATING+ _end = . ;  }
 	}
 
 .stack  ${RELOCATING+ 0x2fff0} :
 	{
-	${RELOCATING+ _stack = . ; }
-	*(.stack)
+	  ${RELOCATING+ _stack = . ; }
+	  *(.stack)
 	} 
 
-  .stab  0 ${RELOCATING+(NOLOAD)} : 
-  {
-    [ .stab ]
-  }
-  .stabstr  0 ${RELOCATING+(NOLOAD)} :
-  {
-    [ .stabstr ]
-  }
+.stab  0 ${RELOCATING+(NOLOAD)} : 
+	{
+          [ .stab ]
+	}
+	
+.stabstr  0 ${RELOCATING+(NOLOAD)} :
+	{
+	  [ .stabstr ]
+	}
 }
 EOF
 
diff --git a/ld/scripttempl/v850.sc b/ld/scripttempl/v850.sc
index 0a20954..90731de 100644
--- a/ld/scripttempl/v850.sc
+++ b/ld/scripttempl/v850.sc
@@ -4,13 +4,13 @@
 OUTPUT_ARCH(v850)
 ENTRY(_start)
 SEARCH_DIR(.);
-/*/critters/slug/grossman/install/sun4/v850-elf/lib*/
 SECTIONS
 {
   /* This saves a little space in the ELF file, since the zda starts
      at a higher location that the ELF headers take up.  */
 
-  .zdata ${ZDATA_START_ADDR} : {
+  .zdata ${ZDATA_START_ADDR} :
+  {
 	*(.zdata)
 	*(.zbss)
 	*(reszdata)
@@ -23,13 +23,14 @@
      section.  Specifically it prevents the zdata
      section from being marked READONLY.  */
 
-  .rozdata ${ROZDATA_START_ADDR} : {
+  .rozdata ${ROZDATA_START_ADDR} :
+  {
 	*(.rozdata)
 	*(romzdata)
 	*(romzbss)
   }
 
-  /* Read-only sections, merged into text segment: */
+  /* Read-only sections, merged into text segment.  */
   . = ${TEXT_START_ADDR};
   .interp	: { *(.interp) }
   .hash		: { *(.hash) }
@@ -58,9 +59,11 @@
   .init		: { KEEP (*(.init)) } =0
   .plt		: { *(.plt) }
 
-  .text		: {
+  .text		:
+  {
     *(.text)
     ${RELOCATING+*(.text.*)}
+    
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.gnu.linkonce.t*)
@@ -73,45 +76,51 @@
       It contains a small lookup table at the start followed by the
       code pointed to by entries in the lookup table.  */
 
-  .call_table_data ${CALL_TABLE_START_ADDR} : {
+  .call_table_data ${CALL_TABLE_START_ADDR} :
+  {
     ${RELOCATING+PROVIDE(__ctbp = .);}
     *(.call_table_data)
-  } = 0xff   /* fill gaps with 0xff */
-  .call_table_text : {
+  } = 0xff   /* Fill gaps with 0xff.  */
+  
+  .call_table_text :
+  {
     *(.call_table_text)
   }
 
-  .fini		: { KEEP (*(.fini))    } =0
+  .fini		: { KEEP (*(.fini)) } =0
   .rodata	: { *(.rodata) ${RELOCATING+*(.rodata.*)} *(.gnu.linkonce.r*) }
   .rodata1	: { *(.rodata1) }
 
-  .data		: {
+  .data		:
+  {
     *(.data)
     ${RELOCATING+*(.data.*)}
     *(.gnu.linkonce.d*)
     CONSTRUCTORS
   }
   .data1	: { *(.data1) }
-  .ctors	: {
-    ${RELOCATING+___ctors = .;}
+  .ctors	:
+  {
+    ${CONSTRUCTING+___ctors = .;}
     KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
     KEEP (*(SORT(.ctors.*)))
     KEEP (*crtend(.ctors))
-    ${RELOCATING+___ctors_end = .;}
+    ${CONSTRUCTING+___ctors_end = .;}
   }
-
-  .dtors	: {
-    ${RELOCATING+___dtors = .;}
+  .dtors	:
+  {
+    ${CONSTRUCTING+___dtors = .;}
     KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
     KEEP (*(SORT(.dtors.*)))
     KEEP (*crtend.o(.dtors))
-    ${RELOCATING+___dtors_end = .;}
+    ${CONSTRUCTING+___dtors_end = .;}
   }
 
   .got		: { *(.got.plt) *(.got) }
   .dynamic	: { *(.dynamic) }
 
-  .tdata ${TDATA_START_ADDR} : {
+  .tdata ${TDATA_START_ADDR} :
+  {
 	${RELOCATING+PROVIDE (__ep = .);}
 	*(.tbyte)
 	*(.tcommon_byte)
@@ -123,21 +132,26 @@
   /* 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 ${SDATA_START_ADDR} : {
+     
+  .sdata ${SDATA_START_ADDR} :
+  {
 	${RELOCATING+PROVIDE (__gp = . + 0x8000);}
 	*(.sdata)
    }
 
   /* See comment about .rozdata. */
-  .rosdata ${ROSDATA_START_ADDR} : {
+  .rosdata ${ROSDATA_START_ADDR} :
+  {
 	*(.rosdata)
   }
 
   /* We place the .sbss data section AFTER the .rosdata section, so that
      it can directly preceed the .bss section.  This allows runtime startup
      code to initialise all the zero-data sections by simply taking the
-     value of '_edata' and zeroing until it reaches '_end'  */
-  .sbss : {
+     value of '_edata' and zeroing until it reaches '_end'.  */
+     
+  .sbss :
+  {
 	${RELOCATING+__sbss_start = .;}
 	*(.sbss)
 	*(.scommon)
@@ -184,7 +198,7 @@
   .debug_pubnames 0	: { *(.debug_pubnames) }
 
   /* DWARF 2 */
-  .debug_info     0	: { *(.debug_info) }
+  .debug_info     0	: { *(.debug_info) *(.gnu.linkonce.wi.*) }
   .debug_abbrev   0	: { *(.debug_abbrev) }
   .debug_line     0	: { *(.debug_line) }
   .debug_frame    0	: { *(.debug_frame) }
@@ -192,17 +206,17 @@
   .debug_loc      0	: { *(.debug_loc) }
   .debug_macinfo  0	: { *(.debug_macinfo) }
 
-  /* SGI/MIPS DWARF 2 extensions */
+  /* 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) }
 
-  /* User stack */
-  .stack 0x200000	: {
+  /* User stack.  */
+  .stack 0x200000	:
+  {
 	${RELOCATING+__stack = .;}
 	*(.stack)
   }
-  /* These must appear regardless of  .  */
 }
 EOF
diff --git a/ld/scripttempl/w65.sc b/ld/scripttempl/w65.sc
index f904495..f92d999 100644
--- a/ld/scripttempl/w65.sc
+++ b/ld/scripttempl/w65.sc
@@ -1,10 +1,21 @@
+TORS=".tors :
+  {
+    ___ctors = . ;
+    *(.ctors)
+    ___ctors_end = . ;
+    ___dtors = . ;
+    *(.dtors)
+    ___dtors_end = . ;
+  } > ram"
+
 cat <<EOF
 OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(${ARCH})
 
-MEMORY {
+MEMORY
+{
 	ram   : o = 0x1000, l = 512k
-	}
+}
 
 SECTIONS 				
 { 					
@@ -12,44 +23,40 @@
 	{ 					
 	  *(.text) 				
 	  *(.strings)
-   	 ${RELOCATING+ _etext = . ; }
+   	  ${RELOCATING+ _etext = . ; }
 	} ${RELOCATING+ > ram}
 
-
-.tors   : {
-	___ctors = . ;
-	*(.ctors)
-	___ctors_end = . ;
-	___dtors = . ;
-	*(.dtors)
-	___dtors_end = . ;
-}  ${RELOCATING+ > ram}
+	${CONSTRUCTING+${TORS}}
 
 .data  :
 	{
-	*(.data)
-	${RELOCATING+ _edata = . ; }
+	  *(.data)
+	  ${RELOCATING+ _edata = . ; }
 	} ${RELOCATING+ > ram}
+	
 .bss  :
 	{
-	${RELOCATING+ _bss_start = . ; }
-	*(.bss)
-	*(COMMON)
-	${RELOCATING+ _end = . ;  }
+	  ${RELOCATING+ _bss_start = . ; }
+	  *(.bss)
+	  *(COMMON)
+	  ${RELOCATING+ _end = . ;  }
 	} ${RELOCATING+ >ram}
-.stack ${RELOCATING+ 0x30000 }  : 
+	
+.stack ${RELOCATING+ 0x30000 } :
 	{
-	${RELOCATING+ _stack = . ; }
-	*(.stack)
+	  ${RELOCATING+ _stack = . ; }
+	  *(.stack)
 	} ${RELOCATING+ > ram}
-  .stab  . (NOLOAD) : 
-  {
-    [ .stab ]
-  }
-  .stabstr  . (NOLOAD) :
-  {
-    [ .stabstr ]
-  }
+	
+.stab  . (NOLOAD) :
+	{
+	  [ .stab ]
+	}
+	
+.stabstr  . (NOLOAD) :
+	{
+	  [ .stabstr ]
+	}
 }
 EOF
 
diff --git a/ld/scripttempl/z8000.sc b/ld/scripttempl/z8000.sc
index 2b87930..646c880 100644
--- a/ld/scripttempl/z8000.sc
+++ b/ld/scripttempl/z8000.sc
@@ -5,7 +5,8 @@
 
 SECTIONS 				
 { 					
-.text ${BIG+ ${RELOCATING+ 0x0000000}} : { 					
+.text ${BIG+ ${RELOCATING+ 0x0000000}} :
+	{ 
 	  *(.text) 				
 	  *(.strings)
 	  *(.rdata)
@@ -13,38 +14,40 @@
 
 .ctors ${BIG+ ${RELOCATING+ 0x2000000}}  : 
 	{
-	  ${RELOCATING+ ___ctors = . ;  }
+	  ${CONSTRUCTING+ ___ctors = . ;  }
 	  *(.ctors);
-	  ${RELOCATING+ ___ctors_end = . ; }
+	  ${CONSTRUCTING+ ___ctors_end = . ; }
 	  ___dtors = . ;
 	  *(.dtors);
-	  ${RELOCATING+ ___dtors_end = . ; }
+	  ${CONSTRUCTING+ ___dtors_end = . ; }
 	} 
 
-.data ${BIG+ ${RELOCATING+ 0x3000000}} : {
-	*(.data)
+.data ${BIG+ ${RELOCATING+ 0x3000000}} :
+	{
+	   *(.data)
 	}
 
 .bss ${BIG+ ${RELOCATING+ 0x4000000}} : 
-  {
-    ${RELOCATING+ __start_bss = . ; }
-    *(.bss);
-    *(COMMON);
-    ${RELOCATING+ __end_bss = . ; }
-  }
+	{
+	  ${RELOCATING+ __start_bss = . ; }
+	  *(.bss);
+	  *(COMMON);
+	  ${RELOCATING+ __end_bss = . ; }
+	}
 
-.heap ${BIG+ ${RELOCATING+ 0x5000000}} : {
-	${RELOCATING+ __start_heap = . ; }
-	${RELOCATING+ . = . + 20k  ; }
-	${RELOCATING+ __end_heap = . ; }
+.heap ${BIG+ ${RELOCATING+ 0x5000000}} :
+	{
+	  ${RELOCATING+ __start_heap = . ; }
+	  ${RELOCATING+ . = . + 20k  ; }
+	  ${RELOCATING+ __end_heap = . ; }
 	} 
 
 .stack ${RELOCATING+ 0xf000 }  : 
 	{
-	${RELOCATING+ _stack = . ; }
-	*(.stack)
-	${RELOCATING+ __stack_top = . ; }
-	} 
+	  ${RELOCATING+ _stack = . ; }
+	  *(.stack)
+	  ${RELOCATING+ __stack_top = . ; }
+	}
 
 }
 EOF