Message ID | 20180511125730.00A4F402C87C9@oldenburg.str.redhat.com |
---|---|
State | New |
Headers | show |
Series | sunrpc: Remove stray exports without --enable-obsolete-rpc [BZ #23166] | expand |
On 05/11/2018 08:57 AM, Florian Weimer wrote: > This is needed to avoid a warning when linking against libtirpc: > > /lib64/libc.so.6: warning: common of `rpc_createerr@@TIRPC_0.3.0' overridden by definition > /usr/lib64/libtirpc.so: warning: defined here > > This ld warning is not enabled by default; -Wl,--warn-common enables it. > > 2018-05-11 Florian Weimer <fweimer@redhat.com> > > [BZ #23166] > * include/rpc/clnt.h (rpc_createerr): Declare hidden alias. > * include/rpc/svc.h (svc_pollfd, svc_max_pollfd, svc_fdset): > Likewise. > * sunrpc/rpc_common.c (svc_fdset, rpc_createerr, svc_pollfd) > (svc_max_pollfd): Add nocommon attribute and hidden alias. Do not > export without --enable-obsolete-rpc. > * sunrpc/svcauth_des.c (svcauthdes_stats): Turn into compatibility > symbol. This should not have been exported, ever. LGTM. Reviewed-by: Carlos O'Donell <carlos@redhat.com> > diff --git a/include/rpc/clnt.h b/include/rpc/clnt.h > index a397023a93..80be0a9cec 100644 > --- a/include/rpc/clnt.h > +++ b/include/rpc/clnt.h > @@ -28,6 +28,7 @@ libc_hidden_proto (clntudp_create) > libc_hidden_proto (get_myaddress) > libc_hidden_proto (clntunix_create) > libc_hidden_proto (__libc_clntudp_bufcreate) > +libc_hidden_proto (rpc_createerr) > > # endif /* !_ISOMAC */ > #endif > diff --git a/include/rpc/svc.h b/include/rpc/svc.h > index 465bf4427d..40ba2546a9 100644 > --- a/include/rpc/svc.h > +++ b/include/rpc/svc.h > @@ -3,6 +3,10 @@ > > # ifndef _ISOMAC > > +libc_hidden_proto (svc_pollfd) > +libc_hidden_proto (svc_max_pollfd) > +libc_hidden_proto (svc_fdset) > + > libc_hidden_proto (xprt_register) > libc_hidden_proto (xprt_unregister) > libc_hidden_proto (svc_register) > diff --git a/sunrpc/rpc_common.c b/sunrpc/rpc_common.c > index 710191163c..2d42827a87 100644 > --- a/sunrpc/rpc_common.c > +++ b/sunrpc/rpc_common.c > @@ -46,7 +46,14 @@ > the variable is declared. So we use the section attribute. */ > struct opaque_auth _null_auth __attribute__ ((nocommon)); > libc_hidden_nolink_sunrpc (_null_auth, GLIBC_2_0) > -fd_set svc_fdset; > -struct rpc_createerr rpc_createerr; > -struct pollfd *svc_pollfd; > -int svc_max_pollfd; > + > +/* The variables need the nocommon attribute, so that it is possible > + to create aliases and specify symbol versions. */ > +fd_set svc_fdset __attribute__ ((nocommon)); > +libc_hidden_nolink_sunrpc (svc_fdset, GLIBC_2_0) > +struct rpc_createerr rpc_createerr __attribute__ ((nocommon)); > +libc_hidden_nolink_sunrpc (rpc_createerr, GLIBC_2_0) > +struct pollfd *svc_pollfd __attribute__ ((nocommon)); > +libc_hidden_nolink_sunrpc (svc_pollfd, GLIBC_2_2) > +int svc_max_pollfd __attribute__ ((nocommon)); > +libc_hidden_nolink_sunrpc (svc_max_pollfd, GLIBC_2_2) > diff --git a/sunrpc/svcauth_des.c b/sunrpc/svcauth_des.c > index f99a5a324f..9ce4804239 100644 > --- a/sunrpc/svcauth_des.c > +++ b/sunrpc/svcauth_des.c > @@ -87,16 +87,21 @@ static void cache_ref (uint32_t sid); /* note that sid was ref'd */ > > static void invalidate (char *cred); /* invalidate entry in cache */ > > -/* > - * cache statistics > - */ > +/* Cache statistics. Accidental historic export without a matching > + declaration in any header file. */ > +#ifndef SHARED > +static > +#endif > struct > { > u_long ncachehits; /* times cache hit, and is not replay */ > u_long ncachereplays; /* times cache hit, and is replay */ > u_long ncachemisses; /* times cache missed */ > } > -svcauthdes_stats; > +svcauthdes_stats __attribute__ ((nocommon)); > +#ifdef SHARED > +compat_symbol (libc, svcauthdes_stats, svcauthdes_stats, GLIBC_2_0); > +#endif > > /* > * Service side authenticator for AUTH_DES >
diff --git a/include/rpc/clnt.h b/include/rpc/clnt.h index a397023a93..80be0a9cec 100644 --- a/include/rpc/clnt.h +++ b/include/rpc/clnt.h @@ -28,6 +28,7 @@ libc_hidden_proto (clntudp_create) libc_hidden_proto (get_myaddress) libc_hidden_proto (clntunix_create) libc_hidden_proto (__libc_clntudp_bufcreate) +libc_hidden_proto (rpc_createerr) # endif /* !_ISOMAC */ #endif diff --git a/include/rpc/svc.h b/include/rpc/svc.h index 465bf4427d..40ba2546a9 100644 --- a/include/rpc/svc.h +++ b/include/rpc/svc.h @@ -3,6 +3,10 @@ # ifndef _ISOMAC +libc_hidden_proto (svc_pollfd) +libc_hidden_proto (svc_max_pollfd) +libc_hidden_proto (svc_fdset) + libc_hidden_proto (xprt_register) libc_hidden_proto (xprt_unregister) libc_hidden_proto (svc_register) diff --git a/sunrpc/rpc_common.c b/sunrpc/rpc_common.c index 710191163c..2d42827a87 100644 --- a/sunrpc/rpc_common.c +++ b/sunrpc/rpc_common.c @@ -46,7 +46,14 @@ the variable is declared. So we use the section attribute. */ struct opaque_auth _null_auth __attribute__ ((nocommon)); libc_hidden_nolink_sunrpc (_null_auth, GLIBC_2_0) -fd_set svc_fdset; -struct rpc_createerr rpc_createerr; -struct pollfd *svc_pollfd; -int svc_max_pollfd; + +/* The variables need the nocommon attribute, so that it is possible + to create aliases and specify symbol versions. */ +fd_set svc_fdset __attribute__ ((nocommon)); +libc_hidden_nolink_sunrpc (svc_fdset, GLIBC_2_0) +struct rpc_createerr rpc_createerr __attribute__ ((nocommon)); +libc_hidden_nolink_sunrpc (rpc_createerr, GLIBC_2_0) +struct pollfd *svc_pollfd __attribute__ ((nocommon)); +libc_hidden_nolink_sunrpc (svc_pollfd, GLIBC_2_2) +int svc_max_pollfd __attribute__ ((nocommon)); +libc_hidden_nolink_sunrpc (svc_max_pollfd, GLIBC_2_2) diff --git a/sunrpc/svcauth_des.c b/sunrpc/svcauth_des.c index f99a5a324f..9ce4804239 100644 --- a/sunrpc/svcauth_des.c +++ b/sunrpc/svcauth_des.c @@ -87,16 +87,21 @@ static void cache_ref (uint32_t sid); /* note that sid was ref'd */ static void invalidate (char *cred); /* invalidate entry in cache */ -/* - * cache statistics - */ +/* Cache statistics. Accidental historic export without a matching + declaration in any header file. */ +#ifndef SHARED +static +#endif struct { u_long ncachehits; /* times cache hit, and is not replay */ u_long ncachereplays; /* times cache hit, and is replay */ u_long ncachemisses; /* times cache missed */ } -svcauthdes_stats; +svcauthdes_stats __attribute__ ((nocommon)); +#ifdef SHARED +compat_symbol (libc, svcauthdes_stats, svcauthdes_stats, GLIBC_2_0); +#endif /* * Service side authenticator for AUTH_DES