fixed more binutils issues (newer gcc/libc)
[zpugcc/jano.git] / toolchain / gcc / libgloss / iq2000 / _exit.c
blob318984b8b14535e301ab614fbb6ea57283c95fb1
1 #include <_ansi.h>
2 #include <sys/types.h>
3 #include <sys/stat.h>
4 #include "trap.h"
7 static void _do_dtors()
9 /* The loop variable is static so that if a destructor calls exit,
10 and we return here, we simply continue with the next destructor. */
11 typedef void (*pfunc) ();
12 extern pfunc __dtors[];
13 extern pfunc __dtors_end[];
14 static pfunc *p = __dtors;
16 while (p < __dtors_end)
17 (*p++) ();
21 void _exit (n)
23 extern unsigned char __eh_frame_begin[];
24 extern void __deregister_frame_info (void *);
26 /* Destructors should be done earlier because they need to be done before the
27 files are closed, but here is better than nowhere (and this balances the
28 constructors done in crt1.c. */
29 _do_dtors();
31 /* Deregister any eh frames. */
32 __deregister_frame_info (__eh_frame_begin);
34 TRAP0 (SYS_exit, n, 0, 0);