diff --git a/gcc/config/i386/sco.h b/gcc/config/i386/sco.h index 04278d8d013..fecec2e5d19 100644 --- a/gcc/config/i386/sco.h +++ b/gcc/config/i386/sco.h @@ -25,6 +25,10 @@ #define CPP_SPEC "%{scointl:-DM_INTERNAT}" +/* Use atexit for static destructors, instead of defining + our own exit function. */ +#define HAVE_ATEXIT + #if 0 /* Not yet certain whether this is needed. */ /* If no 387, use the general regs to return floating values, since this system does not emulate the 80387. */ diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index ce693ed4c2d..f477c13cfaa 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -1254,7 +1254,7 @@ __do_global_dtors () #ifndef INIT_SECTION_ASM_OP /* Run all the global constructors on entry to the program. */ -#ifndef ON_EXIT /* DO_GLOBAL_CTORS_BODY uses ON_EXIT */ +#ifndef ON_EXIT #define ON_EXIT(a, b) #else /* Make sure the exit routine is pulled in to define the globals as @@ -1269,6 +1269,7 @@ void __do_global_ctors () { DO_GLOBAL_CTORS_BODY; + ON_EXIT (__do_global_dtors, 0); } /* Subroutine called automatically by `main'.