about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@tilera.com>2012-10-30 14:14:33 -0400
committerChris Metcalf <cmetcalf@tilera.com>2012-10-30 14:14:33 -0400
commit017678433caae358b1782a2438b10e1ed510a8ad (patch)
treefd9915a47e3a2b0c65dd2981ea249a9f4b8ec7a8
parentd44a6f8b9995932b20a2ebbf4ca2fb1be673e49d (diff)
downloadglibc-017678433caae358b1782a2438b10e1ed510a8ad.tar.gz
glibc-017678433caae358b1782a2438b10e1ed510a8ad.tar.xz
glibc-017678433caae358b1782a2438b10e1ed510a8ad.zip
Suppress incorrect link warnings for NSS symbols
When glibc is built with --enable-static-nss, the warning that
using NSS symbols requires the nss shared objects to be present
is no longer true, as those symbols are built into libc.  Suppress
the warning for those symbols by providing a new macro
(nss_interface_function) for the NSS functions that is defined as
static_link_warning in the normal case, and empty for static NSS.
-rw-r--r--ChangeLog11
-rw-r--r--grp/initgroups.c4
-rw-r--r--nss/getXXbyYY.c2
-rw-r--r--nss/getXXbyYY_r.c2
-rw-r--r--nss/getXXent.c2
-rw-r--r--nss/getXXent_r.c6
-rw-r--r--nss/nsswitch.h8
-rw-r--r--sysdeps/posix/getaddrinfo.c2
8 files changed, 28 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 021b0cd005..e65ea2354e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2012-10-30  Chris Metcalf  <cmetcalf@tilera.com>
+
+	* nss/nsswitch.h (nss_interface_function): Provide new
+	macro for use with NSS functions.
+	* grp/initgroups.c: Use new macro.
+	* nss/getXXbyYY.c: Likewise.
+	* nss/getXXbyYY_r.c: Likewise.
+	* nss/getXXent.c: Likewise.
+	* nss/getXXent_r.c: Likewise.
+	* sysdeps/posix/getaddrinfo.c: Likewise.
+
 2012-10-30  Andreas Jaeger  <aj@suse.de>
 
 	* po/ru.po: Update Russion translation from translation project.
diff --git a/grp/initgroups.c b/grp/initgroups.c
index 62fd1fc6de..fad30a75f0 100644
--- a/grp/initgroups.c
+++ b/grp/initgroups.c
@@ -180,7 +180,7 @@ getgrouplist (const char *user, gid_t group, gid_t *groups, int *ngroups)
   return retval;
 }
 
-static_link_warning (getgrouplist)
+nss_interface_function (getgrouplist)
 
 /* Initialize the group set for the current user
    by reading the group database and using all groups
@@ -230,4 +230,4 @@ initgroups (const char *user, gid_t group)
 #endif
 }
 
-static_link_warning (initgroups)
+nss_interface_function (initgroups)
diff --git a/nss/getXXbyYY.c b/nss/getXXbyYY.c
index 336676ad55..c308a70b93 100644
--- a/nss/getXXbyYY.c
+++ b/nss/getXXbyYY.c
@@ -151,4 +151,4 @@ done:
   return result;
 }
 
-static_link_warning (FUNCTION_NAME)
+nss_interface_function (FUNCTION_NAME)
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index f296ed1f42..8b3b61b663 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -349,4 +349,4 @@ do_default_symbol_version (NEW (REENTRANT_NAME),
 			   REENTRANT_NAME, GLIBC_2_1_2);
 #endif
 
-static_link_warning (REENTRANT_NAME)
+nss_interface_function (REENTRANT_NAME)
diff --git a/nss/getXXent.c b/nss/getXXent.c
index 008851e597..152798f0c2 100644
--- a/nss/getXXent.c
+++ b/nss/getXXent.c
@@ -91,4 +91,4 @@ GETFUNC_NAME (void)
   return result;
 }
 
-static_link_warning (GETFUNC_NAME)
+nss_interface_function (GETFUNC_NAME)
diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c
index f1036058ff..6c52d27cb2 100644
--- a/nss/getXXent_r.c
+++ b/nss/getXXent_r.c
@@ -207,6 +207,6 @@ do_default_symbol_version (NEW (REENTRANT_GETNAME),
 			   REENTRANT_GETNAME, GLIBC_2_1_2);
 #endif
 
-static_link_warning (SETFUNC_NAME)
-static_link_warning (ENDFUNC_NAME)
-static_link_warning (REENTRANT_GETNAME)
+nss_interface_function (SETFUNC_NAME)
+nss_interface_function (ENDFUNC_NAME)
+nss_interface_function (REENTRANT_GETNAME)
diff --git a/nss/nsswitch.h b/nss/nsswitch.h
index 047a9e5858..0cf67ff025 100644
--- a/nss/nsswitch.h
+++ b/nss/nsswitch.h
@@ -107,6 +107,14 @@ enum
 /* Flags whether custom rules for database is set.  */
 extern bool __nss_database_custom[NSS_DBSIDX_max];
 
+/* Warning for NSS functions, which don't require dlopen if glibc
+   was built with --enable-static-nss.  */
+#ifdef DO_STATIC_NSS
+# define nss_interface_function(name)
+#else
+# define nss_interface_function(name) static_link_warning (name)
+#endif
+
 
 /* Interface functions for NSS.  */
 
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 672571ef23..3cc244b7fd 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -2672,7 +2672,7 @@ getaddrinfo (const char *name, const char *service,
 }
 libc_hidden_def (getaddrinfo)
 
-static_link_warning (getaddrinfo)
+nss_interface_function (getaddrinfo)
 
 void
 freeaddrinfo (struct addrinfo *ai)