diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/generic/set-freeres-fp.h | 19 | ||||
-rw-r--r-- | sysdeps/generic/set-freeres-os.h | 19 | ||||
-rw-r--r-- | sysdeps/generic/set-freeres-system.h | 27 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm-compat/ieee128-qefgcvt.c | 1 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm-compat/set-freeres-fp.h | 22 | ||||
-rw-r--r-- | sysdeps/mach/hurd/bits/errno.h | 1 | ||||
-rw-r--r-- | sysdeps/posix/getaddrinfo.c | 5 | ||||
-rw-r--r-- | sysdeps/posix/ttyname.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/check_pf.c | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-32/getutent.c | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-32/getutid.c | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-32/getutline.c | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/set-freeres-os.h | 24 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ttyname.c | 8 |
14 files changed, 125 insertions, 11 deletions
diff --git a/sysdeps/generic/set-freeres-fp.h b/sysdeps/generic/set-freeres-fp.h new file mode 100644 index 0000000000..f73ac747ad --- /dev/null +++ b/sysdeps/generic/set-freeres-fp.h @@ -0,0 +1,19 @@ +/* System specific resource deallocation. Generic version. + Copyright (C) 2022 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#define call_freeres_fp_funcs diff --git a/sysdeps/generic/set-freeres-os.h b/sysdeps/generic/set-freeres-os.h new file mode 100644 index 0000000000..6b17c8307a --- /dev/null +++ b/sysdeps/generic/set-freeres-os.h @@ -0,0 +1,19 @@ +/* System specific resource deallocation. Generic version. + Copyright (C) 2020-2022 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#define call_freeres_os_funcs diff --git a/sysdeps/generic/set-freeres-system.h b/sysdeps/generic/set-freeres-system.h new file mode 100644 index 0000000000..88701a657f --- /dev/null +++ b/sysdeps/generic/set-freeres-system.h @@ -0,0 +1,27 @@ +/* System specific resource deallocation. Generic version. + Copyright (C) 2022 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +/* Each system may define weak functions to free any resource allocated with + malloc to avoid interfere with mtrace. */ + +#include <set-freeres-os.h> +#include <set-freeres-fp.h> + +#define call_freeres_system_funcs \ + call_freeres_os_funcs; \ + call_freeres_fp_funcs diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-qefgcvt.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-qefgcvt.c index e56e01ab2d..18a881d4d0 100644 --- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-qefgcvt.c +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-qefgcvt.c @@ -42,6 +42,7 @@ typeof (qfcvt_r) ___qfcvtieee128_r; #define __GCVT ___qgcvtieee128 #define __ECVT_R ___qecvtieee128_r #define __FCVT_R ___qfcvtieee128_r +#define __EFGCVT_FREEMEM_PTR __libc_efgcvtieee128_freemem_ptr #include <efgcvt-ldbl-macros.h> #include <efgcvt-template.c> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/set-freeres-fp.h b/sysdeps/ieee754/ldbl-128ibm-compat/set-freeres-fp.h new file mode 100644 index 0000000000..3f6e17612a --- /dev/null +++ b/sysdeps/ieee754/ldbl-128ibm-compat/set-freeres-fp.h @@ -0,0 +1,22 @@ +/* System specific resource deallocation. IBM long double 128 version. + Copyright (C) 2022 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +extern char * __libc_efgcvtieee128_freemem_ptr attribute_hidden; + +#define call_freeres_fp_funcs \ + call_free_static_weak (__libc_efgcvtieee128_freemem_ptr) diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h index 90c8897739..0d935e724a 100644 --- a/sysdeps/mach/hurd/bits/errno.h +++ b/sysdeps/mach/hurd/bits/errno.h @@ -9,7 +9,6 @@ mach/boolean.h mach/i386/boolean.h mach/i386/vm_types.h - mach/i386/stdint.h mach/mig_errors.h device/device_types.h mach/std_types.h diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c index fd22dc4fcb..0356b622be 100644 --- a/sysdeps/posix/getaddrinfo.c +++ b/sysdeps/posix/getaddrinfo.c @@ -1761,7 +1761,8 @@ check_gaiconf_mtime (const struct __stat64_t64 *st) #endif -libc_freeres_fn(fini) +void +__libc_getaddrinfo_freemem (void) { if (labels != default_labels) { @@ -2233,7 +2234,7 @@ no_file: /* If we previously read the file but it is gone now, free the old data and use the builtin one. Leave the reload flag alone. */ - fini (); + __libc_getaddrinfo_freemem (); } diff --git a/sysdeps/posix/ttyname.c b/sysdeps/posix/ttyname.c index 2e19aff758..a5805cd662 100644 --- a/sysdeps/posix/ttyname.c +++ b/sysdeps/posix/ttyname.c @@ -24,6 +24,7 @@ #include <unistd.h> #include <string.h> #include <stdlib.h> +#include <set-freeres.h> char *__ttyname; @@ -31,7 +32,8 @@ static char *getttyname (int fd, dev_t mydev, ino_t myino, int save, int *dostat); -libc_freeres_ptr (static char *getttyname_name); +static char *getttyname_name; +weak_alias (getttyname_name, __ttyname_freemem_ptr) static char * getttyname (int fd, dev_t mydev, ino_t myino, int save, int *dostat) diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c index de207122b0..b157c5126c 100644 --- a/sysdeps/unix/sysv/linux/check_pf.c +++ b/sysdeps/unix/sysv/linux/check_pf.c @@ -362,7 +362,8 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6, } /* Free the cache if it has been allocated. */ -libc_freeres_fn (freecache) +void +__check_pf_freemem (void) { if (cache) __free_in6ai (cache->in6ai); diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c index d8188f8b5b..562495b122 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c @@ -25,6 +25,7 @@ # define weak_alias(n,a) #endif #include "login/getutent.c" +_weak_alias (buffer, __libc_getutent_freemem_ptr) #if defined SHARED default_symbol_version (__getutent, getutent, UTMP_COMPAT_BASE); diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c index cd981c72ba..ccdc25b2d6 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c @@ -25,6 +25,7 @@ # define weak_alias(n,a) #endif #include "login/getutid.c" +_weak_alias (buffer, __libc_getutid_freemem_ptr) #if defined SHARED default_symbol_version (__getutid, getutid, UTMP_COMPAT_BASE); diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c index 0b611619f1..16e8f17915 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c @@ -25,6 +25,7 @@ # define weak_alias(n,a) #endif #include "login/getutline.c" +_weak_alias (buffer, __libc_getutline_freemem_ptr) #if defined SHARED default_symbol_version (__getutline, getutline, UTMP_COMPAT_BASE); diff --git a/sysdeps/unix/sysv/linux/set-freeres-os.h b/sysdeps/unix/sysv/linux/set-freeres-os.h new file mode 100644 index 0000000000..964c9a4bfc --- /dev/null +++ b/sysdeps/unix/sysv/linux/set-freeres-os.h @@ -0,0 +1,24 @@ +/* System specific resource deallocation. Linux version. + Copyright (C) 2022 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 + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +extern void __check_pf_freemem (void) attribute_hidden; +extern char * __ttyname_freemem_ptr attribute_hidden; + +#define call_freeres_os_funcs \ + call_function_static_weak (__check_pf_freemem); \ + call_free_static_weak (__ttyname_freemem_ptr) diff --git a/sysdeps/unix/sysv/linux/ttyname.c b/sysdeps/unix/sysv/linux/ttyname.c index f3870f8ec3..406fbb30f2 100644 --- a/sysdeps/unix/sysv/linux/ttyname.c +++ b/sysdeps/unix/sysv/linux/ttyname.c @@ -19,15 +19,11 @@ #include <limits.h> #include <termios.h> #include <stdlib.h> - +#include <set-freeres.h> #include "ttyname.h" static char *ttyname_buf = NULL; - -libc_freeres_fn (free_mem) -{ - free (ttyname_buf); -} +weak_alias (ttyname_buf, __ttyname_freemem_ptr) /* Return the pathname of the terminal FD is open on, or NULL on errors. The returned storage is good only until the next call to this function. */ |