From a1309c2bd0e7469158dfa5dec3334054fad2ed03 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 6 Feb 2015 10:43:19 -0800 Subject: [PATCH] Exclude rpcent functions and NSS backends for rpc, key when excluding sunrpc. --- ChangeLog | 28 ++++++++++++++++++++++++++++ inet/Makefile | 2 -- inet/Versions | 13 +++++-------- nss/Makefile | 12 ++++++++++-- nss/getent.c | 4 ++++ sunrpc/Makefile | 2 ++ sunrpc/Versions | 9 +++++++++ {inet => sunrpc}/getrpcbyname.c | 0 {inet => sunrpc}/getrpcbyname_r.c | 0 {inet => sunrpc}/getrpcbynumber.c | 0 {inet => sunrpc}/getrpcbynumber_r.c | 0 {inet => sunrpc}/getrpcent.c | 0 {inet => sunrpc}/getrpcent_r.c | 0 13 files changed, 58 insertions(+), 12 deletions(-) rename {inet => sunrpc}/getrpcbyname.c (100%) rename {inet => sunrpc}/getrpcbyname_r.c (100%) rename {inet => sunrpc}/getrpcbynumber.c (100%) rename {inet => sunrpc}/getrpcbynumber_r.c (100%) rename {inet => sunrpc}/getrpcent.c (100%) rename {inet => sunrpc}/getrpcent_r.c (100%) diff --git a/ChangeLog b/ChangeLog index 22b9d98018..c68c02ccaf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,33 @@ 2015-02-06 Roland McGrath + * 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 similarity index 100% rename from inet/getrpcbyname.c rename to sunrpc/getrpcbyname.c diff --git a/inet/getrpcbyname_r.c b/sunrpc/getrpcbyname_r.c similarity index 100% rename from inet/getrpcbyname_r.c rename to sunrpc/getrpcbyname_r.c diff --git a/inet/getrpcbynumber.c b/sunrpc/getrpcbynumber.c similarity index 100% rename from inet/getrpcbynumber.c rename to sunrpc/getrpcbynumber.c diff --git a/inet/getrpcbynumber_r.c b/sunrpc/getrpcbynumber_r.c similarity index 100% rename from inet/getrpcbynumber_r.c rename to sunrpc/getrpcbynumber_r.c diff --git a/inet/getrpcent.c b/sunrpc/getrpcent.c similarity index 100% rename from inet/getrpcent.c rename to sunrpc/getrpcent.c diff --git a/inet/getrpcent_r.c b/sunrpc/getrpcent_r.c similarity index 100% rename from inet/getrpcent_r.c rename to sunrpc/getrpcent_r.c