From 86d0248d410b735833a330c6d0741431e29708d2 Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Thu, 16 Mar 1995 22:22:39 +0000 Subject: [PATCH] Provide eabi C++ static constructor/destructor support. --- ld/ChangeLog | 7 +++++++ ld/scripttempl/elfppc.sc | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index b4ba5abc9a..ed55c61270 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +Thu Mar 16 17:17:33 1995 Michael Meissner + + * scripttempl/elfppc.sc: Move _GOT2_END_ after the .ctors and + .dtors sections, so that these pointers get relocated also. + Define the symbols __{C,D}TOR_{LIST,END}__ to mark the beginning + and end of the constructors/destructors. + Thu Mar 16 13:59:14 1995 Roland McGrath * ldlang.c (load_symbols): If whole_archive is true and ENTRY diff --git a/ld/scripttempl/elfppc.sc b/ld/scripttempl/elfppc.sc index 1f9537ac54..8a6b78dd76 100644 --- a/ld/scripttempl/elfppc.sc +++ b/ld/scripttempl/elfppc.sc @@ -99,15 +99,25 @@ SECTIONS } .data1 ${RELOCATING-0} : { *(.data1) } ${RELOCATING+${OTHER_READWRITE_SECTIONS}} - .ctors ${RELOCATING-0} : { *(.ctors) } - .dtors ${RELOCATING-0} : { *(.dtors) } ${RELOCATING+_GOT1_START_ = .;} .got1 ${RELOCATING-0} : { *(.got1) } ${RELOCATING+_GOT1_END_ = .;} + /* Put .ctors and .dtors next to the .got2 section, so that the pointers + get relocated with -mrelocatable. */ + ${RELOCATING+_GOT2_START_ = .;} - .got2 ${RELOCATING-0} : { *(.got2) } + .got2 ${RELOCATING-0} : { *(.got2) } + + ${RELOCATING+__CTOR_LIST__ = .;} + .ctors ${RELOCATING-0} : { *(.ctors) } + ${RELOCATING+__CTOR_END__ = .;} + + ${RELOCATING+__DTOR_LIST__ = .;} + .dtors ${RELOCATING-0} : { *(.dtors) } + ${RELOCATING+__DTOR_END__ = .;} + ${RELOCATING+_GOT2_END_ = .;} ${RELOCATING+_GOT_START_ = .;}