about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2015-02-06 10:43:19 -0800
committerRoland McGrath <roland@hack.frob.com>2015-02-06 10:43:19 -0800
commita1309c2bd0e7469158dfa5dec3334054fad2ed03 (patch)
tree19d19995e9ec59f3ecf94023aef485f7fc995c32
parentac9e0e5e401fa634667a8284a0db0ca886bf816b (diff)
downloadglibc-a1309c2bd0e7469158dfa5dec3334054fad2ed03.tar.gz
glibc-a1309c2bd0e7469158dfa5dec3334054fad2ed03.tar.xz
glibc-a1309c2bd0e7469158dfa5dec3334054fad2ed03.zip
Exclude rpcent functions and NSS backends for rpc, key when excluding sunrpc.
-rw-r--r--ChangeLog28
-rw-r--r--inet/Makefile2
-rw-r--r--inet/Versions13
-rw-r--r--nss/Makefile12
-rw-r--r--nss/getent.c4
-rw-r--r--sunrpc/Makefile2
-rw-r--r--sunrpc/Versions9
-rw-r--r--sunrpc/getrpcbyname.c (renamed from inet/getrpcbyname.c)0
-rw-r--r--sunrpc/getrpcbyname_r.c (renamed from inet/getrpcbyname_r.c)0
-rw-r--r--sunrpc/getrpcbynumber.c (renamed from inet/getrpcbynumber.c)0
-rw-r--r--sunrpc/getrpcbynumber_r.c (renamed from inet/getrpcbynumber_r.c)0
-rw-r--r--sunrpc/getrpcent.c (renamed from inet/getrpcent.c)0
-rw-r--r--sunrpc/getrpcent_r.c (renamed from inet/getrpcent_r.c)0
13 files changed, 58 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 22b9d98018..c68c02ccaf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,33 @@
 2015-02-06  Roland McGrath  <roland@hack.frob.com>
 
+	* inet/Versions (libc: GLIBC_2.0): Move getrpcbyname, getrpcbyname_r,
+	getrpcbynumber, getrpcbynumber_r, getrpcent, getrpcent_r, endrpcent,
+	setrpcent, and getrpcport to ...
+	* sunrpc/Versions (libc: GLIBC_2.0): ... here.
+	* inet/Versions (libc: GLIBC_2.1.2): Move getrpcbyname_r,
+	getrpcbynumber_r, and getrpcent_r to ...
+	* sunrpc/Versions (libc: GLIBC_2.1.2): ... this new set.
+	* inet/getrpcbyname.c: Moved ...
+	* sunrpc/getrpcbyname.c: ... here.
+	* inet/getrpcbyname_r.c: Moved ...
+	* sunrpc/getrpcbyname_r.c: ... here.
+	* inet/getrpcbynumber.c: Moved ...
+	* sunrpc/getrpcbynumber.c: ... here.
+	* inet/getrpcbynumber_r.c: Moved ...
+	* sunrpc/getrpcbynumber_r.c: ... here.
+	* inet/getrpcent.c: Moved ...
+	* sunrpc/getrpcent.c: ... here.
+	* inet/getrpcent_r.c: Moved ...
+	* sunrpc/getrpcent_r.c: ... here.
+	* inet/Makefile (routines): Move those to ...
+	* sunrpc/Makefile (routines): ... here.
+	* nss/Makefile (databases): Add key and rpc only if sunrpc appears in
+	the $(subdirs) list.
+	(CPPFLAGS-getent.c): New variable.  Pass -D option to set HAVE_SUNRPC
+	to 0 or 1, indicating whether sunrpc appears in the $(subdirs) list.
+	* nss/getent.c (print_rpc, rpc_keys): Conditionalize on [HAVE_SUNRPC].
+	(databases): Conditionalize rpc entry on [HAVE_SUNRPC].
+
 	* elf/Makefile (routines): Include $(all-dl-routines), not just
 	$(dl-routines).
 	(rtld-routines): Likewise.  Use = rather than :=.
diff --git a/inet/Makefile b/inet/Makefile
index 267f0603c1..f1d871ff11 100644
--- a/inet/Makefile
+++ b/inet/Makefile
@@ -37,8 +37,6 @@ routines := htonl htons		\
 	    getproto getproto_r getprtent getprtent_r getprtname getprtname_r \
 	    getsrvbynm getsrvbynm_r getsrvbypt getsrvbypt_r getservent \
 	    getservent_r	\
-	    getrpcent getrpcbyname getrpcbynumber \
-	    getrpcent_r getrpcbyname_r getrpcbynumber_r \
 	    ether_aton ether_aton_r ether_hton ether_line \
 	    ether_ntoa ether_ntoa_r ether_ntoh \
 	    rcmd rexec ruserpass \
diff --git a/inet/Versions b/inet/Versions
index 06507199a9..56eb274634 100644
--- a/inet/Versions
+++ b/inet/Versions
@@ -7,8 +7,7 @@ libc {
     rexecoptions;
 
     # e*
-    endaliasent; endhostent; endnetent; endnetgrent; endprotoent; endrpcent;
-    endservent;
+    endaliasent; endhostent; endnetent; endnetgrent; endprotoent; endservent;
 
     # e*
     ether_aton; ether_aton_r; ether_hostton; ether_line; ether_ntoa;
@@ -21,9 +20,8 @@ libc {
     gethostent_r; getnetbyaddr; getnetbyaddr_r; getnetbyname;
     getnetbyname_r; getnetent; getnetent_r; getnetgrent; getnetgrent_r;
     getprotobyname; getprotobyname_r; getprotobynumber;
-    getprotobynumber_r; getprotoent; getprotoent_r; getrpcbyname;
-    getrpcbyname_r; getrpcbynumber; getrpcbynumber_r; getrpcent; getrpcent_r;
-    getrpcport; getservbyname; getservbyname_r; getservbyport;
+    getprotobynumber_r; getprotoent; getprotoent_r;
+    getservbyname; getservbyname_r; getservbyport;
     getservbyport_r; getservent; getservent_r;
 
     # h*
@@ -41,7 +39,7 @@ libc {
     rcmd; rexec; rresvport; ruserok; ruserpass;
 
     # s*
-    setaliasent; setnetent; setnetgrent; setprotoent; setrpcent; setservent;
+    setaliasent; setnetent; setnetgrent; setprotoent; setservent;
   }
   GLIBC_2.1 {
     # variables in normal name space
@@ -55,8 +53,7 @@ libc {
     getaliasbyname_r; getaliasent_r; gethostbyaddr_r; gethostbyname2_r;
     gethostbyname_r; gethostent_r; getnetbyaddr_r; getnetbyname_r;
     getnetent_r; getnetgrent_r; getprotobyname_r; getprotobynumber_r;
-    getprotoent_r; getrpcbyname_r; getrpcbynumber_r; getrpcent_r;
-    getservbyname_r;
+    getprotoent_r; getservbyname_r;
   }
   GLIBC_2.2 {
     # i*
diff --git a/nss/Makefile b/nss/Makefile
index d419baf4fd..d75dad2ee6 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -31,8 +31,16 @@ routines		= nsswitch getnssent getnssent_r digits_dots \
 # These are the databases that go through nss dispatch.
 # Caution: if you add a database here, you must add its real name
 # in databases.def, too.
-databases		= proto service hosts network grp pwd rpc ethers \
-			  spwd netgrp key alias sgrp
+databases		= proto service hosts network grp pwd ethers \
+			  spwd netgrp alias sgrp
+
+ifneq (,$(filter sunrpc,$(subdirs)))
+databases		+= key rpc
+have-sunrpc		:= 1
+else
+have-sunrpc		:= 0
+endif
+CPPFLAGS-getent.c	= -DHAVE_SUNRPC=$(have-sunrpc)
 
 others                  := getent makedb
 install-bin             := getent makedb
diff --git a/nss/getent.c b/nss/getent.c
index 901ec5e676..34df8487a9 100644
--- a/nss/getent.c
+++ b/nss/getent.c
@@ -700,6 +700,7 @@ protocols_keys (int number, char *key[])
   return result;
 }
 
+#if HAVE_SUNRPC
 /* Now is all for rpc */
 static void
 print_rpc (struct rpcent *rpc)
@@ -745,6 +746,7 @@ rpc_keys (int number, char *key[])
 
   return result;
 }
+#endif
 
 /* for services */
 static void
@@ -884,7 +886,9 @@ D(netgroup)
 D(networks)
 D(passwd)
 D(protocols)
+#if HAVE_SUNRPC
 D(rpc)
+#endif
 D(services)
 D(shadow)
 #undef D
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index b65f2f559a..c29f4a96b8 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -76,6 +76,8 @@ routines := auth_none authuxprot bindrsvprt clnt_raw clnt_simp \
 	    pmap_rmt rpc_prot rpc_common rpc_cmsg svc_auth svc_authux svc_raw \
 	    svc_simple xdr_float xdr_rec publickey authdes_prot \
 	    des_crypt des_impl des_soft key_prot openchild rtime svcauth_des \
+	    getrpcent getrpcbyname getrpcbynumber \
+	    getrpcent_r getrpcbyname_r getrpcbynumber_r \
 	    clnt_unix svc_unix create_xid $(need-export-routines)
 ifneq ($(link-obsolete-rpc),yes)
 # We only add the RPC for compatibility to libc.so.
diff --git a/sunrpc/Versions b/sunrpc/Versions
index a11dd8d36c..77bc6a4c9b 100644
--- a/sunrpc/Versions
+++ b/sunrpc/Versions
@@ -21,8 +21,13 @@ libc {
     clnt_perror; clnt_spcreateerror; clnt_sperrno; clnt_sperror;
     clntraw_create; clnttcp_create; clntudp_bufcreate; clntudp_create;
 
+    # e*
+    endrpcent;
+
     # g*
     get_myaddress; getpublickey; getsecretkey;
+    getrpcbyname; getrpcbyname_r; getrpcbynumber; getrpcbynumber_r;
+    getrpcent; getrpcent_r; getrpcport;
 
     # p*
     pmap_getmaps; pmap_getport; pmap_rmtcall; pmap_set; pmap_unset;
@@ -31,6 +36,7 @@ libc {
     registerrpc;
 
     # s*
+    setrpcent;
     svc_exit; svc_getreq; svc_getreqset; svc_register; svc_run;
     svc_sendreply; svc_unregister; svcerr_auth; svcerr_decode;
     svcerr_noproc; svcerr_noprog; svcerr_progvers; svcerr_systemerr;
@@ -106,6 +112,9 @@ libc {
     xdr_hyper; xdr_u_hyper; xdr_longlong_t; xdr_u_longlong_t;
     xdr_int64_t; xdr_uint64_t;
   }
+  GLIBC_2.1.2 {
+    getrpcbyname_r; getrpcbynumber_r; getrpcent_r;
+  }
   GLIBC_2.2 {
     svc_getreq_common; svc_getreq_poll; svc_max_pollfd; svc_pollfd;
   }
diff --git a/inet/getrpcbyname.c b/sunrpc/getrpcbyname.c
index d21abc5bc6..d21abc5bc6 100644
--- a/inet/getrpcbyname.c
+++ b/sunrpc/getrpcbyname.c
diff --git a/inet/getrpcbyname_r.c b/sunrpc/getrpcbyname_r.c
index ff43ad4801..ff43ad4801 100644
--- a/inet/getrpcbyname_r.c
+++ b/sunrpc/getrpcbyname_r.c
diff --git a/inet/getrpcbynumber.c b/sunrpc/getrpcbynumber.c
index e6930dae4a..e6930dae4a 100644
--- a/inet/getrpcbynumber.c
+++ b/sunrpc/getrpcbynumber.c
diff --git a/inet/getrpcbynumber_r.c b/sunrpc/getrpcbynumber_r.c
index f6efaf150f..f6efaf150f 100644
--- a/inet/getrpcbynumber_r.c
+++ b/sunrpc/getrpcbynumber_r.c
diff --git a/inet/getrpcent.c b/sunrpc/getrpcent.c
index e72ea8dd25..e72ea8dd25 100644
--- a/inet/getrpcent.c
+++ b/sunrpc/getrpcent.c
diff --git a/inet/getrpcent_r.c b/sunrpc/getrpcent_r.c
index 9c1a65c985..9c1a65c985 100644
--- a/inet/getrpcent_r.c
+++ b/sunrpc/getrpcent_r.c