Index: c/src/lib/libbsp/m68k/mvme167/startup/elflinkcmds
===================================================================
--- c/src/lib/libbsp/m68k/mvme167/startup/elflinkcmds	(revision 6688a0d85279be1fce01a0daa3030c378b8a70e5)
+++ c/src/lib/libbsp/m68k/mvme167/startup/elflinkcmds	(revision 6688a0d85279be1fce01a0daa3030c378b8a70e5)
@@ -0,0 +1,223 @@
+/*
+ *  This file contains directives for the GNU linker which are specific
+ *  to the Motorola MVME167 board. This linker script produces ELF
+ *  executables.
+ *
+ *  Copyright (c) 1999, National Research Council of Canada.
+ *  Some of this material was copied from binutils-2.9.4 linker scripts,
+ *  and is therefore likely to be copyrighted by the Free Software
+ *  Foundation, even though explicit copyright notices did not appear in
+ *  those files.
+ *
+ *  The license and distribution terms for this file may be
+ *  found in the file LICENSE in this distribution or at
+ *  http://www.OARcorp.com/rtems/license.html.
+ *
+ *  $Id$
+ */
+
+/* These are not really needed here */
+OUTPUT_FORMAT("elf32-m68k")
+OUTPUT_ARCH(m68k)
+ENTRY(_start)
+
+/* Base address and size of RAM on the MVME167 */
+
+RAM_SIZE = 4M;
+RAM_START = 0x00800000;
+RAM_END = RAM_START + RAM_SIZE;
+
+/*
+ * Declare some sizes.
+ * XXX: The assignment of ". += XyzSize;" fails in older gld's if the
+ *      number used there is not constant.  If this happens to you, edit
+ *      the lines marked XXX below to use a constant value.
+ */
+HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000;
+StackSize = DEFINED(StackSize) ? StackSize : 0x1000;
+
+MEMORY
+{
+  /*  The location of RAM is the address space is configurable.
+      This is where we put one board. The base address should be
+      passed as a parameter when building multiprocessor images
+      where each board resides at a different address. */
+  ram  : org = 0x00800000, l = 4M
+  rom  : org = 0xFF800000, l = 4M
+  sram : org = 0xFFE00000, l = 128K
+}
+
+SECTIONS
+{
+  /* 
+   * We want the entry point to be the first thing in memory.
+   * Merge all read-only data into the .text section.
+   */
+  .text 0x00800000 :
+  {
+    text_start = . ;
+    
+    *(.text)
+    *(.text.*)
+    *(.stub)
+
+    /* C++ constructors/destructors */
+    *(.gnu.linkonce.t*)
+   
+    /* Initialization and finalization code.
+     *
+     * Various files can provide initialization and finalization functions.
+     * crtbegin.o and crtend.o are two instances. The body of these functions
+     * are in .init and .fini sections. We accumulate the bodies here, and
+     * prepend function prologues from crti.o and function epilogues from
+     * crtn.o. crti.o must be linked first; crtn.o must be linked last.
+     * Because these are wildcards, it doesn't matter if the user does not
+     * actually link against crti.o and crtn.o; the linker won't look for a
+     * file to match a wildcard.  The wildcard also means that it doesn't
+     * matter which directory crti.o and crtn.o are in. 
+     */
+    PROVIDE (_init = .);
+    *crti.o(.init)
+    *(.init)
+    *crtn.o(.init)
+    
+    PROVIDE (_fini = .);
+    *crti.o(.fini)
+    *(.fini)
+    *crtn.o(.init)
+    
+    . = ALIGN (16);
+    
+    /* C++ constructors and destructors for static objects.
+     *
+     * gcc uses crtbegin.o to find the start of the constructors and
+     * destructors so we make sure it is first.  Because this is a wildcard,
+     * it doesn't matter if the user does not actually link against
+     * crtbegin.o; the linker won't look for a file to match a wildcard.  The
+     * wildcard also means that it doesn't matter which directory crtbegin.o
+     * is in. The constructor and destructor list are terminated in crtend.o.
+     * The same comments apply to it.
+     */
+    PROVIDE (__CTOR_LIST__ = .);
+    *crtbegin.o(.ctors)
+    *(.ctors)
+    *crtend.o(.ctors)
+    PROVIDE (__CTOR_END__ = .);
+
+    PROVIDE (__DTOR_LIST__ = .);
+    *crtbegin.o(.dtors)
+    *(.dtors)
+    *crtend.o(.dtors)
+    PROVIDE (__DTOR_END__ = .);
+    
+    . = ALIGN (16);
+    
+    /* Exception frame info */
+    *(.eh_frame)
+    
+    . = ALIGN (16);
+
+    /* Do we have any of these with egcs-1.x and higher? */
+    *(.gcc_exc)
+    
+    . = ALIGN (16);
+		
+    _rodata_start = . ;
+    *(.rodata)
+    *(.rodata.*)
+    *(.gnu.linkonce.r*)
+    *(.rodata1)    
+    _erodata = .;
+
+    _etext = .;
+    PROVIDE (etext = .);
+       
+  } >ram =0x4e75
+ 
+  . = ALIGN (16);
+  
+  .data :
+  {
+    data_start = .;
+    
+    *(.data)
+    *(.data.*)
+    *(.data1)
+    *(.sdata)
+    *(.gnu.linkonce.d*)
+    *(.gcc_except_table)
+    
+    . = ALIGN (16); 
+    _edata = .;
+    PROVIDE (edata = .); 
+  } >ram
+
+  .bss :
+  {
+    bss_start = .;
+    *(.dynbss)
+    *(.bss)
+    *(COMMON)
+    *(.sbss)
+    *(.scommon)  
+    
+    . = ALIGN (16);
+    _end = .;
+    PROVIDE (end = .); 
+  } >ram
+
+  _HeapStart	= .;
+  . += HeapSize;	/* XXX -- Old gld can't	handle this	*/
+  _HeapEnd = .;
+  _StackStart = .;
+  . += StackSize;	/* XXX -- Old gld can't	handle this	*/
+  /* . +=	0x10000; */	/* HeapSize	for	old	gld	*/
+  /* . +=	0x1000;	 */	/* StackSize for old gld */
+  . =	ALIGN (16);
+  _StackEnd = .;
+  stack_init = .;
+  clear_end =	.;
+
+  _WorkspaceBase	= .;
+
+  /* Stabs debugging sections.  */
+  .stab 0 : { *(.stab) }
+  .stabstr 0 : { *(.stabstr) }
+  .stab.excl 0 : { *(.stab.excl) }
+  .stab.exclstr 0 : { *(.stab.exclstr) }
+  .stab.index 0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment 0 : { *(.comment) }
+  
+  /* 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  .  */
+}
+
