From ac1389b7050927d75c705988defb8872181528b2 Mon Sep 17 00:00:00 2001 From: Jonathan Larmour Date: Tue, 12 Oct 1999 16:47:08 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/config/rs6000/eabi-ctors.c | 12 ++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b14c84d03e9..f331b87c956 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Tue Oct 12 09:45:19 1999 Jonathan Larmour + + * 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 Diego Novillo diff --git a/gcc/config/rs6000/eabi-ctors.c b/gcc/config/rs6000/eabi-ctors.c index ebc23ded35c..2ff3c1abc61 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)(); } -- 2.30.2