[rtems commit] m68k/mvme*: switch to shared linkcmds.base

Joel Sherrill joel at rtems.org
Mon Jan 25 20:14:19 UTC 2016


Module:    rtems
Branch:    master
Commit:    449905a8acaa5eac214c51ef2547b0321e86d6b2
Changeset: http://git.rtems.org/rtems/commit/?id=449905a8acaa5eac214c51ef2547b0321e86d6b2

Author:    Joel Sherrill <joel at rtems.org>
Date:      Sun Jan 24 11:48:27 2016 -0600

m68k/mvme*: switch to shared linkcmds.base

updates #2542.

---

 c/src/lib/libbsp/m68k/mvme147/startup/linkcmds  | 195 ++--------------------
 c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds | 197 ++--------------------
 c/src/lib/libbsp/m68k/mvme162/startup/linkcmds  | 206 ++----------------------
 c/src/lib/libbsp/m68k/mvme167/startup/linkcmds  | 195 +---------------------
 c/src/lib/libbsp/m68k/shared/start/start.S      |  11 +-
 5 files changed, 54 insertions(+), 750 deletions(-)

diff --git a/c/src/lib/libbsp/m68k/mvme147/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme147/startup/linkcmds
index fcbd073..03dd062 100644
--- a/c/src/lib/libbsp/m68k/mvme147/startup/linkcmds
+++ b/c/src/lib/libbsp/m68k/mvme147/startup/linkcmds
@@ -1,8 +1,10 @@
 /*
  *  This file contains directives for the GNU linker which are specific
  *  to the Motorola MVME147 boards.
- *
- *  COPYRIGHT (c) 1989-2007.
+ */
+
+/*
+ *  COPYRIGHT (c) 1989-2007,2016.
  *  On-Line Applications Research Corporation (OAR).
  *
  *  The license and distribution terms for this file may be
@@ -14,192 +16,17 @@
  *  May 1996
  */
 
-/*
- * Declare some sizes.
- */
-RamBase = DEFINED(RamBase) ? RamBase : 0x0;
 RamSize = DEFINED(RamSize) ? RamSize : 4M;
-_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
 
 MEMORY
 {
-	ram : org = 0x0, l = 0x400000
+    bootrom_reserved : ORIGIN = 0x00000000, LENGTH = 0x5000
+    ram	             : ORIGIN = 0x00005000, LENGTH = RamSize - 0x5000
 }
 
-SECTIONS
-{
-	ram : {
-		. = 0x5000;
-	} >ram
-
-        /*
-         * Text, data and bss segments
-         */
-        .text : {
-                *(.text*)
-
-		/*
-		 * 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(.fini)
-
-		/*
-		 * Special FreeBSD sysctl sections.
-		 */
-		. = ALIGN (16);
-		__start_set_sysctl_set = .;
-		*(set_sysctl_*);
-		__stop_set_sysctl_set = ABSOLUTE(.);
-		*(set_domain_*);
-		*(set_pseudo_*);
-
-		/*
-		 * C++ constructors/destructors
-     		 *
-     		 * 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.
-		 */
-		. = ALIGN (16);
-		*crtbegin.o(.ctors)
-		*(.ctors)
-		*crtend.o(.ctors)
-		*crtbegin.o(.dtors)
-		*(.dtors)
-		*crtend.o(.dtors)
+REGION_ALIAS ("REGION_TEXT", ram);
+REGION_ALIAS ("REGION_TEXT_LOAD", ram);
+REGION_ALIAS ("REGION_DATA", ram);
+REGION_ALIAS ("REGION_DATA_LOAD", ram);
 
-		/*
-		 * Exception frame info
-		 */
-		. = ALIGN (16);
-		*(.eh_frame)
-
-		/*
-		 * Read-only data
-		 */
-		. = ALIGN (16);
-		_rodata_start = .;
-		*(.rodata*)
-		KEEP (*(SORT(.rtemsroset.*)))
-		*(.gnu.linkonce.r*)
-
-                 . = ALIGN (16);
-                PROVIDE (_etext = .);
-        } >ram
-
-	.tdata : {
-		_TLS_Data_begin = .;
-		*(.tdata .tdata.* .gnu.linkonce.td.*)
-		_TLS_Data_end = .;
-	} >ram
-
-	.tbss : {
-		_TLS_BSS_begin = .;
-		*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
-		_TLS_BSS_end = .;
-	} >ram
-
-	_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
-	_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
-	_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
-	_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
-	_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
-	_TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
-
-        .data : {
-                PROVIDE (_copy_start = .);
-                *(.data*)
-                KEEP (*(SORT(.rtemsrwset.*)))
-		*(.gnu.linkonce.d*)
-		*(.gcc_except_table*)
-		*(.jcr)
-                . = ALIGN (16);
-                PROVIDE (_edata = .);
-                PROVIDE (_copy_end = .);
-        } >ram
-        .bss : {
-                _clear_start = .;
-                *(.dynbss)
-                *(.bss* .gnu.linkonce.b.*)
-                *(COMMON)
-                . = ALIGN (16);
-                PROVIDE (end = .);
-
-                . += _StackSize;
-                . = ALIGN (16);
-                _stack_init = .;
-                _clear_end = .;
-
-                WorkAreaBase = .;
-        } >ram
-
-  /* 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  .  */
-}
+INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds
index fbc8527..7c1e190 100644
--- a/c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds
+++ b/c/src/lib/libbsp/m68k/mvme147s/startup/linkcmds
@@ -1,8 +1,10 @@
 /*
  *  This file contains directives for the GNU linker which are specific
- *  to the Motorola MVME147 boards.
- *
- *  COPYRIGHT (c) 1989-2007.
+ *  to the Motorola MVME147s boards.
+ */
+
+/*
+ *  COPYRIGHT (c) 1989-2007,2016.
  *  On-Line Applications Research Corporation (OAR).
  *
  *  The license and distribution terms for this file may be
@@ -14,192 +16,17 @@
  *  May 1996
  */
 
-/*
- * Declare some sizes.
- */
-RamBase = DEFINED(RamBase) ? RamBase : 0x0;
 RamSize = DEFINED(RamSize) ? RamSize : 4M;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
 
 MEMORY
 {
-	ram : org = 0x0, l = 0x400000
+    bootrom_reserved : ORIGIN = 0x00000000, LENGTH = 0x7000
+    ram              : ORIGIN = 0x00007000, LENGTH = RamSize - 0x7000
 }
 
-SECTIONS
-{
-	ram : {
-		. = 0x7000;
-	} >ram
-
-        /*
-         * Text, data and bss segments
-         */
-        .text : {
-                *(.text*)
-
-		/*
-		 * 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(.fini)
-
-		/*
-		 * Special FreeBSD sysctl sections.
-		 */
-		. = ALIGN (16);
-		__start_set_sysctl_set = .;
-		*(set_sysctl_*);
-		__stop_set_sysctl_set = ABSOLUTE(.);
-		*(set_domain_*);
-		*(set_pseudo_*);
-
-		/*
-		 * C++ constructors/destructors
-     		 *
-     		 * 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.
-		 */
-		. = ALIGN (16);
-		*crtbegin.o(.ctors)
-		*(.ctors)
-		*crtend.o(.ctors)
-		*crtbegin.o(.dtors)
-		*(.dtors)
-		*crtend.o(.dtors)
+REGION_ALIAS ("REGION_TEXT", ram);
+REGION_ALIAS ("REGION_TEXT_LOAD", ram);
+REGION_ALIAS ("REGION_DATA", ram);
+REGION_ALIAS ("REGION_DATA_LOAD", ram);
 
-		/*
-		 * Exception frame info
-		 */
-		. = ALIGN (16);
-		*(.eh_frame)
-
-		/*
-		 * Read-only data
-		 */
-		. = ALIGN (16);
-		_rodata_start = .;
-		*(.rodata*)
-		KEEP (*(SORT(.rtemsroset.*)))
-		*(.gnu.linkonce.r*)
-
-                 . = ALIGN (16);
-                PROVIDE (_etext = .);
-        } >ram
-
-	.tdata : {
-		_TLS_Data_begin = .;
-		*(.tdata .tdata.* .gnu.linkonce.td.*)
-		_TLS_Data_end = .;
-	} >ram
-
-	.tbss : {
-		_TLS_BSS_begin = .;
-		*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
-		_TLS_BSS_end = .;
-	} >ram
-
-	_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
-	_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
-	_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
-	_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
-	_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
-	_TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
-
-        .data : {
-                PROVIDE (_copy_start = .);
-                *(.data*)
-                KEEP (*(SORT(.rtemsrwset.*)))
-		*(.gnu.linkonce.d*)
-		*(.gcc_except_table*)
-		*(.jcr)
-                . = ALIGN (16);
-                PROVIDE (_edata = .);
-                PROVIDE (_copy_end = .);
-        } >ram
-        .bss : {
-                _clear_start = .;
-                *(.dynbss)
-                *(.bss* .gnu.linkonce.b.*)
-                *(COMMON)
-                . = ALIGN (16);
-                PROVIDE (end = .);
-
-                . += _StackSize;
-                . = ALIGN (16);
-                _stack_init = .;
-                _clear_end = .;
-
-                WorkAreaBase = .;
-        } >ram
-
-  /* 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  .  */
-}
+INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/m68k/mvme162/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme162/startup/linkcmds
index 1368d05..fd77dcf 100644
--- a/c/src/lib/libbsp/m68k/mvme162/startup/linkcmds
+++ b/c/src/lib/libbsp/m68k/mvme162/startup/linkcmds
@@ -1,208 +1,32 @@
 /*
  *  This file contains directives for the GNU linker which are specific
- *  to the Motorola MVME162 board.
- *
- *  COPYRIGHT (c) 1989-2007.
+ *  to the Motorola MVME162 boards.
+ */
+
+/*
+ *  COPYRIGHT (c) 1989-2007,2016.
  *  On-Line Applications Research Corporation (OAR).
  *
  *  The license and distribution terms for this file may be
  *  found in the file LICENSE in this distribution or at
  *  http://www.rtems.org/license/LICENSE.
  *
- *  Modifications of respective RTEMS file: COPYRIGHT (c) 1994.
- *  EISCAT Scientific Association. M.Savitski
- *
- *  This material is a part of the MVME162 Board Support Package
- *  for the RTEMS executive. Its licensing policies are those of the
- *  RTEMS above.
+ *  MVME147 port for TNI - Telecom Bretagne
+ *  by Dominique LE CAMPION (Dominique.LECAMPION at enst-bretagne.fr)
+ *  May 1996
  */
 
-/*
- * Declare some sizes.
- */
-RamBase = DEFINED(RamBase) ? RamBase : 0x20000;
 RamSize = DEFINED(RamSize) ? RamSize : 1M;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
 
 MEMORY
 {
-        ram : org = 0x000000, l = 1M
+    bootrom_reserved : ORIGIN = 0x00000000, LENGTH = 0x20000
+    ram              : ORIGIN = 0x00020000, LENGTH = RamSize - 0x20000
 }
 
-SECTIONS
-{
-	ram : {
-		. = .;
-	} >ram
-
-        /*
-         * Text, data and bss segments
-         */
-        .text 0x20000 : {
-                *(.text*)
-
-		/*
-		 * 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(.fini)
-
-		/*
-		 * Special FreeBSD sysctl sections.
-		 */
-		. = ALIGN (16);
-		__start_set_sysctl_set = .;
-		*(set_sysctl_*);
-		__stop_set_sysctl_set = ABSOLUTE(.);
-		*(set_domain_*);
-		*(set_pseudo_*);
+REGION_ALIAS ("REGION_TEXT", ram);
+REGION_ALIAS ("REGION_TEXT_LOAD", ram);
+REGION_ALIAS ("REGION_DATA", ram);
+REGION_ALIAS ("REGION_DATA_LOAD", ram);
 
-		/*
-		 * C++ constructors/destructors
-     		 *
-     		 * 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.
-		 */
-		. = ALIGN (16);
-		*crtbegin.o(.ctors)
-		*(.ctors)
-		*crtend.o(.ctors)
-		*crtbegin.o(.dtors)
-		*(.dtors)
-		*crtend.o(.dtors)
-
-		/*
-		 * Exception frame info
-		 */
-		. = ALIGN (16);
-		*(.eh_frame)
-
-		/*
-		 * Read-only data
-		 */
-		. = ALIGN (16);
-		_rodata_start = .;
-		*(.rodata*)
-		KEEP (*(SORT(.rtemsroset.*)))
-		*(.gnu.linkonce.r*)
-
-                 . = ALIGN (16);
-                PROVIDE (_etext = .);
-        } >ram
-
-	.tdata : {
-		_TLS_Data_begin = .;
-		*(.tdata .tdata.* .gnu.linkonce.td.*)
-		_TLS_Data_end = .;
-	} >ram
-
-	.tbss : {
-		_TLS_BSS_begin = .;
-		*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
-		_TLS_BSS_end = .;
-	} >ram
-
-	_TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
-	_TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
-	_TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
-	_TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
-	_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
-	_TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
-
-        .data : {
-                PROVIDE (_copy_start = .);
-                *(.data*)
-                KEEP (*(SORT(.rtemsrwset.*)))
-		*(.gnu.linkonce.d*)
-		*(.gcc_except_table*)
-		*(.jcr)
-                . = ALIGN (16);
-                PROVIDE (_edata = .);
-                PROVIDE (_copy_end = .);
-        } >ram
-        .bss : {
-                _clear_start = .;
-                *(.dynbss)
-                *(.bss* .gnu.linkonce.b.*)
-                *(COMMON)
-                . = ALIGN (16);
-                PROVIDE (end = .);
-
-                . += _StackSize;
-                . = ALIGN (16);
-                _stack_init = .;
-                _clear_end = .;
-
-                WorkAreaBase = .;
-        } >ram
-
-  /* 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  .  */
-}
+INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/m68k/mvme167/startup/linkcmds b/c/src/lib/libbsp/m68k/mvme167/startup/linkcmds
index b10b29d..dc50449 100644
--- a/c/src/lib/libbsp/m68k/mvme167/startup/linkcmds
+++ b/c/src/lib/libbsp/m68k/mvme167/startup/linkcmds
@@ -1,7 +1,6 @@
 /*
  *  This file contains directives for the GNU linker which are specific
- *  to the Motorola MVME167 board. This linker script produces ELF
- *  executables.
+ *  to the Motorola MVME167 board.
  *
  *  Copyright (c) 1999, National Research Council of Canada.
  *  Some of this material was copied from binutils-2.9.4 linker scripts,
@@ -14,18 +13,8 @@
  *  http://www.rtems.org/license/LICENSE.
  */
 
-/* These are not really needed here */
-OUTPUT_FORMAT("elf32-m68k")
-OUTPUT_ARCH(m68k)
-ENTRY(_start)
-
-/*
- * Declare some sizes. Heap is sized at whatever ram space is left.
- */
 RamBase = DEFINED(RamBase) ? RamBase : 0x00800000;
 RamSize = DEFINED(RamSize) ? RamSize : 4M;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0;
-_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
 
 MEMORY
 {
@@ -33,184 +22,14 @@ MEMORY
       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
+  ram  : org = RamBase, l = RamSize
   rom  : org = 0xFF800000, l = 4M
   sram : org = 0xFFE00000, l = 128K
 }
 
-SECTIONS
-{
- /*
-  * Text, data and bss segments
-  */
-  .text : {
-    *(.text*)
-
-    /*
-     * 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(.fini)
-
-    /*
-     * Special FreeBSD sysctl sections.
-     */
-    . = ALIGN (16);
-    __start_set_sysctl_set = .;
-    *(set_sysctl_*);
-    __stop_set_sysctl_set = ABSOLUTE(.);
-    *(set_domain_*);
-    *(set_pseudo_*);
-
-    /*
-     * C++ constructors/destructors
-     *
-     * 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.
-     */
-    . = ALIGN (16);
-    *crtbegin.o(.ctors)
-    *(.ctors)
-    *crtend.o(.ctors)
-    
-    *crtbegin.o(.dtors)
-    *(.dtors)
-    *crtend.o(.dtors)
-
-    /*
-     * Exception frame info
-     */
-    . = ALIGN (16);
-    *(.eh_frame)
+REGION_ALIAS ("REGION_TEXT", ram);
+REGION_ALIAS ("REGION_TEXT_LOAD", ram);
+REGION_ALIAS ("REGION_DATA", ram);
+REGION_ALIAS ("REGION_DATA_LOAD", ram);
 
-    /*
-     * Read-only data
-     */
-    . = ALIGN (16);
-    _rodata_start = .;
-    *(.rodata*)
-    KEEP (*(SORT(.rtemsroset.*)))
-    *(.gnu.linkonce.r*)
-    PROVIDE(_erodata = . );
-
-    . = ALIGN (16);
-    PROVIDE (_etext = .);
-  } >ram
-
-  .tdata : {
-    _TLS_Data_begin = .;
-    *(.tdata .tdata.* .gnu.linkonce.td.*)
-    _TLS_Data_end = .;
-  } >ram
-
-  .tbss : {
-    _TLS_BSS_begin = .;
-    *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
-    _TLS_BSS_end = .;
-  } >ram
-
-  _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
-  _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
-  _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
-  _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
-  _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
-  _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
-  
-  .data : {
-    PROVIDE (_copy_start = .);
-    *(.data*)
-    KEEP (*(SORT(.rtemsrwset.*)))
-    *(.gnu.linkonce.d*)
-    *(.gcc_except_table*)
-    *(.jcr)
-    . = ALIGN (16);
-    PROVIDE (_edata = .);
-    PROVIDE (_copy_end = .);
-  } >ram
-  
- .bss : {
-    _clear_start = .;
-    *(.dynbss)
-    *(.bss* .gnu.linkonce.b.*)
-    *(COMMON)
-    . = ALIGN (16);
-    PROVIDE (end = .);
-
-    . += _StackSize;
-    . = ALIGN (16);
-    _stack_init = .;
-    _clear_end = .;
-
-    WorkAreaBase = .;
-  } >ram
-
-  /* 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  .  */
-}
+INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/m68k/shared/start/start.S b/c/src/lib/libbsp/m68k/shared/start/start.S
index 41b4c70..b3a3c8b 100644
--- a/c/src/lib/libbsp/m68k/shared/start/start.S
+++ b/c/src/lib/libbsp/m68k/shared/start/start.S
@@ -66,8 +66,8 @@ SYM (start_around):
         | zero out uninitialized data area
         |
 zerobss:
-        moveal  # SYM (_clear_end),a0     | find end of .bss
-        moveal  # SYM (_clear_start),a1   | find beginning of .bss
+        moveal  # SYM (bsp_section_bss_end),a0     | find end of .bss
+        moveal  # SYM (bsp_section_bss_begin),a1   | find beginning of .bss
         movel   #0,d0
 
 loop:   movel   #0,a1 at +                 | to zero out uninitialized
@@ -135,6 +135,13 @@ SYM (initial_usp):
 SYM (initial_sr):
         .space  2
 
+	.align 16
+         PUBLIC (starting_stack)
+SYM (starting_stack):
+        .space  0x1000
+         PUBLIC (_stack_init)
+SYM (_stack_init):
+
 END_DATA
 #endif
 END



More information about the vc mailing list