aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Larmour <jlarmour@cygnus.co.uk>1999-10-12 16:47:08 +0000
committerJason Merrill <jason@gcc.gnu.org>1999-10-12 12:47:08 -0400
commitac1389b7050927d75c705988defb8872181528b2 (patch)
tree91faea235360e2d37cf61f45fcfce9c9692f6bed
parent9ffe22f9f2f8619013775f75fbaf1db3a4dc7c70 (diff)
downloadgcc-ac1389b7050927d75c705988defb8872181528b2.zip
gcc-ac1389b7050927d75c705988defb8872181528b2.tar.gz
gcc-ac1389b7050927d75c705988defb8872181528b2.tar.bz2
eabi-ctors.c (__do_global_ctors): Run through __CTOR_LIST__ in opposite order...
* config/rs6000/eabi-ctors.c (__do_global_ctors): Run through __CTOR_LIST__ in opposite order, which is the correct order for sorted constructors. (__do_global_dtors): similarly for __DTOR_LIST__. From-SVN: r29925
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/eabi-ctors.c12
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b14c84d..f331b87 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Tue Oct 12 09:45:19 1999 Jonathan Larmour <jlarmour@cygnus.co.uk>
+
+ * config/rs6000/eabi-ctors.c (__do_global_ctors): Run through
+ __CTOR_LIST__ in opposite order, which is the correct order for sorted
+ constructors.
+ (__do_global_dtors): similarly for __DTOR_LIST__.
+
Fri Oct 8 19:46:03 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
Diego Novillo <dnovillo@cygnus.com>
diff --git a/gcc/config/rs6000/eabi-ctors.c b/gcc/config/rs6000/eabi-ctors.c
index ebc23de..2ff3c1a 100644
--- a/gcc/config/rs6000/eabi-ctors.c
+++ b/gcc/config/rs6000/eabi-ctors.c
@@ -58,14 +58,14 @@ void (*__atexit)(func_ptr);
void
__do_global_ctors (void)
{
- func_ptr *ptr = &__CTOR_LIST__[0];
- func_ptr *end = &__CTOR_END__[0];
+ func_ptr *ptr = &__CTOR_END__[0] - 1;
+ func_ptr *start = &__CTOR_LIST__[0];
if (__atexit)
__atexit (__do_global_dtors);
/* Call the constructors collected in the .ctors section. */
- for ( ; ptr != end; ptr++)
+ for ( ; ptr >= start; ptr--)
if (*ptr)
(*ptr)();
@@ -77,15 +77,15 @@ __do_global_ctors (void)
void
__do_global_dtors (void)
{
- func_ptr *ptr = &__DTOR_END__[0] - 1;
- func_ptr *start = &__DTOR_LIST__[0];
+ func_ptr *ptr = &__DTOR_LIST__[0];
+ func_ptr *end = &__DTOR_END__[0];
/* Call the termination function in the .fini section. */
(*fini_ptr) ();
/* Call the destructors collected in the .dtors section. Run
the destructors in reverse order. */
- for ( ; ptr >= start; ptr--)
+ for ( ; ptr < end; ptr++)
if (*ptr)
(*ptr)();
}