⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linkcmds

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻
字号:
/* *  This file contains directives for the GNU linker which are specific *  to the Technologic Systems TS-1325 (i386ex) board. * *  Copyright (c) 1989-1998. *  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.com/license/LICENSE. * *  $Id: linkcmds,v 1.6.2.1 2003/09/04 18:44:09 joel Exp $ *  * Memory layout: * * 0x0008000 ->    ...    : initial section ( init 386ex, goto protected mode)  *    ...    ->    ...    : text section ( executable code ) *    ...    -> 0x00A0000 : data section ( initialized storage ) * 0x0100000 -> 0x0200000 : bss section, stack space, heap storage */	ENTRY(_init_i386ex) ;SECTIONS{/*************************************************************************** * initial section: * * This subsection of ".text" is the first in memory, and executed by the DOS * loader. It initializes the i386ex, sets up the gdt in RAM, loads the gdt, * jumps to protected mode, loads the idt, zeros the bss section, sets up * the stack and calls the rest of the RTEMS initialization. ***************************************************************************/	_DOS_ld_addr	=	0x0008000 ;/*************************************************************************** * text section: * * Nobody here but us opcodes. ***************************************************************************/        .text _DOS_ld_addr :        {	CREATE_OBJECT_SYMBOLS	text_start = . ;        _text_start = . ;	*(.initial);	. = ALIGN(0x20);        *(.text );	. = ALIGN (0x20);	/*	 * Special FreeBSD sysctl sections.	 */	. = ALIGN (16);	__start_set_sysctl_set = .;	*(set_sysctl_*);	__stop_set_sysctl_set = ABSOLUTE(.);	*(set_domain_*);	*(set_pseudo_*);	*(.eh_frame)	. = ALIGN (0x20);	*(.gnu.linkonce.t*)	. = ALIGN(0x20);	/*	 * C++ constructors	 */	__CTOR_LIST__ = .;	LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)	*(.ctors)	LONG(0)	__CTOR_END__ = .;	. = ALIGN (4) ;	__DTOR_LIST__ = .;	LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)	*(.dtors)	LONG(0)	__DTOR_END__ = .;	_rodata_start = . ;	*(.rodata*)	. = ALIGN(0x20);	_erodata = .;	*(.gnu.linkonce.r*)        . = ALIGN(0x20);	_endtext = . ;         }/*************************************************************************** * ctor/dtor sections: * * These sections house the  global constructors and destructors.   ***************************************************************************/	.init BLOCK(0x20) :	{	*(.init)	} = 0x9090	.fini BLOCK(0x20) :	{	*(.fini)	} = 0x9090/*************************************************************************** * data section: * * This section defines the location of the data section in RAM.   ***************************************************************************/        .data  BLOCK(0x20) :         {        _sdata = .;        *(.data);	. = ALIGN(0x20);	*(.gnu.linkonce.d*)	. = ALIGN(0x20);	*(.gcc_except_table)	. = ALIGN(0x20);        _edata = .;   	}        _data_size        = _edata - _sdata ;/*************************************************************************** * bss section: * * The bss section is the first section in extended RAM ( > 1MB).   ***************************************************************************/	.bss 0x100000 (NOLOAD) :	{	_bss_start = .;	*(.bss);	*(COMMON);	_ebss = ALIGN(0x20);	}        _bss_size   = _ebss - _bss_start ;/*************************************************************************** * discard section: * * This section is used to throw away stuff we don't want.   ***************************************************************************/	/DISCARD/ :	{	*(.comment);	*(.note);	}/*************************************************************************** * General variables: * * The stack_size variable is customizable here.  The heap is located directly * after the stack in RAM.  A routine within bspstart.c uses these variables * to ensure that the heap used by RTEMS is as large as the RAM remaining * after all workspace configurations are complete. ***************************************************************************/        stack_size  = 0x8000 ;	stack_origin = _ebss + stack_size ;	heap_bottom  = stack_origin + 4 ;    /* 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  .  */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -