Hide internal __nis_hash function [BZ #18822]
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 2 Oct 2017 00:49:47 +0000 (17:49 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 2 Oct 2017 00:49:59 +0000 (17:49 -0700)
Hide internal __nis_hash function to allow direct access within libc.so
and libc.a without using GOT nor PLT.

[BZ #18822]
* nscd/nscd_helper.c (__nis_hash): New prototype.

ChangeLog
nscd/nscd_helper.c

index dc58bf19605b85642fd388ffe5725d3009ad0078..0563a751d508a1c31a4aafabed4a70362d4a3e8a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-01  H.J. Lu  <hongjiu.lu@intel.com>
+
+       [BZ #18822]
+       * nscd/nscd_helper.c (__nis_hash): New prototype.
+
 2017-10-01  H.J. Lu  <hongjiu.lu@intel.com>
 
        [BZ #18822]
index a225623f9273832fd66e74760c04f8f89f2ac40e..56e6d1421fd5d88c8c2e51f45286167df8753971 100644 (file)
@@ -443,6 +443,11 @@ __nscd_get_map_ref (request_type type, const char *name,
 #define MINIMUM_HASHENTRY_SIZE \
   (offsetof (struct hashentry, dellist) + sizeof (int32_t))
 
+/* __nis_hash is defined in nis_hash.c which is included both libnsl
+   and libc.  Since the one in libnsl is exported and the one in libc
+   is hidden, __nis_hash is marked as hidden where it is referenced,
+   not where it is defined.  */
+extern __typeof (__nis_hash) __nis_hash attribute_hidden;
 
 /* Don't return const struct datahead *, as eventhough the record
    is normally constant, it can change arbitrarily during nscd