From: Hans-Peter Nilsson Date: Mon, 28 Jan 2002 13:46:05 +0000 (+0000) Subject: cris.h (CRT_CALL_STATIC_FUNCTION): Change to emit atexit call in crtbegin, hooked... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fdae5767f002780de4b83d84417e1faf73e1e947;p=gcc.git cris.h (CRT_CALL_STATIC_FUNCTION): Change to emit atexit call in crtbegin, hooked in after call to frame_dummy... * config/cris/cris.h (CRT_CALL_STATIC_FUNCTION): Change to emit atexit call in crtbegin, hooked in after call to frame_dummy; register EH before registering __fini__start. From-SVN: r49281 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d678e87e634..97b8198472d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-01-28 Hans-Peter Nilsson + + * config/cris/cris.h (CRT_CALL_STATIC_FUNCTION): Change to emit + atexit call in crtbegin, hooked in after call to frame_dummy; + register EH before registering __fini__start. + 2002-01-28 Aldy Hernandez * config/rs6000/altivec.h: Remove spurious semicolons. diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h index f92a3b3971b..84d0e89742d 100644 --- a/gcc/config/cris/cris.h +++ b/gcc/config/cris/cris.h @@ -1450,19 +1450,22 @@ struct cum_args {int regs;}; /* We pull a little trick to register the _fini function with atexit, after (presumably) registering the eh frame info, since we don't handle - _fini (a.k.a. ___fini_start) in crt0 or have a crti for "pure" ELF. */ -#ifdef CRT_END + _fini (a.k.a. ___fini_start) in crt0 or have a crti for "pure" ELF. If + you change this, don't forget that you can't have library function + references (e.g. to atexit) in crtend.o, since those won't be resolved + to libraries; those are linked in *before* crtend.o. */ +#ifdef CRT_BEGIN # define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \ static void __attribute__((__used__)) \ call_ ## FUNC (void) \ { \ asm (SECTION_OP); \ - if (__builtin_strcmp (#FUNC, "__do_global_ctors_aux") == 0) \ + FUNC (); \ + if (__builtin_strcmp (#FUNC, "frame_dummy") == 0) \ { \ extern void __fini__start (void); \ atexit (__fini__start); \ } \ - FUNC (); \ asm (TEXT_SECTION_ASM_OP); \ } #endif