Commit fdae5767 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

cris.h (CRT_CALL_STATIC_FUNCTION): Change to emit atexit call in crtbegin,…

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
parent 27d921c7
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> 2002-01-28 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/altivec.h: Remove spurious semicolons. * config/rs6000/altivec.h: Remove spurious semicolons.
......
...@@ -1450,19 +1450,22 @@ struct cum_args {int regs;}; ...@@ -1450,19 +1450,22 @@ struct cum_args {int regs;};
/* We pull a little trick to register the _fini function with atexit, /* We pull a little trick to register the _fini function with atexit,
after (presumably) registering the eh frame info, since we don't handle 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. */ _fini (a.k.a. ___fini_start) in crt0 or have a crti for "pure" ELF. If
#ifdef CRT_END 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) \ # define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
static void __attribute__((__used__)) \ static void __attribute__((__used__)) \
call_ ## FUNC (void) \ call_ ## FUNC (void) \
{ \ { \
asm (SECTION_OP); \ 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); \ extern void __fini__start (void); \
atexit (__fini__start); \ atexit (__fini__start); \
} \ } \
FUNC (); \
asm (TEXT_SECTION_ASM_OP); \ asm (TEXT_SECTION_ASM_OP); \
} }
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment