OSDN Git Service

Add initX, finiX, ctors, dtors sections to respect C++ constructor/destructor.
authornickc <nickc>
Wed, 9 Apr 2003 11:07:50 +0000 (11:07 +0000)
committernickc <nickc>
Wed, 9 Apr 2003 11:07:50 +0000 (11:07 +0000)
Add ctors/dtors start/stop definitions.

ld/ChangeLog
ld/scripttempl/elf32msp430.sc
ld/scripttempl/elf32msp430_3.sc

index 642f41a..848853f 100644 (file)
@@ -1,3 +1,10 @@
+2003-04-09   Dmitry Diky  <diwil@mail.ru>
+
+       * scripttempl/elf32msp430.sc: Add initX, finiX, ctors, dtors
+       sections to respect C++  constructor/destructor. Add ctors/dtors
+       start/stop definitions.
+       * scripttempl/elf32msp430_3.sc: Likewise.
+
 2003-04-06  Nick Clifton  <nickc@redhat.com>
 
        * ld.texinfo (Options): Add a reminder of the target specific
index ba6e03f..c3e78d3 100644 (file)
@@ -77,13 +77,44 @@ SECTIONS
   /* Internal text space.  */
   .text :
   {
+    ${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().  */
+
+    ${CONSTRUCTING+ __ctors_start = . ; }
+    ${CONSTRUCTING+ *(.ctors) }
+    ${CONSTRUCTING+ __ctors_end = . ; }
+    ${CONSTRUCTING+ __dtors_start = . ; }
+    ${CONSTRUCTING+ *(.dtors) }
+    ${CONSTRUCTING+ __dtors_end = . ; }
+
     ${RELOCATING+. = ALIGN(2);}
     *(.text)
     ${RELOCATING+. = ALIGN(2);}
     *(.text.*)
+
     ${RELOCATING+. = ALIGN(2);}
+    *(.fini9)  /*   */
+    *(.fini8)
+    *(.fini7)
+    *(.fini6)  /* C++ destructors.  */
+    *(.fini5)
+    *(.fini4)
+    *(.fini3)
+    *(.fini2)
+    *(.fini1)
+    *(.fini0)  /* Infinite loop after program termination.  */
     *(.fini)
+
     ${RELOCATING+ _etext = . ; }
   } ${RELOCATING+ > text}
 
index 40259bf..15eb517 100644 (file)
@@ -74,13 +74,44 @@ SECTIONS
   /* Internal text space.  */
   .text :
   {
+    ${RELOCATING+. = ALIGN(2);}
     *(.init)
+    *(.init0)  /* Start here after reset.  */
+    *(.init1)
+    *(.init2)
+    *(.init3)
+    *(.init4)
+    *(.init5)
+    *(.init6)  /* C++ constructors.  */
+    *(.init7)
+    *(.init8)
+    *(.init9)  /* Call main().  */
+
+    ${CONSTRUCTING+ __ctors_start = . ; }
+    ${CONSTRUCTING+ *(.ctors) }
+    ${CONSTRUCTING+ __ctors_end = . ; }
+    ${CONSTRUCTING+ __dtors_start = . ; }
+    ${CONSTRUCTING+ *(.dtors) }
+    ${CONSTRUCTING+ __dtors_end = . ; }
+
     ${RELOCATING+. = ALIGN(2);}
     *(.text)
     ${RELOCATING+. = ALIGN(2);}
     *(.text.*)
+
     ${RELOCATING+. = ALIGN(2);}
+    *(.fini9)
+    *(.fini8)
+    *(.fini7)
+    *(.fini6)  /* C++ destructors.  */
+    *(.fini5)
+    *(.fini4)
+    *(.fini3)
+    *(.fini2)
+    *(.fini1)
+    *(.fini0)  /* Infinite loop after program termination.  */
     *(.fini)
+
     ${RELOCATING+ _etext = . ; }
   } ${RELOCATING+ > text}