Created
January 21, 2011 08:09
-
-
Save meekrosoft/789401 to your computer and use it in GitHub Desktop.
Codesourcery Linker Script (Hosted)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Linker script for lm3s8962 | |
* | |
* Version: Sourcery G++ 4.4-104 | |
* Support: https://support.codesourcery.com/GNUToolchain/ | |
* | |
* Copyright (c) 2007, 2008, 2009, 2010 CodeSourcery, Inc. | |
* | |
* The authors hereby grant permission to use, copy, modify, distribute, | |
* and license this software and its documentation for any purpose, provided | |
* that existing copyright notices are retained in all copies and that this | |
* notice is included verbatim in any distributions. No written agreement, | |
* license, or royalty fee is required for any of the authorized uses. | |
* Modifications to this software may be copyrighted by their authors | |
* and need not follow the licensing terms described here, provided that | |
* the new terms are clearly indicated on the first page of each file where | |
* they apply. | |
* */ | |
OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") | |
ENTRY(_start) | |
SEARCH_DIR(.) | |
GROUP(-lgcc -lc -lcs3 -lcs3hosted -lcs3stellaris_fury) | |
MEMORY | |
{ | |
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K | |
rom (rx) : ORIGIN = 0x00000000, LENGTH = 256K | |
} | |
/* These force the linker to search for particular symbols from | |
* the start of the link process and thus ensure the user's | |
* overrides are picked up | |
*/ | |
EXTERN(__cs3_reset_lm3s8962) | |
INCLUDE stellaris_fury-names.inc | |
EXTERN(__cs3_interrupt_vector_stellaris_fury) | |
EXTERN(__cs3_start_c main __cs3_stack __cs3_heap_end) | |
EXTERN(_start) | |
/* force exit to be picked up in a hosted or os environment */ | |
EXTERN(exit atexit) | |
PROVIDE(__cs3_heap_start = _end); | |
PROVIDE(__cs3_heap_end = __cs3_region_start_ram + __cs3_region_size_ram); | |
PROVIDE(__cs3_region_num = (__cs3_regions_end - __cs3_regions) / 20); | |
/* Ensure that newlib runs the finalizers */ | |
__libc_fini = _fini; | |
PROVIDE(__cs3_stack = __cs3_region_start_ram + __cs3_region_size_ram); | |
SECTIONS | |
{ | |
.text : | |
{ | |
CREATE_OBJECT_SYMBOLS | |
__cs3_region_start_rom = .; | |
*(.cs3.region-head.rom) | |
ASSERT (. == __cs3_region_start_rom, ".cs3.region-head.rom not permitted"); | |
__cs3_interrupt_vector = __cs3_interrupt_vector_stellaris_fury; | |
*(.cs3.interrupt_vector) | |
/* Make sure we pulled in an interrupt vector. */ | |
ASSERT (. != __cs3_interrupt_vector_stellaris_fury, "No interrupt vector"); | |
PROVIDE(__cs3_reset_lm3s8962 = _start); | |
__cs3_reset = __cs3_reset_lm3s8962; | |
*(.cs3.reset) | |
*(.text .text.* .gnu.linkonce.t.*) | |
*(.plt) | |
*(.gnu.warning) | |
*(.glue_7t) *(.glue_7) *(.vfp11_veneer) | |
*(.ARM.extab* .gnu.linkonce.armextab.*) | |
*(.gcc_except_table) | |
} >rom | |
.eh_frame_hdr : ALIGN (4) | |
{ | |
KEEP (*(.eh_frame_hdr)) | |
} >rom | |
.eh_frame : ALIGN (4) | |
{ | |
KEEP (*(.eh_frame)) | |
} >rom | |
/* .ARM.exidx is sorted, so has to go in its own output section. */ | |
PROVIDE_HIDDEN (__exidx_start = .); | |
.ARM.exidx : | |
{ | |
*(.ARM.exidx* .gnu.linkonce.armexidx.*) | |
} >rom | |
PROVIDE_HIDDEN (__exidx_end = .); | |
.rodata : ALIGN (4) | |
{ | |
*(.rodata .rodata.* .gnu.linkonce.r.*) | |
. = ALIGN(4); | |
KEEP(*(.init)) | |
. = ALIGN(4); | |
__preinit_array_start = .; | |
KEEP (*(.preinit_array)) | |
__preinit_array_end = .; | |
. = ALIGN(4); | |
__init_array_start = .; | |
KEEP (*(SORT(.init_array.*))) | |
KEEP (*(.init_array)) | |
__init_array_end = .; | |
. = ALIGN(4); | |
KEEP(*(.fini)) | |
. = ALIGN(4); | |
__fini_array_start = .; | |
KEEP (*(.fini_array)) | |
KEEP (*(SORT(.fini_array.*))) | |
__fini_array_end = .; | |
. = ALIGN(0x4); | |
KEEP (*crtbegin.o(.ctors)) | |
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) | |
KEEP (*(SORT(.ctors.*))) | |
KEEP (*crtend.o(.ctors)) | |
. = ALIGN(0x4); | |
KEEP (*crtbegin.o(.dtors)) | |
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) | |
KEEP (*(SORT(.dtors.*))) | |
KEEP (*crtend.o(.dtors)) | |
. = ALIGN(4); | |
__cs3_regions = .; | |
LONG (0) | |
LONG (__cs3_region_init_ram) | |
LONG (__cs3_region_start_ram) | |
LONG (__cs3_region_init_size_ram) | |
LONG (__cs3_region_zero_size_ram) | |
__cs3_regions_end = .; | |
. = ALIGN (8); | |
*(.rom) | |
*(.rom.b) | |
_etext = .; | |
} >rom | |
/* __cs3_region_end_rom is deprecated */ | |
__cs3_region_end_rom = __cs3_region_start_rom + LENGTH(rom); | |
__cs3_region_size_rom = LENGTH(rom); | |
.data : ALIGN (8) | |
{ | |
__cs3_region_start_ram = .; | |
*(.cs3.region-head.ram) | |
KEEP(*(.jcr)) | |
*(.got.plt) *(.got) | |
*(.shdata) | |
*(.data .data.* .gnu.linkonce.d.*) | |
. = ALIGN (8); | |
*(.ram) | |
_edata = .; | |
} >ram AT>rom | |
.bss : | |
{ | |
*(.shbss) | |
*(.bss .bss.* .gnu.linkonce.b.*) | |
*(COMMON) | |
. = ALIGN (8); | |
*(.ram.b) | |
_end = .; | |
__end = .; | |
} >ram AT>rom | |
/* __cs3_region_end_ram is deprecated */ | |
__cs3_region_end_ram = __cs3_region_start_ram + LENGTH(ram); | |
__cs3_region_size_ram = LENGTH(ram); | |
__cs3_region_init_ram = LOADADDR (.data); | |
__cs3_region_init_size_ram = _edata - ADDR (.data); | |
__cs3_region_zero_size_ram = _end - _edata; | |
.stab 0 (NOLOAD) : { *(.stab) } | |
.stabstr 0 (NOLOAD) : { *(.stabstr) } | |
/* 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 .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) } | |
/* DWARF 2.1 */ | |
.debug_ranges 0 : { *(.debug_ranges) } | |
/* 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) } | |
.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } | |
.ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } | |
/DISCARD/ : { *(.note.GNU-stack) } | |
} | |
/* checksum: 5202a2e1183f7fe07809303 */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment