CVS: packaging/patches binutils-ld_scripts.patch, NONE, 1.1
Chris Liechti <[email protected]> Mon, 26 May 2008 16:57:42 -0700
| Newsgroups | gmane.comp.hardware.texas-instruments.msp430.gcc.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/mspgcc/packaging/patches
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv1272
Added Files:
binutils-ld_scripts.patch
Log Message:
missed by previous commit. reworked init section and KEEPs from Sergey.
--- NEW FILE: binutils-ld_scripts.patch ---
diff -ru binutils-2.17.orig/ld/scripttempl/elf32msp430.sc binutils-2.17/ld/scripttempl/elf32msp430.sc
--- binutils-2.17.orig/ld/scripttempl/elf32msp430.sc 2008-05-23 02:00:49.049465400 +0300
+++ binutils-2.17/ld/scripttempl/elf32msp430.sc 2008-05-24 18:13:23.343750000 +0300
@@ -14,7 +14,7 @@
${RELOCATING+ PROVIDE (__heap_bottom = .) ; }
${RELOCATING+ PROVIDE (__heap_top = ${HEAP_START} + ${HEAP_LENGTH}) ; }
} ${RELOCATING+ > heap}"
-HEAP_MEMORY_MSP430="heap(rwx) : ORIGIN = $HEAP_START, LENGTH = $HEAP_LENGTH"
+HEAP_MEMORY_MSP430="heap(rwx) : ORIGIN = $HEAP_START, LENGTH = $HEAP_LENGTH"
fi
@@ -24,12 +24,12 @@
MEMORY
{
- text (rx) : ORIGIN = $ROM_START, LENGTH = $ROM_SIZE
- data (rwx) : ORIGIN = $RAM_START, LENGTH = $RAM_SIZE
- vectors (rw) : ORIGIN = $VECTORS_START LENGTH = $VECTORS_SIZE
- bootloader(rx) : ORIGIN = 0x0c00, LENGTH = 1K
- infomem(rx) : ORIGIN = 0x1000, LENGTH = 256
- infomemnobits(rx) : ORIGIN = 0x1000, LENGTH = 256
+ text (rx) : ORIGIN = $ROM_START, LENGTH = $ROM_SIZE
+ data (rwx) : ORIGIN = $RAM_START, LENGTH = $RAM_SIZE
+ vectors (rw) : ORIGIN = $VECTORS_START, LENGTH = $VECTORS_SIZE
+ bootloader(rx) : ORIGIN = 0x0c00, LENGTH = 1K
+ infomem(rx) : ORIGIN = 0x1000, LENGTH = 256
+ infomemnobits(rx) : ORIGIN = 0x1000, LENGTH = 256
${HEAP_MEMORY_MSP430}
}
@@ -100,22 +100,35 @@
{
${RELOCATING+. = ALIGN(2);}
*(.init)
- *(.init0) /* Start here after reset. */
- *(.init1)
- *(.init2) /* Copy data loop */
- *(.init3)
- *(.init4) /* Clear bss */
- *(.init5)
- *(.init6) /* C++ constructors. */
- *(.init7)
- *(.init8)
- *(.init9) /* Call main(). */
+ KEEP(*(.init))
+ *(.init0) /* Start here after reset. */
+ KEEP(*(.init0))
+ *(.init1) /* User definable. */
+ KEEP(*(.init1))
+ *(.init2) /* Initialize stack. */
+ KEEP(*(.init2))
+ *(.init3) /* Initialize hardware, user definable. */
+ KEEP(*(.init3))
+ *(.init4) /* Copy data to .data, clear bss. */
+ KEEP(*(.init4))
+ *(.init5) /* User definable. */
+ KEEP(*(.init5))
+ *(.init6) /* C++ constructors. */
+ KEEP(*(.init6))
+ *(.init7) /* User definable. */
+ KEEP(*(.init7))
+ *(.init8) /* User definable. */
+ KEEP(*(.init8))
+ *(.init9) /* Call main(). */
+ KEEP(*(.init9))
${CONSTRUCTING+ __ctors_start = . ; }
${CONSTRUCTING+ *(.ctors) }
+ ${CONSTRUCTING+ KEEP(*(.ctors)) }
${CONSTRUCTING+ __ctors_end = . ; }
${CONSTRUCTING+ __dtors_start = . ; }
${CONSTRUCTING+ *(.dtors) }
+ ${CONSTRUCTING+ KEEP(*(.dtors)) }
${CONSTRUCTING+ __dtors_end = . ; }
${RELOCATING+. = ALIGN(2);}
@@ -124,31 +137,45 @@
*(.text.*)
${RELOCATING+. = ALIGN(2);}
- *(.fini9) /* */
- *(.fini8)
- *(.fini7)
- *(.fini6) /* C++ destructors. */
- *(.fini5)
- *(.fini4)
- *(.fini3)
- *(.fini2)
- *(.fini1)
+ *(.fini9) /* Jumps here after main(). User definable. */
+ KEEP(*(.fini9))
+ *(.fini8) /* User definable. */
+ KEEP(*(.fini8))
+ *(.fini7) /* User definable. */
+ KEEP(*(.fini7))
+ *(.fini6) /* C++ destructors. */
+ KEEP(*(.fini6))
+ *(.fini5) /* User definable. */
+ KEEP(*(.fini5))
+ *(.fini4) /* User definable. */
+ KEEP(*(.fini4))
+ *(.fini3) /* User definable. */
+ KEEP(*(.fini3))
+ *(.fini2) /* User definable. */
+ KEEP(*(.fini2))
+ *(.fini1) /* User definable. */
+ KEEP(*(.fini1))
*(.fini0) /* Infinite loop after program termination. */
+ KEEP(*(.fini0))
*(.fini)
+ KEEP(*(.fini))
_etext = .;
} ${RELOCATING+ > text}
- .data ${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))}
+ .data ${RELOCATING-0} :
{
${RELOCATING+ PROVIDE (__data_start = .) ; }
${RELOCATING+. = ALIGN(2);}
*(.data)
+ *(.data.*)
${RELOCATING+. = ALIGN(2);}
*(.gnu.linkonce.d*)
${RELOCATING+. = ALIGN(2);}
${RELOCATING+ _edata = . ; }
- } ${RELOCATING+ > data}
+ } ${RELOCATING+ > data AT > text}
+ ${RELOCATING+ PROVIDE (__data_load_start = LOADADDR(.data) ); }
+ ${RELOCATING+ PROVIDE (__data_size = SIZEOF(.data) ); }
/* Bootloader. */
.bootloader ${RELOCATING-0} :
@@ -175,19 +202,22 @@
*(.infomemnobits.*)
} ${RELOCATING+ > infomemnobits}
- .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
+ .bss ${RELOCATING-0} :
{
${RELOCATING+ PROVIDE (__bss_start = .) ; }
*(.bss)
+ *(.bss.*)
*(COMMON)
${RELOCATING+ PROVIDE (__bss_end = .) ; }
${RELOCATING+ _end = . ; }
} ${RELOCATING+ > data}
+ ${RELOCATING+ PROVIDE (__bss_size = SIZEOF(.bss) ); }
- .noinit ${RELOCATING+ SIZEOF(.bss) + ADDR(.bss)} :
+ .noinit ${RELOCATING-0} :
{
${RELOCATING+ PROVIDE (__noinit_start = .) ; }
*(.noinit)
+ *(.noinit.*)
*(COMMON)
${RELOCATING+ PROVIDE (__noinit_end = .) ; }
${RELOCATING+ _end = . ; }
@@ -197,6 +227,7 @@
{
${RELOCATING+ PROVIDE (__vectors_start = .) ; }
*(.vectors*)
+ KEEP(*(.vectors*))
${RELOCATING+ _vectors_end = . ; }
} ${RELOCATING+ > vectors}
diff -ru binutils-2.17.orig/ld/scripttempl/elf32msp430_3.sc binutils-2.17/ld/scripttempl/elf32msp430_3.sc
--- binutils-2.17.orig/ld/scripttempl/elf32msp430_3.sc 2008-05-23 02:00:49.033840400 +0300
+++ binutils-2.17/ld/scripttempl/elf32msp430_3.sc 2008-05-24 17:50:27.953125000 +0300
@@ -6,7 +6,7 @@
{
text (rx) : ORIGIN = $ROM_START, LENGTH = $ROM_SIZE
data (rwx) : ORIGIN = $RAM_START, LENGTH = $RAM_SIZE
- vectors (rw) : ORIGIN = $VECTORS_START LENGTH = $VECTORS_SIZE
+ vectors (rw) : ORIGIN = $VECTORS_START, LENGTH = $VECTORS_SIZE
}
SECTIONS
@@ -76,22 +76,35 @@
{
${RELOCATING+. = ALIGN(2);}
*(.init)
- *(.init0) /* Start here after reset. */
- *(.init1)
- *(.init2)
- *(.init3)
- *(.init4)
- *(.init5)
- *(.init6) /* C++ constructors. */
- *(.init7)
- *(.init8)
- *(.init9) /* Call main(). */
+ KEEP(*(.init))
+ *(.init0) /* Start here after reset. */
+ KEEP(*(.init0))
+ *(.init1) /* User definable. */
+ KEEP(*(.init1))
+ *(.init2) /* Initialize stack. */
+ KEEP(*(.init2))
+ *(.init3) /* Initialize hardware, user definable. */
+ KEEP(*(.init3))
+ *(.init4) /* Copy data to .data, clear bss. */
+ KEEP(*(.init4))
+ *(.init5) /* User definable. */
+ KEEP(*(.init5))
+ *(.init6) /* C++ constructors. */
+ KEEP(*(.init6))
+ *(.init7) /* User definable. */
+ KEEP(*(.init7))
+ *(.init8) /* User definable. */
+ KEEP(*(.init8))
+ *(.init9) /* Call main(). */
+ KEEP(*(.init9))
${CONSTRUCTING+ __ctors_start = . ; }
${CONSTRUCTING+ *(.ctors) }
+ ${CONSTRUCTING+ KEEP(*(.ctors)) }
${CONSTRUCTING+ __ctors_end = . ; }
${CONSTRUCTING+ __dtors_start = . ; }
${CONSTRUCTING+ *(.dtors) }
+ ${CONSTRUCTING+ KEEP(*(.dtors)) }
${CONSTRUCTING+ __dtors_end = . ; }
${RELOCATING+. = ALIGN(2);}
@@ -100,43 +113,60 @@
*(.text.*)
${RELOCATING+. = ALIGN(2);}
- *(.fini9)
- *(.fini8)
- *(.fini7)
- *(.fini6) /* C++ destructors. */
- *(.fini5)
- *(.fini4)
- *(.fini3)
- *(.fini2)
- *(.fini1)
+ *(.fini9) /* Jumps here after main(). User definable. */
+ KEEP(*(.fini9))
+ *(.fini8) /* User definable. */
+ KEEP(*(.fini8))
+ *(.fini7) /* User definable. */
+ KEEP(*(.fini7))
+ *(.fini6) /* C++ destructors. */
+ KEEP(*(.fini6))
+ *(.fini5) /* User definable. */
+ KEEP(*(.fini5))
+ *(.fini4) /* User definable. */
+ KEEP(*(.fini4))
+ *(.fini3) /* User definable. */
+ KEEP(*(.fini3))
+ *(.fini2) /* User definable. */
+ KEEP(*(.fini2))
+ *(.fini1) /* User definable. */
+ KEEP(*(.fini1))
*(.fini0) /* Infinite loop after program termination. */
+ KEEP(*(.fini0))
*(.fini)
+ KEEP(*(.fini))
${RELOCATING+ _etext = . ; }
} ${RELOCATING+ > text}
- .data ${RELOCATING-0} : ${RELOCATING+AT (ADDR (.text) + SIZEOF (.text))}
+ .data ${RELOCATING-0} :
{
${RELOCATING+ PROVIDE (__data_start = .) ; }
*(.data)
+ *(.data.*)
*(.gnu.linkonce.d*)
${RELOCATING+. = ALIGN(2);}
${RELOCATING+ _edata = . ; }
- } ${RELOCATING+ > data}
+ } ${RELOCATING+ > data AT > text}
+ ${RELOCATING+ PROVIDE (__data_load_start = LOADADDR(.data) ); }
+ ${RELOCATING+ PROVIDE (__data_size = SIZEOF(.data) ); }
- .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
+ .bss ${RELOCATING-0} :
{
${RELOCATING+ PROVIDE (__bss_start = .) ; }
*(.bss)
+ *(.bss.*)
*(COMMON)
${RELOCATING+ PROVIDE (__bss_end = .) ; }
${RELOCATING+ _end = . ; }
} ${RELOCATING+ > data}
+ ${RELOCATING+ PROVIDE (__bss_size = SIZEOF(.bss) ); }
- .noinit ${RELOCATING+ SIZEOF(.bss) + ADDR(.bss)} :
+ .noinit ${RELOCATING-0} :
{
${RELOCATING+ PROVIDE (__noinit_start = .) ; }
*(.noinit)
+ *(.noinit.*)
*(COMMON)
${RELOCATING+ PROVIDE (__noinit_end = .) ; }
${RELOCATING+ _end = . ; }
@@ -146,6 +176,7 @@
{
${RELOCATING+ PROVIDE (__vectors_start = .) ; }
*(.vectors*)
+ KEEP(*(.vectors*))
${RELOCATING+ _vectors_end = . ; }
} ${RELOCATING+ > vectors}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/