diff options
Diffstat (limited to 'malloc/thread-freeres.c')
-rw-r--r-- | malloc/thread-freeres.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/malloc/thread-freeres.c b/malloc/thread-freeres.c index 53ce41b..8902c84 100644 --- a/malloc/thread-freeres.c +++ b/malloc/thread-freeres.c @@ -16,16 +16,24 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <stdlib.h> #include <libc-internal.h> -#include <set-hooks.h> +#include <malloc-internal.h> +#include <resolv/resolv-internal.h> +#include <rpc/rpc.h> +#include <string.h> -#ifdef _LIBC_REENTRANT -DEFINE_HOOK (__libc_thread_subfreeres, (void)); - -void __attribute__ ((section ("__libc_thread_freeres_fn"))) +/* Thread shutdown function. Note that this function must be called + for threads during shutdown for correctness reasons. Unlike + __libc_subfreeres, skipping calls to it is not a valid + optimization. */ +void __libc_thread_freeres (void) { - RUN_HOOK (__libc_thread_subfreeres, ()); + call_function_static_weak (__rpc_thread_destroy); + call_function_static_weak (__res_thread_freeres); + call_function_static_weak (__strerror_thread_freeres); + + /* This should come last because it shuts down malloc for this + thread and the other shutdown functions might well call free. */ + call_function_static_weak (__malloc_arena_thread_freeres); } -#endif |