Commit 5145a02e by Andreas Jaeger Committed by Andreas Jaeger

mklibgcc.in (lib2funcs): Remove _exit.


        * mklibgcc.in (lib2funcs): Remove _exit.
        * libgcc2.c: Remove L_exit.
        * gbl-ctors.h: Remove declarations dependend on NEED_ATEXIT.

        * system.h: Poison NEED_ATEXIT, ON_EXIT, EXIT_BODY.

        * doc/tm.texi (Misc): Remove NEED_ATEXIT, ON_EXIT, EXIT_BODY.

From-SVN: r67599
parent 39072dc8
2003-06-07 Andreas Jaeger <aj@suse.de> 2003-06-07 Andreas Jaeger <aj@suse.de>
* mklibgcc.in (lib2funcs): Remove _exit.
* libgcc2.c: Remove L_exit.
* gbl-ctors.h: Remove declarations dependend on NEED_ATEXIT.
* system.h: Poison NEED_ATEXIT, ON_EXIT, EXIT_BODY.
* doc/tm.texi (Misc): Remove NEED_ATEXIT, ON_EXIT, EXIT_BODY.
* ggc.h: Convert to ISO C90 prototypes. * ggc.h: Convert to ISO C90 prototypes.
* ggc-none.c: Likewise. * ggc-none.c: Likewise.
* ggc-common.c: Likewise. * ggc-common.c: Likewise.
......
...@@ -9006,30 +9006,6 @@ The definition should be a C statement (sans semicolon) to generate the ...@@ -9006,30 +9006,6 @@ The definition should be a C statement (sans semicolon) to generate the
appropriate rtl instructions. It is used only when compiling the end of appropriate rtl instructions. It is used only when compiling the end of
@code{main}. @code{main}.
@item NEED_ATEXIT
@findex NEED_ATEXIT
Define this if the target system lacks the function @code{atexit}
from the ISO C standard. If this macro is defined, a default definition
will be provided to support C++. If @code{ON_EXIT} is not defined,
a default @code{exit} function will also be provided.
@item ON_EXIT
@findex ON_EXIT
Define this macro if the target has another way to implement atexit
functionality without replacing @code{exit}. For instance, SunOS 4 has
a similar @code{on_exit} library function.
The definition should be a functional macro which can be used just like
the @code{atexit} function.
@item EXIT_BODY
@findex EXIT_BODY
Define this if your @code{exit} function needs to do something
besides calling an external function @code{_cleanup} before
terminating with @code{_exit}. The @code{EXIT_BODY} macro is
only needed if @code{NEED_ATEXIT} is defined and @code{ON_EXIT} is not
defined.
@findex INSN_SETS_ARE_DELAYED @findex INSN_SETS_ARE_DELAYED
@item INSN_SETS_ARE_DELAYED (@var{insn}) @item INSN_SETS_ARE_DELAYED (@var{insn})
Define this macro as a C expression that is nonzero if it is safe for the Define this macro as a C expression that is nonzero if it is safe for the
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
for getting g++ file-scope static objects constructed. This file for getting g++ file-scope static objects constructed. This file
will get included either by libgcc2.c (for systems that don't support will get included either by libgcc2.c (for systems that don't support
a .init section) or by crtstuff.c (for those that do). a .init section) or by crtstuff.c (for those that do).
Copyright (C) 1991, 1995, 1996, 1998, 1999, 2000 Copyright (C) 1991, 1995, 1996, 1998, 1999, 2000, 2003
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Ron Guilmette (rfg@segfault.us.com) Contributed by Ron Guilmette (rfg@segfault.us.com)
...@@ -38,10 +38,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -38,10 +38,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
Note that this file should only be compiled with GCC. Note that this file should only be compiled with GCC.
*/ */
#ifdef NEED_ATEXIT
extern int atexit (void (*) (void));
#endif
/* Declare a pointer to void function type. */ /* Declare a pointer to void function type. */
typedef void (*func_ptr) (void); typedef void (*func_ptr) (void);
......
...@@ -1669,78 +1669,3 @@ func_ptr __DTOR_LIST__[2]; ...@@ -1669,78 +1669,3 @@ func_ptr __DTOR_LIST__[2];
#endif /* no INIT_SECTION_ASM_OP and not CTOR_LISTS_DEFINED_EXTERNALLY */ #endif /* no INIT_SECTION_ASM_OP and not CTOR_LISTS_DEFINED_EXTERNALLY */
#endif /* L_ctors */ #endif /* L_ctors */
#ifdef L_exit
#include "gbl-ctors.h"
#ifdef NEED_ATEXIT
#ifndef ON_EXIT
# include <errno.h>
static func_ptr *atexit_chain = 0;
static long atexit_chain_length = 0;
static volatile long last_atexit_chain_slot = -1;
int
atexit (func_ptr func)
{
if (++last_atexit_chain_slot == atexit_chain_length)
{
atexit_chain_length += 32;
if (atexit_chain)
atexit_chain = (func_ptr *) realloc (atexit_chain, atexit_chain_length
* sizeof (func_ptr));
else
atexit_chain = (func_ptr *) malloc (atexit_chain_length
* sizeof (func_ptr));
if (! atexit_chain)
{
atexit_chain_length = 0;
last_atexit_chain_slot = -1;
errno = ENOMEM;
return (-1);
}
}
atexit_chain[last_atexit_chain_slot] = func;
return (0);
}
extern void _cleanup (void);
extern void _exit (int) __attribute__ ((__noreturn__));
void
exit (int status)
{
if (atexit_chain)
{
for ( ; last_atexit_chain_slot-- >= 0; )
{
(*atexit_chain[last_atexit_chain_slot + 1]) ();
atexit_chain[last_atexit_chain_slot + 1] = 0;
}
free (atexit_chain);
atexit_chain = 0;
}
#ifdef EXIT_BODY
EXIT_BODY;
#else
_cleanup ();
#endif
_exit (status);
}
#else /* ON_EXIT */
/* Simple; we just need a wrapper for ON_EXIT. */
int
atexit (func_ptr func)
{
return ON_EXIT (func);
}
#endif /* ON_EXIT */
#endif /* NEED_ATEXIT */
#endif /* L_exit */
...@@ -48,7 +48,7 @@ lib2funcs='_muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 ...@@ -48,7 +48,7 @@ lib2funcs='_muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3
_cmpdi2 _ucmpdi2 _floatdidf _floatdisf _fixunsdfsi _fixunssfsi _cmpdi2 _ucmpdi2 _floatdidf _floatdisf _fixunsdfsi _fixunssfsi
_fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi _fixxfdi _fixunsxfdi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi _fixxfdi _fixunsxfdi
_floatdixf _fixunsxfsi _fixtfdi _fixunstfdi _floatditf _clear_cache _floatdixf _fixunsxfsi _fixtfdi _fixunstfdi _floatditf _clear_cache
_trampoline __main _exit _absvsi2 _absvdi2 _addvsi3 _addvdi3 _trampoline __main _absvsi2 _absvdi2 _addvsi3 _addvdi3
_subvsi3 _subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2 _ctors _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2 _ctors
_ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2 _ctzsi2 _ctzdi2 _popcount_tab _ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2 _ctzsi2 _ctzdi2 _popcount_tab
_popcountsi2 _popcountdi2 _paritysi2 _paritydi2' _popcountsi2 _popcountdi2 _paritysi2 _paritydi2'
......
...@@ -645,7 +645,8 @@ typedef char _Bool; ...@@ -645,7 +645,8 @@ typedef char _Bool;
ROUND_TYPE_SIZE_UNIT CONST_SECTION_ASM_OP CRT_GET_RFIB_TEXT \ ROUND_TYPE_SIZE_UNIT CONST_SECTION_ASM_OP CRT_GET_RFIB_TEXT \
DBX_LBRAC_FIRST DBX_OUTPUT_ENUM DBX_OUTPUT_SOURCE_FILENAME \ DBX_LBRAC_FIRST DBX_OUTPUT_ENUM DBX_OUTPUT_SOURCE_FILENAME \
DBX_WORKING_DIRECTORY INSN_CACHE_DEPTH INSN_CACHE_SIZE \ DBX_WORKING_DIRECTORY INSN_CACHE_DEPTH INSN_CACHE_SIZE \
INSN_CACHE_LINE_WIDTH INIT_SECTION_PREAMBLE INSN_CACHE_LINE_WIDTH INIT_SECTION_PREAMBLE NEED_ATEXIT ON_EXIT \
EXIT_BODY
/* Hooks that are no longer used. */ /* Hooks that are no longer used. */
#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \
......
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