aboutsummaryrefslogblamecommitdiffstats
path: root/erts/emulator/sys/ose/gcc_lm_x86_4.4.3.lcf
blob: d64fd9160416b30a9b2b9de483043b5289a04e92 (plain) (tree)




















































































































































































































































































                                                                             
/* COPYRIGHT-ENEA-EXAMPLE-R2 *
**************************************************************************
* Copyright (C) 2010 by Enea Software AB.
* All rights reserved.
*
* This Example is furnished under a Software License Agreement and
* may be used only in accordance with the terms of such agreement.
* No title to and ownership of the Example is hereby transferred.
*
* The information in this Example is subject to change
* without notice and should not be construed as a commitment
* by Enea Software AB.
*
* DISCLAIMER
* This Example is delivered "AS IS", consequently
* Enea Software AB makes no representations or warranties,
* expressed or implied, for the Example.
**************************************************************************
* COPYRIGHT-END */

OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH("i386")

ENTRY("crt0_lm")

MEMORY
{
	rom   	 : ORIGIN = 0x01000000, LENGTH = 0x01000000
	ram   	 : ORIGIN = 0x02000000, LENGTH = 0x01000000
}

PHDRS
{
	ph_conf PT_LOAD ;
	ph_rom PT_LOAD ;
	ph_ram PT_LOAD ;
}

SECTIONS
{
/*---------------------------------------------------------------------------
 *		Read-only area
 *-------------------------------------------------------------------------*/

	/* Code section. */
	.text :
	{
		*(.text_first)
		*(.text)
		*(.text.*)
		*(.stub)
		*(oscode)
		*(.init*)
		*(.fini*)
		*(.gnu.warning)
		*(.gnu.linkonce.t.*)
		*(.glue_7t)
		*(.glue_7)
	} > rom :ph_rom = 0


	.ose_sfk_biosentry :
	{
		*(.ose_sfk_biosentry)
        } > rom :ph_rom

	/* C++ constructor section. */
	.ctors :
	{
		__CTOR_LIST__ = .;
		*(.ctors)
		*(SORT(.ctors.*))
		__CTOR_END__ = .;
	} > rom :ph_rom

	/* C++ destructor section. */
	.dtors :
	{
		__DTOR_LIST__ = .;
		*(.dtors)
		*(SORT(.dtors.*))
		__DTOR_END__ = .;
	} > rom :ph_rom

	/* OSE symbols section. */
	OSESYMS :
	{
		*(.osesyms)
	} > rom :ph_rom

	.plt :
	{
             *(.plt)
             *(.iplt)
	} > rom :ph_rom


	/* Read-only data section. */
	.rodata :
	{
		*(.rodata)
		*(.rodata.*)
		*(.gnu.linkonce.r.*)
	} > rom :ph_rom

	/* C++ exception handling section. */
	.eh_frame :
	{
		__EH_FRAME_BEGIN__ = .;
		*(.eh_frame)
		LONG(0)
		__EH_FRAME_END__ = .;
	} > rom :ph_rom

	/* C++ exception handling section. */
	.gcc_except_table :
	{
		*(.gcc_except_table)
	} > rom :ph_rom

	/* PowerPC EABI initialized read-only data section. */
	.sdata2 :
	{
		*(.sdata2)
		*(.sdata2.*)
		*(.gnu.linkonce.s2.*)
	} > rom :ph_rom

	/* PowerPC EABI uninitialized read-only data section. */
	.sbss2 :
	{
		*(.sbss2)
		*(.sbss2.*)
		*(.gnu.linkonce.sb2.*)
	} > rom :ph_rom

	/* Dynamic relocations */
	.rel.dyn :
	{
		*(.rel.init)
		*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
		*(.rel.fini)
		*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
		*(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
		*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
		*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
		*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
		*(.rel.ctors)
		*(.rel.dtors)
		*(.rel.got)
		*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
		*(.rel.ifunc)
	} > rom :ph_rom

/*---------------------------------------------------------------------------
 *		Load module configuration area
 *-------------------------------------------------------------------------*/

	/* Load module configuration section. */
	LMCONF :
	{
		obj/?*?/ose_confd.o(.rodata)
		*(LMCONF)
	} > rom :ph_conf


/*---------------------------------------------------------------------------
 *		Read-write area
 *-------------------------------------------------------------------------*/

	/*-------------------------------------------------------------------
	 * Initialized data (copied by PM  )
	 *-----------------------------------------------------------------*/

	/* Data section. */
	.data :
	{
		LONG(0xDEADBABE)
		*(.data)
		*(.data.*)
		*(.gnu.linkonce.d.*)
		SORT(CONSTRUCTORS)
		. = ALIGN(0x10);
	} > ram :ph_ram = 0

	.got :
	{
		*(.got.plt)
		*(.got)
	} > rom :ph_ram

	/* Global offset table for dynamically linked procedures. */
	.got.plt :
	{
		*(.got.plt)
		*(.igot.plt)
	} > rom :ph_ram

	/* Small data section. */
        .sdata2         :
	{
	        _SDA2_BASE_ = .;
	        *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
	}> ram :ph_ram
	.sdata :
	{
	        _SDA_BASE_ = .;
		*(.sdata)
		*(.sdata.*)
		*(.gnu.linkonce.s.*)
	} > ram :ph_ram

	/*-------------------------------------------------------------------
	 * Uninitialized data (cleared by PM  )
	 *-----------------------------------------------------------------*/

	/* Small bss section. */
	.sbss :
	{
		*(.sbss)
		*(.sbss.*)
		*(.scommon)
		*(.gnu.linkonce.sb.*)
	} > ram :ph_ram

	/* Bss section. */
	.bss (NOLOAD) :
	{
		*(.bss)
		*(.bss.*)
		*(COMMON)
		*(.gnu.linkonce.b.*)
		*(.osvars)
	} > ram :ph_ram

	/* Ignore unwanted sections that are not used in OSE. */
	.ignore (NOLOAD) :
	{
		*(.rel.dyn)
	} > ram :ph_ram

/*---------------------------------------------------------------------------
 *		Debug information
 *-------------------------------------------------------------------------*/

	/*
	 * DWARF debug sections.
	 */

	/* 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) *(.gnu.linkonce.wi.*) }
	.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) }

}

/* Symbols used by DDA. */
__OSESYMS_START    = ADDR(OSESYMS);
__OSESYMS_END      = ADDR(OSESYMS) + SIZEOF(OSESYMS);