From: Douglas B Rupp Date: Sat, 29 Aug 2009 15:37:48 +0000 (+0000) Subject: crtstuff.c (__do_global_dtors_aux): Use atexit if no fini or fini_array section. X-Git-Tag: releases/gcc-4.5.0~3788 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d83cb32b9a2803cd927f6a86fca4448dc33790a;p=thirdparty%2Fgcc.git crtstuff.c (__do_global_dtors_aux): Use atexit if no fini or fini_array section. * crtstuff.c (__do_global_dtors_aux): Use atexit if no fini or fini_array section. From-SVN: r151202 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aec6044e2380..89ccac0cbbd8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-08-29 Douglas B Rupp + + * crtstuff.c (__do_global_dtors_aux): Use atexit if no + fini or fini_array section. + 2009-08-28 Sebastian Pop * graphite-dependences.c (graphite_legal_transform_bb): Call diff --git a/gcc/crtstuff.c b/gcc/crtstuff.c index fb278bc44605..6f8a8dd2d627 100644 --- a/gcc/crtstuff.c +++ b/gcc/crtstuff.c @@ -325,11 +325,18 @@ __do_global_dtors_aux (void) /* Stick a call to __do_global_dtors_aux into the .fini section. */ #ifdef FINI_SECTION_ASM_OP CRT_CALL_STATIC_FUNCTION (FINI_SECTION_ASM_OP, __do_global_dtors_aux) -#else /* !defined(FINI_SECTION_ASM_OP) */ +#elif defined (FINI_ARRAY_SECTION_ASM_OP) static func_ptr __do_global_dtors_aux_fini_array_entry[] __attribute__ ((__unused__, section(".fini_array"))) = { __do_global_dtors_aux }; -#endif /* !defined(FINI_SECTION_ASM_OP) */ +#else /* !FINI_SECTION_ASM_OP && !FINI_ARRAY_SECTION_ASM_OP */ +static void __attribute__((used)) +__do_global_dtors_aux_1 (void) +{ + atexit (__do_global_dtors_aux); +} +CRT_CALL_STATIC_FUNCTION (INIT_SECTION_ASM_OP, __do_global_dtors_aux_1) +#endif #if defined(USE_EH_FRAME_REGISTRY) || defined(JCR_SECTION_NAME) /* Stick a call to __register_frame_info into the .init section. For some