URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libbsp/] [m68k/] [mvme167/] [startup/] [elflinkcmds] - Rev 173
Compare with Previous | Blame | View Log
/*
* 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: elflinkcmds,v 1.2 2001-09-27 12:00:20 chris Exp $
*/
/* These are not really needed here */
OUTPUT_FORMAT("elf32-m68k")
OUTPUT_ARCH(m68k)
ENTRY(_start)
/*
* Declare some sizes.
*/
_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 . */
}