mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-10 05:03:06 +03:00
Update.
1999-12-17 Andreas Jaeger <aj@suse.de> * stdlib/Versions: Export __cxa_atexit and __cxa_finalize. 1999-12-16 Mark Mitchell <mark@codesourcery.com> * stdlib/Makefile (routines): Add cxa_atexit and cxa_finalize. * stdlib/exit.h (flavor): Add ef_cxa. (exit_function): Add cxa variant. * stdlib/exit.c (exit): Handle ef_cxa exit functions. * stdlib/cxa_atexit.c: New file. * stdlib/cxa_finalize.c: New file.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991, 1996, 1997, 1999 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -19,9 +19,21 @@
|
||||
#ifndef _EXIT_H
|
||||
#define _EXIT_H 1
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
ef_free, /* `ef_free' MUST be zero! */
|
||||
ef_us,
|
||||
ef_on,
|
||||
ef_at,
|
||||
ef_cxa
|
||||
};
|
||||
|
||||
struct exit_function
|
||||
{
|
||||
enum { ef_free, ef_us, ef_on, ef_at } flavor; /* `ef_free' MUST be zero! */
|
||||
/* `flavour' should be of type of the `enum' above but since we need
|
||||
this element in an atomic operation we have to use `long int'. */
|
||||
long int flavor;
|
||||
union
|
||||
{
|
||||
void (*at) (void);
|
||||
@@ -30,6 +42,12 @@ struct exit_function
|
||||
void (*fn) (int status, void *arg);
|
||||
void *arg;
|
||||
} on;
|
||||
struct
|
||||
{
|
||||
void (*fn) (void *arg);
|
||||
void *arg;
|
||||
void *dso_handle;
|
||||
} cxa;
|
||||
} func;
|
||||
};
|
||||
struct exit_function_list
|
||||
|
Reference in New Issue
Block a user