aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux')
-rw-r--r--sysdeps/unix/sysv/linux/check_pf.c3
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutent.c1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutid.c1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/getutline.c1
-rw-r--r--sysdeps/unix/sysv/linux/set-freeres-os.h24
-rw-r--r--sysdeps/unix/sysv/linux/ttyname.c8
6 files changed, 31 insertions, 7 deletions
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. */