Add initX, finiX, ctors, dtors sections to respect C++ constructor/destructor.

Add ctors/dtors start/stop definitions.
This commit is contained in:
Nick Clifton 2003-04-09 11:07:51 +00:00
parent a3805e4e10
commit d4b6ee6788
3 changed files with 69 additions and 0 deletions

View 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

View 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}

View 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}