]> oss.titaniummirror.com Git - msp430-binutils.git/blobdiff - debian/patches/502-binutils-msp-ldscripts.dpatch
Import 2.18.1~cvs20080103-0tinyos1 from old svn repo.
[msp430-binutils.git] / debian / patches / 502-binutils-msp-ldscripts.dpatch
diff --git a/debian/patches/502-binutils-msp-ldscripts.dpatch b/debian/patches/502-binutils-msp-ldscripts.dpatch
new file mode 100755 (executable)
index 0000000..a7cd68d
--- /dev/null
@@ -0,0 +1,315 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 502-binutils-msp-ldscripts.dpatch by  <smckown@stevex2>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Add new ldscripts for cpu variations of the msp430 architecture
+
+@DPATCH@
+
+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)
++    *(SORT_BY_ALIGNMENT(.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)
++    *(SORT_BY_ALIGNMENT(.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)
++    *(SORT_BY_ALIGNMENT(.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)
++    *(SORT_BY_ALIGNMENT(.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)
++    *(SORT_BY_ALIGNMENT(.noinit.*))
+     *(COMMON)
+     ${RELOCATING+ PROVIDE (__noinit_end = .) ; }
+     ${RELOCATING+ _end = . ;  }
+@@ -146,6 +176,7 @@
+   {
+     ${RELOCATING+ PROVIDE (__vectors_start = .) ; }
+     *(.vectors*)
++    KEEP(*(.vectors*))
+     ${RELOCATING+ _vectors_end = . ; }
+   } ${RELOCATING+ > vectors}