Print this page
3849 implement __cxa_atexit/__cxa_finalize


 815                 (sizeof (mutex_t) + sizeof (void *) + sizeof (size_t))];
 816 } bucket_t;
 817 
 818 #ifdef _SYSCALL32
 819 typedef struct {
 820         mutex_t         bucket_lock;
 821         caddr32_t       free_list;
 822         size32_t        chunks;
 823         char    pad64[64 -      /* pad out to 64 bytes */
 824                 (sizeof (mutex_t) + sizeof (caddr32_t) + sizeof (size32_t))];
 825 } bucket32_t;
 826 #endif  /* _SYSCALL32 */
 827 
 828 #define NBUCKETS        10      /* sizes ranging from 64 to 32768 */
 829 
 830 
 831 /*
 832  * atexit() data structures.
 833  * See port/gen/atexit.c for details.
 834  */
 835 typedef void (*_exithdlr_func_t) (void);
 836 
 837 typedef struct _exthdlr {
 838         struct _exthdlr         *next;  /* next in handler list */
 839         _exithdlr_func_t        hdlr;   /* handler itself */


 840 } _exthdlr_t;
 841 
 842 typedef struct {
 843         mutex_t         exitfns_lock;
 844         _exthdlr_t      *head;







 845         void            *exit_frame_monitor;
 846         char            exit_pad[64 -   /* pad out to 64 bytes */
 847                 (sizeof (mutex_t) + sizeof (_exthdlr_t *) + sizeof (void *))];
 848 } atexit_root_t;
 849 
 850 #ifdef _SYSCALL32
 851 typedef struct {
 852         mutex_t         exitfns_lock;
 853         caddr32_t       head;
 854         caddr32_t       exit_frame_monitor;
 855         char            exit_pad[64 -   /* pad out to 64 bytes */
 856                 (sizeof (mutex_t) + sizeof (caddr32_t) + sizeof (caddr32_t))];
 857 } atexit_root32_t;
 858 #endif  /* _SYSCALL32 */
 859 
 860 
 861 /*
 862  * This is data that is global to all link maps (uberdata, aka super-global).
 863  * Note: When changing this, please be sure to keep the 32-bit variant of
 864  * this in sync.  (see uberdata32_t below)




 815                 (sizeof (mutex_t) + sizeof (void *) + sizeof (size_t))];
 816 } bucket_t;
 817 
 818 #ifdef _SYSCALL32
 819 typedef struct {
 820         mutex_t         bucket_lock;
 821         caddr32_t       free_list;
 822         size32_t        chunks;
 823         char    pad64[64 -      /* pad out to 64 bytes */
 824                 (sizeof (mutex_t) + sizeof (caddr32_t) + sizeof (size32_t))];
 825 } bucket32_t;
 826 #endif  /* _SYSCALL32 */
 827 
 828 #define NBUCKETS        10      /* sizes ranging from 64 to 32768 */
 829 
 830 
 831 /*
 832  * atexit() data structures.
 833  * See port/gen/atexit.c for details.
 834  */
 835 typedef void (*_exithdlr_func_t) (void*);
 836 
 837 typedef struct _exthdlr {
 838         struct _exthdlr         *next;  /* next in handler list */
 839         _exithdlr_func_t        hdlr;   /* handler itself */
 840         void                    *arg;   /* argument to handler */
 841         void                    *dso;   /* DSO associated with handler */
 842 } _exthdlr_t;
 843 
 844 typedef struct {
 845         mutex_t         exitfns_lock;
 846         _exthdlr_t      *head;
 847         /*
 848          * exit_frame_monitor is part of a private contract between libc and
 849          * the Sun C++ runtime.
 850          *
 851          * It should be NULL until exit() is called, and thereafter hold the
 852          * frame pointer of the function implementing our exit processing.
 853          */
 854         void            *exit_frame_monitor;
 855         char            exit_pad[64 -   /* pad out to 64 bytes */
 856                 (sizeof (mutex_t) + sizeof (_exthdlr_t *) + sizeof (void *))];
 857 } atexit_root_t;
 858 
 859 #ifdef _SYSCALL32
 860 typedef struct {
 861         mutex_t         exitfns_lock;
 862         caddr32_t       head;
 863         caddr32_t       exit_frame_monitor;
 864         char            exit_pad[64 -   /* pad out to 64 bytes */
 865                 (sizeof (mutex_t) + sizeof (caddr32_t) + sizeof (caddr32_t))];
 866 } atexit_root32_t;
 867 #endif  /* _SYSCALL32 */
 868 
 869 
 870 /*
 871  * This is data that is global to all link maps (uberdata, aka super-global).
 872  * Note: When changing this, please be sure to keep the 32-bit variant of
 873  * this in sync.  (see uberdata32_t below)