From 03261851a10dd2d6900a0a00a7515a0a46fb5d76 Mon Sep 17 00:00:00 2001 From: Ranjith Kumaran Date: Fri, 17 Mar 2000 22:48:54 +0000 Subject: 20000317 sourceware import --- libgloss/mn10200/_exit.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 libgloss/mn10200/_exit.c (limited to 'libgloss/mn10200/_exit.c') diff --git a/libgloss/mn10200/_exit.c b/libgloss/mn10200/_exit.c new file mode 100644 index 000000000..ec51d4088 --- /dev/null +++ b/libgloss/mn10200/_exit.c @@ -0,0 +1,29 @@ +#include <_ansi.h> +#include +#include +#include "trap.h" + + +static void _do_dtors() +{ + /* The loop variable is static so that if a destructor calls exit, + and we return here, we simply continue with the next destructor. */ + typedef void (*pfunc) (); + extern pfunc __dtors[]; + extern pfunc __dtors_end[]; + static pfunc *p = __dtors; + + while (p < __dtors_end) + (*p++) (); +} + + +void _exit (n) +{ + /* Destructors should be done earlier because they need to be done before the + files are closed, but here is better than nowhere (and this balances the + constructors done in crt1.c. */ + _do_dtors(); + + TRAP0 (SYS_exit, n, 0, 0); +} -- cgit v1.2.3