2017-10-11 Andreas Schwab * nis/Makefile (aux): Remove. * nscd/Makefile (aux): Add nscd_hash. (nscd-modules): Likewise. ($(objpfx)nscd): Don't depend on libnsl. * nscd/nscd_hash.c: New file. * nscd/nscd_hash.h: Likewise. * nscd/cache.c: Include "nscd_hash.h" instead of . (cache_search, cache_add): Use __nscd_hash instead of __nis_hash. * nscd/nscd_helper.c: Include and "nscd_hash.h" instead of . (__nscd_cache_search): Use __nscd_hash instead of __nis_hash. Index: glibc-2.26/nis/Makefile =================================================================== --- glibc-2.26.orig/nis/Makefile +++ glibc-2.26/nis/Makefile @@ -22,8 +22,6 @@ subdir := nis include ../Makeconfig -aux := nis_hash - ifeq ($(build-obsolete-nsl),yes) headers := $(wildcard rpcsvc/*.[hx]) Index: glibc-2.26/nscd/Makefile =================================================================== --- glibc-2.26.orig/nscd/Makefile +++ glibc-2.26/nscd/Makefile @@ -25,7 +25,7 @@ include ../Makeconfig ifneq ($(use-nscd),no) routines := nscd_getpw_r nscd_getgr_r nscd_gethst_r nscd_getai \ nscd_initgroups nscd_getserv_r nscd_netgroup -aux := nscd_helper +aux := nscd_helper nscd_hash endif # To find xmalloc.c @@ -36,7 +36,7 @@ nscd-modules := nscd connections pwdcach getsrvbynm_r getsrvbypt_r servicescache \ dbg_log nscd_conf nscd_stat cache mem nscd_setup_thread \ xmalloc xstrdup aicache initgrcache gai res_hconf \ - netgroupcache + netgroupcache nscd_hash ifeq ($(build-nscd)$(have-thread-library),yesyes) @@ -97,7 +97,7 @@ include $(patsubst %,$(..)libof-iterator $(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o) ifeq ($(build-shared),yes) -$(objpfx)nscd: $(shared-thread-library) $(common-objpfx)nis/libnsl.so +$(objpfx)nscd: $(shared-thread-library) else -$(objpfx)nscd: $(static-thread-library) $(common-objpfx)nis/libnsl.a +$(objpfx)nscd: $(static-thread-library) endif Index: glibc-2.26/nscd/cache.c =================================================================== --- glibc-2.26.orig/nscd/cache.c +++ glibc-2.26/nscd/cache.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -33,6 +32,7 @@ #include "nscd.h" #include "dbg_log.h" +#include "nscd_hash.h" /* Wrapper functions with error checking for standard functions. */ @@ -74,7 +74,7 @@ struct datahead * cache_search (request_type type, const void *key, size_t len, struct database_dyn *table, uid_t owner) { - unsigned long int hash = __nis_hash (key, len) % table->head->module; + unsigned long int hash = __nscd_hash (key, len) % table->head->module; unsigned long int nsearched = 0; struct datahead *result = NULL; @@ -153,7 +153,7 @@ cache_add (int type, const void *key, si first ? _(" (first)") : ""); } - unsigned long int hash = __nis_hash (key, len) % table->head->module; + unsigned long int hash = __nscd_hash (key, len) % table->head->module; struct hashentry *newp; newp = mempool_alloc (table, sizeof (struct hashentry), 0); Index: glibc-2.26/nscd/nscd_hash.c =================================================================== --- /dev/null +++ glibc-2.26/nscd/nscd_hash.c @@ -0,0 +1,19 @@ +/* Copyright (C) 2017 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 + . */ + +#define __nis_hash __nscd_hash +#include Index: glibc-2.26/nscd/nscd_hash.h =================================================================== --- /dev/null +++ glibc-2.26/nscd/nscd_hash.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2017 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 + . */ + +#include + +extern uint32_t __nscd_hash (const void *__keyarg, size_t __len) + attribute_hidden; Index: glibc-2.26/nscd/nscd_helper.c =================================================================== --- glibc-2.26.orig/nscd/nscd_helper.c +++ glibc-2.26/nscd/nscd_helper.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -34,10 +35,10 @@ #include #include #include -#include #include #include "nscd-client.h" +#include "nscd_hash.h" /* Extra time we wait if the socket is still receiving data. This @@ -451,7 +452,7 @@ struct datahead * __nscd_cache_search (request_type type, const char *key, size_t keylen, const struct mapped_database *mapped, size_t datalen) { - unsigned long int hash = __nis_hash (key, keylen) % mapped->head->module; + unsigned long int hash = __nscd_hash (key, keylen) % mapped->head->module; size_t datasize = mapped->datasize; ref_t trail = mapped->head->array[hash];