aboutsummaryrefslogblamecommitdiffstats
path: root/erts/emulator/sys/ose/gcc_lm_ppc.lcf
blob: a2399c93dadf758e77b3d13edeaaa4b9fe5e46ba (plain) (tree)


























































































































































































































                                                                                
/*******************************************************************************
 * gcc_lm_ppc.lcf: GCC linker control file for PowerPC load modules
 * @(#) $FilePath:   /vobs/ose5/system/refsys/compilers/gcc_lm_ppc.lcf  $
 * @(#) $FileRevision:   /main/tb_current_ose5/10  $
 * $Author:   joka  $$Date:   01/21/13 16:35:41  $
 * $Copyright:   (C) 2006 by Enea AB. All rights reserved.  $
 ******************************************************************************/

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

ENTRY("crt0_lm")

/* Note:
 * You may have to increase the length of the "rom" memory region and the
 * origin and length of the "ram" memory region below depending on the size
 * of the code and data in your load module.
 */

MEMORY
{
	conf : ORIGIN = 0x00100000, LENGTH = 0x00030000
	rom  : ORIGIN = 0x01000000, LENGTH = 0x01000000
	ram  : ORIGIN = 0x03000000, LENGTH = 0x01000000
}

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

SECTIONS
{
/*---------------------------------------------------------------------------
 *		Load module configuration area
 *-------------------------------------------------------------------------*/

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

/*---------------------------------------------------------------------------
 *		Read-only area
 *-------------------------------------------------------------------------*/

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

	/* OSE symbols section. */
	OSESYMS :
	{
		*(.osesyms)
	} > 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 .gcc_except_table.*)
	} > rom :ph_rom

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

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

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

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

	/* Data section. */
	.data :
	{
		*(.data)
		*(.data.*)
		*(.gnu.linkonce.d.*)
		SORT(CONSTRUCTORS)
	} > ram :ph_ram

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

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


	/* Small data section. */
	.sdata ALIGN(0x10) :
	{
		PROVIDE (_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 :
	{
		*(.bss)
		*(.bss.*)
		*(COMMON)
		*(.gnu.linkonce.b.*)
	} > ram :ph_ram

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

	/*
	 * Stabs debug 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.
	 */

	/* 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) }
}