(root)/
glibc-2.38/
include/
set-freeres.h
       1  /* Macros for internal resource Freeing Hooks.
       2     Copyright (C) 2022 Free Software Foundation, Inc.
       3     This file is part of the GNU C Library.
       4  
       5     The GNU C Library is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public
       7     License as published by the Free Software Foundation; either
       8     version 2.1 of the License, or (at your option) any later version.
       9  
      10     The GNU C Library is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with the GNU C Library; if not, see
      17     <https://www.gnu.org/licenses/>.  */
      18  
      19  #ifndef _SET_FREERES_H
      20  #define _SET_FREERES_H 1
      21  
      22  #include <shlib-compat.h>
      23  #include <printf.h>
      24  #include <time.h>
      25  #include <resolv/resolv-internal.h>
      26  
      27  /* Resource Freeing Hooks:
      28  
      29     Normally a process exits and the OS cleans up any allocated
      30     memory.  However, when tooling like mtrace or valgrind is monitoring
      31     the process we need to free all resources that are part of the
      32     process in order to provide the consistency required to track
      33     memory leaks.
      34  
      35     A single public API exists and is __libc_freeres, and this is used
      36     by applications like valgrind to free resources.
      37  
      38     Each free routines must be explicit listed below.  */
      39  
      40  /* From libc.so.  */
      41  extern void __dl_libc_freemem (void) attribute_hidden;
      42  extern void __hdestroy (void) attribute_hidden;
      43  extern void __gconv_cache_freemem (void) attribute_hidden;
      44  extern void __gconv_conf_freemem (void) attribute_hidden;
      45  extern void __gconv_db_freemem (void) attribute_hidden;
      46  extern void __gconv_dl_freemem (void) attribute_hidden;
      47  extern void __intl_freemem (void) attribute_hidden;
      48  extern void __libio_freemem (void) attribute_hidden;
      49  extern void __libc_fstab_freemem (void) attribute_hidden;
      50  extern void __nscd_gr_map_freemem (void) attribute_hidden;
      51  extern void __nscd_hst_map_freemem (void) attribute_hidden;
      52  extern void __nscd_pw_map_freemem (void) attribute_hidden;
      53  extern void __nscd_serv_map_freemem (void) attribute_hidden;
      54  extern void __nscd_group_map_freemem (void) attribute_hidden;
      55  extern void __libc_regcomp_freemem (void) attribute_hidden;
      56  extern void __libc_atfork_freemem (void) attribute_hidden;
      57  extern void __libc_resolv_conf_freemem (void) attribute_hidden;
      58  extern void __res_thread_freeres (void) attribute_hidden;
      59  extern void __libc_printf_freemem (void) attribute_hidden;
      60  extern void __libc_fmtmsg_freemem (void) attribute_hidden;
      61  extern void __libc_setenv_freemem (void) attribute_hidden;
      62  #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_31)
      63  extern void __rpc_freemem (void) attribute_hidden;
      64  extern void __rpc_thread_destroy (void) attribute_hidden;
      65  #endif
      66  extern void __libc_getaddrinfo_freemem (void) attribute_hidden;
      67  extern void __libc_tzset_freemem (void) attribute_hidden;
      68  extern void __libc_localealias_freemem (void) attribute_hidden;
      69  extern void __libc_getutent_freemem (void) attribute_hidden;
      70  extern void __libc_getutline_freemem (void) attribute_hidden;
      71  /* From nss/nss_module.c */
      72  extern void __nss_module_freeres (void) attribute_hidden;
      73  /* From nss/nss_action.c */
      74  extern void __nss_action_freeres (void) attribute_hidden;
      75  /* From nss/nss_database.c */
      76  extern void __nss_database_freeres (void) attribute_hidden;
      77  /* From libio/genops.c */
      78  extern int _IO_cleanup (void) attribute_hidden;;
      79  /* From dlfcn/dlerror.c */
      80  extern void __libc_dlerror_result_free (void) attribute_hidden;
      81  
      82  /* From either libc.so or libpthread.so  */
      83  extern void __libpthread_freeres (void) attribute_hidden;
      84  /* From either libc.so or libanl.so  */
      85  #if PTHREAD_IN_LIBC
      86  extern void __gai_freemem (void) attribute_hidden;
      87  /* From either libc.so or librt.so  */
      88  extern void __aio_freemem (void) attribute_hidden;
      89  #endif
      90  
      91  /* From libc.so  */
      92  extern char * __libc_fgetgrent_freemem_ptr attribute_hidden;
      93  extern char * __libc_fgetsgent_freeres_ptr attribute_hidden;
      94  extern char * __libc_getnetgrent_freemem_ptr attribute_hidden;
      95  extern char * __libc_rcmd_freemem_ptr attribute_hidden;
      96  extern char * __libc_rexec_freemem_ptr attribute_hidden;
      97  extern void * __libc_mntent_freemem_ptr attribute_hidden;
      98  extern char * __libc_fgetpwent_freemem_ptr attribute_hidden;
      99  extern struct netaddr * __libc_resolv_res_hconf_freemem_ptr attribute_hidden;
     100  extern char * __libc_fgetspent_freemem_ptr attribute_hidden;
     101  extern __time64_t * __libc_tzfile_freemem_ptr attribute_hidden;
     102  extern char * __libc_getnameinfo_freemem_ptr attribute_hidden;
     103  extern struct utmp * __libc_getutent_freemem_ptr attribute_hidden;
     104  extern struct utmp * __libc_getutid_freemem_ptr attribute_hidden;
     105  extern struct utmp * __libc_getutline_freemem_ptr attribute_hidden;
     106  extern printf_arginfo_size_function ** __libc_reg_printf_freemem_ptr
     107      attribute_hidden;
     108  extern printf_va_arg_function ** __libc_reg_type_freemem_ptr
     109      attribute_hidden;
     110  /* From nss/getXXbyYY.c  */
     111  extern char * __libc_getgrgid_freemem_ptr attribute_hidden;
     112  extern char * __libc_getgrnam_freemem_ptr attribute_hidden;
     113  extern char * __libc_getpwnam_freemem_ptr attribute_hidden;
     114  extern char * __libc_getpwuid_freemem_ptr attribute_hidden;
     115  extern char * __libc_getspnam_freemem_ptr attribute_hidden;
     116  extern char * __libc_getaliasbyname_freemem_ptr attribute_hidden;
     117  extern char * __libc_gethostbyaddr_freemem_ptr attribute_hidden;
     118  extern char * __libc_gethostbyname_freemem_ptr attribute_hidden;
     119  extern char * __libc_gethostbyname2_freemem_ptr attribute_hidden;
     120  extern char * __libc_getnetbyaddr_freemem_ptr attribute_hidden;
     121  extern char * __libc_getnetbyname_freemem_ptr attribute_hidden;
     122  extern char * __libc_getprotobynumber_freemem_ptr attribute_hidden;
     123  extern char * __libc_getprotobyname_freemem_ptr attribute_hidden;
     124  extern char * __libc_getrpcbyname_freemem_ptr attribute_hidden;
     125  extern char * __libc_getrpcbynumber_freemem_ptr attribute_hidden;
     126  extern char * __libc_getservbyname_freemem_ptr attribute_hidden;
     127  extern char * __libc_getservbyport_freemem_ptr attribute_hidden;
     128  /* From nss/getXXent.c */
     129  extern char * __libc_getgrent_freemem_ptr attribute_hidden;
     130  extern char * __libc_getpwent_freemem_ptr attribute_hidden;
     131  extern char * __libc_getspent_freemem_ptr attribute_hidden;
     132  extern char * __libc_getaliasent_freemem_ptr attribute_hidden;
     133  extern char * __libc_gethostent_freemem_ptr attribute_hidden;
     134  extern char * __libc_getnetent_freemem_ptr attribute_hidden;
     135  extern char * __libc_getprotoent_freemem_ptr attribute_hidden;
     136  extern char * __libc_getrpcent_freemem_ptr attribute_hidden;
     137  extern char * __libc_getservent_freemem_ptr attribute_hidden;
     138  /* From misc/efgcvt-template.c  */
     139  extern char * __libc_efgcvt_freemem_ptr attribute_hidden;
     140  extern char * __libc_qefgcvt_freemem_ptr attribute_hidden;
     141  
     142  #endif