summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-12-03 10:51:22 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-12-03 10:51:22 +0000
commit4651508bc0c24cf630232952bb60e96568e3a7a5 (patch)
tree2ab0bf692a62bbac41326113756e66b44030c2b2 /c
parent2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-4651508bc0c24cf630232952bb60e96568e3a7a5.tar.bz2
2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de>
* startup/linkcmds: Use linker command base file.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/arm/gba/ChangeLog4
-rw-r--r--c/src/lib/libbsp/arm/gba/startup/linkcmds39
-rw-r--r--c/src/lib/libbsp/arm/smdk2410/ChangeLog4
-rw-r--r--c/src/lib/libbsp/arm/smdk2410/startup/linkcmds298
4 files changed, 68 insertions, 277 deletions
diff --git a/c/src/lib/libbsp/arm/gba/ChangeLog b/c/src/lib/libbsp/arm/gba/ChangeLog
index 51720b6f19..fa00e05dc9 100644
--- a/c/src/lib/libbsp/arm/gba/ChangeLog
+++ b/c/src/lib/libbsp/arm/gba/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * startup/linkcmds: Use linker command base file.
+
2010-04-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
* irq/irq_asm.S, irq/irq_init.c, irq/bsp_irq_asm.S,
diff --git a/c/src/lib/libbsp/arm/gba/startup/linkcmds b/c/src/lib/libbsp/arm/gba/startup/linkcmds
index 0959230160..6f54c13efc 100644
--- a/c/src/lib/libbsp/arm/gba/startup/linkcmds
+++ b/c/src/lib/libbsp/arm/gba/startup/linkcmds
@@ -192,6 +192,32 @@ SECTIONS
. = ALIGN(4);
} =0xFF
+ .ARM.extab : {
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ } =0xff
+ __exidx_start = .;
+ .ARM.exidx : {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } =0xff
+ __exidx_end = .;
+ .preinit_array : {
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ } =0xFF
+ .init_array : {
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ } =0xFF
+ .fini_array : {
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(.fini_array))
+ KEEP (*(SORT(.fini_array.*)))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ } =0xFF
+
/*************************************************************************
calculate __ro_end
*************************************************************************/
@@ -205,7 +231,12 @@ SECTIONS
SIZEOF(.gcc_except_table) +
SIZEOF(.ctors) +
SIZEOF(.dtors) +
- SIZEOF(.jcr);
+ SIZEOF(.jcr) +
+ SIZEOF(.ARM.extab) +
+ SIZEOF(.ARM.exidx) +
+ SIZEOF(.preinit_array) +
+ SIZEOF(.init_array) +
+ SIZEOF(.fini_array);
PROVIDE(__text_end__ = __ro_end );
/*** IWRAM ***/
@@ -344,5 +375,11 @@ SECTIONS
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
+ /* DWARF 3 */
+ .debug_pubtypes 0 : { *(.debug_pubtypes) }
+ .debug_ranges 0 : { *(.debug_ranges) }
+ .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
+ .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
+ /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
}
/* @endcond */
diff --git a/c/src/lib/libbsp/arm/smdk2410/ChangeLog b/c/src/lib/libbsp/arm/smdk2410/ChangeLog
index 08844b497e..1c71d6a65e 100644
--- a/c/src/lib/libbsp/arm/smdk2410/ChangeLog
+++ b/c/src/lib/libbsp/arm/smdk2410/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * startup/linkcmds: Use linker command base file.
+
2010-04-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
* Makefile.am, preinstall.am: Added generic interrupt support modules.
diff --git a/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds b/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds
index 54fbfad261..afd9270af8 100644
--- a/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds
+++ b/c/src/lib/libbsp/arm/smdk2410/startup/linkcmds
@@ -1,279 +1,25 @@
-/*
- * GP32 Linker script
- *
- * Written by Philippe Simons <loki_666@fastmail.fm>
- *
- * 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$
- */
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm","elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-/* SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib); */
-
-
MEMORY {
- sdram : ORIGIN = 0x30000000, LENGTH = 64M
-}
-
-/*
- * Declare some sizes.
- */
-
-/* The base for SDRAM is set to umon's APPRAMBASE */
-_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x30000000;
-_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 64M;
-
-RamBase = _sdram_base;
-RamSize = _sdram_size;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-
-_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
-_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
-_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
-_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
-
-
-
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-
-SECTIONS
-{
- .base :
- {
- arm_exception_table = .;
-
- arm_reset_vect = .; /* 0x00 */
- . += 4;
-
- arm_undef_vect = .; /* 0x04 */
- . += 4;
-
- arm_swi_vect = .; /* 0x08 */
- . += 4;
-
- arm_iabrt_vect = .; /* 0x0c */
- . += 4;
-
- arm_dabrt_vect = .; /* 0x10 */
- . += 4;
-
- /* no vector here */
- . += 4;
-
- arm_irq_vect = .; /* 0x18 */
- . += 4;
-
- arm_fiq_vect = .; /* 0x1c */
- . += 4;
- /* FIXME: */
-
- rtems_vector_table = .;
- . += (8 * 4); /* 8 ARM interrupts */
-
- bsp_vector_table = .;
- . += (32 * 4); /* 32 S3C2400 interrupts */
-
- . = ALIGN (0x100);
-
-
- } > sdram
-
-
- .text :
- {
- _axf_text_start = . ;
- *(EXCLUDE_FILE (*text.iwram*) .text)
- *(.text.*)
- *(.stub)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- *(.glue_7)
- *(.glue_7t)
-
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } > sdram
-
- __text_end = . ;
-
- .init :
- {
- *(.init)
- } > sdram /*=0*/
-
- .jcr :
- {
- *(.jcr)
- } > sdram
-
-
- .fini :
- {
- *(.fini)
- } > sdram /*=0*/
-
- .rodata :
- {
- *(.rodata)
- *all.rodata*(*)
- *(.roda)
- *(.rodata.*)
- *(.gnu.linkonce.r*)
- SORT(CONSTRUCTORS)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } > sdram = 0xff
-
- .ctors :
- {
- /* gcc uses crtbegin.o to find the start of the constructors, so
- we make sure it is first. Because this is a wildcard, it
- doesn't matter if the user does not actually link against
- crtbegin.o; the linker won't look for a file to match a
- wildcard. The wildcard also means that it doesn't matter which
- directory crtbegin.o is in. */
- KEEP (*crtbegin.o(.ctors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
- .dtors :
- {
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
-
- .eh_frame :
- {
- KEEP (*(.eh_frame))
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
-
- .gcc_except_table :
- {
- *(.gcc_except_table)
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0
- _axf_ro_end = . ;
-
- .data ALIGN(4) :
- {
- _axf_data_start = ABSOLUTE(.);
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- . = ALIGN(4); /* REQUIRED. LD is flaky without it. */
- } >sdram = 0xff
-
- __data_end = . ;
-
- .bss ALIGN(4):
- {
- _axf_bss_start = ABSOLUTE(.);
- _clear_start = .;
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(64);
- _clear_end = .;
-
- . = ALIGN (256);
- _abt_stack = .;
- . += _abt_stack_size;
-
- . = ALIGN (256);
- _irq_stack = .;
- . += _irq_stack_size;
-
- . = ALIGN (256);
- _fiq_stack = .;
- . += _fiq_stack_size;
-
- . = ALIGN (256);
- _svc_stack = .;
- . += _svc_stack_size;
-
-/*
- * Ideally, the MMU's translation table would be in SRAM. But we
- * don't have any. If we don't use more regions than TLB entries (64),
- * the lookup will only happen once for each region.
- */
- . = ALIGN (16 * 1024);
- _ttbl_base = .;
- . += (16 * 1024);
-
- . = ALIGN (1024);
- _bss_free_start = .;
-
- } > sdram
- _axf_bss_end = . ;
-
- _end = . ;
- __end__ = . ;
- PROVIDE (end = _end);
- WorkAreaBase = .;
-
-
-/* Debugging stuff follows? */
-
- /* 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) }
- /*.stack 0x80000 : { _stack = .; *(.stack) }*/
- /* These must appear regardless of . */
+ SDRAM_MMU : ORIGIN = 0x30000000, LENGTH = 16k
+ SDRAM : ORIGIN = 0x30004000, LENGTH = 64M - 16k
+ NIRVANA : ORIGIN = 0, LENGTH = 0
}
+REGION_ALIAS ("REGION_START", SDRAM);
+REGION_ALIAS ("REGION_VECTOR", SDRAM);
+REGION_ALIAS ("REGION_TEXT", SDRAM);
+REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_RODATA", SDRAM);
+REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_DATA", SDRAM);
+REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
+REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
+REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
+REGION_ALIAS ("REGION_BSS", SDRAM);
+REGION_ALIAS ("REGION_WORK", SDRAM);
+REGION_ALIAS ("REGION_STACK", SDRAM);
+
+_ttbl_base = ORIGIN (SDRAM_MMU);
+
+INCLUDE linkcmds.armv4