URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [rtems-20020807/] [c/] [src/] [lib/] [libbsp/] [i386/] [ts_386ex/] [startup/] [linkcmds] - Rev 1765
Compare with Previous | Blame | View Log
/** 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.OARcorp.com/rtems/license.html.** linkcmds,v 1.5 2002/05/17 18:02:15 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_SYMBOLStext_start = . ;_text_start = . ;*(.initial);. = ALIGN(0x20);*(.text );. = ALIGN (0x20);*(.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 beginningof 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 . */}
