fgetws implementation.
[kopensolaris-gnu/glibc.git] / elf / dl-fini.c
index 5af43d3..4b578f8 100644 (file)
@@ -1,5 +1,5 @@
 /* Call the termination functions of loaded shared objects.
-   Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1998 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
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <link.h>
+#include <elf/ldsodefs.h>
 
 void
+internal_function
 _dl_fini (void)
 {
   struct link_map *l;
@@ -29,7 +30,15 @@ _dl_fini (void)
       {
        if (l->l_info[DT_FINI] &&
            !(l->l_name[0] == '\0' && l->l_type == lt_executable))
-         (*(void (*) (void)) (l->l_addr + l->l_info[DT_FINI]->d_un.d_ptr)) ();
+         {
+           /* When debugging print a message first.  */
+           if (_dl_debug_impcalls)
+             _dl_debug_message (1, "\ncalling fini: ",
+                                l->l_name[0] ? l->l_name : _dl_argv[0],
+                                "\n\n", NULL);
+
+           (*(void (*) (void)) (l->l_addr + l->l_info[DT_FINI]->d_un.d_ptr)) ();
+         }
        /* Make sure nothing happens if we are called twice.  */
        l->l_init_called = 0;
       }