aboutsummaryrefslogtreecommitdiff
path: root/nss
diff options
context:
space:
mode:
Diffstat (limited to 'nss')
-rw-r--r--nss/getXXbyYY.c7
-rw-r--r--nss/getXXent.c7
-rw-r--r--nss/nss_action.c2
-rw-r--r--nss/nss_action.h3
-rw-r--r--nss/nss_database.c2
-rw-r--r--nss/nss_database.h3
-rw-r--r--nss/nss_module.c2
-rw-r--r--nss/nss_module.h3
8 files changed, 15 insertions, 14 deletions
diff --git a/nss/getXXbyYY.c b/nss/getXXbyYY.c
index 0c473a4..efb17f0 100644
--- a/nss/getXXbyYY.c
+++ b/nss/getXXbyYY.c
@@ -20,6 +20,7 @@
#include <libc-lock.h>
#include <stdlib.h>
#include <resolv.h>
+#include <set-freeres.h>
#include "nsswitch.h"
@@ -58,6 +59,9 @@
#define APPEND_R1(name) name##_r
#define INTERNAL(name) INTERNAL1 (name)
#define INTERNAL1(name) __##name
+#define APPEND_FREEMEM_NAME1(name) __libc_##name##_freemem_ptr
+#define APPEND_FREEMEM_NAME(name) APPEND_FREEMEM_NAME1(name)
+#define FREEMEM_NAME APPEND_FREEMEM_NAME (FUNCTION_NAME)
/* Sometimes we need to store error codes in the `h_errno' variable. */
#ifdef NEED_H_ERRNO
@@ -86,8 +90,9 @@ extern int INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf,
__libc_lock_define_initialized (static, lock);
/* This points to the static buffer used. */
-libc_freeres_ptr (static char *buffer);
+static char *buffer;
+weak_alias (buffer, FREEMEM_NAME)
LOOKUP_TYPE *
FUNCTION_NAME (ADD_PARAMS)
diff --git a/nss/getXXent.c b/nss/getXXent.c
index 7ac8379..8acb6dc 100644
--- a/nss/getXXent.c
+++ b/nss/getXXent.c
@@ -18,6 +18,7 @@
#include <errno.h>
#include <libc-lock.h>
#include <stdlib.h>
+#include <set-freeres.h>
#include "nsswitch.h"
@@ -43,6 +44,9 @@
#define APPEND_R1(name) name##_r
#define INTERNAL(name) INTERNAL1 (name)
#define INTERNAL1(name) __##name
+#define APPEND_FREEMEM_NAME1(name) __libc_##name##_freemem_ptr
+#define APPEND_FREEMEM_NAME(name) APPEND_FREEMEM_NAME1(name)
+#define FREEMEM_NAME APPEND_FREEMEM_NAME (GETFUNC_NAME)
/* Sometimes we need to store error codes in the `h_errno' variable. */
#ifdef NEED_H_ERRNO
@@ -62,8 +66,9 @@ extern int INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer,
__libc_lock_define_initialized (static, lock);
/* This points to the static buffer used. */
-libc_freeres_ptr (static char *buffer);
+static char *buffer;
+weak_alias (buffer, FREEMEM_NAME)
LOOKUP_TYPE *
GETFUNC_NAME (void)
diff --git a/nss/nss_action.c b/nss/nss_action.c
index 8ca7254..447c219 100644
--- a/nss/nss_action.c
+++ b/nss/nss_action.c
@@ -102,7 +102,7 @@ __nss_action_allocate (struct nss_action *actions, size_t count)
return result;
}
-void __libc_freeres_fn_section
+void
__nss_action_freeres (void)
{
struct nss_action_list_wrapper *current = nss_actions;
diff --git a/nss/nss_action.h b/nss/nss_action.h
index edd84b8..7ab2415 100644
--- a/nss/nss_action.h
+++ b/nss/nss_action.h
@@ -101,8 +101,5 @@ nss_action_list __nss_action_allocate (struct nss_action *actions,
EINVAL means that LINE is syntactically invalid. */
nss_action_list __nss_action_parse (const char *line);
-/* Called from __libc_freeres. */
-void __nss_action_freeres (void) attribute_hidden;
-
#endif /* _NSS_ACTION_H */
diff --git a/nss/nss_database.c b/nss/nss_database.c
index 3350346..2edcab4 100644
--- a/nss/nss_database.c
+++ b/nss/nss_database.c
@@ -495,7 +495,7 @@ __nss_database_get_noreload (enum nss_database db)
return result;
}
-void __libc_freeres_fn_section
+void
__nss_database_freeres (void)
{
free (global_database_state);
diff --git a/nss/nss_database.h b/nss/nss_database.h
index 2462030..1a17261 100644
--- a/nss/nss_database.h
+++ b/nss/nss_database.h
@@ -64,9 +64,6 @@ libc_hidden_proto (__nss_database_get)
nss_action_list __nss_database_get_noreload (enum nss_database db)
attribute_hidden;
-/* Called from __libc_freeres. */
-void __nss_database_freeres (void) attribute_hidden;
-
/* Internal type. Exposed only for fork handling purposes. */
struct nss_database_data
{
diff --git a/nss/nss_module.c b/nss/nss_module.c
index 8815fef..487e513 100644
--- a/nss/nss_module.c
+++ b/nss/nss_module.c
@@ -416,7 +416,7 @@ __nss_module_disable_loading (void)
__libc_lock_unlock (nss_module_list_lock);
}
-void __libc_freeres_fn_section
+void
__nss_module_freeres (void)
{
struct nss_module *current = nss_module_list;
diff --git a/nss/nss_module.h b/nss/nss_module.h
index eda0ebc..fb30fb8 100644
--- a/nss/nss_module.h
+++ b/nss/nss_module.h
@@ -100,7 +100,4 @@ void *__nss_module_get_function (struct nss_module *module, const char *name)
/* Block attempts to dlopen any module we haven't already opened. */
void __nss_module_disable_loading (void);
-/* Called from __libc_freeres. */
-void __nss_module_freeres (void) attribute_hidden;
-
#endif /* NSS_MODULE_H */