summaryrefslogtreecommitdiffstats
path: root/libgloss/msp430/msp430xl-sim.ld
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/msp430/msp430xl-sim.ld')
-rw-r--r--libgloss/msp430/msp430xl-sim.ld29
1 files changed, 23 insertions, 6 deletions
diff --git a/libgloss/msp430/msp430xl-sim.ld b/libgloss/msp430/msp430xl-sim.ld
index 14ba083b7..322a490f4 100644
--- a/libgloss/msp430/msp430xl-sim.ld
+++ b/libgloss/msp430/msp430xl-sim.ld
@@ -19,6 +19,8 @@ ENTRY(_start)
/* Do we need any of these for elf?
__DYNAMIC = 0; */
+INCLUDE intr_vectors.ld
+
MEMORY {
RAM (rx) : ORIGIN = 0x00200, LENGTH = 0x0ee00
LOWROM (w) : ORIGIN = 0x0f000, LENGTH = 0x00800
@@ -114,14 +116,23 @@ SECTIONS
*(.sbss .sbss.*)
*(.bss .bss.* .gnu.linkonce.b.*)
. = ALIGN(2);
- *(COMMON)
- . = ALIGN(2);
PROVIDE (__bssend = .);
- _end = .;
- PROVIDE (end = .);
} > RAM
PROVIDE (__bsssize = SIZEOF(.bss));
+ /* This section contains data that is not initialised at startup. */
+ .noinit : {
+ . = ALIGN(2);
+ PROVIDE (__noinit_start = .);
+ *(.noinit)
+ . = ALIGN(2);
+ *(COMMON)
+ PROVIDE (__noinit_end = .);
+ } > RAM
+
+ _end = .;
+ PROVIDE (end = .);
+
.stack (ORIGIN (RAM) + LENGTH(RAM)) :
{
PROVIDE (__stack = .);
@@ -133,8 +144,13 @@ SECTIONS
{
PROVIDE (_start = .);
. = ALIGN(2);
- *(.lowtext)
+ KEEP (*(.crt_init))
+ KEEP (*(.crt_bss))
+ KEEP (*(.crt_movedata))
+ KEEP (*(.crt_main))
+ KEEP (*(.lowtext))
} > LOWROM
+
.text :
{
. = ALIGN(2);
@@ -149,6 +165,7 @@ SECTIONS
. = ALIGN(2);
KEEP (*(.init))
KEEP (*(.fini))
+ KEEP (*(.tm_clone_table))
} > ROM
/* The rest are all not normally part of the runtime image. */
@@ -183,7 +200,7 @@ SECTIONS
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
+ .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }