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
This commit is contained in:
Hans-Peter Nilsson 2002-01-28 13:46:05 +00:00 committed by Hans-Peter Nilsson
parent 27d921c7cf
commit fdae5767f0
2 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2002-01-28 Hans-Peter Nilsson <hp@axis.com>
* 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 <aldyh@redhat.com>
* config/rs6000/altivec.h: Remove spurious semicolons.

View File

@ -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