summaryrefslogtreecommitdiffstats
path: root/libgloss/msp430/msp430.ld
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/msp430/msp430.ld')
-rw-r--r--libgloss/msp430/msp430.ld30
1 files changed, 23 insertions, 7 deletions
diff --git a/libgloss/msp430/msp430.ld b/libgloss/msp430/msp430.ld
index 26ed1cf96..4c5ebac24 100644
--- a/libgloss/msp430/msp430.ld
+++ b/libgloss/msp430/msp430.ld
@@ -18,6 +18,8 @@ ENTRY(_start)
/* Do we need any of these for elf?
__DYNAMIC = 0; */
+INCLUDE intr_vectors.ld
+
MEMORY {
RAM (w) : ORIGIN = 0x00200, LENGTH = 0x0ee00
RESETVEC (w) : ORIGIN = 0x0fffe, LENGTH = 0x00002
@@ -77,7 +79,12 @@ SECTIONS
{
. = ALIGN(2);
PROVIDE (_start = .);
- *(.lowtext .text .stub .text.* .gnu.linkonce.t.* .text:*)
+ KEEP (*(.crt_init))
+ KEEP (*(.crt_bss))
+ KEEP (*(.crt_movedata))
+ KEEP (*(.crt_main))
+ KEEP (*(.lowtext))
+ *(.text .stub .text.* .gnu.linkonce.t.* .text:*)
KEEP (*(.text.*personality*))
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
@@ -88,6 +95,7 @@ SECTIONS
. = ALIGN(2);
KEEP (*(.init))
KEEP (*(.fini))
+ KEEP (*(.tm_clone_table))
} > RAM
.data : {
@@ -127,15 +135,23 @@ SECTIONS
*(.dynbss)
*(.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 = .);
@@ -174,7 +190,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) }