diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-08-21 05:31:02 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-08-21 05:31:19 -0700 |
commit | 1dbbb1ec7af9026bbdc6dd265525de0c3958406c (patch) | |
tree | 21aa5ee4232f9e0c8a0f45f7b8476711fce828e7 /nss/nsswitch.c | |
parent | 2585d7b839559e665d5723734862fbe62264b25d (diff) | |
download | glibc-1dbbb1ec7af9026bbdc6dd265525de0c3958406c.tar.gz glibc-1dbbb1ec7af9026bbdc6dd265525de0c3958406c.tar.xz glibc-1dbbb1ec7af9026bbdc6dd265525de0c3958406c.zip |
Mark internal nss symbols with attribute_hidden [BZ #18822]
Mark internal nss symbols with attribute_hidden to allow direct access within libc.so and libc.a without using GOT nor PLT. Tested on x86-64 with and without --disable-nscd. [BZ #18822] * grp/initgroups.c (__nss_group_database): Removed. (__nss_initgroups_database): Likewise. * nscd/gai.c (__nss_hosts_database): Likewise. * nss/XXX-lookup.c (DATABASE_NAME_SYMBOL): Likewise. * posix/tst-rfc3484-2.c (__nss_hosts_database): Likewise. * posix/tst-rfc3484-3.c (__nss_hosts_database): Likewise. * posix/tst-rfc3484.c (__nss_hosts_database): Likewise. * sysdeps/posix/getaddrinfo.c (__nss_hosts_database): Likewise. * nss/getXXent.c (INTERNAL (REENTRANT_GETNAME)): Add attribute_hidden. * nss/nsswitch.c (__nss_database_custom): Define only if USE_NSCD is defined. (__nss_configure_lookup): Use __nss_database_custom only if USE_NSCD is defined. * nss/nsswitch.h (__nss_database_custom): Declare only if USE_NSCD is defined. Add attribute_hidden. (__nss_setent): Add attribute_hidden. (__nss_endent): Likewise. (__nss_getent_r): Likewise. (__nss_getent): Likewise. (DEFINE_DATABASE): Declare __nss_##arg##_database.
Diffstat (limited to 'nss/nsswitch.c')
-rw-r--r-- | nss/nsswitch.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/nss/nsswitch.c b/nss/nsswitch.c index 8f31658523..834bef6f9c 100644 --- a/nss/nsswitch.c +++ b/nss/nsswitch.c @@ -73,8 +73,10 @@ static const struct }; #define ndatabases (sizeof (databases) / sizeof (databases[0])) +#ifdef USE_NSCD /* Flags whether custom rules for database is set. */ bool __nss_database_custom[NSS_DBSIDX_max]; +#endif __libc_lock_define_initialized (static, lock) @@ -304,7 +306,9 @@ __nss_configure_lookup (const char *dbname, const char *service_line) /* Install new rules. */ *databases[cnt].dbp = new_db; +#ifdef USE_NSCD __nss_database_custom[cnt] = true; +#endif __libc_lock_unlock (lock); |