diff mbox series

[RFC] Remove --enable-obsolete-rpc flag

Message ID 20200604103545.25642-1-pvorel@suse.cz
State New
Headers show
Series [RFC] Remove --enable-obsolete-rpc flag | expand

Commit Message

Petr Vorel June 4, 2020, 10:35 a.m. UTC
The Sun RPC headers are not built, rpcgen program, librpcsvc and
test for bug #20790 are completely removed.

libtirpc is mature enough, librpcsvc and rpcgen are provided in
rpcsvc-proto project.

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
Hi,

this is a naive approach to stop providing the Sun RPC headers and
related tools. It'd be great to move on and encourage using libtirpc and
rpcsvc-proto for the rest of the users which are still using glibc
implementation on never distros. Is it too early for it? If not,
dropping --enable-obsolete-nsl could also be considered.

make check failed on elf/tst-ldconfig-ld_so_conf-update and I was not
able to figure out what broke it:
FAIL: elf/tst-ldconfig-ld_so_conf-update
Any hint what's wrong?

make check-abi is ok, make xcheck has one more failure, but the result
is the same on master (shouldn't be affected by this change).

Kind regards,
Petr

 .../strcoll-inputs/filelist#en_US.UTF-8       |   28 -
 config.h.in                                   |    4 -
 config.make.in                                |    1 -
 configure                                     |   20 +-
 configure.ac                                  |   11 -
 include/libc-symbols.h                        |    7 +-
 include/shlib-compat.h                        |    8 +-
 manual/nss.texi                               |    4 +-
 scripts/build-many-glibcs.py                  |    6 +-
 sunrpc/Makefile                               |  131 +-
 sunrpc/auth_des.c                             |    4 +-
 sunrpc/auth_none.c                            |    2 +-
 sunrpc/auth_unix.c                            |    4 +-
 sunrpc/authdes_prot.c                         |    4 +-
 sunrpc/authuxprot.c                           |    2 +-
 sunrpc/bug20790.x                             |    1 -
 sunrpc/clnt_gen.c                             |    2 +-
 sunrpc/clnt_perr.c                            |   10 +-
 sunrpc/clnt_raw.c                             |    2 +-
 sunrpc/clnt_simp.c                            |    2 +-
 sunrpc/clnt_tcp.c                             |    2 +-
 sunrpc/clnt_udp.c                             |    6 +-
 sunrpc/clnt_unix.c                            |    2 +-
 sunrpc/get_myaddr.c                           |    2 +-
 sunrpc/key_call.c                             |   18 +-
 sunrpc/key_prot.c                             |   20 +-
 sunrpc/netname.c                              |   10 +-
 sunrpc/pm_getmaps.c                           |    2 +-
 sunrpc/pm_getport.c                           |    4 +-
 sunrpc/pmap_clnt.c                            |    4 +-
 sunrpc/pmap_prot.c                            |    2 +-
 sunrpc/pmap_prot2.c                           |    2 +-
 sunrpc/pmap_rmt.c                             |    8 +-
 sunrpc/proto.h                                |   65 -
 sunrpc/publickey.c                            |    4 +-
 sunrpc/rpc_clntout.c                          |  333 ----
 sunrpc/rpc_cmsg.c                             |    2 +-
 sunrpc/rpc_common.c                           |   10 +-
 sunrpc/rpc_cout.c                             |  811 ---------
 sunrpc/rpc_dtable.c                           |    2 +-
 sunrpc/rpc_hout.c                             |  607 -------
 sunrpc/rpc_main.c                             | 1451 -----------------
 sunrpc/rpc_parse.c                            |  687 --------
 sunrpc/rpc_parse.h                            |  165 --
 sunrpc/rpc_prot.c                             |   14 +-
 sunrpc/rpc_sample.c                           |  336 ----
 sunrpc/rpc_scan.c                             |  544 ------
 sunrpc/rpc_scan.h                             |  104 --
 sunrpc/rpc_svcout.c                           | 1093 -------------
 sunrpc/rpc_tblout.c                           |  178 --
 sunrpc/rpc_thread.c                           |    8 +-
 sunrpc/rpc_util.c                             |  525 ------
 sunrpc/rpc_util.h                             |  154 --
 sunrpc/rpcsvc/bootparam.h                     |   23 -
 sunrpc/rpcsvc/bootparam_prot.x                |   97 --
 sunrpc/rpcsvc/key_prot.x                      |  283 ----
 sunrpc/rpcsvc/klm_prot.x                      |  130 --
 sunrpc/rpcsvc/mount.x                         |  161 --
 sunrpc/rpcsvc/nfs_prot.x                      |  352 ----
 sunrpc/rpcsvc/nlm_prot.x                      |  203 ---
 sunrpc/rpcsvc/rex.x                           |  229 ---
 sunrpc/rpcsvc/rquota.x                        |   61 -
 sunrpc/rpcsvc/rstat.x                         |  145 --
 sunrpc/rpcsvc/rusers.x                        |  228 ---
 sunrpc/rpcsvc/sm_inter.x                      |  110 --
 sunrpc/rpcsvc/spray.x                         |   84 -
 sunrpc/rpcsvc/yppasswd.x                      |   61 -
 sunrpc/rtime.c                                |    2 +-
 sunrpc/svc.c                                  |   32 +-
 sunrpc/svc_auth.c                             |    2 +-
 sunrpc/svc_raw.c                              |    2 +-
 sunrpc/svc_run.c                              |    4 +-
 sunrpc/svc_tcp.c                              |    4 +-
 sunrpc/svc_udp.c                              |    6 +-
 sunrpc/svc_unix.c                             |    4 +-
 sunrpc/svcauth_des.c                          |    2 +-
 sunrpc/xcrypt.c                               |    4 +-
 sunrpc/xdr.c                                  |   44 +-
 sunrpc/xdr_array.c                            |    4 +-
 sunrpc/xdr_float.c                            |    4 +-
 sunrpc/xdr_intXX_t.c                          |   20 +-
 sunrpc/xdr_mem.c                              |    2 +-
 sunrpc/xdr_rec.c                              |    8 +-
 sunrpc/xdr_ref.c                              |    4 +-
 sunrpc/xdr_sizeof.c                           |    2 +-
 sunrpc/xdr_stdio.c                            |    2 +-
 86 files changed, 160 insertions(+), 9587 deletions(-)
 delete mode 100644 sunrpc/bug20790.x
 delete mode 100644 sunrpc/proto.h
 delete mode 100644 sunrpc/rpc_clntout.c
 delete mode 100644 sunrpc/rpc_cout.c
 delete mode 100644 sunrpc/rpc_hout.c
 delete mode 100644 sunrpc/rpc_main.c
 delete mode 100644 sunrpc/rpc_parse.c
 delete mode 100644 sunrpc/rpc_parse.h
 delete mode 100644 sunrpc/rpc_sample.c
 delete mode 100644 sunrpc/rpc_scan.c
 delete mode 100644 sunrpc/rpc_scan.h
 delete mode 100644 sunrpc/rpc_svcout.c
 delete mode 100644 sunrpc/rpc_tblout.c
 delete mode 100644 sunrpc/rpc_util.c
 delete mode 100644 sunrpc/rpc_util.h
 delete mode 100644 sunrpc/rpcsvc/bootparam.h
 delete mode 100644 sunrpc/rpcsvc/bootparam_prot.x
 delete mode 100644 sunrpc/rpcsvc/key_prot.x
 delete mode 100644 sunrpc/rpcsvc/klm_prot.x
 delete mode 100644 sunrpc/rpcsvc/mount.x
 delete mode 100644 sunrpc/rpcsvc/nfs_prot.x
 delete mode 100644 sunrpc/rpcsvc/nlm_prot.x
 delete mode 100644 sunrpc/rpcsvc/rex.x
 delete mode 100644 sunrpc/rpcsvc/rquota.x
 delete mode 100644 sunrpc/rpcsvc/rstat.x
 delete mode 100644 sunrpc/rpcsvc/rusers.x
 delete mode 100644 sunrpc/rpcsvc/sm_inter.x
 delete mode 100644 sunrpc/rpcsvc/spray.x
 delete mode 100644 sunrpc/rpcsvc/yppasswd.x

Comments

Petr Vorel June 4, 2020, 10:43 a.m. UTC | #1
Hi,

also there is a question what to do with /etc/rpc and /usr/include/rpc/netdb.h.
Should /etc/rpc be moved to libtirpc (or rpcsvc-proto)?
Is tirpc/rpc/rpcent.h from libtirpc /usr/include/rpc/netdb.h replacement?

Also this patch doesn't touch locales (leaving at least rpcgen).

Kind regards,
Petr
Florian Weimer June 4, 2020, 10:51 a.m. UTC | #2
* Petr Vorel:

> this is a naive approach to stop providing the Sun RPC headers and
> related tools. It'd be great to move on and encourage using libtirpc and
> rpcsvc-proto for the rest of the users which are still using glibc
> implementation on never distros. Is it too early for it? If not,
> dropping --enable-obsolete-nsl could also be considered.

I'm surprised that --enable-obsolete-nsl is not broken by this.  I would
have expected that we would have to move that one first.  Don't the
installed headers for libnsl use rpc headers?

From a Fedora (and downstream) perspective, we can certainly turn
everything into compat symbols.  (Further changes are required to avoid
building the compatibility symbols for new ports.)

> make check failed on elf/tst-ldconfig-ld_so_conf-update and I was not
> able to figure out what broke it:
> FAIL: elf/tst-ldconfig-ld_so_conf-update
> Any hint what's wrong?

Is there anything in the Makefile log or the .out file?  I agree that
this change should not break this test.

Thanks,
Florian
Szabolcs Nagy June 4, 2020, 10:53 a.m. UTC | #3
The 06/04/2020 12:35, Petr Vorel wrote:
> The Sun RPC headers are not built, rpcgen program, librpcsvc and
> test for bug #20790 are completely removed.
> 
> libtirpc is mature enough, librpcsvc and rpcgen are provided in
> rpcsvc-proto project.

i don't have a strong opinion on this, but i know we
have internal build scripts with --enable-obsolete-rpc
so i guess we will have to update those build scripts.

a bit more background detail may be useful in the
commit message though to help those who will have to
transition.

> this is a naive approach to stop providing the Sun RPC headers and
> related tools. It'd be great to move on and encourage using libtirpc and
> rpcsvc-proto for the rest of the users which are still using glibc
> implementation on never distros. Is it too early for it? If not,
> dropping --enable-obsolete-nsl could also be considered.
> 
> make check failed on elf/tst-ldconfig-ld_so_conf-update and I was not
> able to figure out what broke it:
> FAIL: elf/tst-ldconfig-ld_so_conf-update
> Any hint what's wrong?

well first look at elf/tst-ldconfig-ld_so_conf-update.out

i usually get this if etc/ld.so.cache is not installed
(e.g. cross-compiling != no in config.make) or if it
is not updated in the testroot container, but it can
fail for various reasons, you can try to run

strace -o logfile -f -s 222 -tt make test t=elf/tst-ldconfig-ld_so_conf-update

and look for a failing test child process and work
backwards to see what might have caused that failure.

>  86 files changed, 160 insertions(+), 9587 deletions(-)

nice.
Florian Weimer June 4, 2020, 10:56 a.m. UTC | #4
* Petr Vorel:

> also there is a question what to do with /etc/rpc and
> /usr/include/rpc/netdb.h.  Should /etc/rpc be moved to libtirpc (or
> rpcsvc-proto)?

Both are NSS interfaces, so they should stay.  We can perhaps move the
declarations for <rpc/netdb.h> into <netdb.h> to make this clearer.

> Is tirpc/rpc/rpcent.h from libtirpc /usr/include/rpc/netdb.h
> replacement?

The implementation doesn't route the calls through NSS.  Is it even
built at all for glibc systems?

Thanks,
Florian
Petr Vorel June 4, 2020, 11:16 a.m. UTC | #5
Hi,

[ Cc: Debian glibc maintainers and Buildroot maintainer (the only distros I'm
aware of they use it, although there will be others) ]

> The 06/04/2020 12:35, Petr Vorel wrote:
> > The Sun RPC headers are not built, rpcgen program, librpcsvc and
> > test for bug #20790 are completely removed.

> > libtirpc is mature enough, librpcsvc and rpcgen are provided in
> > rpcsvc-proto project.

> i don't have a strong opinion on this, but i know we
> have internal build scripts with --enable-obsolete-rpc
> so i guess we will have to update those build scripts.

> a bit more background detail may be useful in the
> commit message though to help those who will have to
> transition.

I'm maintaining TI-RPC tests in LTP [1] (ugly, buggy, not covering much from
TI-RPC and should be rewritten from scratch, but I just scratched a surface).
While debugging some of the problems with Steve [2] I found that there are
problems using certain functionality on netns. Not sure if anybody cares about
bug fixing of the glibc implementation, I'd personally prefer the development
moved to libtirpc and rpcsvc-proto. But agree all this might not be a good
reason.

[1] https://github.com/linux-test-project/ltp/tree/master/testcases/network/rpc
[2] https://sourceforge.net/p/libtirpc/mailman/message/37014992/

> > this is a naive approach to stop providing the Sun RPC headers and
> > related tools. It'd be great to move on and encourage using libtirpc and
> > rpcsvc-proto for the rest of the users which are still using glibc
> > implementation on never distros. Is it too early for it? If not,
> > dropping --enable-obsolete-nsl could also be considered.

> > make check failed on elf/tst-ldconfig-ld_so_conf-update and I was not
> > able to figure out what broke it:
> > FAIL: elf/tst-ldconfig-ld_so_conf-update
> > Any hint what's wrong?

> well first look at elf/tst-ldconfig-ld_so_conf-update.out
Thanks!

error: xfopen.c:29: could not open /etc/ld.so.conf (mode "a+"): No such file or directory
error: 1 test failures
running post-clean rsync

> i usually get this if etc/ld.so.cache is not installed
> (e.g. cross-compiling != no in config.make) or if it
> is not updated in the testroot container, but it can
> fail for various reasons, you can try to run
OK, I'll try to run ldconfig.
Sorry for missing obvious problems.

> strace -o logfile -f -s 222 -tt make test t=elf/tst-ldconfig-ld_so_conf-update
Thanks a lot! Previously I looked at https://sourceware.org/glibc/wiki/Testing/Testsuite

> and look for a failing test child process and work
> backwards to see what might have caused that failure.

> >  86 files changed, 160 insertions(+), 9587 deletions(-)

> nice.

Kind regards,
Petr
Petr Vorel June 4, 2020, 11:26 a.m. UTC | #6
> * Petr Vorel:

> > this is a naive approach to stop providing the Sun RPC headers and
> > related tools. It'd be great to move on and encourage using libtirpc and
> > rpcsvc-proto for the rest of the users which are still using glibc
> > implementation on never distros. Is it too early for it? If not,
> > dropping --enable-obsolete-nsl could also be considered.

> I'm surprised that --enable-obsolete-nsl is not broken by this.  I would
> have expected that we would have to move that one first.  Don't the
> installed headers for libnsl use rpc headers?
I guess, Thorsten would know getter. nis/libnsl.h include <rpcsvc/nis.h> so it
looks like I first need to implement --enable-obsolete-nsl.

> From a Fedora (and downstream) perspective, we can certainly turn
> everything into compat symbols.  (Further changes are required to avoid
> building the compatibility symbols for new ports.)
Thanks for spotting this out. I have no idea how to do that.

...

Kind regards,
Petr
Petr Vorel June 4, 2020, 11:33 a.m. UTC | #7
Hi,

> * Petr Vorel:

> > also there is a question what to do with /etc/rpc and
> > /usr/include/rpc/netdb.h.  Should /etc/rpc be moved to libtirpc (or
> > rpcsvc-proto)?

> Both are NSS interfaces, so they should stay.  We can perhaps move the
> declarations for <rpc/netdb.h> into <netdb.h> to make this clearer.
<netdb.h> now includes <rpc/netdb.h> so this wouldn't affect users, which
include <netdb.h>.

> > Is tirpc/rpc/rpcent.h from libtirpc /usr/include/rpc/netdb.h
> > replacement?

> The implementation doesn't route the calls through NSS.  Is it even
> built at all for glibc systems?
No idea :(.

> Thanks,
> Florian

Kind regards,
Petr Vorel
Thorsten Kukuk June 4, 2020, 11:38 a.m. UTC | #8
On Thu, Jun 04, Petr Vorel wrote:

> > * Petr Vorel:
> 
> > > this is a naive approach to stop providing the Sun RPC headers and
> > > related tools. It'd be great to move on and encourage using libtirpc and
> > > rpcsvc-proto for the rest of the users which are still using glibc
> > > implementation on never distros. Is it too early for it? If not,
> > > dropping --enable-obsolete-nsl could also be considered.
> 
> > I'm surprised that --enable-obsolete-nsl is not broken by this.  I would
> > have expected that we would have to move that one first.  Don't the
> > installed headers for libnsl use rpc headers?
> I guess, Thorsten would know getter. nis/libnsl.h include <rpcsvc/nis.h> so it
> looks like I first need to implement --enable-obsolete-nsl.

The glibc libnsl code depends on sunrpc. Maybe it will built with 
libtirpc, never tried that, but this doesn't make any sense.

If you want to remove code:
1. libnsl
2. sunrpc

  Thorsten
Petr Vorel June 4, 2020, 1:57 p.m. UTC | #9
Hi Thorsten,

> > > I'm surprised that --enable-obsolete-nsl is not broken by this.  I would
> > > have expected that we would have to move that one first.  Don't the
> > > installed headers for libnsl use rpc headers?
> > I guess, Thorsten would know getter. nis/libnsl.h include <rpcsvc/nis.h> so it
> > looks like I first need to implement --enable-obsolete-nsl.

> The glibc libnsl code depends on sunrpc. Maybe it will built with 
> libtirpc, never tried that, but this doesn't make any sense.

> If you want to remove code:
> 1. libnsl
> 2. sunrpc

Thanks for confirmation, I'll send v2.

>   Thorsten

Kind regards,
Petr
Joseph Myers June 4, 2020, 5:50 p.m. UTC | #10
On Thu, 4 Jun 2020, Szabolcs Nagy wrote:

> The 06/04/2020 12:35, Petr Vorel wrote:
> > The Sun RPC headers are not built, rpcgen program, librpcsvc and
> > test for bug #20790 are completely removed.
> > 
> > libtirpc is mature enough, librpcsvc and rpcgen are provided in
> > rpcsvc-proto project.
> 
> i don't have a strong opinion on this, but i know we
> have internal build scripts with --enable-obsolete-rpc
> so i guess we will have to update those build scripts.
> 
> a bit more background detail may be useful in the
> commit message though to help those who will have to
> transition.

This patch needs a NEWS entry (under "Deprecated and removed features, and 
other changes affecting compatibility" for 2.32), which should give the 
key information for users currently building with --enable-obsolete-rpc.
Petr Vorel June 4, 2020, 7:36 p.m. UTC | #11
Hi Joseph,

> This patch needs a NEWS entry (under "Deprecated and removed features, and 
> other changes affecting compatibility" for 2.32), which should give the 
> key information for users currently building with --enable-obsolete-rpc.
Yep, I realized that as well, will be in v2 (for both commits).

Kind regards,
Petr
diff mbox series

Patch

diff --git a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
index aa44107ad6..e318dec046 100644
--- a/benchtests/strcoll-inputs/filelist#en_US.UTF-8
+++ b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
@@ -14107,40 +14107,20 @@  nptl
 bits
 manual
 sunrpc
-rpc_hout.c
 tst-xdrmem2.c
-rpc_util.h
 getrpcbynumber_r.c
 xdr_intXX_t.c
-rpc_tblout.c
 svc.c
-rpc_svcout.c
 get_myaddr.c
 getrpcport.c
 auth_unix.c
 rpc_prot.c
 svcauth_des.c
-rpc_clntout.c
 des_soft.c
 thrsvc.c
 xdr_rec.c
 rpcinfo.c
 rpcsvc
-sm_inter.x
-spray.x
-nfs_prot.x
-bootparam.h
-klm_prot.x
-key_prot.x
-rstat.x
-rusers.x
-rex.x
-yppasswd.x
-mount.x
-bootparam_prot.x
-rquota.x
-nlm_prot.x
-rpc_main.c
 pmap_prot.c
 pmap_prot2.c
 rtime.c
@@ -14150,7 +14130,6 @@  svc_simple.c
 svc_raw.c
 getrpcent.c
 pmap_rmt.c
-rpc_sample.c
 pm_getport.c
 openchild.c
 xdr_stdio.c
@@ -14187,11 +14166,8 @@  clnt.h
 pmap_clnt.c
 xdr.c
 bindrsvprt.c
-rpc_parse.c
 Makefile
-rpc_util.c
 des_crypt.c
-rpc_parse.h
 key_call.c
 authdes_prot.c
 xdr_float.c
@@ -14201,7 +14177,6 @@  clnt_gen.c
 getrpcbyname_r.c
 getrpcbyname.c
 clnt_udp.c
-proto.h
 publickey.c
 svc_auth.c
 etc.rpc
@@ -14214,18 +14189,15 @@  rpc_dtable.c
 clnt_unix.c
 rpcgen.c
 auth_none.c
-rpc_scan.c
 authuxprot.c
 svc_udp.c
 Versions
 test-rpcent.c
 svc_run.c
 key_prot.c
-rpc_cout.c
 pm_getmaps.c
 xdr_ref.c
 getrpcbynumber.c
-rpc_scan.h
 ChangeLog.old-ports-arm
 libc-abis
 configure.ac
diff --git a/config.h.in b/config.h.in
index 831eca2fe1..9b67f3dfb3 100644
--- a/config.h.in
+++ b/config.h.in
@@ -157,10 +157,6 @@ 
 /* Define if multi-arch DSOs should be generated.  */
 #undef USE_MULTIARCH
 
-/* Define if obsolete RPC code should be made available for user-level code
-   to link against.  */
-#undef LINK_OBSOLETE_RPC
-
 /* Define if obsolete libnsl code should be made available for user-level
    code to link against.  */
 #undef LINK_OBSOLETE_NSL
diff --git a/config.make.in b/config.make.in
index 2fed3da773..a49611d905 100644
--- a/config.make.in
+++ b/config.make.in
@@ -96,7 +96,6 @@  build-profile = @profile@
 build-static-nss = @static_nss@
 cross-compiling = @cross_compiling@
 force-install = @force_install@
-link-obsolete-rpc = @link_obsolete_rpc@
 build-obsolete-nsl = @build_obsolete_nsl@
 build-crypt = @build_crypt@
 build-nscd = @build_nscd@
diff --git a/configure b/configure
index b8ef8c7a51..8d1f36e906 100755
--- a/configure
+++ b/configure
@@ -674,7 +674,6 @@  have_tunables
 build_pt_chown
 build_nscd
 build_obsolete_nsl
-link_obsolete_rpc
 libc_cv_static_nss_crypt
 libc_cv_nss_crypt
 build_crypt
@@ -785,7 +784,6 @@  enable_multi_arch
 enable_experimental_malloc
 enable_crypt
 enable_nss_crypt
-enable_obsolete_rpc
 enable_obsolete_nsl
 enable_systemtap
 enable_build_nscd
@@ -1457,8 +1455,6 @@  Optional Features:
   --disable-crypt         do not build nor install the passphrase hashing
                           library, libcrypt
   --enable-nss-crypt      enable libcrypt to use nss
-  --enable-obsolete-rpc   build and install the obsolete RPC code for
-                          link-time usage
   --enable-obsolete-nsl   build and install the obsolete libnsl library and
                           depending NSS modules
   --enable-systemtap      enable systemtap static probe points [default=no]
@@ -3640,20 +3636,6 @@  fi
 
 
 
-# Check whether --enable-obsolete-rpc was given.
-if test "${enable_obsolete_rpc+set}" = set; then :
-  enableval=$enable_obsolete_rpc; link_obsolete_rpc=$enableval
-else
-  link_obsolete_rpc=no
-fi
-
-
-
-if test "$link_obsolete_rpc" = yes; then
-  $as_echo "#define LINK_OBSOLETE_RPC 1" >>confdefs.h
-
-fi
-
 # Check whether --enable-obsolete-nsl was given.
 if test "${enable_obsolete_nsl+set}" = set; then :
   enableval=$enable_obsolete_nsl; build_obsolete_nsl=$enableval
@@ -3785,7 +3767,7 @@  main ()
 {
 
 #ifndef __CET__
-#error no CET compiler support
+# error no CET compiler support
 #endif
   ;
   return 0;
diff --git a/configure.ac b/configure.ac
index ff00591fd4..364ea90c00 100644
--- a/configure.ac
+++ b/configure.ac
@@ -376,17 +376,6 @@  AC_SUBST(libc_cv_nss_crypt)
 AC_SUBST(libc_cv_static_nss_crypt)
 
 
-AC_ARG_ENABLE([obsolete-rpc],
-              AC_HELP_STRING([--enable-obsolete-rpc],
-                             [build and install the obsolete RPC code for link-time usage]),
-              [link_obsolete_rpc=$enableval],
-              [link_obsolete_rpc=no])
-AC_SUBST(link_obsolete_rpc)
-
-if test "$link_obsolete_rpc" = yes; then
-  AC_DEFINE(LINK_OBSOLETE_RPC)
-fi
-
 AC_ARG_ENABLE([obsolete-nsl],
               AC_HELP_STRING([--enable-obsolete-nsl],
                              [build and install the obsolete libnsl library and depending NSS modules]),
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index b2f36bc44b..749d96109a 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -625,12 +625,7 @@  for linking")
 # define libc_hidden_tls_proto(name, attrs...) hidden_tls_proto (name, ##attrs)
 # define libc_hidden_def(name) hidden_def (name)
 # define libc_hidden_weak(name) hidden_weak (name)
-# ifdef LINK_OBSOLETE_RPC
-   /* libc_hidden_nolink_sunrpc should only get used in sunrpc code.  */
-#  define libc_hidden_nolink_sunrpc(name, version) hidden_def (name)
-# else
-#  define libc_hidden_nolink_sunrpc(name, version) hidden_nolink (name, libc, version)
-# endif
+# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version)
 # define libc_hidden_ver(local, name) hidden_ver (local, name)
 # define libc_hidden_data_def(name) hidden_data_def (name)
 # define libc_hidden_tls_def(name) hidden_tls_def (name)
diff --git a/include/shlib-compat.h b/include/shlib-compat.h
index c8fc6925a0..b58281857a 100644
--- a/include/shlib-compat.h
+++ b/include/shlib-compat.h
@@ -127,15 +127,9 @@ 
 #define compat_symbol_reference_2(local, symbol, name) \
   symbol_version_reference (local, symbol, name)
 
-# ifdef LINK_OBSOLETE_RPC
-/* Export the symbol for both static and dynamic linking.  */
-#  define libc_sunrpc_symbol(name, aliasname, version) \
-  strong_alias (name, aliasname)
-# else
 /* Export the symbol only for shared-library compatibility.  */
-#  define libc_sunrpc_symbol(name, aliasname, version) \
+#define libc_sunrpc_symbol(name, aliasname, version) \
   compat_symbol (libc, name, aliasname, version);
-# endif
 
 /* The TEST_COMPAT macro acts just like the SHLIB_COMPAT macro except
    that it does not check IS_IN.  It is used by tests that are testing
diff --git a/manual/nss.texi b/manual/nss.texi
index 821469a78a..89ffa7b8c6 100644
--- a/manual/nss.texi
+++ b/manual/nss.texi
@@ -340,9 +340,7 @@  databases above is @code{compat [NOTFOUND=return] files}.  If the
 @code{--enable-obsolete-nsl} option was not used the default value
 for the services is @code{files}.
 
-For all other databases the default value is @code{files} unless
-@theglibc{} was configured with @code{--enable-obsolete-rpc} option, in
-which case it the default value is @code{nis [NOTFOUND=return] files}.
+For all other databases the default value is @code{files}.
 
 @cindex optimizing NSS
 A second point is that the user should try to optimize the lookup
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index 6c6615b200..7d65727bab 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -396,8 +396,7 @@  class Context(object):
                         extra_glibcs=[{'variant': 'disable-multi-arch',
                                        'cfg': ['--disable-multi-arch']},
                                       {'variant': 'enable-obsolete',
-                                       'cfg': ['--enable-obsolete-rpc',
-                                               '--enable-obsolete-nsl']},
+                                       'cfg': ['--enable-obsolete-nsl']},
                                       {'variant': 'static-pie',
                                        'cfg': ['--enable-static-pie']},
                                       {'variant': 'x32-static-pie',
@@ -414,8 +413,7 @@  class Context(object):
                                       {'variant': 'enable-obsolete',
                                        'arch': 'i686',
                                        'ccopts': '-m32 -march=i686',
-                                       'cfg': ['--enable-obsolete-rpc',
-                                               '--enable-obsolete-nsl']},
+                                       'cfg': ['--enable-obsolete-nsl']},
                                       {'arch': 'i486',
                                        'ccopts': '-m32 -march=i486'},
                                       {'arch': 'i586',
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index d5840d0770..9a817e848d 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -26,7 +26,7 @@  include ../Makeconfig
 # distribution with some additional changes from the TI-RPC package
 # which is also available from Sun.  The files are heavily changed to
 # compile cleanly and to fit in the GNU environment.  All the code
-# from Sun's rpc, etc, and rpcgen subdirectories is in this directory;
+# from Sun's rpc, and etc subdirectories is in this directory;
 # the rpc subdirectory contains only the header files.  Other than
 # that, several files were renamed so as not to exceed 14-character
 # file name limits:
@@ -45,23 +45,7 @@  include ../Makeconfig
 #	svc_auth_unix.c -> svc_authux.c
 #	xdr_reference.c -> xdr_ref.c
 
-rpcsvc = bootparam_prot.x nlm_prot.x rstat.x \
-	 yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
-	 rusers.x spray.x nfs_prot.x rquota.x key_prot.x
-headers-sunrpc = $(addprefix rpc/,auth.h auth_unix.h clnt.h pmap_clnt.h \
-				  pmap_prot.h pmap_rmt.h rpc.h rpc_msg.h \
-				  svc.h svc_auth.h types.h xdr.h auth_des.h \
-				  key_prot.h) \
-		       $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h
 headers = rpc/netdb.h
-install-others = $(inst_sysconfdir)/rpc
-generated += $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \
-	     $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen
-generated-dirs += rpcsvc
-
-ifeq ($(link-obsolete-rpc),yes)
-headers += $(headers-sunrpc)
-endif
 
 ifeq ($(build-shared),yes)
 need-export-routines := auth_des auth_unix clnt_gen clnt_perr clnt_tcp \
@@ -79,20 +63,9 @@  routines := auth_none authuxprot bindrsvprt clnt_raw clnt_simp \
 	    getrpcent_r getrpcbyname_r getrpcbynumber_r \
 	    clnt_unix svc_unix create_xid $(need-export-routines) \
 	    rpc_gethostbyname
-ifneq ($(link-obsolete-rpc),yes)
 # We only add the RPC for compatibility to libc.so.
 shared-only-routines = $(routines)
 endif
-endif
-
-ifeq ($(link-obsolete-rpc),yes)
-install-bin := rpcgen
-rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \
-	      rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o \
-	      rpc_tblout.o rpc_sample.o
-extra-objs = $(rpcgen-objs) $(addprefix cross-,$(rpcgen-objs))
-others += rpcgen
-endif
 
 tests = tst-xdrmem tst-xdrmem2 test-rpcent tst-udp-error tst-udp-timeout \
   tst-udp-nonblocking
@@ -104,22 +77,6 @@  tests += tst-udp-garbage
 tests-internal += tst-svc_register
 endif
 
-ifeq ($(run-built-tests),yes)
-ifeq ($(link-obsolete-rpc),yes)
-rpcgen-tests := $(objpfx)bug20790.out
-tests-special += $(rpcgen-tests)
-endif
-endif
-
-ifeq ($(link-obsolete-rpc),yes)
-headers += $(rpcsvc:%.x=rpcsvc/%.h)
-extra-libs := librpcsvc
-extra-libs-others := librpcsvc # Make it in `others' pass, not `lib' pass.
-librpcsvc-routines = $(rpcsvc:%.x=x%)
-librpcsvc-inhibit-o = .os # Build no shared rpcsvc library.
-omit-deps = $(librpcsvc-routines)
-endif
-
 ifeq (yes,$(build-shared))
 rpc-compat-routines = $(addprefix compat-,$(need-export-routines))
 rpc-compat-routines.os = $(addprefix $(objpfx), \
@@ -137,19 +94,6 @@  $(rpc-compat-routines.os): $(objpfx)compat-%.os: %.c $(before-compile)
 	$(compile-command.c) -DEXPORT_RPC_SYMBOLS
 endif
 
-CFLAGS-xbootparam_prot.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xnlm_prot.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xrstat.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xyppasswd.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xklm_prot.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xrex.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xsm_inter.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xmount.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xrusers.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xspray.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xnfs_prot.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xrquota.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xkey_prot.c += -Wno-unused $(PIC-ccflag)
 CFLAGS-auth_unix.c += -fexceptions
 CFLAGS-key_call.c += -fexceptions
 CFLAGS-pmap_rmt.c += -fexceptions
@@ -163,85 +107,12 @@  $(objpfx)tst-udp-error: $(common-objpfx)linkobj/libc.so
 $(objpfx)tst-svc_register: \
   $(common-objpfx)linkobj/libc.so $(shared-thread-library)
 
-$(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs))
-
-cross-rpcgen-objs := $(addprefix $(objpfx)cross-,$(rpcgen-objs))
-
-# When generic makefile support for build system programs is
-# available, it should replace this code.  See
-# <https://sourceware.org/bugzilla/show_bug.cgi?id=14087>.
-$(cross-rpcgen-objs): $(objpfx)cross-%.o: %.c $(before-compile)
-	$(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) $< \
-		$(OUTPUT_OPTION) $(native-compile-mkdep-flags) -c
-
-$(objpfx)cross-rpcgen: $(cross-rpcgen-objs)
-	$(BUILD_CC) $^ $(BUILD_LDFLAGS) -o $@
-
-# This makes sure -DIN_MODULE is passed for all these modules.
-cpp-srcs-left := $(rpcgen-objs:.o=.c)
-lib := nonlib
-include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
-
-# How we run rpcgen to generate sources and headers in the rules below.
-# Setting CPP tells it how to run the C preprocessor correctly.  Note
-# that $(built-program-file) requires that the just-built cross-rpcgen
-# binary be the second dependency listed in each rule using rpcgen-cmd.
-rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-file) -Y ../scripts
-
 # Install the rpc data base file.
 $(inst_sysconfdir)/rpc: etc.rpc $(+force)
 	$(do-install)
-
-# Generate the rpcsvc headers with rpcgen.
-# We use a stamp file to avoid unnessary recompilation each time rpcgen is
-# relinked.
-$(rpcsvc:%.x=$(objpfx)rpcsvc/%.h): $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp
-	@:
-$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)cross-rpcgen
-	$(make-target-directory)
-	-@rm -f ${@:stmp=T} $@
-	$(rpcgen-cmd) -h $< -o ${@:stmp=T}
-	$(move-if-change) $(@:stmp=T) $(@:stmp=h)
-	touch $@
-
-# Generate the rpcsvc XDR functions with rpcgen.
-$(rpcsvc:%.x=$(objpfx)x%.c): $(objpfx)x%.c: $(objpfx)x%.stmp
-	@:
-$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)cross-rpcgen
-	-@rm -f ${@:stmp=T} $@
-	$(rpcgen-cmd) -c $< -o ${@:stmp=T}
-	$(move-if-change) $(@:stmp=T) $(@:stmp=c)
-	touch $@
-
-# The generated source files depend on the corresponding generated headers.
-# Gratuitous dependency on generated .c file here just gets it mentioned to
-# avoid being an intermediate file and getting removed.
-define o-iterator-doit
-$(rpcsvc:%.x=$(objpfx)x%$o): $(objpfx)x%$o: $(objpfx)x%.c $(objpfx)rpcsvc/%.h
-endef
-object-suffixes-left = $(filter-out $(librpcsvc-inhibit-o),$(object-suffixes))
-include $(o-iterator)
-
-rpcsvc-dt-files := $(foreach o,$(filter-out $(librpcsvc-inhibit-o),\
-					    $(object-suffixes)),\
-			     $(rpcsvc:%.x=$(objpfx)x%$o.dt))
-rpcsvc-depfiles := $(patsubst %.dt,%.d,$(wildcard $(rpcsvc-dt-files))) \
-		   $(wildcard $(rpcsvc-dt-files:.dt=.d))
-ifdef rpcsvc-depfiles
-ifneq ($(no_deps),t)
--include $(rpcsvc-depfiles)
-endif
-endif
 
 $(objpfx)thrsvc: $(common-objpfx)linkobj/libc.so $(shared-thread-library)
 
-ifeq ($(run-built-tests),yes)
-$(rpcgen-tests): $(objpfx)%.out: %.x $(objpfx)rpcgen
-	-rm -f $@
-	$(built-program-cmd) -c $< -o $@; \
-	$(evaluate-test)
-endif
-
 $(objpfx)tst-udp-timeout: $(common-objpfx)linkobj/libc.so
 $(objpfx)tst-udp-nonblocking: $(common-objpfx)linkobj/libc.so
 $(objpfx)tst-udp-garbage: \
diff --git a/sunrpc/auth_des.c b/sunrpc/auth_des.c
index d26820a701..39d461cfbc 100644
--- a/sunrpc/auth_des.c
+++ b/sunrpc/auth_des.c
@@ -119,7 +119,7 @@  authdes_create (const char *servername, u_int window,
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (authdes_create)
 #else
-libc_hidden_nolink_sunrpc (authdes_create, GLIBC_2_1)
+libc_hidden_nolink (authdes_create, GLIBC_2_1)
 #endif
 
 AUTH *
@@ -213,7 +213,7 @@  failed:
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (authdes_pk_create)
 #else
-libc_hidden_nolink_sunrpc (authdes_pk_create, GLIBC_2_1)
+libc_hidden_nolink (authdes_pk_create, GLIBC_2_1)
 #endif
 
 /*
diff --git a/sunrpc/auth_none.c b/sunrpc/auth_none.c
index b1effb7a00..dc04c9eb42 100644
--- a/sunrpc/auth_none.c
+++ b/sunrpc/auth_none.c
@@ -96,7 +96,7 @@  authnone_create (void)
   __libc_once (authnone_private_guard, authnone_create_once);
   return &authnone_private.no_client;
 }
-libc_hidden_nolink_sunrpc (authnone_create, GLIBC_2_0)
+libc_hidden_nolink (authnone_create, GLIBC_2_0)
 
 static bool_t
 authnone_marshal (AUTH *client, XDR *xdrs)
diff --git a/sunrpc/auth_unix.c b/sunrpc/auth_unix.c
index ff0d2eb933..ea24f17edc 100644
--- a/sunrpc/auth_unix.c
+++ b/sunrpc/auth_unix.c
@@ -151,7 +151,7 @@  no_memory:
   marshal_new_auth (auth);
   return auth;
 }
-libc_hidden_nolink_sunrpc (authunix_create, GLIBC_2_0)
+libc_hidden_nolink (authunix_create, GLIBC_2_0)
 
 /*
  * Returns an auth handle with parameters determined by doing lots of
@@ -218,7 +218,7 @@  authunix_create_default (void)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (authunix_create_default)
 #else
-libc_hidden_nolink_sunrpc (authunix_create_default, GLIBC_2_0)
+libc_hidden_nolink (authunix_create_default, GLIBC_2_0)
 #endif
 
 /*
diff --git a/sunrpc/authdes_prot.c b/sunrpc/authdes_prot.c
index 93b7cfc04b..834987a274 100644
--- a/sunrpc/authdes_prot.c
+++ b/sunrpc/authdes_prot.c
@@ -64,7 +64,7 @@  xdr_authdes_cred (XDR *xdrs, struct authdes_cred *cred)
       return FALSE;
     }
 }
-libc_hidden_nolink_sunrpc (xdr_authdes_cred, GLIBC_2_1)
+libc_hidden_nolink (xdr_authdes_cred, GLIBC_2_1)
 
 
 bool_t
@@ -79,4 +79,4 @@  xdr_authdes_verf (register XDR *xdrs, register struct authdes_verf *verf)
 		       sizeof (verf->adv_int_u)));
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_authdes_verf, GLIBC_2_1)
+libc_hidden_nolink (xdr_authdes_verf, GLIBC_2_1)
diff --git a/sunrpc/authuxprot.c b/sunrpc/authuxprot.c
index 14fe9f56c8..d1831ad62d 100644
--- a/sunrpc/authuxprot.c
+++ b/sunrpc/authuxprot.c
@@ -64,4 +64,4 @@  xdr_authunix_parms (XDR * xdrs, struct authunix_parms *p)
     }
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_authunix_parms, GLIBC_2_0)
+libc_hidden_nolink (xdr_authunix_parms, GLIBC_2_0)
diff --git a/sunrpc/bug20790.x b/sunrpc/bug20790.x
deleted file mode 100644
index a00c9b3830..0000000000
--- a/sunrpc/bug20790.x
+++ /dev/null
@@ -1 +0,0 @@ 
-program TPROG { version TVERS { int FUNC(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) = 1; } = 1; } = 1;
diff --git a/sunrpc/clnt_gen.c b/sunrpc/clnt_gen.c
index 13ced8994e..f32266d60a 100644
--- a/sunrpc/clnt_gen.c
+++ b/sunrpc/clnt_gen.c
@@ -143,5 +143,5 @@  clnt_create (const char *hostname, u_long prog, u_long vers,
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (clnt_create)
 #else
-libc_hidden_nolink_sunrpc (clnt_create, GLIBC_2_0)
+libc_hidden_nolink (clnt_create, GLIBC_2_0)
 #endif
diff --git a/sunrpc/clnt_perr.c b/sunrpc/clnt_perr.c
index dd5b10688e..d72f875f87 100644
--- a/sunrpc/clnt_perr.c
+++ b/sunrpc/clnt_perr.c
@@ -124,7 +124,7 @@  clnt_sperror (CLIENT * rpch, const char *msg)
 
   return str;
 }
-libc_hidden_nolink_sunrpc (clnt_sperror, GLIBC_2_0)
+libc_hidden_nolink (clnt_sperror, GLIBC_2_0)
 
 void
 clnt_perror (CLIENT * rpch, const char *msg)
@@ -134,7 +134,7 @@  clnt_perror (CLIENT * rpch, const char *msg)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (clnt_perror)
 #else
-libc_hidden_nolink_sunrpc (clnt_perror, GLIBC_2_0)
+libc_hidden_nolink (clnt_perror, GLIBC_2_0)
 #endif
 
 
@@ -267,7 +267,7 @@  clnt_perrno (enum clnt_stat num)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (clnt_perrno)
 #else
-libc_hidden_nolink_sunrpc (clnt_perrno, GLIBC_2_0)
+libc_hidden_nolink (clnt_perrno, GLIBC_2_0)
 #endif
 
 char *
@@ -305,7 +305,7 @@  clnt_spcreateerror (const char *msg)
 
   return str;
 }
-libc_hidden_nolink_sunrpc (clnt_spcreateerror, GLIBC_2_0)
+libc_hidden_nolink (clnt_spcreateerror, GLIBC_2_0)
 
 void
 clnt_pcreateerror (const char *msg)
@@ -315,7 +315,7 @@  clnt_pcreateerror (const char *msg)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (clnt_pcreateerror)
 #else
-libc_hidden_nolink_sunrpc (clnt_pcreateerror, GLIBC_2_0)
+libc_hidden_nolink (clnt_pcreateerror, GLIBC_2_0)
 #endif
 
 struct auth_errtab
diff --git a/sunrpc/clnt_raw.c b/sunrpc/clnt_raw.c
index 5b9bd48247..96204ac43c 100644
--- a/sunrpc/clnt_raw.c
+++ b/sunrpc/clnt_raw.c
@@ -126,7 +126,7 @@  clntraw_create (u_long prog, u_long vers)
   client->cl_auth = authnone_create ();
   return client;
 }
-libc_hidden_nolink_sunrpc (clntraw_create, GLIBC_2_0)
+libc_hidden_nolink (clntraw_create, GLIBC_2_0)
 
 static enum clnt_stat
 clntraw_call (CLIENT *h, u_long proc, xdrproc_t xargs, caddr_t argsp,
diff --git a/sunrpc/clnt_simp.c b/sunrpc/clnt_simp.c
index fab61d2170..6526d492dc 100644
--- a/sunrpc/clnt_simp.c
+++ b/sunrpc/clnt_simp.c
@@ -117,7 +117,7 @@  callrpc (const char *host, u_long prognum, u_long versnum, u_long procnum,
     crp->valid = 0;
   return (int) clnt_stat;
 }
-libc_hidden_nolink_sunrpc (callrpc, GLIBC_2_0)
+libc_hidden_nolink (callrpc, GLIBC_2_0)
 
 void
 __rpc_thread_clnt_cleanup (void)
diff --git a/sunrpc/clnt_tcp.c b/sunrpc/clnt_tcp.c
index 249e9c3584..9f07d29db4 100644
--- a/sunrpc/clnt_tcp.c
+++ b/sunrpc/clnt_tcp.c
@@ -221,7 +221,7 @@  fooy:
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (clnttcp_create)
 #else
-libc_hidden_nolink_sunrpc (clnttcp_create, GLIBC_2_0)
+libc_hidden_nolink (clnttcp_create, GLIBC_2_0)
 #endif
 
 static enum clnt_stat
diff --git a/sunrpc/clnt_udp.c b/sunrpc/clnt_udp.c
index ee79b09b40..7d3ddd2666 100644
--- a/sunrpc/clnt_udp.c
+++ b/sunrpc/clnt_udp.c
@@ -211,7 +211,7 @@  fooy:
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (__libc_clntudp_bufcreate)
 #else
-libc_hidden_nolink_sunrpc (__libc_clntudp_bufcreate, GLIBC_PRIVATE)
+libc_hidden_nolink (__libc_clntudp_bufcreate, GLIBC_PRIVATE)
 #endif
 
 CLIENT *
@@ -222,7 +222,7 @@  clntudp_bufcreate (struct sockaddr_in *raddr, u_long program, u_long version,
   return __libc_clntudp_bufcreate (raddr, program, version, wait,
 				   sockp, sendsz, recvsz, 0);
 }
-libc_hidden_nolink_sunrpc (clntudp_bufcreate, GLIBC_2_0)
+libc_hidden_nolink (clntudp_bufcreate, GLIBC_2_0)
 
 CLIENT *
 clntudp_create (struct sockaddr_in *raddr, u_long program, u_long version,
@@ -234,7 +234,7 @@  clntudp_create (struct sockaddr_in *raddr, u_long program, u_long version,
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (clntudp_create)
 #else
-libc_hidden_nolink_sunrpc (clntudp_create, GLIBC_2_0)
+libc_hidden_nolink (clntudp_create, GLIBC_2_0)
 #endif
 
 static int
diff --git a/sunrpc/clnt_unix.c b/sunrpc/clnt_unix.c
index 33a02cc8af..aacbb67006 100644
--- a/sunrpc/clnt_unix.c
+++ b/sunrpc/clnt_unix.c
@@ -201,7 +201,7 @@  fooy:
   mem_free ((caddr_t) h, sizeof (CLIENT));
   return (CLIENT *) NULL;
 }
-libc_hidden_nolink_sunrpc (clntunix_create, GLIBC_2_1)
+libc_hidden_nolink (clntunix_create, GLIBC_2_1)
 
 static enum clnt_stat
 clntunix_call (CLIENT *h, u_long proc, xdrproc_t xdr_args, caddr_t args_ptr,
diff --git a/sunrpc/get_myaddr.c b/sunrpc/get_myaddr.c
index df334e4134..1d7c7297ac 100644
--- a/sunrpc/get_myaddr.c
+++ b/sunrpc/get_myaddr.c
@@ -99,5 +99,5 @@  get_myaddress (struct sockaddr_in *addr)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (get_myaddress)
 #else
-libc_hidden_nolink_sunrpc (get_myaddress, GLIBC_2_0)
+libc_hidden_nolink (get_myaddress, GLIBC_2_0)
 #endif
diff --git a/sunrpc/key_call.c b/sunrpc/key_call.c
index 9b8f9819c9..4d5722f332 100644
--- a/sunrpc/key_call.c
+++ b/sunrpc/key_call.c
@@ -81,7 +81,7 @@  key_setsecret (char *secretkey)
     }
   return 0;
 }
-libc_hidden_nolink_sunrpc (key_setsecret, GLIBC_2_1)
+libc_hidden_nolink (key_setsecret, GLIBC_2_1)
 
 /* key_secretkey_is_set() returns 1 if the keyserver has a secret key
  * stored for the caller's effective uid; it returns 0 otherwise
@@ -110,7 +110,7 @@  key_secretkey_is_set (void)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (key_secretkey_is_set)
 #else
-libc_hidden_nolink_sunrpc (key_secretkey_is_set, GLIBC_2_1)
+libc_hidden_nolink (key_secretkey_is_set, GLIBC_2_1)
 #endif
 
 int
@@ -134,7 +134,7 @@  key_encryptsession (char *remotename, des_block *deskey)
   *deskey = res.cryptkeyres_u.deskey;
   return 0;
 }
-libc_hidden_nolink_sunrpc (key_encryptsession, GLIBC_2_1)
+libc_hidden_nolink (key_encryptsession, GLIBC_2_1)
 
 int
 key_decryptsession (char *remotename, des_block *deskey)
@@ -156,7 +156,7 @@  key_decryptsession (char *remotename, des_block *deskey)
   *deskey = res.cryptkeyres_u.deskey;
   return 0;
 }
-libc_hidden_nolink_sunrpc (key_decryptsession, GLIBC_2_1)
+libc_hidden_nolink (key_decryptsession, GLIBC_2_1)
 
 int
 key_encryptsession_pk (char *remotename, netobj *remotekey,
@@ -181,7 +181,7 @@  key_encryptsession_pk (char *remotename, netobj *remotekey,
   *deskey = res.cryptkeyres_u.deskey;
   return 0;
 }
-libc_hidden_nolink_sunrpc (key_encryptsession_pk, GLIBC_2_1)
+libc_hidden_nolink (key_encryptsession_pk, GLIBC_2_1)
 
 int
 key_decryptsession_pk (char *remotename, netobj *remotekey,
@@ -206,7 +206,7 @@  key_decryptsession_pk (char *remotename, netobj *remotekey,
   *deskey = res.cryptkeyres_u.deskey;
   return 0;
 }
-libc_hidden_nolink_sunrpc (key_decryptsession_pk, GLIBC_2_1)
+libc_hidden_nolink (key_decryptsession_pk, GLIBC_2_1)
 
 int
 key_gendes (des_block *key)
@@ -240,7 +240,7 @@  key_gendes (des_block *key)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (key_gendes)
 #else
-libc_hidden_nolink_sunrpc (key_gendes, GLIBC_2_1)
+libc_hidden_nolink (key_gendes, GLIBC_2_1)
 #endif
 
 int
@@ -260,7 +260,7 @@  key_setnet (struct key_netstarg *arg)
     }
   return 1;
 }
-libc_hidden_nolink_sunrpc (key_setnet, GLIBC_2_1)
+libc_hidden_nolink (key_setnet, GLIBC_2_1)
 
 int
 key_get_conv (char *pkey, des_block *deskey)
@@ -279,7 +279,7 @@  key_get_conv (char *pkey, des_block *deskey)
   *deskey = res.cryptkeyres_u.deskey;
   return 0;
 }
-libc_hidden_nolink_sunrpc (key_get_conv, GLIBC_2_1)
+libc_hidden_nolink (key_get_conv, GLIBC_2_1)
 
 /*
  * Hack to allow the keyserver to use AUTH_DES (for authenticated
diff --git a/sunrpc/key_prot.c b/sunrpc/key_prot.c
index 3659bab1d3..8bec8081d3 100644
--- a/sunrpc/key_prot.c
+++ b/sunrpc/key_prot.c
@@ -39,7 +39,7 @@  xdr_keystatus (XDR * xdrs, keystatus * objp)
 
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_keystatus, GLIBC_2_0)
+libc_hidden_nolink (xdr_keystatus, GLIBC_2_0)
 
 bool_t
 xdr_keybuf (XDR * xdrs, keybuf objp)
@@ -49,7 +49,7 @@  xdr_keybuf (XDR * xdrs, keybuf objp)
 
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_keybuf, GLIBC_2_0)
+libc_hidden_nolink (xdr_keybuf, GLIBC_2_0)
 
 bool_t
 xdr_netnamestr (XDR * xdrs, netnamestr * objp)
@@ -59,7 +59,7 @@  xdr_netnamestr (XDR * xdrs, netnamestr * objp)
 
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_netnamestr, GLIBC_2_1)
+libc_hidden_nolink (xdr_netnamestr, GLIBC_2_1)
 
 bool_t
 xdr_cryptkeyarg (XDR * xdrs, cryptkeyarg * objp)
@@ -72,7 +72,7 @@  xdr_cryptkeyarg (XDR * xdrs, cryptkeyarg * objp)
 
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_cryptkeyarg, GLIBC_2_0)
+libc_hidden_nolink (xdr_cryptkeyarg, GLIBC_2_0)
 
 bool_t
 xdr_cryptkeyarg2 (XDR * xdrs, cryptkeyarg2 * objp)
@@ -85,7 +85,7 @@  xdr_cryptkeyarg2 (XDR * xdrs, cryptkeyarg2 * objp)
     return FALSE;
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_cryptkeyarg2, GLIBC_2_0)
+libc_hidden_nolink (xdr_cryptkeyarg2, GLIBC_2_0)
 
 bool_t
 xdr_cryptkeyres (XDR * xdrs, cryptkeyres * objp)
@@ -103,7 +103,7 @@  xdr_cryptkeyres (XDR * xdrs, cryptkeyres * objp)
     }
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_cryptkeyres, GLIBC_2_0)
+libc_hidden_nolink (xdr_cryptkeyres, GLIBC_2_0)
 
 bool_t
 xdr_unixcred (XDR * xdrs, unixcred * objp)
@@ -118,7 +118,7 @@  xdr_unixcred (XDR * xdrs, unixcred * objp)
     return FALSE;
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_unixcred, GLIBC_2_1)
+libc_hidden_nolink (xdr_unixcred, GLIBC_2_1)
 
 bool_t
 xdr_getcredres (XDR * xdrs, getcredres * objp)
@@ -136,7 +136,7 @@  xdr_getcredres (XDR * xdrs, getcredres * objp)
     }
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_getcredres, GLIBC_2_1)
+libc_hidden_nolink (xdr_getcredres, GLIBC_2_1)
 
 bool_t
 xdr_key_netstarg (XDR * xdrs, key_netstarg * objp)
@@ -149,7 +149,7 @@  xdr_key_netstarg (XDR * xdrs, key_netstarg * objp)
     return FALSE;
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_key_netstarg, GLIBC_2_0)
+libc_hidden_nolink (xdr_key_netstarg, GLIBC_2_0)
 
 bool_t
 xdr_key_netstres (XDR * xdrs, key_netstres * objp)
@@ -167,4 +167,4 @@  xdr_key_netstres (XDR * xdrs, key_netstres * objp)
     }
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_key_netstres, GLIBC_2_0)
+libc_hidden_nolink (xdr_key_netstres, GLIBC_2_0)
diff --git a/sunrpc/netname.c b/sunrpc/netname.c
index 61d82ca31a..07f31c09ce 100644
--- a/sunrpc/netname.c
+++ b/sunrpc/netname.c
@@ -55,7 +55,7 @@  user2netname (char netname[MAXNETNAMELEN + 1], const uid_t uid,
     netname[i - 1] = '\0';
   return 1;
 }
-libc_hidden_nolink_sunrpc (user2netname, GLIBC_2_1)
+libc_hidden_nolink (user2netname, GLIBC_2_1)
 
 int
 host2netname (char netname[MAXNETNAMELEN + 1], const char *host,
@@ -119,7 +119,7 @@  host2netname (char netname[MAXNETNAMELEN + 1], const char *host,
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (host2netname)
 #else
-libc_hidden_nolink_sunrpc (host2netname, GLIBC_2_1)
+libc_hidden_nolink (host2netname, GLIBC_2_1)
 #endif
 
 int
@@ -135,7 +135,7 @@  getnetname (char name[MAXNETNAMELEN + 1])
     dummy = user2netname (name, uid, NULL);
   return (dummy);
 }
-libc_hidden_nolink_sunrpc (getnetname, GLIBC_2_1)
+libc_hidden_nolink (getnetname, GLIBC_2_1)
 
 /* Type of the lookup function for netname2user.  */
 typedef int (*netname2user_function) (const char netname[MAXNETNAMELEN + 1],
@@ -185,7 +185,7 @@  netname2user (const char netname[MAXNETNAMELEN + 1], uid_t * uidp, gid_t * gidp,
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (netname2user)
 #else
-libc_hidden_nolink_sunrpc (netname2user, GLIBC_2_1)
+libc_hidden_nolink (netname2user, GLIBC_2_1)
 #endif
 
 int
@@ -212,4 +212,4 @@  netname2host (const char netname[MAXNETNAMELEN + 1], char *hostname,
 
   return 1;
 }
-libc_hidden_nolink_sunrpc (netname2host, GLIBC_2_1)
+libc_hidden_nolink (netname2host, GLIBC_2_1)
diff --git a/sunrpc/pm_getmaps.c b/sunrpc/pm_getmaps.c
index 094492b2b4..7fd80cfcc3 100644
--- a/sunrpc/pm_getmaps.c
+++ b/sunrpc/pm_getmaps.c
@@ -85,4 +85,4 @@  pmap_getmaps (struct sockaddr_in *address)
   address->sin_port = 0;
   return head;
 }
-libc_hidden_nolink_sunrpc (pmap_getmaps, GLIBC_2_0)
+libc_hidden_nolink (pmap_getmaps, GLIBC_2_0)
diff --git a/sunrpc/pm_getport.c b/sunrpc/pm_getport.c
index 3e6dd34e58..ce16c0a969 100644
--- a/sunrpc/pm_getport.c
+++ b/sunrpc/pm_getport.c
@@ -136,7 +136,7 @@  __libc_rpc_getport (struct sockaddr_in *address, u_long program,
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (__libc_rpc_getport)
 #else
-libc_hidden_nolink_sunrpc (__libc_rpc_getport, GLIBC_PRIVATE)
+libc_hidden_nolink (__libc_rpc_getport, GLIBC_PRIVATE)
 #endif
 
 
@@ -151,4 +151,4 @@  pmap_getport (struct sockaddr_in *address, u_long program, u_long version,
 {
   return __libc_rpc_getport (address, program, version, protocol, 5, 60);
 }
-libc_hidden_nolink_sunrpc (pmap_getport, GLIBC_2_0)
+libc_hidden_nolink (pmap_getport, GLIBC_2_0)
diff --git a/sunrpc/pmap_clnt.c b/sunrpc/pmap_clnt.c
index 69b4907b3a..33a49fefcb 100644
--- a/sunrpc/pmap_clnt.c
+++ b/sunrpc/pmap_clnt.c
@@ -132,7 +132,7 @@  pmap_set (u_long program, u_long version, int protocol, u_short port)
   /* (void)close(socket); CLNT_DESTROY closes it */
   return rslt;
 }
-libc_hidden_nolink_sunrpc (pmap_set, GLIBC_2_0)
+libc_hidden_nolink (pmap_set, GLIBC_2_0)
 
 /*
  * Remove the mapping between program,version and port.
@@ -163,4 +163,4 @@  pmap_unset (u_long program, u_long version)
   /* (void)close(socket); CLNT_DESTROY already closed it */
   return rslt;
 }
-libc_hidden_nolink_sunrpc (pmap_unset, GLIBC_2_0)
+libc_hidden_nolink (pmap_unset, GLIBC_2_0)
diff --git a/sunrpc/pmap_prot.c b/sunrpc/pmap_prot.c
index d8d75a7b47..eaf79f3911 100644
--- a/sunrpc/pmap_prot.c
+++ b/sunrpc/pmap_prot.c
@@ -48,4 +48,4 @@  xdr_pmap (XDR *xdrs, struct pmap *regs)
     return xdr_u_long (xdrs, &regs->pm_port);
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_pmap, GLIBC_2_0)
+libc_hidden_nolink (xdr_pmap, GLIBC_2_0)
diff --git a/sunrpc/pmap_prot2.c b/sunrpc/pmap_prot2.c
index c414db0298..117de7d409 100644
--- a/sunrpc/pmap_prot2.c
+++ b/sunrpc/pmap_prot2.c
@@ -109,4 +109,4 @@  xdr_pmaplist (XDR *xdrs, struct pmaplist **rp)
       rp = freeing ? &next : &((*rp)->pml_next);
     }
 }
-libc_hidden_nolink_sunrpc (xdr_pmaplist, GLIBC_2_0)
+libc_hidden_nolink (xdr_pmaplist, GLIBC_2_0)
diff --git a/sunrpc/pmap_rmt.c b/sunrpc/pmap_rmt.c
index 6b142e5441..0be1a9a62e 100644
--- a/sunrpc/pmap_rmt.c
+++ b/sunrpc/pmap_rmt.c
@@ -101,7 +101,7 @@  pmap_rmtcall (struct sockaddr_in *addr, u_long prog, u_long vers, u_long proc,
   addr->sin_port = 0;
   return stat;
 }
-libc_hidden_nolink_sunrpc (pmap_rmtcall, GLIBC_2_0)
+libc_hidden_nolink (pmap_rmtcall, GLIBC_2_0)
 
 
 /*
@@ -134,7 +134,7 @@  xdr_rmtcall_args (XDR *xdrs, struct rmtcallargs *cap)
     }
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_rmtcall_args, GLIBC_2_0)
+libc_hidden_nolink (xdr_rmtcall_args, GLIBC_2_0)
 
 /*
  * XDR remote call results
@@ -155,7 +155,7 @@  xdr_rmtcallres (XDR *xdrs, struct rmtcallres *crp)
     }
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_rmtcallres, GLIBC_2_0)
+libc_hidden_nolink (xdr_rmtcallres, GLIBC_2_0)
 
 
 /*
@@ -389,4 +389,4 @@  done_broad:
   AUTH_DESTROY (unix_auth);
   return stat;
 }
-libc_hidden_nolink_sunrpc (clnt_broadcast, GLIBC_2_0)
+libc_hidden_nolink (clnt_broadcast, GLIBC_2_0)
diff --git a/sunrpc/proto.h b/sunrpc/proto.h
deleted file mode 100644
index ea28565b1e..0000000000
--- a/sunrpc/proto.h
+++ /dev/null
@@ -1,65 +0,0 @@ 
-/****** rpc_clntout.c ******/
-
-void write_stubs(void);
-void printarglist(proc_list *proc, const char *result,
-		  const char *addargname, const char *addargtype);
-
-/****** rpc_cout.c ******/
-
-void emit (definition *def);
-
-/****** rpc_hout.c ******/
-
-void print_datadef(definition *def);
-void print_funcdef(definition *def);
-void pxdrfuncdecl(const char *name, int pointerp);
-void pprocdef(proc_list *proc, version_list *vp,
-	      const char *addargtype, int server_p, int mode);
-void pdeclaration(const char *name, declaration *dec, int tab,
-		  const char *separator);
-void print_xdr_func_def (char* name, int pointerp, int i);
-
-/****** rpc_main.c ******/
-	/* nil */
-
-/****** rpc_parse.c ******/
-definition *get_definition(void);
-
-/****** rpc_sample.c ******/
-void write_sample_svc(definition *def);
-int write_sample_clnt(definition *def);
-void add_sample_msg(void);
-void write_sample_clnt_main(void);
-
-/****** rpc_scan.c ******/
-   /* see rpc_scan.h */
-
-/****** rpc_svcout.c ******/
-int nullproc(const proc_list *proc);
-void write_svc_aux(int nomain);
-void write_msg_out(void);
-
-/****** rpc_tblout.c ******/
-void write_tables(void);
-
-/****** rpc_util.c ******/
-void reinitialize(void);
-int streq(const char *a, const char *b);
-void error(const char *msg) __attribute__ ((noreturn));
-void crash(void) __attribute__ ((noreturn));
-void tabify(FILE *f, int tab);
-char *make_argname(const char *pname, const char *vname);
-void add_type(int len, const char *type);
-
-/* This header is the last one included in all rpc_*.c files,
-   so we define stuff for cross-rpcgen here to avoid conflicts with
-   $build's C library and $host's glibc.  */
-
-#ifdef IS_IN_build
-
-/* Disable translated messages when built for $build and used in
-   building glibc.  */
-#define _(X) (X)
-#define textdomain(X) ((void) 0)
-
-#endif
diff --git a/sunrpc/publickey.c b/sunrpc/publickey.c
index 2fa0252d5b..ec7581385a 100644
--- a/sunrpc/publickey.c
+++ b/sunrpc/publickey.c
@@ -71,7 +71,7 @@  getpublickey (const char *name, char *key)
 
   return status == NSS_STATUS_SUCCESS;
 }
-libc_hidden_nolink_sunrpc (getpublickey, GLIBC_2_0)
+libc_hidden_nolink (getpublickey, GLIBC_2_0)
 
 
 int
@@ -114,4 +114,4 @@  getsecretkey (const char *name, char *key, const char *passwd)
 
   return status == NSS_STATUS_SUCCESS;
 }
-libc_hidden_nolink_sunrpc (getsecretkey, GLIBC_2_0)
+libc_hidden_nolink (getsecretkey, GLIBC_2_0)
diff --git a/sunrpc/rpc_clntout.c b/sunrpc/rpc_clntout.c
deleted file mode 100644
index ce4d2a4c95..0000000000
--- a/sunrpc/rpc_clntout.c
+++ /dev/null
@@ -1,333 +0,0 @@ 
-/*
- * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <stdio.h>
-#include <string.h>
-#include "rpc/types.h"
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define DEFAULT_TIMEOUT 25	/* in seconds */
-static const char RESULT[] = "clnt_res";
-
-static void write_program (definition * def);
-static void printbody (proc_list * proc);
-static const char *ampr (const char *type);
-static void printbody (proc_list * proc);
-
-
-void
-write_stubs (void)
-{
-  list *l;
-  definition *def;
-
-  fprintf (fout,
-	   "\n/* Default timeout can be changed using clnt_control() */\n");
-  fprintf (fout, "static struct timeval TIMEOUT = { %d, 0 };\n",
-	   DEFAULT_TIMEOUT);
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind == DEF_PROGRAM)
-	{
-	  write_program (def);
-	}
-    }
-}
-
-static void
-write_program (definition * def)
-{
-  version_list *vp;
-  proc_list *proc;
-
-  for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-    {
-      for (proc = vp->procs; proc != NULL; proc = proc->next)
-	{
-	  fprintf (fout, "\n");
-	  if (mtflag == 0)
-	    {
-	      ptype (proc->res_prefix, proc->res_type, 1);
-	      fprintf (fout, "*\n");
-	      pvname (proc->proc_name, vp->vers_num);
-	      printarglist (proc, RESULT, "clnt", "CLIENT *");
-	    }
-	  else
-	    {
-	      fprintf (fout, "enum clnt_stat \n");
-	      pvname (proc->proc_name, vp->vers_num);
-	      printarglist (proc, RESULT, "clnt", "CLIENT *");
-	    }
-	  fprintf (fout, "{\n");
-	  printbody (proc);
-	  fprintf (fout, "}\n");
-	}
-    }
-}
-
-/* Writes out declarations of procedure's argument list.
-   In either ANSI C style, in one of old rpcgen style (pass by reference),
-   or new rpcgen style (multiple arguments, pass by value);
- */
-
-/* sample addargname = "clnt"; sample addargtype = "CLIENT * " */
-
-void
-printarglist (proc_list * proc,  const char *result,
-	      const char *addargname, const char *addargtype)
-{
-
-  decl_list *l;
-
-  if (!newstyle)
-    { /* old style: always pass argument by reference */
-      if (Cflag)
-	{			/* C++ style heading */
-	  fprintf (fout, "(");
-	  ptype (proc->args.decls->decl.prefix,
-		 proc->args.decls->decl.type, 1);
-
-	  if (mtflag)
-	    {/* Generate result field */
-	      fprintf (fout, "*argp, ");
-	      ptype(proc->res_prefix, proc->res_type, 1);
-	      fprintf (fout, "*%s, %s%s)\n", result, addargtype, addargname);
-	    }
-	  else
-	    fprintf (fout, "*argp, %s%s)\n", addargtype, addargname);
-	}
-      else
-	{
-	  if (!mtflag)
-	    fprintf (fout, "(argp, %s)\n", addargname);
-	  else
-	    fprintf (fout, "(argp, %s, %s)\n", result, addargname);
-	  fprintf (fout, "\t");
-	  ptype (proc->args.decls->decl.prefix,
-		 proc->args.decls->decl.type, 1);
-	  fprintf (fout, "*argp;\n");
-	  if (mtflag)
-	    {
-	      fprintf (fout, "\t");
-	      ptype (proc->res_prefix, proc->res_type, 1);
-	      fprintf (fout, "*%s;\n", result);
-	    }
-	}
-    }
-  else if (streq (proc->args.decls->decl.type, "void"))
-    {
-      /* newstyle, 0 argument */
-      if (mtflag)
-	{
-	  fprintf (fout, "(");
-	  if (Cflag)
-	    {
-	      ptype(proc->res_prefix, proc->res_type, 1);
-	      fprintf (fout, "*%s, %s%s)\n", result, addargtype, addargname);
-	    }
-	  else
-	    fprintf (fout, "(%s)\n", addargname);
-	}
-      else if (Cflag)
-	fprintf (fout, "(%s%s)\n", addargtype, addargname);
-      else
-	fprintf (fout, "(%s)\n", addargname);
-    }
-  else
-    {
-      /* new style, 1 or multiple arguments */
-      if (!Cflag)
-	{
-	  fprintf (fout, "(");
-	  for (l = proc->args.decls; l != NULL; l = l->next)
-	    fprintf (fout, "%s, ", l->decl.name);
-	  if (mtflag)
-	    fprintf (fout, "%s, ", result);
- 	  fprintf (fout, "%s)\n", addargname);
-	  for (l = proc->args.decls; l != NULL; l = l->next)
-	    {
-	      pdeclaration (proc->args.argname, &l->decl, 1, ";\n");
-	    }
-	  if (mtflag)
-	    {
-	      fprintf (fout, "\t");
-	      ptype (proc->res_prefix, proc->res_type, 1);
-	      fprintf (fout, "*%s;\n", result);
-	    }
-	}
-      else
-	{			/* C++ style header */
-	  fprintf (fout, "(");
-	  for (l = proc->args.decls; l != NULL; l = l->next)
-	    {
-	      pdeclaration (proc->args.argname, &l->decl, 0, ", ");
-	    }
-	  if (mtflag)
-	    {
-	      ptype (proc->res_prefix, proc->res_type, 1);
-	      fprintf (fout, "*%s, ", result);
-	    }
- 	  fprintf (fout, " %s%s)\n", addargtype, addargname);
-	}
-    }
-
-  if (!Cflag)
-    fprintf (fout, "\t%s%s;\n", addargtype, addargname);
-}
-
-
-static
-const char *
-ampr (const char *type)
-{
-  if (isvectordef (type, REL_ALIAS))
-    {
-      return "";
-    }
-  else
-    {
-      return "&";
-    }
-}
-
-static void
-printbody (proc_list * proc)
-{
-  decl_list *l;
-  bool_t args2 = (proc->arg_num > 1);
-/*  int i; */
-
-  /* For new style with multiple arguments, need a structure in which
-     to stuff the arguments. */
-  if (newstyle && args2)
-    {
-      fprintf (fout, "\t%s", proc->args.argname);
-      fprintf (fout, " arg;\n");
-    }
-  if (!mtflag)
-    {
-      fprintf (fout, "\tstatic ");
-      if (streq (proc->res_type, "void"))
-	{
-	  fprintf (fout, "char ");
-	}
-      else
-	{
-	  ptype (proc->res_prefix, proc->res_type, 0);
-	}
-      fprintf (fout, "%s;\n", RESULT);
-      fprintf (fout, "\n");
-      fprintf (fout, "\tmemset((char *)%s%s, 0, sizeof(%s));\n",
-	       ampr (proc->res_type), RESULT, RESULT);
-    }
-  if (newstyle && !args2 && (streq (proc->args.decls->decl.type, "void")))
-    {
-      /* newstyle, 0 arguments */
-      if (mtflag)
-	fprintf (fout, "\t return ");
-      else
-	fprintf (fout, "\t if ");
-      fprintf (fout,
-	       "(clnt_call (clnt, %s, (xdrproc_t) xdr_void, ", proc->proc_name);
-
-      fprintf (fout,
-	       "(caddr_t) NULL,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,",
-	       stringfix(proc->res_type), (mtflag)?"":ampr(proc->res_type),
-	       RESULT);
-      if (mtflag)
-	fprintf (fout, "\n\t\tTIMEOUT));\n\n");
-      else
-	fprintf (fout, "\n\t\tTIMEOUT) != RPC_SUCCESS) {\n");
-    }
-  else if (newstyle && args2)
-    {
-      /* newstyle, multiple arguments:  stuff arguments into structure */
-      for (l = proc->args.decls; l != NULL; l = l->next)
-	{
-	  fprintf (fout, "\targ.%s = %s;\n",
-		   l->decl.name, l->decl.name);
-	}
-      if (mtflag)
-	fprintf (fout, "\treturn ");
-      else
-	fprintf (fout, "\tif ");
-
-      fprintf (fout,
-	       "(clnt_call (clnt, %s, (xdrproc_t) xdr_%s", proc->proc_name,
-	       proc->args.argname);
-      fprintf (fout,
-	       ", (caddr_t) &arg,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,",
-	       stringfix(proc->res_type), (mtflag)?"":ampr(proc->res_type),
-	       RESULT);
-      if (mtflag)
-	fprintf (fout, "\n\t\tTIMEOUT));\n");
-      else
-	fprintf (fout, "\n\t\tTIMEOUT) != RPC_SUCCESS) {\n");
-    }
-  else
-    {				/* single argument, new or old style */
-      if (!mtflag)
-	fprintf (fout,
-		 "\tif (clnt_call (clnt, %s,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,\n\t\tTIMEOUT) != RPC_SUCCESS) {\n",
-		 proc->proc_name,
-		 stringfix (proc->args.decls->decl.type),
-		 (newstyle ? "&" : ""),
-		 (newstyle ? proc->args.decls->decl.name : "argp"),
-		 stringfix (proc->res_type), ampr (proc->res_type),
-		 RESULT);
-      else
-	fprintf(fout,
-		"\treturn (clnt_call(clnt, %s,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,\n\t\tTIMEOUT));\n",
-		proc->proc_name,
-		stringfix (proc->args.decls->decl.type),
-		(newstyle ? "&" : ""),
-		(newstyle ? proc->args.decls->decl.name : "argp"),
-		stringfix (proc->res_type), "",
-		RESULT);
-    }
-  if (!mtflag)
-    {
-      fprintf (fout, "\t\treturn (NULL);\n");
-      fprintf (fout, "\t}\n");
-      if (streq (proc->res_type, "void"))
-	{
-	  fprintf (fout, "\treturn ((void *)%s%s);\n",
-		   ampr (proc->res_type), RESULT);
-	}
-      else
-	{
-	  fprintf (fout, "\treturn (%s%s);\n", ampr (proc->res_type), RESULT);
-	}
-    }
-}
diff --git a/sunrpc/rpc_cmsg.c b/sunrpc/rpc_cmsg.c
index ec8cc6ccca..946e0d2409 100644
--- a/sunrpc/rpc_cmsg.c
+++ b/sunrpc/rpc_cmsg.c
@@ -195,4 +195,4 @@  xdr_callmsg (XDR *xdrs, struct rpc_msg *cmsg)
     return xdr_opaque_auth (xdrs, &(cmsg->rm_call.cb_verf));
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_callmsg, GLIBC_2_0)
+libc_hidden_nolink (xdr_callmsg, GLIBC_2_0)
diff --git a/sunrpc/rpc_common.c b/sunrpc/rpc_common.c
index 2a5d0dc1c7..02cd9d4b46 100644
--- a/sunrpc/rpc_common.c
+++ b/sunrpc/rpc_common.c
@@ -43,15 +43,15 @@ 
    section but we cannot add const to the type because this isn't how
    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)
+libc_hidden_nolink (_null_auth, GLIBC_2_0)
 
 /* 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)
+libc_hidden_nolink (svc_fdset, GLIBC_2_0)
 struct rpc_createerr rpc_createerr  __attribute__ ((nocommon));
-libc_hidden_nolink_sunrpc (rpc_createerr, GLIBC_2_0)
+libc_hidden_nolink (rpc_createerr, GLIBC_2_0)
 struct pollfd *svc_pollfd  __attribute__ ((nocommon));
-libc_hidden_nolink_sunrpc (svc_pollfd, GLIBC_2_2)
+libc_hidden_nolink (svc_pollfd, GLIBC_2_2)
 int svc_max_pollfd  __attribute__ ((nocommon));
-libc_hidden_nolink_sunrpc (svc_max_pollfd, GLIBC_2_2)
+libc_hidden_nolink (svc_max_pollfd, GLIBC_2_2)
diff --git a/sunrpc/rpc_cout.c b/sunrpc/rpc_cout.c
deleted file mode 100644
index db7b571b33..0000000000
--- a/sunrpc/rpc_cout.c
+++ /dev/null
@@ -1,811 +0,0 @@ 
-/*
- * From: @(#)rpc_cout.c 1.13 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_cout.c, XDR routine outputter for the RPC protocol compiler
- */
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-static void emit_enum (definition * def);
-static void emit_program (const definition * def);
-static void emit_union (const definition * def);
-static void emit_struct (definition * def);
-static void emit_typedef (const definition * def);
-static void emit_inline (int indent, declaration * decl, int flag);
-static void emit_single_in_line (int indent, declaration *decl, int flag,
-				 relation rel);
-static int findtype (const definition * def, const char *type);
-static int undefined (const char *type);
-static void print_generic_header (const char *procname, int pointerp);
-static void print_ifopen (int indent, const char *name);
-static void print_ifarg (const char *arg);
-static void print_ifsizeof (int indent, const char *prefix, const char *type);
-static void print_ifclose (int indent);
-static void print_ifstat (int indent, const char *prefix, const char *type,
-			  relation rel, const char *amax,
-			  const char *objname, const char *name);
-static void print_stat (int indent, const declaration * dec);
-static void print_header (const definition * def);
-static void print_trailer (void);
-static char *upcase (const char *str);
-
-/*
- * Emit the C-routine for the given definition
- */
-void
-emit (definition * def)
-{
-  if (def->def_kind == DEF_CONST)
-    {
-      return;
-    }
-  if (def->def_kind == DEF_PROGRAM)
-    {
-      emit_program (def);
-      return;
-    }
-  if (def->def_kind == DEF_TYPEDEF)
-    {
-      /* now we need to handle declarations like
-	 struct typedef foo foo;
-	 since we don't want this to be expanded
-	 into 2 calls to xdr_foo */
-
-      if (strcmp (def->def.ty.old_type, def->def_name) == 0)
-	return;
-    };
-
-  print_header (def);
-  switch (def->def_kind)
-    {
-    case DEF_UNION:
-      emit_union (def);
-      break;
-    case DEF_ENUM:
-      emit_enum (def);
-      break;
-    case DEF_STRUCT:
-      emit_struct (def);
-      break;
-    case DEF_TYPEDEF:
-      emit_typedef (def);
-      break;
-    default:
-      /* can't happen */
-      break;
-    }
-  print_trailer ();
-}
-
-static int
-findtype (const definition * def, const char *type)
-{
-  if (def->def_kind == DEF_PROGRAM || def->def_kind == DEF_CONST)
-    {
-      return 0;
-    }
-  else
-    {
-      return (streq (def->def_name, type));
-    }
-}
-
-static int
-undefined (const char *type)
-{
-  definition *def;
-  def = (definition *) FINDVAL (defined, type, findtype);
-  return (def == NULL);
-}
-
-
-static void
-print_generic_header (const char *procname, int pointerp)
-{
-  f_print (fout, "\n");
-  f_print (fout, "bool_t\n");
-  if (Cflag)
-    {
-      f_print (fout, "xdr_%s (", procname);
-      f_print (fout, "XDR *xdrs, ");
-      f_print (fout, "%s ", procname);
-      if (pointerp)
-	f_print (fout, "*");
-      f_print (fout, "objp)\n{\n");
-    }
-  else
-    {
-      f_print (fout, "xdr_%s (xdrs, objp)\n", procname);
-      f_print (fout, "\tXDR *xdrs;\n");
-      f_print (fout, "\t%s ", procname);
-      if (pointerp)
-	f_print (fout, "*");
-      f_print (fout, "objp;\n{\n");
-    }
-}
-
-static void
-print_header (const definition * def)
-{
-  print_generic_header (def->def_name,
-			def->def_kind != DEF_TYPEDEF ||
-			!isvectordef (def->def.ty.old_type,
-				      def->def.ty.rel));
-
-  /* Now add Inline support */
-
-  if (inlineflag == 0)
-    return;
-  /*May cause lint to complain. but  ... */
-  f_print (fout, "\tregister int32_t *buf;\n\n");
-}
-
-static void
-print_prog_header (const proc_list * plist)
-{
-  print_generic_header (plist->args.argname, 1);
-}
-
-static void
-print_trailer (void)
-{
-  f_print (fout, "\treturn TRUE;\n");
-  f_print (fout, "}\n");
-}
-
-
-static void
-print_ifopen (int indent, const char *name)
-{
-  tabify (fout, indent);
-  f_print (fout, " if (!xdr_%s (xdrs", name);
-}
-
-static void
-print_ifarg (const char *arg)
-{
-  f_print (fout, ", %s", arg);
-}
-
-static void
-print_ifsizeof (int indent, const char *prefix, const char *type)
-{
-  if (indent)
-    {
-      fprintf (fout, ",\n");
-      tabify (fout, indent);
-    }
-  else
-    fprintf (fout, ", ");
-
-  if (streq (type, "bool"))
-    fprintf (fout, "sizeof (bool_t), (xdrproc_t) xdr_bool");
-  else
-    {
-      fprintf (fout, "sizeof (");
-      if (undefined (type) && prefix)
-	{
-	  f_print (fout, "%s ", prefix);
-	}
-      fprintf (fout, "%s), (xdrproc_t) xdr_%s", type, type);
-    }
-}
-
-static void
-print_ifclose (int indent)
-{
-  f_print (fout, "))\n");
-  tabify (fout, indent);
-  f_print (fout, "\t return FALSE;\n");
-}
-
-static void
-print_ifstat (int indent, const char *prefix, const char *type, relation rel,
-	      const char *amax, const char *objname, const char *name)
-{
-  const char *alt = NULL;
-
-  switch (rel)
-    {
-    case REL_POINTER:
-      print_ifopen (indent, "pointer");
-      print_ifarg ("(char **)");
-      f_print (fout, "%s", objname);
-      print_ifsizeof (0, prefix, type);
-      break;
-    case REL_VECTOR:
-      if (streq (type, "string"))
-	{
-	  alt = "string";
-	}
-      else if (streq (type, "opaque"))
-	{
-	  alt = "opaque";
-	}
-      if (alt)
-	{
-	  print_ifopen (indent, alt);
-	  print_ifarg (objname);
-	}
-      else
-	{
-	  print_ifopen (indent, "vector");
-	  print_ifarg ("(char *)");
-	  f_print (fout, "%s", objname);
-	}
-      print_ifarg (amax);
-      if (!alt)
-	{
-	  print_ifsizeof (indent + 1, prefix, type);
-	}
-      break;
-    case REL_ARRAY:
-      if (streq (type, "string"))
-	{
-	  alt = "string";
-	}
-      else if (streq (type, "opaque"))
-	{
-	  alt = "bytes";
-	}
-      if (streq (type, "string"))
-	{
-	  print_ifopen (indent, alt);
-	  print_ifarg (objname);
-	}
-      else
-	{
-	  if (alt)
-	    {
-	      print_ifopen (indent, alt);
-	    }
-	  else
-	    {
-	      print_ifopen (indent, "array");
-	    }
-	  print_ifarg ("(char **)");
-	  if (*objname == '&')
-	    {
-	      f_print (fout, "%s.%s_val, (u_int *) %s.%s_len",
-		       objname, name, objname, name);
-	    }
-	  else
-	    {
-	      f_print (fout, "&%s->%s_val, (u_int *) &%s->%s_len",
-		       objname, name, objname, name);
-	    }
-	}
-      print_ifarg (amax);
-      if (!alt)
-	{
-	  print_ifsizeof (indent + 1, prefix, type);
-	}
-      break;
-    case REL_ALIAS:
-      print_ifopen (indent, type);
-      print_ifarg (objname);
-      break;
-    }
-  print_ifclose (indent);
-}
-
-static void
-emit_enum (definition * def)
-{
-  (void) def;
-
-  print_ifopen (1, "enum");
-  print_ifarg ("(enum_t *) objp");
-  print_ifclose (1);
-}
-
-static void
-emit_program (const definition * def)
-{
-  decl_list *dl;
-  version_list *vlist;
-  proc_list *plist;
-
-  for (vlist = def->def.pr.versions; vlist != NULL; vlist = vlist->next)
-    for (plist = vlist->procs; plist != NULL; plist = plist->next)
-      {
-	if (!newstyle || plist->arg_num < 2)
-	  continue;		/* old style, or single argument */
-	print_prog_header (plist);
-	for (dl = plist->args.decls; dl != NULL;
-	     dl = dl->next)
-	  print_stat (1, &dl->decl);
-	print_trailer ();
-      }
-}
-
-static void
-emit_union (const definition * def)
-{
-  declaration *dflt;
-  case_list *cl;
-  declaration *cs;
-  char *object;
-  const char *vecformat = "objp->%s_u.%s";
-  const char *format = "&objp->%s_u.%s";
-
-  print_stat (1, &def->def.un.enum_decl);
-  f_print (fout, "\tswitch (objp->%s) {\n", def->def.un.enum_decl.name);
-  for (cl = def->def.un.cases; cl != NULL; cl = cl->next)
-    {
-
-      f_print (fout, "\tcase %s:\n", cl->case_name);
-      if (cl->contflag == 1)	/* a continued case statement */
-	continue;
-      cs = &cl->case_decl;
-      if (!streq (cs->type, "void"))
-	{
-	  object = alloc (strlen (def->def_name) + strlen (format) +
-			  strlen (cs->name) + 1);
-	  if (isvectordef (cs->type, cs->rel))
-	    {
-	      s_print (object, vecformat, def->def_name,
-		       cs->name);
-	    }
-	  else
-	    {
-	      s_print (object, format, def->def_name,
-		       cs->name);
-	    }
-	  print_ifstat (2, cs->prefix, cs->type, cs->rel, cs->array_max,
-			object, cs->name);
-	  free (object);
-	}
-      f_print (fout, "\t\tbreak;\n");
-    }
-  dflt = def->def.un.default_decl;
-  if (dflt != NULL)
-    {
-      if (!streq (dflt->type, "void"))
-	{
-	  f_print (fout, "\tdefault:\n");
-	  object = alloc (strlen (def->def_name) + strlen (format) +
-			  strlen (dflt->name) + 1);
-	  if (isvectordef (dflt->type, dflt->rel))
-	    {
-	      s_print (object, vecformat, def->def_name,
-		       dflt->name);
-	    }
-	  else
-	    {
-	      s_print (object, format, def->def_name,
-		       dflt->name);
-	    }
-
-	  print_ifstat (2, dflt->prefix, dflt->type, dflt->rel,
-			dflt->array_max, object, dflt->name);
-	  free (object);
-	  f_print (fout, "\t\tbreak;\n");
-	}
-      else
-	{
-	  f_print (fout, "\tdefault:\n");
-	  f_print (fout, "\t\tbreak;\n");
-	}
-    }
-  else
-    {
-      f_print (fout, "\tdefault:\n");
-      f_print (fout, "\t\treturn FALSE;\n");
-    }
-
-  f_print (fout, "\t}\n");
-}
-
-static void
-inline_struct (definition *def, int flag)
-{
-  decl_list *dl;
-  int i, size;
-  decl_list *cur = NULL;
-  decl_list *psav;
-  bas_type *ptr;
-  char *sizestr;
-  const char *plus;
-  char ptemp[256];
-  int indent = 1;
-
-  if (flag == PUT)
-    f_print (fout, "\n\tif (xdrs->x_op == XDR_ENCODE) {\n");
-  else
-    f_print (fout,
-	     "\t\treturn TRUE;\n\t} else if (xdrs->x_op == XDR_DECODE) {\n");
-
-  i = 0;
-  size = 0;
-  sizestr = NULL;
-  for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
-    {			/* xxx */
-      /* now walk down the list and check for basic types */
-      if ((dl->decl.prefix == NULL) &&
-	  ((ptr = find_type (dl->decl.type)) != NULL) &&
-	  ((dl->decl.rel == REL_ALIAS) || (dl->decl.rel == REL_VECTOR)))
-	{
-	  if (i == 0)
-	    cur = dl;
-	  ++i;
-
-	  if (dl->decl.rel == REL_ALIAS)
-	    size += ptr->length;
-	  else
-	    {
-	      /* this is required to handle arrays */
-	      if (sizestr == NULL)
-		plus = "";
-	      else
-		plus = "+ ";
-
-	      if (ptr->length != 1)
-		s_print (ptemp, " %s %s * %d", plus, dl->decl.array_max,
-			 ptr->length);
-	      else
-		s_print (ptemp, " %s%s ", plus, dl->decl.array_max);
-
-	      /*now concatenate to sizestr !!!! */
-	      if (sizestr == NULL)
-		sizestr = strdup (ptemp);
-	      else
-		{
-		  sizestr = realloc (sizestr, strlen (sizestr) +
-				     strlen (ptemp) + 1);
-		  if (sizestr == NULL)
-		    {
-		      f_print (stderr, "Fatal error : no memory \n");
-		      crash ();
-		    };
-		  sizestr = strcat (sizestr, ptemp);
-		  /*build up length of array */
-		}
-	    }
-	}
-      else
-	{
-	  if (i > 0)
-	    {
-	      if (sizestr == NULL && size < inlineflag)
-		{
-		  /* don't expand into inline code if size < inlineflag */
-		  while (cur != dl)
-		    {
-		      print_stat (indent + 1, &cur->decl);
-		      cur = cur->next;
-		    }
-		}
-	      else
-		{
-		  /* were already looking at a xdr_inlineable structure */
-		  tabify (fout, indent + 1);
-		  if (sizestr == NULL)
-		    f_print (fout, "buf = XDR_INLINE (xdrs, %d * BYTES_PER_XDR_UNIT);", size);
-		  else if (size == 0)
-		    f_print (fout,
-			     "buf = XDR_INLINE (xdrs, (%s) * BYTES_PER_XDR_UNIT);",
-			     sizestr);
-		  else
-		    f_print (fout,
-			     "buf = XDR_INLINE (xdrs, (%d + (%s)) * BYTES_PER_XDR_UNIT);",
-			     size, sizestr);
-		  f_print (fout, "\n");
-		  tabify (fout, indent + 1);
-		  fprintf (fout, "if (buf == NULL) {\n");
-		  psav = cur;
-		  while (cur != dl)
-		    {
-		      print_stat (indent + 2, &cur->decl);
-		      cur = cur->next;
-		    }
-
-		  f_print (fout, "\n\t\t} else {\n");
-		  cur = psav;
-		  while (cur != dl)
-		    {
-		      emit_inline (indent + 1, &cur->decl, flag);
-		      cur = cur->next;
-		    }
-		  tabify (fout, indent + 1);
-		  f_print (fout, "}\n");
-		}
-	    }
-	  size = 0;
-	  i = 0;
-	  free (sizestr);
-	  sizestr = NULL;
-	  print_stat (indent + 1, &dl->decl);
-	}
-    }
-  if (i > 0)
-    {
-      if (sizestr == NULL && size < inlineflag)
-	{
-	  /* don't expand into inline code if size < inlineflag */
-	  while (cur != dl)
-	    {
-	      print_stat (indent + 1, &cur->decl);
-	      cur = cur->next;
-	    }
-	}
-      else
-	{
-	  /* were already looking at a xdr_inlineable structure */
-	  if (sizestr == NULL)
-	    f_print (fout,
-		     "\t\tbuf = XDR_INLINE (xdrs, %d * BYTES_PER_XDR_UNIT);",
-		     size);
-	  else if (size == 0)
-	    f_print (fout,
-		     "\t\tbuf = XDR_INLINE (xdrs, (%s) * BYTES_PER_XDR_UNIT);",
-		     sizestr);
-	  else
-	    f_print (fout,
-		     "\t\tbuf = XDR_INLINE (xdrs, (%d + %s)* BYTES_PER_XDR_UNIT);",
-		     size, sizestr);
-	  f_print (fout, "\n\t\tif (buf == NULL) {\n");
-	  psav = cur;
-	  while (cur != NULL)
-	    {
-	      print_stat (indent + 2, &cur->decl);
-	      cur = cur->next;
-	    }
-	  f_print (fout, "\t\t} else {\n");
-
-	  cur = psav;
-	  while (cur != dl)
-	    {
-	      emit_inline (indent + 2, &cur->decl, flag);
-	      cur = cur->next;
-	    }
-	  f_print (fout, "\t\t}\n");
-	}
-    }
-}
-
-/* this may be const.  i haven't traced this one through yet. */
-
-static void
-emit_struct (definition * def)
-{
-  decl_list *dl;
-  int j, size, flag;
-  bas_type *ptr;
-  int can_inline;
-
-
-  if (inlineflag == 0)
-    {
-      /* No xdr_inlining at all */
-      for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
-	print_stat (1, &dl->decl);
-      return;
-    }
-
-  for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
-    if (dl->decl.rel == REL_VECTOR)
-      {
-	f_print (fout, "\tint i;\n");
-	break;
-      }
-
-  size = 0;
-  can_inline = 0;
-  /*
-   * Make a first pass and see if inling is possible.
-   */
-  for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
-    if ((dl->decl.prefix == NULL) &&
-	((ptr = find_type (dl->decl.type)) != NULL) &&
-	((dl->decl.rel == REL_ALIAS) || (dl->decl.rel == REL_VECTOR)))
-      {
-	if (dl->decl.rel == REL_ALIAS)
-	  size += ptr->length;
-	else
-	  {
-	    can_inline = 1;
-	    break;		/* can be inlined */
-	  }
-      }
-    else
-      {
-	if (size >= inlineflag)
-	  {
-	    can_inline = 1;
-	    break;		/* can be inlined */
-	  }
-	size = 0;
-      }
-  if (size > inlineflag)
-    can_inline = 1;
-
-  if (can_inline == 0)
-    {			/* can not inline, drop back to old mode */
-      for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
-	print_stat (1, &dl->decl);
-      return;
-    };
-
-  flag = PUT;
-  for (j = 0; j < 2; j++)
-    {
-      inline_struct (def, flag);
-      if (flag == PUT)
-	flag = GET;
-    }
-
-  f_print (fout, "\t return TRUE;\n\t}\n\n");
-
-  /* now take care of XDR_FREE case */
-
-  for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
-    print_stat (1, &dl->decl);
-}
-
-static void
-emit_typedef (const definition * def)
-{
-  const char *prefix = def->def.ty.old_prefix;
-  const char *type = def->def.ty.old_type;
-  const char *amax = def->def.ty.array_max;
-  relation rel = def->def.ty.rel;
-
-  print_ifstat (1, prefix, type, rel, amax, "objp", def->def_name);
-}
-
-static void
-print_stat (int indent, const declaration * dec)
-{
-  const char *prefix = dec->prefix;
-  const char *type = dec->type;
-  const char *amax = dec->array_max;
-  relation rel = dec->rel;
-  char name[256];
-
-  if (isvectordef (type, rel))
-    {
-      s_print (name, "objp->%s", dec->name);
-    }
-  else
-    {
-      s_print (name, "&objp->%s", dec->name);
-    }
-  print_ifstat (indent, prefix, type, rel, amax, name, dec->name);
-}
-
-
-static void
-emit_inline (int indent, declaration * decl, int flag)
-{
-  switch (decl->rel)
-    {
-    case REL_ALIAS:
-      emit_single_in_line (indent, decl, flag, REL_ALIAS);
-      break;
-    case REL_VECTOR:
-      tabify (fout, indent);
-      f_print (fout, "{\n");
-      tabify (fout, indent + 1);
-      f_print (fout, "register %s *genp;\n\n", decl->type);
-      tabify (fout, indent + 1);
-      f_print (fout,
-	       "for (i = 0, genp = objp->%s;\n", decl->name);
-      tabify (fout, indent + 2);
-      f_print (fout, "i < %s; ++i) {\n", decl->array_max);
-      emit_single_in_line (indent + 2, decl, flag, REL_VECTOR);
-      tabify (fout, indent + 1);
-      f_print (fout, "}\n");
-      tabify (fout, indent);
-      f_print (fout, "}\n");
-      break;
-    default:
-      break;
-      /* ?... do nothing I guess */
-    }
-}
-
-static void
-emit_single_in_line (int indent, declaration *decl, int flag, relation rel)
-{
-  char *upp_case;
-  int freed = 0;
-
-  tabify (fout, indent);
-  if (flag == PUT)
-    f_print (fout, "IXDR_PUT_");
-  else
-    {
-      if (rel == REL_ALIAS)
-	f_print (fout, "objp->%s = IXDR_GET_", decl->name);
-      else
-	f_print (fout, "*genp++ = IXDR_GET_");
-    }
-
-  upp_case = upcase (decl->type);
-
-  /* hack  - XX */
-  if (!strcmp (upp_case, "INT"))
-    {
-      free (upp_case);
-      freed = 1;
-      /* Casting is safe since the `freed' flag is set.  */
-      upp_case = (char *) "LONG";
-    }
-
-  if (!strcmp (upp_case, "U_INT"))
-    {
-      free (upp_case);
-      freed = 1;
-      /* Casting is safe since the `freed' flag is set.  */
-      upp_case = (char *) "U_LONG";
-    }
-
-  if (flag == PUT)
-    {
-      if (rel == REL_ALIAS)
-	f_print (fout, "%s(buf, objp->%s);\n", upp_case, decl->name);
-      else
-	f_print (fout, "%s(buf, *genp++);\n", upp_case);
-    }
-  else
-    {
-      f_print (fout, "%s(buf);\n", upp_case);
-    }
-
-  if (!freed)
-    free (upp_case);
-}
-
-
-static char *
-upcase (const char *str)
-{
-  char *ptr, *hptr;
-  ptr = malloc (strlen (str) + 1);
-  if (ptr == NULL)
-    {
-      f_print (stderr, "malloc failed\n");
-      exit (1);
-    }
-  hptr = ptr;
-  while (*str != '\0')
-    *ptr++ = toupper (*str++);
-
-  *ptr = '\0';
-  return hptr;
-}
diff --git a/sunrpc/rpc_dtable.c b/sunrpc/rpc_dtable.c
index 7fe48e1811..706d5404cb 100644
--- a/sunrpc/rpc_dtable.c
+++ b/sunrpc/rpc_dtable.c
@@ -47,4 +47,4 @@  _rpc_dtablesize (void)
 
   return size;
 }
-libc_hidden_nolink_sunrpc (_rpc_dtablesize, GLIBC_2_0)
+libc_hidden_nolink (_rpc_dtablesize, GLIBC_2_0)
diff --git a/sunrpc/rpc_hout.c b/sunrpc/rpc_hout.c
deleted file mode 100644
index 10f793d233..0000000000
--- a/sunrpc/rpc_hout.c
+++ /dev/null
@@ -1,607 +0,0 @@ 
-/*
- * From: @(#)rpc_hout.c 1.12 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_hout.c, Header file outputter for the RPC protocol compiler
- */
-#include <stdio.h>
-#include <ctype.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-static void pconstdef (definition * def);
-static void pargdef (definition * def);
-static void pstructdef (definition * def);
-static void puniondef (definition * def);
-static void pdefine (const char *name, const char *num);
-static int define_printed (proc_list * stop, version_list * start);
-static void pprogramdef (definition * def);
-static void parglist (proc_list * proc, const char *addargtype);
-static void penumdef (definition * def);
-static void ptypedef (definition * def);
-static int undefined2 (const char *type, const char *stop);
-
-/* store away enough information to allow the XDR functions to be spat
-    out at the end of the file */
-
-static void
-storexdrfuncdecl (const char *name, int pointerp)
-{
-  xdrfunc * xdrptr;
-
-  xdrptr = (xdrfunc *) malloc(sizeof (struct xdrfunc));
-
-  xdrptr->name = (char *)name;
-  xdrptr->pointerp = pointerp;
-  xdrptr->next = NULL;
-
-  if (xdrfunc_tail == NULL)
-    {
-      xdrfunc_head = xdrptr;
-      xdrfunc_tail = xdrptr;
-    }
-  else
-    {
-      xdrfunc_tail->next = xdrptr;
-      xdrfunc_tail = xdrptr;
-    }
-}
-
-/*
- * Print the C-version of an xdr definition
- */
-void
-print_datadef (definition *def)
-{
-
-  if (def->def_kind == DEF_PROGRAM)	/* handle data only */
-    return;
-
-  if (def->def_kind != DEF_CONST)
-    {
-      f_print (fout, "\n");
-    }
-  switch (def->def_kind)
-    {
-    case DEF_STRUCT:
-      pstructdef (def);
-      break;
-    case DEF_UNION:
-      puniondef (def);
-      break;
-    case DEF_ENUM:
-      penumdef (def);
-      break;
-    case DEF_TYPEDEF:
-      ptypedef (def);
-      break;
-    case DEF_PROGRAM:
-      pprogramdef (def);
-      break;
-    case DEF_CONST:
-      pconstdef (def);
-      break;
-    }
-  if (def->def_kind != DEF_PROGRAM && def->def_kind != DEF_CONST)
-    {
-      storexdrfuncdecl(def->def_name,
- 		       def->def_kind != DEF_TYPEDEF ||
-		       !isvectordef(def->def.ty.old_type,
-				    def->def.ty.rel));
-    }
-}
-
-
-void
-print_funcdef (definition *def)
-{
-  switch (def->def_kind)
-    {
-    case DEF_PROGRAM:
-      f_print (fout, "\n");
-      pprogramdef (def);
-      break;
-    default:
-      break;
-      /* ?... shouldn't happen I guess */
-    }
-}
-
-void
-print_xdr_func_def (char *name, int pointerp, int i)
-{
-  if (i == 2)
-    {
-      f_print (fout, "extern bool_t xdr_%s ();\n", name);
-      return;
-    }
-  else
-    f_print(fout, "extern  bool_t xdr_%s (XDR *, %s%s);\n", name,
-	    name, pointerp ? "*" : "");
-}
-
-static void
-pconstdef (definition *def)
-{
-  pdefine (def->def_name, def->def.co);
-}
-
-/* print out the definitions for the arguments of functions in the
-   header file
- */
-static void
-pargdef (definition * def)
-{
-  decl_list *l;
-  version_list *vers;
-  const char *name;
-  proc_list *plist;
-
-  for (vers = def->def.pr.versions; vers != NULL; vers = vers->next)
-    {
-      for (plist = vers->procs; plist != NULL;
-	   plist = plist->next)
-	{
-
-	  if (!newstyle || plist->arg_num < 2)
-	    {
-	      continue;		/* old style or single args */
-	    }
-	  name = plist->args.argname;
-	  f_print (fout, "struct %s {\n", name);
-	  for (l = plist->args.decls;
-	       l != NULL; l = l->next)
-	    {
-	      pdeclaration (name, &l->decl, 1, ";\n");
-	    }
-	  f_print (fout, "};\n");
-	  f_print (fout, "typedef struct %s %s;\n", name, name);
-	  storexdrfuncdecl (name, 1);
-	  f_print (fout, "\n");
-	}
-    }
-
-}
-
-static void
-pstructdef (definition *def)
-{
-  decl_list *l;
-  const char *name = def->def_name;
-
-  f_print (fout, "struct %s {\n", name);
-  for (l = def->def.st.decls; l != NULL; l = l->next)
-    {
-      pdeclaration (name, &l->decl, 1, ";\n");
-    }
-  f_print (fout, "};\n");
-  f_print (fout, "typedef struct %s %s;\n", name, name);
-}
-
-static void
-puniondef (definition *def)
-{
-  case_list *l;
-  const char *name = def->def_name;
-  declaration *decl;
-
-  f_print (fout, "struct %s {\n", name);
-  decl = &def->def.un.enum_decl;
-  if (streq (decl->type, "bool"))
-    {
-      f_print (fout, "\tbool_t %s;\n", decl->name);
-    }
-  else
-    {
-      f_print (fout, "\t%s %s;\n", decl->type, decl->name);
-    }
-  f_print (fout, "\tunion {\n");
-  for (l = def->def.un.cases; l != NULL; l = l->next)
-    {
-      if (l->contflag == 0)
-	pdeclaration (name, &l->case_decl, 2, ";\n");
-    }
-  decl = def->def.un.default_decl;
-  if (decl && !streq (decl->type, "void"))
-    {
-      pdeclaration (name, decl, 2, ";\n");
-    }
-  f_print (fout, "\t} %s_u;\n", name);
-  f_print (fout, "};\n");
-  f_print (fout, "typedef struct %s %s;\n", name, name);
-}
-
-static void
-pdefine (const char *name, const char *num)
-{
-  f_print (fout, "#define %s %s\n", name, num);
-}
-
-static int
-define_printed (proc_list *stop, version_list *start)
-{
-  version_list *vers;
-  proc_list *proc;
-
-  for (vers = start; vers != NULL; vers = vers->next)
-    {
-      for (proc = vers->procs; proc != NULL; proc = proc->next)
-	{
-	  if (proc == stop)
-	    {
-	      return 0;
-	    }
-	  else if (streq (proc->proc_name, stop->proc_name))
-	    {
-	      return 1;
-	    }
-	}
-    }
-  abort ();
-  /* NOTREACHED */
-}
-
-static void
-pfreeprocdef (const char *name, const char *vers, int mode)
-{
-  f_print (fout, "extern int ");
-  pvname (name, vers);
-  if (mode == 1)
-    f_print (fout,"_freeresult (SVCXPRT *, xdrproc_t, caddr_t);\n");
-  else
-    f_print (fout,"_freeresult ();\n");
-}
-
-static void
-pprogramdef (definition *def)
-{
-  version_list *vers;
-  proc_list *proc;
-  int i;
-  const char *ext;
-
-  pargdef (def);
-
-  pdefine (def->def_name, def->def.pr.prog_num);
-  for (vers = def->def.pr.versions; vers != NULL; vers = vers->next)
-    {
-      if (tblflag)
-	{
-	  f_print (fout, "extern struct rpcgen_table %s_%s_table[];\n",
-		   locase (def->def_name), vers->vers_num);
-	  f_print (fout, "extern %s_%s_nproc;\n",
-		   locase (def->def_name), vers->vers_num);
-	}
-      pdefine (vers->vers_name, vers->vers_num);
-
-      /*
-       * Print out 2 definitions, one for ANSI-C, another for
-       * old K & R C
-       */
-
-      if(!Cflag)
-	{
-	  ext = "extern  ";
-	  for (proc = vers->procs; proc != NULL;
-	       proc = proc->next)
-	    {
-	      if (!define_printed(proc, def->def.pr.versions))
-		{
-		  pdefine (proc->proc_name, proc->proc_num);
-		}
-	      f_print (fout, "%s", ext);
-	      pprocdef (proc, vers, NULL, 0, 2);
-
-	      if (mtflag)
-		{
-		  f_print(fout, "%s", ext);
-		  pprocdef (proc, vers, NULL, 1, 2);
-		}
-	    }
-	  pfreeprocdef (def->def_name, vers->vers_num, 2);
-	}
-      else
-	{
-	  for (i = 1; i < 3; i++)
-	    {
-	      if (i == 1)
-		{
-		  f_print (fout, "\n#if defined(__STDC__) || defined(__cplusplus)\n");
-		  ext = "extern  ";
-		}
-	      else
-		{
-		  f_print (fout, "\n#else /* K&R C */\n");
-		  ext = "extern  ";
-		}
-
-	      for (proc = vers->procs; proc != NULL; proc = proc->next)
-		{
-		  if (!define_printed(proc, def->def.pr.versions))
-		    {
-		      pdefine(proc->proc_name, proc->proc_num);
-		    }
-		  f_print (fout, "%s", ext);
-		  pprocdef (proc, vers, "CLIENT *", 0, i);
-		  f_print (fout, "%s", ext);
-		  pprocdef (proc, vers, "struct svc_req *", 1, i);
-		}
-	      pfreeprocdef (def->def_name, vers->vers_num, i);
-	    }
-	  f_print (fout, "#endif /* K&R C */\n");
-	}
-    }
-}
-
-void
-pprocdef (proc_list * proc, version_list * vp,
-	  const char *addargtype, int server_p, int mode)
-{
-  if (mtflag)
-    {/* Print MT style stubs */
-      if (server_p)
-	f_print (fout, "bool_t ");
-      else
-	f_print (fout, "enum clnt_stat ");
-    }
-  else
-    {
-      ptype (proc->res_prefix, proc->res_type, 1);
-      f_print (fout, "* ");
-    }
-  if (server_p)
-    pvname_svc (proc->proc_name, vp->vers_num);
-  else
-    pvname (proc->proc_name, vp->vers_num);
-
-  /*
-   * mode  1 = ANSI-C, mode 2 = K&R C
-   */
-  if (mode == 1)
-    parglist (proc, addargtype);
-  else
-    f_print (fout, "();\n");
-}
-
-/* print out argument list of procedure */
-static void
-parglist (proc_list *proc, const char *addargtype)
-{
-  decl_list *dl;
-
-  f_print(fout,"(");
-  if (proc->arg_num < 2 && newstyle &&
-      streq (proc->args.decls->decl.type, "void"))
-    {
-      /* 0 argument in new style:  do nothing */
-    }
-  else
-    {
-      for (dl = proc->args.decls; dl != NULL; dl = dl->next)
-	{
-	  ptype (dl->decl.prefix, dl->decl.type, 1);
-	  if (!newstyle)
-	    f_print (fout, "*");	/* old style passes by reference */
-
-	  f_print (fout, ", ");
-	}
-    }
-  if (mtflag)
-    {
-      ptype(proc->res_prefix, proc->res_type, 1);
-      f_print(fout, "*, ");
-    }
-
-  f_print (fout, "%s);\n", addargtype);
-}
-
-static void
-penumdef (definition *def)
-{
-  const char *name = def->def_name;
-  enumval_list *l;
-  const char *last = NULL;
-  int count = 0;
-
-  f_print (fout, "enum %s {\n", name);
-  for (l = def->def.en.vals; l != NULL; l = l->next)
-    {
-      f_print (fout, "\t%s", l->name);
-      if (l->assignment)
-	{
-	  f_print (fout, " = %s", l->assignment);
-	  last = l->assignment;
-	  count = 1;
-	}
-      else
-	{
-	  if (last == NULL)
-	    {
-	      f_print (fout, " = %d", count++);
-	    }
-	  else
-	    {
-	      f_print (fout, " = %s + %d", last, count++);
-	    }
-	}
-      f_print (fout, ",\n");
-    }
-  f_print (fout, "};\n");
-  f_print (fout, "typedef enum %s %s;\n", name, name);
-}
-
-static void
-ptypedef (definition *def)
-{
-  const char *name = def->def_name;
-  const char *old = def->def.ty.old_type;
-  char prefix[8];	  /* enough to contain "struct ", including NUL */
-  relation rel = def->def.ty.rel;
-
-  if (!streq (name, old))
-    {
-      if (streq (old, "string"))
-	{
-	  old = "char";
-	  rel = REL_POINTER;
-	}
-      else if (streq (old, "opaque"))
-	{
-	  old = "char";
-	}
-      else if (streq (old, "bool"))
-	{
-	  old = "bool_t";
-	}
-      if (undefined2 (old, name) && def->def.ty.old_prefix)
-	{
-	  s_print (prefix, "%s ", def->def.ty.old_prefix);
-	}
-      else
-	{
-	  prefix[0] = 0;
-	}
-      f_print (fout, "typedef ");
-      switch (rel)
-	{
-	case REL_ARRAY:
-	  f_print (fout, "struct {\n");
-	  f_print (fout, "\tu_int %s_len;\n", name);
-	  f_print (fout, "\t%s%s *%s_val;\n", prefix, old, name);
-	  f_print (fout, "} %s", name);
-	  break;
-	case REL_POINTER:
-	  f_print (fout, "%s%s *%s", prefix, old, name);
-	  break;
-	case REL_VECTOR:
-	  f_print (fout, "%s%s %s[%s]", prefix, old, name,
-		   def->def.ty.array_max);
-	  break;
-	case REL_ALIAS:
-	  f_print (fout, "%s%s %s", prefix, old, name);
-	  break;
-	}
-      f_print (fout, ";\n");
-    }
-}
-
-void
-pdeclaration (const char *name, declaration * dec, int tab,
-	      const char *separator)
-{
-  char buf[8];			/* enough to hold "struct ", include NUL */
-  const char *prefix;
-  const char *type;
-
-  if (streq (dec->type, "void"))
-    {
-      return;
-    }
-  tabify (fout, tab);
-  if (streq (dec->type, name) && !dec->prefix)
-    {
-      f_print (fout, "struct ");
-    }
-  if (streq (dec->type, "string"))
-    {
-      f_print (fout, "char *%s", dec->name);
-    }
-  else
-    {
-      prefix = "";
-      if (streq (dec->type, "bool"))
-	{
-	  type = "bool_t";
-	}
-      else if (streq (dec->type, "opaque"))
-	{
-	  type = "char";
-	}
-      else
-	{
-	  if (dec->prefix)
-	    {
-	      s_print (buf, "%s ", dec->prefix);
-	      prefix = buf;
-	    }
-	  type = dec->type;
-	}
-      switch (dec->rel)
-	{
-	case REL_ALIAS:
-	  f_print (fout, "%s%s %s", prefix, type, dec->name);
-	  break;
-	case REL_VECTOR:
-	  f_print (fout, "%s%s %s[%s]", prefix, type, dec->name,
-		   dec->array_max);
-	  break;
-	case REL_POINTER:
-	  f_print (fout, "%s%s *%s", prefix, type, dec->name);
-	  break;
-	case REL_ARRAY:
-	  f_print (fout, "struct {\n");
-	  tabify (fout, tab);
-	  f_print (fout, "\tu_int %s_len;\n", dec->name);
-	  tabify (fout, tab);
-	  f_print (fout, "\t%s%s *%s_val;\n", prefix, type, dec->name);
-	  tabify (fout, tab);
-	  f_print (fout, "} %s", dec->name);
-	  break;
-	}
-    }
-  f_print (fout, "%s", separator);
-}
-
-static int
-undefined2 (const char *type, const char *stop)
-{
-  list *l;
-  definition *def;
-
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind != DEF_PROGRAM)
-	{
-	  if (streq (def->def_name, stop))
-	    {
-	      return 1;
-	    }
-	  else if (streq (def->def_name, type))
-	    {
-	      return 0;
-	    }
-	}
-    }
-  return 1;
-}
diff --git a/sunrpc/rpc_main.c b/sunrpc/rpc_main.c
deleted file mode 100644
index c6607848cc..0000000000
--- a/sunrpc/rpc_main.c
+++ /dev/null
@@ -1,1451 +0,0 @@ 
-/*
- * From @(#)rpc_main.c 1.30 89/03/30
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_main.c, Top level of the RPC protocol compiler.
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <libintl.h>
-#include <locale.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "rpc_scan.h"
-#include "proto.h"
-
-#include "../version.h"
-#define PACKAGE _libc_intl_domainname
-
-#define EXTEND	1		/* alias for TRUE */
-#define DONT_EXTEND	0	/* alias for FALSE */
-
-struct commandline
-  {
-    int cflag;			/* xdr C routines */
-    int hflag;			/* header file */
-    int lflag;			/* client side stubs */
-    int mflag;			/* server side stubs */
-    int nflag;			/* netid flag */
-    int sflag;			/* server stubs for the given transport */
-    int tflag;			/* dispatch Table file */
-    int Ssflag;			/* produce server sample code */
-    int Scflag;			/* produce client sample code */
-    int makefileflag;		/* Generate a template Makefile */
-    const char *infile;		/* input module name */
-    const char *outfile;	/* output module name */
-  };
-
-
-static const char *cmdname;
-
-static const char *svcclosetime = "120";
-static int cppDefined;	/* explicit path for C preprocessor */
-static const char *CPP = "/lib/cpp";
-static const char CPPFLAGS[] = "-C";
-static char *pathbuf;
-static int cpp_pid;
-static const char *allv[] =
-{
-  "rpcgen", "-s", "udp", "-s", "tcp"
-};
-static int allc = sizeof (allv) / sizeof (allv[0]);
-static const char *allnv[] =
-{
-  "rpcgen", "-s", "netpath",
-};
-static int allnc = sizeof (allnv) / sizeof (allnv[0]);
-
-/*
- * machinations for handling expanding argument list
- */
-static void addarg (const char *);	/* add another argument to the list */
-static void putarg (int, const char *);		/* put argument at specified location */
-static void clear_args (void);	/* clear argument list */
-static void checkfiles (const char *, const char *);
-				       /* check if out file already exists */
-
-static void clear_args (void);
-static char *extendfile (const char *file, const char *ext);
-static void open_output (const char *infile, const char *outfile);
-static void add_warning (void);
-static void clear_args (void);
-static void find_cpp (void);
-static void open_input (const char *infile, const char *define);
-static int check_nettype (const char *name, const char *list_to_check[]);
-static void c_output (const char *infile, const char *define,
-		      int extend, const char *outfile);
-static void h_output (const char *infile, const char *define,
-		      int extend, const char *outfile);
-static void s_output (int argc, const char *argv[], const char *infile,
-		      const char *define, int extend,
-		      const char *outfile, int nomain, int netflag);
-static void l_output (const char *infile, const char *define,
-		      int extend, const char *outfile);
-static void t_output (const char *infile, const char *define,
-		      int extend, const char *outfile);
-static void svc_output (const char *infile, const char *define,
-			int extend, const char *outfile);
-static void clnt_output (const char *infile, const char *define,
-			 int extend, const char *outfile);
-static void mkfile_output (struct commandline *cmd);
-static int do_registers (int argc, const char *argv[]);
-static void addarg (const char *cp);
-static void putarg (int whereto, const char *cp);
-static void checkfiles (const char *infile, const char *outfile);
-static int parseargs (int argc, const char *argv[], struct commandline *cmd);
-static void usage (FILE *stream, int status) __attribute__ ((noreturn));
-static void options_usage (FILE *stream, int status) __attribute__ ((noreturn));
-static void print_version (void);
-static void c_initialize (void);
-static char *generate_guard (const char *pathname);
-
-
-#define ARGLISTLEN	20
-#define FIXEDARGS         2
-
-static const char *arglist[ARGLISTLEN];
-static int argcount = FIXEDARGS;
-
-
-int nonfatalerrors;		/* errors */
-int inetdflag /* = 1 */ ;	/* Support for inetd *//* is now the default */
-int pmflag;			/* Support for port monitors */
-int logflag;			/* Use syslog instead of fprintf for errors */
-int tblflag;			/* Support for dispatch table file */
-int mtflag;			/* Support for MT */
-
-#define INLINE 3
-/*length at which to start doing an inline */
-
-int inlineflag = INLINE;	/* length at which to start doing an inline. 3 = default
-				   if 0, no xdr_inline code */
-
-int indefinitewait;		/* If started by port monitors, hang till it wants */
-int exitnow;			/* If started by port monitors, exit after the call */
-int timerflag;			/* TRUE if !indefinite && !exitnow */
-int newstyle;			/* newstyle of passing arguments (by value) */
-int Cflag = 1;			/* ANSI C syntax */
-int CCflag;			/* C++ files */
-static int allfiles;		/* generate all files */
-int tirpcflag;			/* generating code for tirpc, by default */
-xdrfunc *xdrfunc_head;		/* xdr function list */
-xdrfunc *xdrfunc_tail;		/* xdr function list */
-
-int
-main (int argc, const char *argv[])
-{
-  struct commandline cmd;
-
-  setlocale (LC_ALL, "");
-  textdomain (_libc_intl_domainname);
-
-  (void) memset ((char *) &cmd, 0, sizeof (struct commandline));
-  clear_args ();
-  if (!parseargs (argc, argv, &cmd))
-    usage (stderr, 1);
-
-  if (cmd.cflag || cmd.hflag || cmd.lflag || cmd.tflag || cmd.sflag ||
-      cmd.mflag || cmd.nflag || cmd.Ssflag || cmd.Scflag)
-    {
-      checkfiles (cmd.infile, cmd.outfile);
-    }
-  else
-    checkfiles (cmd.infile, NULL);
-
-  if (cmd.cflag)
-    c_output (cmd.infile, "-DRPC_XDR", DONT_EXTEND, cmd.outfile);
-  else if (cmd.hflag)
-    h_output (cmd.infile, "-DRPC_HDR", DONT_EXTEND, cmd.outfile);
-  else if (cmd.lflag)
-    l_output (cmd.infile, "-DRPC_CLNT", DONT_EXTEND, cmd.outfile);
-  else if (cmd.sflag || cmd.mflag || (cmd.nflag))
-    s_output (argc, argv, cmd.infile, "-DRPC_SVC", DONT_EXTEND,
-	      cmd.outfile, cmd.mflag, cmd.nflag);
-  else if (cmd.tflag)
-    t_output (cmd.infile, "-DRPC_TBL", DONT_EXTEND, cmd.outfile);
-  else if (cmd.Ssflag)
-    svc_output (cmd.infile, "-DRPC_SERVER", DONT_EXTEND, cmd.outfile);
-  else if (cmd.Scflag)
-    clnt_output (cmd.infile, "-DRPC_CLIENT", DONT_EXTEND, cmd.outfile);
-  else if (cmd.makefileflag)
-    mkfile_output (&cmd);
-  else
-    {
-      /* the rescans are required, since cpp may effect input */
-      c_output (cmd.infile, "-DRPC_XDR", EXTEND, "_xdr.c");
-      reinitialize ();
-      h_output (cmd.infile, "-DRPC_HDR", EXTEND, ".h");
-      reinitialize ();
-      l_output (cmd.infile, "-DRPC_CLNT", EXTEND, "_clnt.c");
-      reinitialize ();
-      if (inetdflag || !tirpcflag)
-	s_output (allc, allv, cmd.infile, "-DRPC_SVC", EXTEND,
-		  "_svc.c", cmd.mflag, cmd.nflag);
-      else
-	s_output (allnc, allnv, cmd.infile, "-DRPC_SVC",
-		  EXTEND, "_svc.c", cmd.mflag, cmd.nflag);
-      if (tblflag)
-	{
-	  reinitialize ();
-	  t_output (cmd.infile, "-DRPC_TBL", EXTEND, "_tbl.i");
-	}
-      if (allfiles)
-	{
-	  reinitialize ();
-	  svc_output (cmd.infile, "-DRPC_SERVER", EXTEND, "_server.c");
-	  reinitialize ();
-	  clnt_output (cmd.infile, "-DRPC_CLIENT", EXTEND, "_client.c");
-	}
-      if (allfiles || (cmd.makefileflag == 1))
-	{
-	  reinitialize ();
-	  mkfile_output (&cmd);
-	}
-    }
-
-  return nonfatalerrors;
-}
-
-/*
- * add extension to filename
- */
-static char *
-extendfile (const char *file, const char *ext)
-{
-  char *res;
-  const char *p;
-
-  res = alloc (strlen (file) + strlen (ext) + 1);
-  if (res == NULL)
-    abort ();
-  p = strrchr (file, '.');
-  if (p == NULL)
-    p = file + strlen (file);
-  strcpy (res, file);
-  strcpy (res + (p - file), ext);
-  return res;
-}
-
-/*
- * Open output file with given extension
- */
-static void
-open_output (const char *infile, const char *outfile)
-{
-  if (outfile == NULL)
-    {
-      fout = stdout;
-      return;
-    }
-
-  if (infile != NULL && streq (outfile, infile))
-    {
-      fprintf (stderr, _ ("%s: output would overwrite %s\n"), cmdname,
-	       infile);
-      crash ();
-    }
-  fout = fopen (outfile, "w");
-  if (fout == NULL)
-    {
-      fprintf (stderr, _ ("%s: unable to open %s: %m\n"), cmdname, outfile);
-      crash ();
-    }
-  record_open (outfile);
-}
-
-/* Close the output file and check for write errors.  */
-static void
-close_output (const char *outfile)
-{
-  if (fclose (fout) == EOF)
-    {
-      fprintf (stderr, _("%s: while writing output %s: %m"), cmdname,
-	       outfile ?: "<stdout>");
-      crash ();
-    }
-}
-
-static void
-add_warning (void)
-{
-  fprintf (fout, "/*\n");
-  fprintf (fout, " * Please do not edit this file.\n");
-  fprintf (fout, " * It was generated using rpcgen.\n");
-  fprintf (fout, " */\n\n");
-}
-
-/* clear list of arguments */
-static void
-clear_args (void)
-{
-  int i;
-  for (i = FIXEDARGS; i < ARGLISTLEN; ++i)
-    arglist[i] = NULL;
-  argcount = FIXEDARGS;
-}
-
-/* make sure that a CPP exists */
-static void
-find_cpp (void)
-{
-  struct stat64 buf;
-
-  if (stat64 (CPP, &buf) == 0)
-    return;
-
-  if (cppDefined) /* user specified cpp but it does not exist */
-    {
-      fprintf (stderr, _ ("cannot find C preprocessor: %s\n"), CPP);
-      crash ();
-    }
-
-  /* fall back to system CPP */
-  CPP = "cpp";
-}
-
-/*
- * Open input file with given define for C-preprocessor
- */
-static void
-open_input (const char *infile, const char *define)
-{
-  int pd[2];
-
-  infilename = (infile == NULL) ? "<stdin>" : infile;
-  if (pipe (pd) != 0)
-    {
-      perror ("pipe");
-      exit (1);
-    }
-  cpp_pid = fork ();
-  switch (cpp_pid)
-    {
-    case 0:
-      find_cpp ();
-      putarg (0, CPP);
-      putarg (1, CPPFLAGS);
-      addarg (define);
-      if (infile)
-	addarg (infile);
-      addarg ((char *) NULL);
-      close (1);
-      dup2 (pd[1], 1);
-      close (pd[0]);
-      execvp (arglist[0], (char **) arglist);
-      if (errno == ENOENT)
-        {
-          fprintf (stderr, _ ("cannot find C preprocessor: %s\n"), CPP);
-          exit (1);
-        }
-      perror ("execvp");
-      exit (1);
-    case -1:
-      perror ("fork");
-      exit (1);
-    }
-  close (pd[1]);
-  fin = fdopen (pd[0], "r");
-  if (fin == NULL)
-    {
-      fprintf (stderr, "%s: ", cmdname);
-      perror (infilename);
-      crash ();
-    }
-}
-
-/* Close the connection to the C-preprocessor and check for successfull
-   termination.  */
-static void
-close_input (void)
-{
-  int status;
-
-  fclose (fin);
-  /* Check the termination status.  */
-  if (waitpid (cpp_pid, &status, 0) < 0)
-    {
-      perror ("waitpid");
-      crash ();
-    }
-  if (WIFSIGNALED (status) || WEXITSTATUS (status) != 0)
-    {
-      if (WIFSIGNALED (status))
-	fprintf (stderr, _("%s: C preprocessor failed with signal %d\n"),
-		 cmdname, WTERMSIG (status));
-      else
-	fprintf (stderr, _("%s: C preprocessor failed with exit code %d\n"),
-		 cmdname, WEXITSTATUS (status));
-      crash ();
-    }
-}
-
-/* valid tirpc nettypes */
-static const char *valid_ti_nettypes[] =
-{
-  "netpath",
-  "visible",
-  "circuit_v",
-  "datagram_v",
-  "circuit_n",
-  "datagram_n",
-  "udp",
-  "tcp",
-  "raw",
-  NULL
-};
-
-/* valid inetd nettypes */
-static const char *valid_i_nettypes[] =
-{
-  "udp",
-  "tcp",
-  NULL
-};
-
-static int
-check_nettype (const char *name, const char *list_to_check[])
-{
-  int i;
-  for (i = 0; list_to_check[i] != NULL; i++)
-    {
-      if (strcmp (name, list_to_check[i]) == 0)
-	{
-	  return 1;
-	}
-    }
-  fprintf (stderr, _ ("illegal nettype: `%s'\n"), name);
-  return 0;
-}
-
-/*
- * Compile into an XDR routine output file
- */
-
-static void
-c_output (const char *infile, const char *define, int extend,
-	  const char *outfile)
-{
-  definition *def;
-  char *include;
-  const char *outfilename;
-  long tell;
-
-  c_initialize ();
-  open_input (infile, define);
-  outfilename = extend ? extendfile (infile, outfile) : outfile;
-  open_output (infile, outfilename);
-  add_warning ();
-  if (infile && (include = extendfile (infile, ".h")))
-    {
-      fprintf (fout, "#include \"%s\"\n", include);
-      free (include);
-      /* .h file already contains rpc/rpc.h */
-    }
-  else
-    fprintf (fout, "#include <rpc/rpc.h>\n");
-  tell = ftell (fout);
-  while ((def = get_definition ()) != NULL)
-    emit (def);
-
-  if (extend && tell == ftell (fout))
-    unlink (outfilename);
-  close_input ();
-  close_output (outfilename);
-}
-
-void
-c_initialize (void)
-{
-
-  /* add all the starting basic types */
-
-  add_type (1, "int");
-  add_type (1, "long");
-  add_type (1, "short");
-  add_type (1, "bool");
-
-  add_type (1, "u_int");
-  add_type (1, "u_long");
-  add_type (1, "u_short");
-
-}
-
-char rpcgen_table_dcl[] = "struct rpcgen_table {\n\
-	char	*(*proc)();\n\
-	xdrproc_t	xdr_arg;\n\
-	unsigned	len_arg;\n\
-	xdrproc_t	xdr_res;\n\
-	unsigned	len_res;\n\
-};\n";
-
-
-static char *
-generate_guard (const char *pathname)
-{
-  const char *filename;
-  char *guard, *tmp;
-
-  filename = strrchr (pathname, '/');	/* find last component */
-  filename = ((filename == NULL) ? pathname : filename + 1);
-  guard = extendfile (filename, "_H_RPCGEN");
-  /* convert to upper case */
-  tmp = guard;
-  while (*tmp)
-    {
-      if (islower (*tmp))
-	*tmp = toupper (*tmp);
-      tmp++;
-    }
-
-  return guard;
-}
-
-/*
- * Compile into an XDR header file
- */
-
-
-static void
-h_output (const char *infile, const char *define, int extend,
-	  const char *outfile)
-{
-  xdrfunc *xdrfuncp;
-  definition *def;
-  const char *ifilename;
-  const char *outfilename;
-  long tell;
-  char *guard;
-  list *l;
-
-  open_input (infile, define);
-  outfilename = extend ? extendfile (infile, outfile) : outfile;
-  open_output (infile, outfilename);
-  add_warning ();
-  ifilename = (infile == NULL) ? "STDIN" : infile;
-  guard = generate_guard (outfilename ? outfilename : ifilename);
-
-  fprintf (fout, "#ifndef _%s\n#define _%s\n\n", guard,
-	   guard);
-
-  fprintf (fout, "#include <rpc/rpc.h>\n\n");
-
-  if (mtflag)
-    {
-      fprintf (fout, "#include <pthread.h>\n");
-    }
-
-  /* put the C++ support */
-  if (Cflag && !CCflag)
-    {
-      fprintf (fout, "\n#ifdef __cplusplus\n");
-      fprintf (fout, "extern \"C\" {\n");
-      fprintf (fout, "#endif\n\n");
-    }
-
-  tell = ftell (fout);
-  /* print data definitions */
-  while ((def = get_definition ()) != NULL)
-    {
-      print_datadef (def);
-    }
-
-  /* print function declarations.
-     Do this after data definitions because they might be used as
-     arguments for functions */
-  for (l = defined; l != NULL; l = l->next)
-    {
-      print_funcdef (l->val);
-    }
-  /* Now  print all xdr func declarations */
-  if (xdrfunc_head != NULL)
-    {
-      fprintf (fout, "\n/* the xdr functions */\n");
-      if (CCflag)
-	{
-	  fprintf (fout, "\n#ifdef __cplusplus\n");
-	  fprintf (fout, "extern \"C\" {\n");
-	  fprintf (fout, "#endif\n");
-	}
-      if (!Cflag)
-	{
-	  xdrfuncp = xdrfunc_head;
-	  while (xdrfuncp != NULL)
-	    {
-	      print_xdr_func_def (xdrfuncp->name,
-				  xdrfuncp->pointerp, 2);
-	      xdrfuncp = xdrfuncp->next;
-	    }
-	}
-      else
-	{
-	  int i;
-
-	  for (i = 1; i < 3; ++i)
-	    {
-	      if (i == 1)
-		fprintf (fout, "\n#if defined(__STDC__) || defined(__cplusplus)\n");
-	      else
-		fprintf (fout, "\n#else /* K&R C */\n");
-
-	      xdrfuncp = xdrfunc_head;
-	      while (xdrfuncp != NULL)
-		{
-		  print_xdr_func_def (xdrfuncp->name,
-				      xdrfuncp->pointerp, i);
-		  xdrfuncp = xdrfuncp->next;
-		}
-	    }
-	  fprintf (fout, "\n#endif /* K&R C */\n");
-	}
-    }
-
-  if (extend && tell == ftell (fout))
-    {
-      unlink (outfilename);
-    }
-  else if (tblflag)
-    {
-      fprintf (fout, "%s", rpcgen_table_dcl);
-    }
-
-  if (Cflag)
-    {
-      fprintf (fout, "\n#ifdef __cplusplus\n");
-      fprintf (fout, "}\n");
-      fprintf (fout, "#endif\n");
-    }
-
-  fprintf (fout, "\n#endif /* !_%s */\n", guard);
-  free (guard);
-  close_input ();
-  close_output (outfilename);
-}
-
-/*
- * Compile into an RPC service
- */
-static void
-s_output (int argc, const char *argv[], const char *infile, const char *define,
-	  int extend, const char *outfile, int nomain, int netflag)
-{
-  char *include;
-  definition *def;
-  int foundprogram = 0;
-  const char *outfilename;
-
-  open_input (infile, define);
-  outfilename = extend ? extendfile (infile, outfile) : outfile;
-  open_output (infile, outfilename);
-  add_warning ();
-  if (infile && (include = extendfile (infile, ".h")))
-    {
-      fprintf (fout, "#include \"%s\"\n", include);
-      free (include);
-    }
-  else
-    fprintf (fout, "#include <rpc/rpc.h>\n");
-
-  fprintf (fout, "#include <stdio.h>\n");
-  fprintf (fout, "#include <stdlib.h>\n");
-  fprintf (fout, "#include <rpc/pmap_clnt.h>\n");
-  if (Cflag)
-    fprintf (fout, "#include <string.h>\n");
-  if (strcmp (svcclosetime, "-1") == 0)
-    indefinitewait = 1;
-  else if (strcmp (svcclosetime, "0") == 0)
-    exitnow = 1;
-  else if (inetdflag || pmflag)
-    {
-      fprintf (fout, "#include <signal.h>\n");
-      timerflag = 1;
-    }
-
-  if (!tirpcflag && inetdflag)
-    fprintf (fout, "#include <sys/ioctl.h> /* ioctl, TIOCNOTTY */\n");
-  if (Cflag && (inetdflag || pmflag))
-    {
-      fprintf (fout, "#include <sys/types.h> /* open */\n");
-      fprintf (fout, "#include <sys/stat.h> /* open */\n");
-      fprintf (fout, "#include <fcntl.h> /* open */\n");
-      fprintf (fout, "#include <unistd.h> /* getdtablesize */\n");
-    }
-  if (tirpcflag && !(Cflag && (inetdflag || pmflag)))
-    fprintf (fout, "#include <sys/types.h>\n");
-
-  fprintf (fout, "#include <memory.h>\n");
-  if (inetdflag || !tirpcflag)
-    {
-      fprintf (fout, "#include <sys/socket.h>\n");
-      fprintf (fout, "#include <netinet/in.h>\n");
-    }
-
-  if ((netflag || pmflag) && tirpcflag && !nomain)
-    {
-      fprintf (fout, "#include <netconfig.h>\n");
-    }
-  if ( /*timerflag && */ tirpcflag)
-    fprintf (fout, "#include <sys/resource.h> /* rlimit */\n");
-  if (logflag || inetdflag || pmflag)
-    {
-      fprintf (fout, "#include <syslog.h>\n");
-    }
-
-  /* for ANSI-C */
-  if (Cflag)
-    fprintf (fout, "\n#ifndef SIG_PF\n#define SIG_PF void(*)(int)\n#endif\n");
-
-  if (timerflag)
-    fprintf (fout, "\n#define _RPCSVC_CLOSEDOWN %s\n", svcclosetime);
-  while ((def = get_definition ()) != NULL)
-    {
-      foundprogram |= (def->def_kind == DEF_PROGRAM);
-    }
-  if (extend && !foundprogram)
-    {
-      unlink (outfilename);
-      return;
-    }
-  write_most (infile, netflag, nomain);
-  if (!nomain)
-    {
-      if (!do_registers (argc, argv))
-	{
-	  if (outfilename)
-	    unlink (outfilename);
-	  usage (stderr, 1);
-	}
-      write_rest ();
-    }
-  close_input ();
-  close_output (outfilename);
-}
-
-/*
- * generate client side stubs
- */
-static void
-l_output (const char *infile, const char *define, int extend,
-	  const char *outfile)
-{
-  char *include;
-  definition *def;
-  int foundprogram = 0;
-  const char *outfilename;
-
-  open_input (infile, define);
-  outfilename = extend ? extendfile (infile, outfile) : outfile;
-  open_output (infile, outfilename);
-  add_warning ();
-  if (Cflag)
-    fprintf (fout, "#include <memory.h> /* for memset */\n");
-  if (infile && (include = extendfile (infile, ".h")))
-    {
-      fprintf (fout, "#include \"%s\"\n", include);
-      free (include);
-    }
-  else
-    fprintf (fout, "#include <rpc/rpc.h>\n");
-  while ((def = get_definition ()) != NULL)
-    {
-      foundprogram |= (def->def_kind == DEF_PROGRAM);
-    }
-  if (extend && !foundprogram)
-    {
-      unlink (outfilename);
-      return;
-    }
-  write_stubs ();
-  close_input ();
-  close_output (outfilename);
-}
-
-/*
- * generate the dispatch table
- */
-static void
-t_output (const char *infile, const char *define, int extend,
-	  const char *outfile)
-{
-  definition *def;
-  int foundprogram = 0;
-  const char *outfilename;
-
-  open_input (infile, define);
-  outfilename = extend ? extendfile (infile, outfile) : outfile;
-  open_output (infile, outfilename);
-  add_warning ();
-  while ((def = get_definition ()) != NULL)
-    {
-      foundprogram |= (def->def_kind == DEF_PROGRAM);
-    }
-  if (extend && !foundprogram)
-    {
-      unlink (outfilename);
-      return;
-    }
-  write_tables ();
-  close_input ();
-  close_output (outfilename);
-}
-
-/* sample routine for the server template */
-static void
-svc_output (const char *infile, const char *define, int extend,
-	    const char *outfile)
-{
-  definition *def;
-  char *include;
-  const char *outfilename;
-  long tell;
-
-  open_input (infile, define);
-  outfilename = extend ? extendfile (infile, outfile) : outfile;
-  checkfiles (infile, outfilename);
-  /*check if outfile already exists.
-     if so, print an error message and exit */
-  open_output (infile, outfilename);
-  add_sample_msg ();
-
-  if (infile && (include = extendfile (infile, ".h")))
-    {
-      fprintf (fout, "#include \"%s\"\n", include);
-      free (include);
-    }
-  else
-    fprintf (fout, "#include <rpc/rpc.h>\n");
-
-  tell = ftell (fout);
-  while ((def = get_definition ()) != NULL)
-    {
-      write_sample_svc (def);
-    }
-  if (extend && tell == ftell (fout))
-    {
-      unlink (outfilename);
-    }
-  close_input ();
-  close_output (outfilename);
-}
-
-
-/* sample main routine for client */
-static void
-clnt_output (const char *infile, const char *define, int extend,
-	     const char *outfile)
-{
-  definition *def;
-  char *include;
-  const char *outfilename;
-  long tell;
-  int has_program = 0;
-
-  open_input (infile, define);
-  outfilename = extend ? extendfile (infile, outfile) : outfile;
-  checkfiles (infile, outfilename);
-  /*check if outfile already exists.
-     if so, print an error message and exit */
-
-  open_output (infile, outfilename);
-  add_sample_msg ();
-  if (infile && (include = extendfile (infile, ".h")))
-    {
-      fprintf (fout, "#include \"%s\"\n", include);
-      free (include);
-    }
-  else
-    fprintf (fout, "#include <rpc/rpc.h>\n");
-  tell = ftell (fout);
-  while ((def = get_definition ()) != NULL)
-    {
-      has_program += write_sample_clnt (def);
-    }
-
-  if (has_program)
-    write_sample_clnt_main ();
-
-  if (extend && tell == ftell (fout))
-    {
-      unlink (outfilename);
-    }
-  close_input ();
-  close_output (outfilename);
-}
-
-static const char space[] = " ";
-
-static char *
-file_name (const char *file, const char *ext)
-{
-  char *temp;
-  temp = extendfile (file, ext);
-
-  if (access (temp, F_OK) != -1)
-    return (temp);
-
-  free (temp);
-  return (char *) space;
-}
-
-static void
-mkfile_output (struct commandline *cmd)
-{
-  char *mkfilename;
-  char *clientname, *clntname, *xdrname, *hdrname;
-  char *servername, *svcname, *servprogname, *clntprogname;
-
-  svcname = file_name (cmd->infile, "_svc.c");
-  clntname = file_name (cmd->infile, "_clnt.c");
-  xdrname = file_name (cmd->infile, "_xdr.c");
-  hdrname = file_name (cmd->infile, ".h");
-
-  if (allfiles)
-    {
-      servername = extendfile (cmd->infile, "_server.c");
-      clientname = extendfile (cmd->infile, "_client.c");
-    }
-  else
-    {
-      servername = (char *) space;
-      clientname = (char *) space;
-    }
-  servprogname = extendfile (cmd->infile, "_server");
-  clntprogname = extendfile (cmd->infile, "_client");
-
-  if (allfiles)
-    {
-      char *cp, *temp;
-
-      mkfilename = alloc (strlen ("Makefile.") + strlen (cmd->infile) + 1);
-      if (mkfilename == NULL)
-	abort ();
-      temp = strrchr (cmd->infile, '.');
-      cp = stpcpy (mkfilename, "Makefile.");
-      if (temp != NULL)
-	*((char *) stpncpy (cp, cmd->infile, temp - cmd->infile)) = '\0';
-      else
-	stpcpy (cp, cmd->infile);
-
-    }
-  else
-    mkfilename = (char *) cmd->outfile;
-
-  checkfiles (NULL, mkfilename);
-  open_output (NULL, mkfilename);
-
-  fprintf (fout, "\n# This is a template Makefile generated by rpcgen\n");
-
-  f_print (fout, "\n# Parameters\n\n");
-
-  f_print (fout, "CLIENT = %s\nSERVER = %s\n\n", clntprogname, servprogname);
-  f_print (fout, "SOURCES_CLNT.c = \nSOURCES_CLNT.h = \n");
-  f_print (fout, "SOURCES_SVC.c = \nSOURCES_SVC.h = \n");
-  f_print (fout, "SOURCES.x = %s\n\n", cmd->infile);
-  f_print (fout, "TARGETS_SVC.c = %s %s %s \n",
-	   svcname, servername, xdrname);
-  f_print (fout, "TARGETS_CLNT.c = %s %s %s \n",
-	   clntname, clientname, xdrname);
-  f_print (fout, "TARGETS = %s %s %s %s %s %s\n\n",
-	   hdrname, xdrname, clntname,
-	   svcname, clientname, servername);
-
-  f_print (fout, "OBJECTS_CLNT = $(SOURCES_CLNT.c:%%.c=%%.o) \
-$(TARGETS_CLNT.c:%%.c=%%.o)");
-
-  f_print (fout, "\nOBJECTS_SVC = $(SOURCES_SVC.c:%%.c=%%.o) \
-$(TARGETS_SVC.c:%%.c=%%.o)");
-
-  f_print (fout, "\n# Compiler flags \n");
-  if (mtflag)
-    fprintf (fout, "\nCPPFLAGS += -D_REENTRANT\nCFLAGS += -g \nLDLIBS \
-+= -lnsl -lpthread \n ");
-  else
-    f_print (fout, "\nCFLAGS += -g \nLDLIBS += -lnsl\n");
-  f_print (fout, "RPCGENFLAGS = \n");
-
-  f_print (fout, "\n# Targets \n\n");
-
-  f_print (fout, "all : $(CLIENT) $(SERVER)\n\n");
-  f_print (fout, "$(TARGETS) : $(SOURCES.x) \n");
-  f_print (fout, "\trpcgen $(RPCGENFLAGS) $(SOURCES.x)\n\n");
-  f_print (fout, "$(OBJECTS_CLNT) : $(SOURCES_CLNT.c) $(SOURCES_CLNT.h) \
-$(TARGETS_CLNT.c) \n\n");
-
-  f_print (fout, "$(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) \
-$(TARGETS_SVC.c) \n\n");
-  f_print (fout, "$(CLIENT) : $(OBJECTS_CLNT) \n");
-  f_print (fout, "\t$(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) \
-$(LDLIBS) \n\n");
-  f_print (fout, "$(SERVER) : $(OBJECTS_SVC) \n");
-  f_print (fout, "\t$(LINK.c) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS)\n\n ");
-  f_print (fout, "clean:\n\t $(RM) core $(TARGETS) $(OBJECTS_CLNT) \
-$(OBJECTS_SVC) $(CLIENT) $(SERVER)\n\n");
-  close_output (mkfilename);
-
-  free (clntprogname);
-  free (servprogname);
-  if (servername != space)
-    free (servername);
-  if (clientname != space)
-    free (clientname);
-  if (mkfilename != (char *) cmd->outfile)
-    free (mkfilename);
-  if (svcname != space)
-    free (svcname);
-  if (clntname != space)
-    free (clntname);
-  if (xdrname != space)
-    free (xdrname);
-  if (hdrname != space)
-    free (hdrname);
-}
-
-/*
- * Perform registrations for service output
- * Return 0 if failed; 1 otherwise.
- */
-static int
-do_registers (int argc, const char *argv[])
-{
-  int i;
-
-  if (inetdflag || !tirpcflag)
-    {
-      for (i = 1; i < argc; i++)
-	{
-	  if (streq (argv[i], "-s"))
-	    {
-	      if (!check_nettype (argv[i + 1], valid_i_nettypes))
-		return 0;
-	      write_inetd_register (argv[i + 1]);
-	      i++;
-	    }
-	}
-    }
-  else
-    {
-      for (i = 1; i < argc; i++)
-	if (streq (argv[i], "-s"))
-	  {
-	    if (!check_nettype (argv[i + 1], valid_ti_nettypes))
-	      return 0;
-	    write_nettype_register (argv[i + 1]);
-	    i++;
-	  }
-	else if (streq (argv[i], "-n"))
-	  {
-	    write_netid_register (argv[i + 1]);
-	    i++;
-	  }
-    }
-  return 1;
-}
-
-/*
- * Add another argument to the arg list
- */
-static void
-addarg (const char *cp)
-{
-  if (argcount >= ARGLISTLEN)
-    {
-      fprintf (stderr, _("rpcgen: too many defines\n"));
-      crash ();
-      /*NOTREACHED */
-    }
-  arglist[argcount++] = cp;
-}
-
-static void
-putarg (int whereto, const char *cp)
-{
-  if (whereto >= ARGLISTLEN)
-    {
-      fprintf (stderr, _("rpcgen: arglist coding error\n"));
-      crash ();
-      /*NOTREACHED */
-    }
-  arglist[whereto] = cp;
-}
-
-/*
- * if input file is stdin and an output file is specified then complain
- * if the file already exists. Otherwise the file may get overwritten
- * If input file does not exist, exit with an error
- */
-
-static void
-checkfiles (const char *infile, const char *outfile)
-{
-  struct stat64 buf;
-
-  if (infile)			/* infile ! = NULL */
-    if (stat64 (infile, &buf) < 0)
-      {
-	perror (infile);
-	crash ();
-      }
-  if (outfile)
-    {
-      if (stat64 (outfile, &buf) < 0)
-	return;			/* file does not exist */
-      else
-	{
-	  fprintf (stderr,
-		   /* TRANS: the file will not be removed; this is an
-		      TRANS: informative message.  */
-		   _("file `%s' already exists and may be overwritten\n"),
-		   outfile);
-	  crash ();
-	}
-    }
-}
-
-/*
- * Parse command line arguments
- */
-static int
-parseargs (int argc, const char *argv[], struct commandline *cmd)
-{
-  int i;
-  int j;
-  int c;
-  char flag[(1 << 8 * sizeof (char))];
-  int nflags;
-
-  cmdname = argv[0];
-  cmd->infile = cmd->outfile = NULL;
-  if (argc < 2)
-    {
-      return (0);
-    }
-  allfiles = 0;
-  flag['c'] = 0;
-  flag['h'] = 0;
-  flag['l'] = 0;
-  flag['m'] = 0;
-  flag['o'] = 0;
-  flag['s'] = 0;
-  flag['n'] = 0;
-  flag['t'] = 0;
-  flag['S'] = 0;
-  flag['C'] = 0;
-  flag['M'] = 0;
-
-  for (i = 1; i < argc; i++)
-    {
-      if (argv[i][0] != '-')
-	{
-	  if (cmd->infile)
-	    {
-	      fprintf (stderr,
-		       _("Cannot specify more than one input file!\n"));
-	      return 0;
-	    }
-	  cmd->infile = argv[i];
-	}
-      else if (strcmp (argv[i], "--help") == 0)
-	usage (stdout, 0);
-      else if (strcmp (argv[i], "--version") == 0)
-	print_version ();
-      else
-	{
-	  for (j = 1; argv[i][j] != 0; j++)
-	    {
-	      c = argv[i][j];
-	      switch (c)
-		{
-		case 'a':
-		  allfiles = 1;
-		  break;
-		case 'c':
-		case 'h':
-		case 'l':
-		case 'm':
-		case 't':
-		  if (flag[c])
-		    return 0;
-		  flag[c] = 1;
-		  break;
-		case 'S':
-		  /* sample flag: Ss or Sc.
-		     Ss means set flag['S'];
-		     Sc means set flag['C'];
-		     Sm means set flag['M']; */
- 		  c = argv[i][++j];	/* get next char */
-		  if (c == 's')
-		    c = 'S';
-		  else if (c == 'c')
-		    c = 'C';
-		  else if (c == 'm')
-		    c = 'M';
-		  else
-		    return 0;
-
-		  if (flag[c])
-		    return 0;
-		  flag[c] = 1;
-		  break;
-		case 'C':	/* ANSI C syntax */
-		  Cflag = 1;
-		  break;
-
-		case 'k':  /* K&R C syntax */
-		  Cflag = 0;
-		  break;
-
-		case 'b':  /* turn TIRPC flag off for
-			      generating backward compatible
-			   */
-		  tirpcflag = 0;
-		  break;
-
-		case '5':  /* turn TIRPC flag on for
-			      generating SysVr4 compatible
-			   */
-		  tirpcflag = 1;
-		  break;
-		case 'I':
-		  inetdflag = 1;
-		  break;
-		case 'N':
-		  newstyle = 1;
-		  break;
-		case 'L':
-		  logflag = 1;
-		  break;
-		case 'K':
-		  if (++i == argc)
-		    {
-		      return (0);
-		    }
-		  svcclosetime = argv[i];
-		  goto nextarg;
-		case 'T':
-		  tblflag = 1;
-		  break;
-		case 'M':
-		  mtflag = 1;
-		  break;
-		case 'i':
-		  if (++i == argc)
-		    {
-		      return (0);
-		    }
-		  inlineflag = atoi (argv[i]);
-		  goto nextarg;
-		case 'n':
-		case 'o':
-		case 's':
-		  if (argv[i][j - 1] != '-' ||
-		      argv[i][j + 1] != 0)
-		    {
-		      return (0);
-		    }
-		  flag[c] = 1;
-		  if (++i == argc)
-		    {
-		      return (0);
-		    }
-		  if (c == 's')
-		    {
-		      if (!streq (argv[i], "udp") &&
-			  !streq (argv[i], "tcp"))
-			return 0;
-		    }
-		  else if (c == 'o')
-		    {
-		      if (cmd->outfile)
-			return 0;
-		      cmd->outfile = argv[i];
-		    }
-		  goto nextarg;
-		case 'D':
-		  if (argv[i][j - 1] != '-')
-		    return 0;
-		  addarg (argv[i]);
-		  goto nextarg;
-		case 'Y':
-		  if (++i == argc)
-		    return 0;
-		  {
-		    size_t len = strlen (argv[i]);
-		    pathbuf = malloc (len + 5);
-		    if (pathbuf == NULL)
-		      {
-			perror (cmdname);
-			crash ();
-		      }
-		    stpcpy (stpcpy (pathbuf,
-				    argv[i]),
-			    "/cpp");
-		    CPP = pathbuf;
-		    cppDefined = 1;
-		    goto nextarg;
-		  }
-
-		default:
-		  return 0;
-		}
-	      }
-	nextarg:
-	  ;
-	}
-    }
-
-  cmd->cflag = flag['c'];
-  cmd->hflag = flag['h'];
-  cmd->lflag = flag['l'];
-  cmd->mflag = flag['m'];
-  cmd->nflag = flag['n'];
-  cmd->sflag = flag['s'];
-  cmd->tflag = flag['t'];
-  cmd->Ssflag = flag['S'];
-  cmd->Scflag = flag['C'];
-  cmd->makefileflag = flag['M'];
-
-  if (tirpcflag)
-    {
-      pmflag = inetdflag ? 0 : 1;    /* pmflag or inetdflag is always TRUE */
-      if ((inetdflag && cmd->nflag))
-	{			/* netid not allowed with inetdflag */
-	  fprintf (stderr, _("Cannot use netid flag with inetd flag!\n"));
-	  return 0;
-	}
-    }
-  else
-    {				/* 4.1 mode */
-      pmflag = 0;		/* set pmflag only in tirpcmode */
-      if (cmd->nflag)
-	{			/* netid needs TIRPC */
-	  f_print (stderr, _("Cannot use netid flag without TIRPC!\n"));
-	  return (0);
-	}
-    }
-
-  if (newstyle && (tblflag || cmd->tflag))
-    {
-      f_print (stderr, _("Cannot use table flags with newstyle!\n"));
-      return (0);
-    }
-
-  /* check no conflicts with file generation flags */
-  nflags = cmd->cflag + cmd->hflag + cmd->lflag + cmd->mflag +
-    cmd->sflag + cmd->nflag + cmd->tflag + cmd->Ssflag + cmd->Scflag;
-
-  if (nflags == 0)
-    {
-      if (cmd->outfile != NULL || cmd->infile == NULL)
-	{
-	  return (0);
-	}
-    }
-  else if (cmd->infile == NULL &&
-	   (cmd->Ssflag || cmd->Scflag || cmd->makefileflag))
-    {
-      fprintf (stderr,
-	       _("\"infile\" is required for template generation flags.\n"));
-      return 0;
-    }
-  if (nflags > 1)
-    {
-      fprintf (stderr, _("Cannot have more than one file generation flag!\n"));
-      return 0;
-    }
-  return 1;
-}
-
-static void
-usage (FILE *stream, int status)
-{
-  fprintf (stream, _("usage: %s infile\n"), cmdname);
-  fprintf (stream, _("\t%s [-abkCLNTM][-Dname[=value]] [-i size] \
-[-I [-K seconds]] [-Y path] infile\n"), cmdname);
-  fprintf (stream, _("\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] \
-[-o outfile] [infile]\n"), cmdname);
-  fprintf (stream, _("\t%s [-s nettype]* [-o outfile] [infile]\n"), cmdname);
-  fprintf (stream, _("\t%s [-n netid]* [-o outfile] [infile]\n"), cmdname);
-  options_usage (stream, status);
-  exit (status);
-}
-
-static void
-options_usage (FILE *stream, int status)
-{
-  f_print (stream, _("options:\n"));
-  f_print (stream, _("-a\t\tgenerate all files, including samples\n"));
-  f_print (stream, _("-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"));
-  f_print (stream, _("-c\t\tgenerate XDR routines\n"));
-  f_print (stream, _("-C\t\tANSI C mode\n"));
-  f_print (stream, _("-Dname[=value]\tdefine a symbol (same as #define)\n"));
-  f_print (stream, _("-h\t\tgenerate header file\n"));
-  f_print (stream, _("-i size\t\tsize at which to start generating inline code\n"));
-  f_print (stream, _("-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"));
-  f_print (stream, _("-K seconds\tserver exits after K seconds of inactivity\n"));
-  f_print (stream, _("-l\t\tgenerate client side stubs\n"));
-  f_print (stream, _("-L\t\tserver errors will be printed to syslog\n"));
-  f_print (stream, _("-m\t\tgenerate server side stubs\n"));
-  f_print (stream, _("-M\t\tgenerate MT-safe code\n"));
-  f_print (stream, _("-n netid\tgenerate server code that supports named netid\n"));
-  f_print (stream, _("-N\t\tsupports multiple arguments and call-by-value\n"));
-  f_print (stream, _("-o outfile\tname of the output file\n"));
-  f_print (stream, _("-s nettype\tgenerate server code that supports named nettype\n"));
-  f_print (stream, _("-Sc\t\tgenerate sample client code that uses remote procedures\n"));
-  f_print (stream, _("-Ss\t\tgenerate sample server code that defines remote procedures\n"));
-  f_print (stream, _("-Sm \t\tgenerate makefile template \n"));
-  f_print (stream, _("-t\t\tgenerate RPC dispatch table\n"));
-  f_print (stream, _("-T\t\tgenerate code to support RPC dispatch tables\n"));
-  f_print (stream, _("-Y path\t\tdirectory name to find C preprocessor (cpp)\n"));
-  f_print (stream, _("-5\t\tSysVr4 compatibility mode\n"));
-  f_print (stream, _("--help\t\tgive this help list\n"));
-  f_print (stream, _("--version\tprint program version\n"));
-
-  f_print (stream, _("\n\
-For bug reporting instructions, please see:\n\
-%s.\n"), REPORT_BUGS_TO);
-  exit (status);
-}
-
-static void
-print_version (void)
-{
-  printf ("rpcgen %s%s\n", PKGVERSION, VERSION);
-  exit (0);
-}
diff --git a/sunrpc/rpc_parse.c b/sunrpc/rpc_parse.c
deleted file mode 100644
index 505a6554cf..0000000000
--- a/sunrpc/rpc_parse.c
+++ /dev/null
@@ -1,687 +0,0 @@ 
-/*
- * From: @(#)rpc_parse.c 1.8 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_parse.c, Parser for the RPC protocol compiler
- * Copyright (C) 1987 Sun Microsystems, Inc.
- */
-#include <stdio.h>
-#include <string.h>
-#include "rpc/types.h"
-#include "rpc_scan.h"
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define ARGNAME "arg"
-
-static void isdefined (definition * defp);
-static void def_struct (definition * defp);
-static void def_program (definition * defp);
-static void def_enum (definition * defp);
-static void def_const (definition * defp);
-static void def_union (definition * defp);
-static void check_type_name (const char *name, int new_type);
-static void def_typedef (definition * defp);
-static void get_declaration (declaration * dec, defkind dkind);
-static void get_prog_declaration (declaration * dec, defkind dkind, int num);
-static void get_type (const char **prefixp, const char **typep, defkind dkind);
-static void unsigned_dec (const char **typep);
-
-/*
- * return the next definition you see
- */
-definition *
-get_definition (void)
-{
-  definition *defp;
-  token tok;
-
-  defp = ALLOC (definition);
-  get_token (&tok);
-  switch (tok.kind)
-    {
-    case TOK_STRUCT:
-      def_struct (defp);
-      break;
-    case TOK_UNION:
-      def_union (defp);
-      break;
-    case TOK_TYPEDEF:
-      def_typedef (defp);
-      break;
-    case TOK_ENUM:
-      def_enum (defp);
-      break;
-    case TOK_PROGRAM:
-      def_program (defp);
-      break;
-    case TOK_CONST:
-      def_const (defp);
-      break;
-    case TOK_EOF:
-      free (defp);
-      return (NULL);
-    default:
-      error ("definition keyword expected");
-    }
-  scan (TOK_SEMICOLON, &tok);
-  isdefined (defp);
-  return (defp);
-}
-
-static void
-isdefined (definition * defp)
-{
-  STOREVAL (&defined, defp);
-}
-
-static void
-def_struct (definition * defp)
-{
-  token tok;
-  declaration dec;
-  decl_list *decls;
-  decl_list **tailp;
-
-  defp->def_kind = DEF_STRUCT;
-
-  scan (TOK_IDENT, &tok);
-  defp->def_name = tok.str;
-  scan (TOK_LBRACE, &tok);
-  tailp = &defp->def.st.decls;
-  do
-    {
-      get_declaration (&dec, DEF_STRUCT);
-      decls = ALLOC (decl_list);
-      decls->decl = dec;
-      *tailp = decls;
-      tailp = &decls->next;
-      scan (TOK_SEMICOLON, &tok);
-      peek (&tok);
-    }
-  while (tok.kind != TOK_RBRACE);
-  get_token (&tok);
-  *tailp = NULL;
-}
-
-static void
-def_program (definition * defp)
-{
-  token tok;
-  declaration dec;
-  decl_list *decls;
-  decl_list **tailp;
-  version_list *vlist;
-  version_list **vtailp;
-  proc_list *plist;
-  proc_list **ptailp;
-  int num_args;
-  bool_t isvoid = FALSE;	/* whether first argument is void */
-  defp->def_kind = DEF_PROGRAM;
-  scan (TOK_IDENT, &tok);
-  defp->def_name = tok.str;
-  scan (TOK_LBRACE, &tok);
-  vtailp = &defp->def.pr.versions;
-  tailp = &defp->def.st.decls;
-  scan (TOK_VERSION, &tok);
-  do
-    {
-      scan (TOK_IDENT, &tok);
-      vlist = ALLOC (version_list);
-      vlist->vers_name = tok.str;
-      scan (TOK_LBRACE, &tok);
-      ptailp = &vlist->procs;
-      do
-	{
-	  /* get result type */
-	  plist = ALLOC (proc_list);
-	  get_type (&plist->res_prefix, &plist->res_type,
-		    DEF_PROGRAM);
-	  if (streq (plist->res_type, "opaque"))
-	    {
-	      error ("illegal result type");
-	    }
-	  scan (TOK_IDENT, &tok);
-	  plist->proc_name = tok.str;
-	  scan (TOK_LPAREN, &tok);
-	  /* get args - first one */
-	  num_args = 1;
-	  isvoid = FALSE;
-	  /* type of DEF_PROGRAM in the first
-	   * get_prog_declaration and DEF_STURCT in the next
-	   * allows void as argument if it is the only argument
-	   */
-	  get_prog_declaration (&dec, DEF_PROGRAM, num_args);
-	  if (streq (dec.type, "void"))
-	    isvoid = TRUE;
-	  decls = ALLOC (decl_list);
-	  plist->args.decls = decls;
-	  decls->decl = dec;
-	  tailp = &decls->next;
-	  /* get args */
-	  while (peekscan (TOK_COMMA, &tok))
-	    {
-	      num_args++;
-	      get_prog_declaration (&dec, DEF_STRUCT,
-				    num_args);
-	      decls = ALLOC (decl_list);
-	      decls->decl = dec;
-	      *tailp = decls;
-	      if (streq (dec.type, "void"))
-		isvoid = TRUE;
-	      tailp = &decls->next;
-	    }
-	  /* multiple arguments are only allowed in newstyle */
-	  if (!newstyle && num_args > 1)
-	    {
-	      error ("only one argument is allowed");
-	    }
-	  if (isvoid && num_args > 1)
-	    {
-	      error ("illegal use of void in program definition");
-	    }
-	  *tailp = NULL;
-	  scan (TOK_RPAREN, &tok);
-	  scan (TOK_EQUAL, &tok);
-	  scan_num (&tok);
-	  scan (TOK_SEMICOLON, &tok);
-	  plist->proc_num = tok.str;
-	  plist->arg_num = num_args;
-	  *ptailp = plist;
-	  ptailp = &plist->next;
-	  peek (&tok);
-	}
-      while (tok.kind != TOK_RBRACE);
-      *ptailp = NULL;
-      *vtailp = vlist;
-      vtailp = &vlist->next;
-      scan (TOK_RBRACE, &tok);
-      scan (TOK_EQUAL, &tok);
-      scan_num (&tok);
-      vlist->vers_num = tok.str;
-      /* make the argument structure name for each arg */
-      for (plist = vlist->procs; plist != NULL;
-	   plist = plist->next)
-	{
-	  plist->args.argname = make_argname (plist->proc_name,
-					      vlist->vers_num);
-	  /* free the memory ?? */
-	}
-      scan (TOK_SEMICOLON, &tok);
-      scan2 (TOK_VERSION, TOK_RBRACE, &tok);
-    }
-  while (tok.kind == TOK_VERSION);
-  scan (TOK_EQUAL, &tok);
-  scan_num (&tok);
-  defp->def.pr.prog_num = tok.str;
-  *vtailp = NULL;
-}
-
-
-static void
-def_enum (definition * defp)
-{
-  token tok;
-  enumval_list *elist;
-  enumval_list **tailp;
-
-  defp->def_kind = DEF_ENUM;
-  scan (TOK_IDENT, &tok);
-  defp->def_name = tok.str;
-  scan (TOK_LBRACE, &tok);
-  tailp = &defp->def.en.vals;
-  do
-    {
-      scan (TOK_IDENT, &tok);
-      elist = ALLOC (enumval_list);
-      elist->name = tok.str;
-      elist->assignment = NULL;
-      scan3 (TOK_COMMA, TOK_RBRACE, TOK_EQUAL, &tok);
-      if (tok.kind == TOK_EQUAL)
-	{
-	  scan_num (&tok);
-	  elist->assignment = tok.str;
-	  scan2 (TOK_COMMA, TOK_RBRACE, &tok);
-	}
-      *tailp = elist;
-      tailp = &elist->next;
-    }
-  while (tok.kind != TOK_RBRACE);
-  *tailp = NULL;
-}
-
-static void
-def_const (definition * defp)
-{
-  token tok;
-
-  defp->def_kind = DEF_CONST;
-  scan (TOK_IDENT, &tok);
-  defp->def_name = tok.str;
-  scan (TOK_EQUAL, &tok);
-  scan2 (TOK_IDENT, TOK_STRCONST, &tok);
-  defp->def.co = tok.str;
-}
-
-static void
-def_union (definition *defp)
-{
-  token tok;
-  declaration dec;
-  case_list *cases;
-/*  case_list *tcase; */
-  case_list **tailp;
-#if 0
-  int flag;
-#endif
-
-  defp->def_kind = DEF_UNION;
-  scan (TOK_IDENT, &tok);
-  defp->def_name = tok.str;
-  scan (TOK_SWITCH, &tok);
-  scan (TOK_LPAREN, &tok);
-  get_declaration (&dec, DEF_UNION);
-  defp->def.un.enum_decl = dec;
-  tailp = &defp->def.un.cases;
-  scan (TOK_RPAREN, &tok);
-  scan (TOK_LBRACE, &tok);
-  scan (TOK_CASE, &tok);
-  while (tok.kind == TOK_CASE)
-    {
-      scan2 (TOK_IDENT, TOK_CHARCONST, &tok);
-      cases = ALLOC (case_list);
-      cases->case_name = tok.str;
-      scan (TOK_COLON, &tok);
-      /* now peek at next token */
-#if 0
-      flag = 0;
-#endif
-      if (peekscan (TOK_CASE, &tok))
-	{
-
-	  do
-	    {
-	      scan2 (TOK_IDENT, TOK_CHARCONST, &tok);
-	      cases->contflag = 1;	/* continued case statement */
-	      *tailp = cases;
-	      tailp = &cases->next;
-	      cases = ALLOC (case_list);
-	      cases->case_name = tok.str;
-	      scan (TOK_COLON, &tok);
-
-	    }
-	  while (peekscan (TOK_CASE, &tok));
-	}
-#if 0
-      else if (flag)
-	{
-
-	  *tailp = cases;
-	  tailp = &cases->next;
-	  cases = ALLOC (case_list);
-	};
-#endif
-
-      get_declaration (&dec, DEF_UNION);
-      cases->case_decl = dec;
-      cases->contflag = 0;	/* no continued case statement */
-      *tailp = cases;
-      tailp = &cases->next;
-      scan (TOK_SEMICOLON, &tok);
-
-      scan3 (TOK_CASE, TOK_DEFAULT, TOK_RBRACE, &tok);
-    }
-  *tailp = NULL;
-  if (tok.kind == TOK_DEFAULT)
-    {
-      scan (TOK_COLON, &tok);
-      get_declaration (&dec, DEF_UNION);
-      defp->def.un.default_decl = ALLOC (declaration);
-      *defp->def.un.default_decl = dec;
-      scan (TOK_SEMICOLON, &tok);
-      scan (TOK_RBRACE, &tok);
-    }
-  else
-    {
-      defp->def.un.default_decl = NULL;
-    }
-}
-
-static const char *reserved_words[] =
-{
-  "array",
-  "bytes",
-  "destroy",
-  "free",
-  "getpos",
-  "inline",
-  "pointer",
-  "reference",
-  "setpos",
-  "sizeof",
-  "union",
-  "vector",
-  NULL
-};
-
-static const char *reserved_types[] =
-{
-  "opaque",
-  "string",
-  NULL
-};
-
-/*
- * check that the given name is not one that would eventually result in
- * xdr routines that would conflict with internal XDR routines.
- */
-static void
-check_type_name (const char *name, int new_type)
-{
-  int i;
-  char tmp[100];
-
-  for (i = 0; reserved_words[i] != NULL; i++)
-    {
-      if (strcmp (name, reserved_words[i]) == 0)
-	{
-	  sprintf (tmp,
-		"illegal (reserved) name :\'%s\' in type definition", name);
-	  error (tmp);
-	}
-    }
-  if (new_type)
-    {
-      for (i = 0; reserved_types[i] != NULL; i++)
-	{
-	  if (strcmp (name, reserved_types[i]) == 0)
-	    {
-	      sprintf (tmp,
-		"illegal (reserved) name :\'%s\' in type definition", name);
-	      error (tmp);
-	    }
-	}
-    }
-}
-
-
-
-static void
-def_typedef (definition * defp)
-{
-  declaration dec;
-
-  defp->def_kind = DEF_TYPEDEF;
-  get_declaration (&dec, DEF_TYPEDEF);
-  defp->def_name = dec.name;
-  check_type_name (dec.name, 1);
-  defp->def.ty.old_prefix = dec.prefix;
-  defp->def.ty.old_type = dec.type;
-  defp->def.ty.rel = dec.rel;
-  defp->def.ty.array_max = dec.array_max;
-}
-
-static void
-get_declaration (declaration * dec, defkind dkind)
-{
-  token tok;
-
-  get_type (&dec->prefix, &dec->type, dkind);
-  dec->rel = REL_ALIAS;
-  if (streq (dec->type, "void"))
-    {
-      return;
-    }
-
-  check_type_name (dec->type, 0);
-
-  scan2 (TOK_STAR, TOK_IDENT, &tok);
-  if (tok.kind == TOK_STAR)
-    {
-      dec->rel = REL_POINTER;
-      scan (TOK_IDENT, &tok);
-    }
-  dec->name = tok.str;
-  if (peekscan (TOK_LBRACKET, &tok))
-    {
-      if (dec->rel == REL_POINTER)
-	{
-	  error ("no array-of-pointer declarations -- use typedef");
-	}
-      dec->rel = REL_VECTOR;
-      scan_num (&tok);
-      dec->array_max = tok.str;
-      scan (TOK_RBRACKET, &tok);
-    }
-  else if (peekscan (TOK_LANGLE, &tok))
-    {
-      if (dec->rel == REL_POINTER)
-	{
-	  error ("no array-of-pointer declarations -- use typedef");
-	}
-      dec->rel = REL_ARRAY;
-      if (peekscan (TOK_RANGLE, &tok))
-	{
-	  dec->array_max = "~0";	/* unspecified size, use max */
-	}
-      else
-	{
-	  scan_num (&tok);
-	  dec->array_max = tok.str;
-	  scan (TOK_RANGLE, &tok);
-	}
-    }
-  if (streq (dec->type, "opaque"))
-    {
-      if (dec->rel != REL_ARRAY && dec->rel != REL_VECTOR)
-	{
-	  error ("array declaration expected");
-	}
-    }
-  else if (streq (dec->type, "string"))
-    {
-      if (dec->rel != REL_ARRAY)
-	{
-	  error ("variable-length array declaration expected");
-	}
-    }
-}
-
-static void
-get_prog_declaration (declaration * dec, defkind dkind, int num /* arg number */ )
-{
-  token tok;
-  char name[MAXLINESIZE];		/* argument name */
-
-  if (dkind == DEF_PROGRAM)
-    {
-      peek (&tok);
-      if (tok.kind == TOK_RPAREN)
-	{			/* no arguments */
-	  dec->rel = REL_ALIAS;
-	  dec->type = "void";
-	  dec->prefix = NULL;
-	  dec->name = NULL;
-	  return;
-	}
-    }
-  get_type (&dec->prefix, &dec->type, dkind);
-  dec->rel = REL_ALIAS;
-  if (peekscan (TOK_IDENT, &tok))	/* optional name of argument */
-    strcpy (name, tok.str);
-  else
-    sprintf (name, "%s%d", ARGNAME, num);	/* default name of argument */
-
-  dec->name = (char *) strdup (name);
-
-  if (streq (dec->type, "void"))
-    {
-      return;
-    }
-
-  if (streq (dec->type, "opaque"))
-    {
-      error ("opaque -- illegal argument type");
-    }
-  if (peekscan (TOK_STAR, &tok))
-    {
-      if (streq (dec->type, "string"))
-	{
-	  error ("pointer to string not allowed in program arguments\n");
-	}
-      dec->rel = REL_POINTER;
-      if (peekscan (TOK_IDENT, &tok))	/* optional name of argument */
-	dec->name = strdup (tok.str);
-    }
-  if (peekscan (TOK_LANGLE, &tok))
-    {
-      if (!streq (dec->type, "string"))
-	{
-	  error ("arrays cannot be declared as arguments to procedures -- use typedef");
-	}
-      dec->rel = REL_ARRAY;
-      if (peekscan (TOK_RANGLE, &tok))
-	{
-	  dec->array_max = "~0";	/* unspecified size, use max */
-	}
-      else
-	{
-	  scan_num (&tok);
-	  dec->array_max = tok.str;
-	  scan (TOK_RANGLE, &tok);
-	}
-    }
-  if (streq (dec->type, "string"))
-    {
-      if (dec->rel != REL_ARRAY)
-	{			/* .x specifies just string as
-				 * type of argument
-				 * - make it string<>
-				 */
-	  dec->rel = REL_ARRAY;
-	  dec->array_max = "~0";	/* unspecified size, use max */
-	}
-    }
-}
-
-static void
-get_type (const char **prefixp, const char **typep, defkind dkind)
-{
-  token tok;
-
-  *prefixp = NULL;
-  get_token (&tok);
-  switch (tok.kind)
-    {
-    case TOK_IDENT:
-      *typep = tok.str;
-      break;
-    case TOK_STRUCT:
-    case TOK_ENUM:
-    case TOK_UNION:
-      *prefixp = tok.str;
-      scan (TOK_IDENT, &tok);
-      *typep = tok.str;
-      break;
-    case TOK_UNSIGNED:
-      unsigned_dec (typep);
-      break;
-    case TOK_SHORT:
-      *typep = "short";
-      (void) peekscan (TOK_INT, &tok);
-      break;
-    case TOK_LONG:
-      *typep = "long";
-      (void) peekscan (TOK_INT, &tok);
-      break;
-    case TOK_HYPER:
-      *typep = "quad_t";
-      (void) peekscan(TOK_INT, &tok);
-      break;
-    case TOK_VOID:
-      if (dkind != DEF_UNION && dkind != DEF_PROGRAM)
-	{
-	  error ("voids allowed only inside union and program definitions with one argument");
-	}
-      *typep = tok.str;
-      break;
-    case TOK_STRING:
-    case TOK_OPAQUE:
-    case TOK_CHAR:
-    case TOK_INT:
-    case TOK_FLOAT:
-    case TOK_DOUBLE:
-    case TOK_BOOL:
-      *typep = tok.str;
-      break;
-    default:
-      error ("expected type specifier");
-    }
-}
-
-static void
-unsigned_dec (const char **typep)
-{
-  token tok;
-
-  peek (&tok);
-  switch (tok.kind)
-    {
-    case TOK_CHAR:
-      get_token (&tok);
-      *typep = "u_char";
-      break;
-    case TOK_SHORT:
-      get_token (&tok);
-      *typep = "u_short";
-      (void) peekscan (TOK_INT, &tok);
-      break;
-    case TOK_LONG:
-      get_token (&tok);
-      *typep = "u_long";
-      (void) peekscan (TOK_INT, &tok);
-      break;
-    case TOK_HYPER:
-      get_token (&tok);
-      *typep = "u_quad_t";
-      (void) peekscan(TOK_INT, &tok);
-      break;
-    case TOK_INT:
-      get_token (&tok);
-      *typep = "u_int";
-      break;
-    default:
-      *typep = "u_int";
-      break;
-    }
-}
diff --git a/sunrpc/rpc_parse.h b/sunrpc/rpc_parse.h
deleted file mode 100644
index e2e2f1e106..0000000000
--- a/sunrpc/rpc_parse.h
+++ /dev/null
@@ -1,165 +0,0 @@ 
-/*      @(#)rpc_parse.h  1.3  90/08/29
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * rpc_parse.h, Definitions for the RPCL parser
- */
-
-enum defkind {
-	DEF_CONST,
-	DEF_STRUCT,
-	DEF_UNION,
-	DEF_ENUM,
-	DEF_TYPEDEF,
-	DEF_PROGRAM
-};
-typedef enum defkind defkind;
-
-typedef const char *const_def;
-
-enum relation {
-	REL_VECTOR,	/* fixed length array */
-	REL_ARRAY,	/* variable length array */
-	REL_POINTER,	/* pointer */
-	REL_ALIAS	/* simple */
-};
-typedef enum relation relation;
-
-struct typedef_def {
-	const char *old_prefix;
-	const char *old_type;
-	relation rel;
-	const char *array_max;
-};
-typedef struct typedef_def typedef_def;
-
-struct enumval_list {
-	const char *name;
-	const char *assignment;
-	struct enumval_list *next;
-};
-typedef struct enumval_list enumval_list;
-
-struct enum_def {
-	enumval_list *vals;
-};
-typedef struct enum_def enum_def;
-
-struct declaration {
-	const char *prefix;
-	const char *type;
-	const char *name;
-	relation rel;
-	const char *array_max;
-};
-typedef struct declaration declaration;
-
-struct decl_list {
-	declaration decl;
-	struct decl_list *next;
-};
-typedef struct decl_list decl_list;
-
-struct struct_def {
-	decl_list *decls;
-};
-typedef struct struct_def struct_def;
-
-struct case_list {
-	const char *case_name;
-	int contflag;
-	declaration case_decl;
-	struct case_list *next;
-};
-typedef struct case_list case_list;
-
-struct union_def {
-	declaration enum_decl;
-	case_list *cases;
-	declaration *default_decl;
-};
-typedef struct union_def union_def;
-
-struct arg_list {
-	const char *argname; /* name of struct for arg*/
-	decl_list *decls;
-};
-
-typedef struct arg_list arg_list;
-
-struct proc_list {
-	const char *proc_name;
-	const char *proc_num;
-	arg_list args;
-	int arg_num;
-	const char *res_type;
-	const char *res_prefix;
-	struct proc_list *next;
-};
-typedef struct proc_list proc_list;
-
-struct version_list {
-	const char *vers_name;
-	const char *vers_num;
-	proc_list *procs;
-	struct version_list *next;
-};
-typedef struct version_list version_list;
-
-struct program_def {
-	const char *prog_num;
-	version_list *versions;
-};
-typedef struct program_def program_def;
-
-struct definition {
-	const char *def_name;
-	defkind def_kind;
-	union {
-		const_def co;
-		struct_def st;
-		union_def un;
-		enum_def en;
-		typedef_def ty;
-		program_def pr;
-	} def;
-};
-typedef struct definition definition;
-
-definition *get_definition(void);
-
-
-struct bas_type
-{
-  const char *name;
-  int length;
-  struct bas_type *next;
-};
-
-typedef struct bas_type bas_type;
diff --git a/sunrpc/rpc_prot.c b/sunrpc/rpc_prot.c
index 46582f2a35..831884df88 100644
--- a/sunrpc/rpc_prot.c
+++ b/sunrpc/rpc_prot.c
@@ -57,7 +57,7 @@  xdr_opaque_auth (XDR *xdrs, struct opaque_auth *ap)
 		      &ap->oa_length, MAX_AUTH_BYTES);
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_opaque_auth, GLIBC_2_0)
+libc_hidden_nolink (xdr_opaque_auth, GLIBC_2_0)
 
 /*
  * XDR a DES block
@@ -67,7 +67,7 @@  xdr_des_block (XDR *xdrs, des_block *blkp)
 {
   return xdr_opaque (xdrs, (caddr_t) blkp, sizeof (des_block));
 }
-libc_hidden_nolink_sunrpc (xdr_des_block, GLIBC_2_0)
+libc_hidden_nolink (xdr_des_block, GLIBC_2_0)
 
 /* * * * * * * * * * * * * * XDR RPC MESSAGE * * * * * * * * * * * * * * * */
 
@@ -95,7 +95,7 @@  xdr_accepted_reply (XDR *xdrs, struct accepted_reply *ar)
     }
   return TRUE;		/* TRUE => open ended set of problems */
 }
-libc_hidden_nolink_sunrpc (xdr_accepted_reply, GLIBC_2_0)
+libc_hidden_nolink (xdr_accepted_reply, GLIBC_2_0)
 
 /*
  * XDR the MSG_DENIED part of a reply message union
@@ -118,7 +118,7 @@  xdr_rejected_reply (XDR *xdrs, struct rejected_reply *rr)
     }
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_rejected_reply, GLIBC_2_0)
+libc_hidden_nolink (xdr_rejected_reply, GLIBC_2_0)
 
 static const struct xdr_discrim reply_dscrm[3] =
 {
@@ -140,7 +140,7 @@  xdr_replymsg (XDR *xdrs, struct rpc_msg *rmsg)
 		      NULL_xdrproc_t);
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_replymsg, GLIBC_2_0)
+libc_hidden_nolink (xdr_replymsg, GLIBC_2_0)
 
 
 /*
@@ -163,7 +163,7 @@  xdr_callhdr (XDR *xdrs, struct rpc_msg *cmsg)
     return xdr_u_long (xdrs, &(cmsg->rm_call.cb_vers));
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdr_callhdr, GLIBC_2_0)
+libc_hidden_nolink (xdr_callhdr, GLIBC_2_0)
 
 /* ************************** Client utility routine ************* */
 
@@ -273,4 +273,4 @@  _seterr_reply (struct rpc_msg *msg,
       break;
     }
 }
-libc_hidden_nolink_sunrpc (_seterr_reply, GLIBC_2_0)
+libc_hidden_nolink (_seterr_reply, GLIBC_2_0)
diff --git a/sunrpc/rpc_sample.c b/sunrpc/rpc_sample.c
deleted file mode 100644
index e90b58c080..0000000000
--- a/sunrpc/rpc_sample.c
+++ /dev/null
@@ -1,336 +0,0 @@ 
-/*
- * From: @(#)rpc_sample.c  1.1  90/08/30
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_sample.c, Sample client-server code outputter for the RPC protocol compiler
- */
-
-#include <stdio.h>
-#include <string.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-
-static const char RQSTP[] = "rqstp";
-
-static void write_sample_client (const char *program_name, version_list * vp);
-static void write_sample_server (definition * def);
-static void return_type (proc_list * plist);
-
-
-void
-write_sample_svc (definition * def)
-{
-
-  if (def->def_kind != DEF_PROGRAM)
-    return;
-  write_sample_server (def);
-}
-
-
-int
-write_sample_clnt (definition * def)
-{
-  version_list *vp;
-  int count = 0;
-
-  if (def->def_kind != DEF_PROGRAM)
-    return 0;
-  /* generate sample code for each version */
-  for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-    {
-      write_sample_client (def->def_name, vp);
-      ++count;
-    }
-  return count;
-}
-
-
-static void
-write_sample_client (const char *program_name, version_list * vp)
-{
-  proc_list *proc;
-  int i;
-  decl_list *l;
-
-  f_print (fout, "\n\nvoid\n");
-  pvname (program_name, vp->vers_num);
-  if (Cflag)
-    f_print (fout, "(char *host)\n{\n");
-  else
-    f_print (fout, "(host)\nchar *host;\n{\n");
-  f_print (fout, "\tCLIENT *clnt;\n");
-
-  i = 0;
-  for (proc = vp->procs; proc != NULL; proc = proc->next)
-    {
-      f_print (fout, "\t");
-      ++i;
-      if (mtflag)
-	{
-	  f_print (fout, "enum clnt_stat retval_%d;\n\t", i);
-	  ptype (proc->res_prefix, proc->res_type, 1);
-	  if (!streq (proc->res_type, "void"))
-	    f_print (fout, "result_%d;\n", i);
-	  else
-	    fprintf (fout, "*result_%d;\n", i);
-	}
-      else
-	{
-	  ptype (proc->res_prefix, proc->res_type, 1);
-	  f_print (fout, " *result_%d;\n", i);
-	}
-      /* print out declarations for arguments */
-      if (proc->arg_num < 2 && !newstyle)
-	{
-	  f_print (fout, "\t");
-	  if (!streq (proc->args.decls->decl.type, "void"))
-	    {
-	      ptype (proc->args.decls->decl.prefix,
-		     proc->args.decls->decl.type, 1);
-	      f_print (fout, " ");
-	    }
-	  else
-	    f_print (fout, "char *");	/* cannot have "void" type */
-	  pvname (proc->proc_name, vp->vers_num);
-	  f_print (fout, "_arg;\n");
-	}
-      else if (!streq (proc->args.decls->decl.type, "void"))
-	{
-	  for (l = proc->args.decls; l != NULL; l = l->next)
-	    {
-	      f_print (fout, "\t");
-	      ptype (l->decl.prefix, l->decl.type, 1);
-	      if (strcmp (l->decl.type, "string") == 1)
-		f_print (fout, " ");
-	      pvname (proc->proc_name, vp->vers_num);
-	      f_print (fout, "_%s;\n", l->decl.name);
-	    }
-	}
-    }
-
-  /* generate creation of client handle */
-  f_print(fout, "\n#ifndef\tDEBUG\n");
-  f_print (fout, "\tclnt = clnt_create (host, %s, %s, \"%s\");\n",
-	   program_name, vp->vers_name, tirpcflag ? "netpath" : "udp");
-  f_print (fout, "\tif (clnt == NULL) {\n");
-  f_print (fout, "\t\tclnt_pcreateerror (host);\n");
-  f_print (fout, "\t\texit (1);\n\t}\n");
-  f_print(fout, "#endif\t/* DEBUG */\n\n");
-
-  /* generate calls to procedures */
-  i = 0;
-  for (proc = vp->procs; proc != NULL; proc = proc->next)
-    {
-      if (mtflag)
-	f_print(fout, "\tretval_%d = ",++i);
-      else
-	f_print (fout, "\tresult_%d = ", ++i);
-      pvname (proc->proc_name, vp->vers_num);
-      if (proc->arg_num < 2 && !newstyle)
-	{
-	  f_print (fout, "(");
-	  if (streq (proc->args.decls->decl.type, "void"))/* cast to void* */
-	    f_print (fout, "(void*)");
-	  f_print (fout, "&");
-	  pvname (proc->proc_name, vp->vers_num);
-	  if (mtflag)
-	    f_print(fout, "_arg, &result_%d, clnt);\n", i);
-	  else
-	    f_print (fout, "_arg, clnt);\n");
-	}
-      else if (streq (proc->args.decls->decl.type, "void"))
-	{
-	  if (mtflag)
-	    f_print (fout, "(&result_%d, clnt);\n", i);
-	  else
-	    f_print (fout, "(clnt);\n");
-	}
-      else
-	{
-	  f_print (fout, "(");
-	  for (l = proc->args.decls; l != NULL; l = l->next)
-	    {
-	      pvname (proc->proc_name, vp->vers_num);
-	      f_print (fout, "_%s, ", l->decl.name);
-	    }
-	  if (mtflag)
-	    f_print(fout, "&result_%d, ", i);
-	  f_print (fout, "clnt);\n");
-	}
-      if (mtflag)
-	{
-	  f_print(fout, "\tif (retval_%d != RPC_SUCCESS) {\n", i);
-	}
-      else
-	{
-	  f_print(fout, "\tif (result_%d == (", i);
-	  ptype(proc->res_prefix, proc->res_type, 1);
-	  f_print(fout, "*) NULL) {\n");
-	}
-      f_print(fout, "\t\tclnt_perror (clnt, \"call failed\");\n");
-      f_print(fout, "\t}\n");
-    }
-
-  f_print (fout, "#ifndef\tDEBUG\n");
-  f_print (fout, "\tclnt_destroy (clnt);\n");
-  f_print (fout, "#endif\t /* DEBUG */\n");
-  f_print (fout, "}\n");
-}
-
-static void
-write_sample_server (definition * def)
-{
-  version_list *vp;
-  proc_list *proc;
-
-  for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-    {
-      for (proc = vp->procs; proc != NULL; proc = proc->next)
-	{
-	  f_print (fout, "\n");
-	  if (!mtflag)
-	    {
-	      return_type (proc);
-	      f_print (fout, "*\n");
-	    }
-	  else
-	    f_print (fout, "bool_t\n");
-	  if (Cflag || mtflag)
-	    pvname_svc (proc->proc_name, vp->vers_num);
-	  else
-	    pvname(proc->proc_name, vp->vers_num);
-	  printarglist(proc, "result", RQSTP, "struct svc_req *");
-	  f_print(fout, "{\n");
-	  if (!mtflag)
-	    {
-	      f_print(fout, "\tstatic ");
-	      if(!streq(proc->res_type, "void"))
-		return_type(proc);
-	      else
-		f_print(fout, "char *");
-				/* cannot have void type */
-	      /* f_print(fout, " result;\n", proc->res_type); */
-	      f_print(fout, " result;\n");
-	    }
-	  else
-	    f_print(fout, "\tbool_t retval;\n");
-	  fprintf (fout, "\n\t/*\n\t * insert server code here\n\t */\n\n");
-
-	  if (!mtflag)
-	    {
-	      if (!streq(proc->res_type, "void"))
-		f_print(fout, "\treturn &result;\n}\n");
-	      else /* cast back to void * */
-		f_print(fout, "\treturn (void *) &result;\n}\n");
-	    }
-	  else
-	    f_print(fout, "\treturn retval;\n}\n");
-	}
-
-      /* put in sample freeing routine */
-      if (mtflag)
-	{
-	  f_print(fout, "\nint\n");
-	  pvname(def->def_name, vp->vers_num);
-	  if (Cflag)
-	    f_print(fout,"_freeresult (SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result)\n");
-	  else
-	    {
-	      f_print(fout,"_freeresult (transp, xdr_result, result)\n");
-	      f_print(fout,"\tSVCXPRT *transp;\n");
-	      f_print(fout,"\txdrproc_t xdr_result;\n");
-	      f_print(fout,"\tcaddr_t result;\n");
-	    }
-	  f_print(fout, "{\n");
-	  f_print(fout, "\txdr_free (xdr_result, result);\n");
-	  f_print(fout,
-		  "\n\t/*\n\t * Insert additional freeing code here, if needed\n\t */\n");
-	  f_print(fout, "\n\treturn 1;\n}\n");
-	}
-    }
-}
-
-
-
-static void
-return_type (proc_list * plist)
-{
-  ptype (plist->res_prefix, plist->res_type, 1);
-}
-
-void
-add_sample_msg (void)
-{
-  f_print (fout, "/*\n");
-  f_print (fout, " * This is sample code generated by rpcgen.\n");
-  f_print (fout, " * These are only templates and you can use them\n");
-  f_print (fout, " * as a guideline for developing your own functions.\n");
-  f_print (fout, " */\n\n");
-}
-
-void
-write_sample_clnt_main (void)
-{
-  list *l;
-  definition *def;
-  version_list *vp;
-
-  f_print (fout, "\n\n");
-  if (Cflag)
-    f_print (fout, "int\nmain (int argc, char *argv[])\n{\n");
-  else
-    f_print (fout, "int\nmain (argc, argv)\nint argc;\nchar *argv[];\n{\n");
-
-  f_print (fout, "\tchar *host;");
-  f_print (fout, "\n\n\tif (argc < 2) {");
-  f_print (fout, "\n\t\tprintf (\"usage: %%s server_host\\n\", argv[0]);\n");
-  f_print (fout, "\t\texit (1);\n\t}");
-  f_print (fout, "\n\thost = argv[1];\n");
-
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = l->val;
-      if (def->def_kind != DEF_PROGRAM)
-	{
-	  continue;
-	}
-      for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-	{
-	  f_print (fout, "\t");
-	  pvname (def->def_name, vp->vers_num);
-	  f_print (fout, " (host);\n");
-	}
-    }
-  f_print (fout, "exit (0);\n}\n");
-}
diff --git a/sunrpc/rpc_scan.c b/sunrpc/rpc_scan.c
deleted file mode 100644
index 0a88bafe76..0000000000
--- a/sunrpc/rpc_scan.c
+++ /dev/null
@@ -1,544 +0,0 @@ 
-/*
- * From: @(#)rpc_scan.c 1.11 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_scan.c, Scanner for the RPC protocol compiler
- * Copyright (C) 1987, Sun Microsystems, Inc.
- */
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <libintl.h>
-#include "rpc_scan.h"
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define startcomment(where) (where[0] == '/' && where[1] == '*')
-#define endcomment(where) (where[-1] == '*' && where[0] == '/')
-
-static int pushed = 0;		/* is a token pushed */
-static token lasttok;		/* last token, if pushed */
-
-static void unget_token (token * tokp);
-static void findstrconst (const char **str, const char **val);
-static void findchrconst (const char **str, const char **val);
-static void findconst (const char **str, const char **val);
-static void findkind (const char **mark, token * tokp);
-static int cppline (const char *line);
-static int directive (const char *line);
-static void printdirective (const char *line);
-static void docppline (const char *line, int *lineno, const char **fname);
-
-/*
- * scan expecting 1 given token
- */
-void
-scan (tok_kind expect, token * tokp)
-{
-  get_token (tokp);
-  if (tokp->kind != expect)
-    expected1 (expect);
-}
-
-/*
- * scan expecting any of the 2 given tokens
- */
-void
-scan2 (tok_kind expect1, tok_kind expect2, token * tokp)
-{
-  get_token (tokp);
-  if (tokp->kind != expect1 && tokp->kind != expect2)
-    {
-      expected2 (expect1, expect2);
-    }
-}
-
-/*
- * scan expecting any of the 3 given token
- */
-void
-scan3 (tok_kind expect1, tok_kind expect2, tok_kind expect3, token * tokp)
-{
-  get_token (tokp);
-  if (tokp->kind != expect1 && tokp->kind != expect2
-      && tokp->kind != expect3)
-    {
-      expected3 (expect1, expect2, expect3);
-    }
-}
-
-/*
- * scan expecting a constant, possibly symbolic
- */
-void
-scan_num (token *tokp)
-{
-  get_token (tokp);
-  switch (tokp->kind)
-    {
-    case TOK_IDENT:
-      break;
-    default:
-      error (_("constant or identifier expected"));
-    }
-}
-
-/*
- * Peek at the next token
- */
-void
-peek (token *tokp)
-{
-  get_token (tokp);
-  unget_token (tokp);
-}
-
-/*
- * Peek at the next token and scan it if it matches what you expect
- */
-int
-peekscan (tok_kind expect, token *tokp)
-{
-  peek (tokp);
-  if (tokp->kind == expect)
-    {
-      get_token (tokp);
-      return 1;
-    }
-  return 0;
-}
-
-/*
- * Get the next token, printing out any directive that are encountered.
- */
-void
-get_token (token *tokp)
-{
-  int commenting;
-
-  if (pushed)
-    {
-      pushed = 0;
-      *tokp = lasttok;
-      return;
-    }
-  commenting = 0;
-  for (;;)
-    {
-      if (*where == 0)
-	{
-	  for (;;)
-	    {
-	      if (!fgets (curline, MAXLINESIZE, fin))
-		{
-		  tokp->kind = TOK_EOF;
-		  *curline = 0;
-		  where = curline;
-		  return;
-		}
-	      linenum++;
-	      if (commenting)
-		{
-		  break;
-		}
-	      else if (cppline (curline))
-		{
-		  docppline (curline, &linenum,
-			     &infilename);
-		}
-	      else if (directive (curline))
-		{
-		  printdirective (curline);
-		}
-	      else
-		{
-		  break;
-		}
-	    }
-	  where = curline;
-	}
-      else if (isspace (*where))
-	{
-	  while (isspace (*where))
-	    {
-	      where++;		/* eat */
-	    }
-	}
-      else if (commenting)
-	{
-	  for (where++; *where; where++)
-	    {
-	      if (endcomment (where))
-		{
-		  where++;
-		  commenting--;
-		  break;
-		}
-	    }
-	}
-      else if (startcomment (where))
-	{
-	  where += 2;
-	  commenting++;
-	}
-      else
-	{
-	  break;
-	}
-    }
-
-  /*
-   * 'where' is not whitespace, comment or directive Must be a token!
-   */
-  switch (*where)
-    {
-    case ':':
-      tokp->kind = TOK_COLON;
-      where++;
-      break;
-    case ';':
-      tokp->kind = TOK_SEMICOLON;
-      where++;
-      break;
-    case ',':
-      tokp->kind = TOK_COMMA;
-      where++;
-      break;
-    case '=':
-      tokp->kind = TOK_EQUAL;
-      where++;
-      break;
-    case '*':
-      tokp->kind = TOK_STAR;
-      where++;
-      break;
-    case '[':
-      tokp->kind = TOK_LBRACKET;
-      where++;
-      break;
-    case ']':
-      tokp->kind = TOK_RBRACKET;
-      where++;
-      break;
-    case '{':
-      tokp->kind = TOK_LBRACE;
-      where++;
-      break;
-    case '}':
-      tokp->kind = TOK_RBRACE;
-      where++;
-      break;
-    case '(':
-      tokp->kind = TOK_LPAREN;
-      where++;
-      break;
-    case ')':
-      tokp->kind = TOK_RPAREN;
-      where++;
-      break;
-    case '<':
-      tokp->kind = TOK_LANGLE;
-      where++;
-      break;
-    case '>':
-      tokp->kind = TOK_RANGLE;
-      where++;
-      break;
-
-    case '"':
-      tokp->kind = TOK_STRCONST;
-      findstrconst (&where, &tokp->str);
-      break;
-    case '\'':
-      tokp->kind = TOK_CHARCONST;
-      findchrconst (&where, &tokp->str);
-      break;
-
-    case '-':
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':
-      tokp->kind = TOK_IDENT;
-      findconst (&where, &tokp->str);
-      break;
-
-    default:
-      if (!(isalpha (*where) || *where == '_'))
-	{
-	  char buf[100];
-	  char *p;
-
-	  s_print (buf, _("illegal character in file: "));
-	  p = buf + strlen (buf);
-	  if (isprint (*where))
-	    {
-	      s_print (p, "%c", *where);
-	    }
-	  else
-	    {
-	      s_print (p, "%d", *where);
-	    }
-	  error (buf);
-	}
-      findkind (&where, tokp);
-      break;
-    }
-}
-
-static void
-unget_token (token * tokp)
-{
-  lasttok = *tokp;
-  pushed = 1;
-}
-
-static void
-findstrconst (const char **str, const char **val)
-{
-  const char *p;
-  char *tmp;
-  int size;
-
-  p = *str;
-  do
-    {
-      p++;
-    }
-  while (*p && *p != '"');
-  if (*p == 0)
-    {
-      error (_("unterminated string constant"));
-    }
-  p++;
-  size = p - *str;
-  tmp = alloc (size + 1);
-  strncpy (tmp, *str, size);
-  tmp[size] = 0;
-  *val = tmp;
-  *str = p;
-}
-
-static void
-findchrconst (const char **str, const char **val)
-{
-  const char *p;
-  char *tmp;
-  int size;
-
-  p = *str;
-  do
-    {
-      p++;
-    }
-  while (*p && *p != '\'');
-  if (*p == 0)
-    {
-      error (_("unterminated string constant"));
-    }
-  p++;
-  size = p - *str;
-  if (size != 3)
-    {
-      error (_("empty char string"));
-    }
-  tmp = alloc (size + 1);
-  strncpy (tmp, *str, size);
-  tmp[size] = 0;
-  *val = tmp;
-  *str = p;
-}
-
-static void
-findconst (const char **str, const char **val)
-{
-  const char *p;
-  char *tmp;
-  int size;
-
-  p = *str;
-  if (*p == '0' && *(p + 1) == 'x')
-    {
-      p++;
-      do
-	{
-	  p++;
-	}
-      while (isxdigit (*p));
-    }
-  else
-    {
-      do
-	{
-	  p++;
-	}
-      while (isdigit (*p));
-    }
-  size = p - *str;
-  tmp = alloc (size + 1);
-  strncpy (tmp, *str, size);
-  tmp[size] = 0;
-  *val = tmp;
-  *str = p;
-}
-
-static const token symbols[] =
-{
-  {TOK_CONST, "const"},
-  {TOK_UNION, "union"},
-  {TOK_SWITCH, "switch"},
-  {TOK_CASE, "case"},
-  {TOK_DEFAULT, "default"},
-  {TOK_STRUCT, "struct"},
-  {TOK_TYPEDEF, "typedef"},
-  {TOK_ENUM, "enum"},
-  {TOK_OPAQUE, "opaque"},
-  {TOK_BOOL, "bool"},
-  {TOK_VOID, "void"},
-  {TOK_CHAR, "char"},
-  {TOK_INT, "int"},
-  {TOK_UNSIGNED, "unsigned"},
-  {TOK_SHORT, "short"},
-  {TOK_LONG, "long"},
-  {TOK_HYPER, "hyper"},
-  {TOK_FLOAT, "float"},
-  {TOK_DOUBLE, "double"},
-  {TOK_STRING, "string"},
-  {TOK_PROGRAM, "program"},
-  {TOK_VERSION, "version"},
-  {TOK_EOF, "??????"},
-};
-
-static void
-findkind (const char **mark, token *tokp)
-{
-  int len;
-  const token *s;
-  const char *str;
-  char *tmp;
-
-  str = *mark;
-  for (s = symbols; s->kind != TOK_EOF; s++)
-    {
-      len = strlen (s->str);
-      if (strncmp (str, s->str, len) == 0)
-	{
-	  if (!isalnum (str[len]) && str[len] != '_')
-	    {
-	      tokp->kind = s->kind;
-	      tokp->str = s->str;
-	      *mark = str + len;
-	      return;
-	    }
-	}
-    }
-  tokp->kind = TOK_IDENT;
-  for (len = 0; isalnum (str[len]) || str[len] == '_'; len++);
-  tmp = alloc (len + 1);
-  strncpy (tmp, str, len);
-  tmp[len] = 0;
-  tokp->str = tmp;
-  *mark = str + len;
-}
-
-static int
-cppline (const char *line)
-{
-  return line == curline && *line == '#';
-}
-
-static int
-directive (const char *line)
-{
-  return line == curline && *line == '%';
-}
-
-static void
-printdirective (const char *line)
-{
-  f_print (fout, "%s", line + 1);
-}
-
-static void
-docppline (const char *line, int *lineno, const char **fname)
-{
-  char *file;
-  int num;
-  char *p;
-
-  line++;
-  while (isspace (*line))
-    {
-      line++;
-    }
-  num = atoi (line);
-  while (isdigit (*line))
-    {
-      line++;
-    }
-  while (isspace (*line))
-    {
-      line++;
-    }
-  if (*line != '"')
-    {
-      error (_("preprocessor error"));
-    }
-  line++;
-  p = file = alloc (strlen (line) + 1);
-  while (*line && *line != '"')
-    {
-      *p++ = *line++;
-    }
-  if (*line == 0)
-    {
-      error (_("preprocessor error"));
-    }
-  *p = 0;
-  if (*file == 0)
-    {
-      free (file);
-      *fname = NULL;
-    }
-  else
-    {
-      *fname = file;
-    }
-  *lineno = num - 1;
-}
diff --git a/sunrpc/rpc_scan.h b/sunrpc/rpc_scan.h
deleted file mode 100644
index 9786a513b9..0000000000
--- a/sunrpc/rpc_scan.h
+++ /dev/null
@@ -1,104 +0,0 @@ 
-/*      @(#)rpc_scan.h  1.3  90/08/29  */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * rpc_scan.h, Definitions for the RPCL scanner
- */
-
-/*
- * kinds of tokens
- */
-enum tok_kind {
-	TOK_IDENT,
-	TOK_CHARCONST,
-	TOK_STRCONST,
-	TOK_LPAREN,
-	TOK_RPAREN,
-	TOK_LBRACE,
-	TOK_RBRACE,
-	TOK_LBRACKET,
-	TOK_RBRACKET,
-	TOK_LANGLE,
-	TOK_RANGLE,
-	TOK_STAR,
-	TOK_COMMA,
-	TOK_EQUAL,
-	TOK_COLON,
-	TOK_SEMICOLON,
-	TOK_CONST,
-	TOK_STRUCT,
-	TOK_UNION,
-	TOK_SWITCH,
-	TOK_CASE,
-	TOK_DEFAULT,
-	TOK_ENUM,
-	TOK_TYPEDEF,
-	TOK_INT,
-	TOK_SHORT,
-	TOK_LONG,
-	TOK_HYPER,
-	TOK_UNSIGNED,
-	TOK_FLOAT,
-	TOK_DOUBLE,
-	TOK_OPAQUE,
-	TOK_CHAR,
-	TOK_STRING,
-	TOK_BOOL,
-	TOK_VOID,
-	TOK_PROGRAM,
-	TOK_VERSION,
-	TOK_EOF
-};
-typedef enum tok_kind tok_kind;
-
-/*
- * a token
- */
-struct token {
-	tok_kind kind;
-	const char *str;
-};
-typedef struct token token;
-
-
-/*
- * routine interface
- */
-void scan(tok_kind expect, token *tokp);
-void scan2(tok_kind expect1, tok_kind expect2, token *tokp);
-void scan3(tok_kind expect1, tok_kind expect2, tok_kind expect3, token *tokp);
-void scan_num(token *tokp);
-void peek(token *tokp);
-int peekscan(tok_kind expect, token *tokp);
-void get_token(token *tokp);
-void expected1(tok_kind exp1) __attribute__ ((noreturn));
-void expected2(tok_kind exp1, tok_kind exp2)  __attribute__ ((noreturn));
-void expected3(tok_kind exp1, tok_kind exp2, tok_kind exp3)
-     __attribute__ ((noreturn));
diff --git a/sunrpc/rpc_svcout.c b/sunrpc/rpc_svcout.c
deleted file mode 100644
index 4f12a8146c..0000000000
--- a/sunrpc/rpc_svcout.c
+++ /dev/null
@@ -1,1093 +0,0 @@ 
-/*
- * From: @(#)rpc_svcout.c 1.29 89/03/30
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_svcout.c, Server-skeleton outputter for the RPC protocol compiler
- */
-#include <stdio.h>
-#include <string.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-static const char RQSTP[] = "rqstp";
-static const char TRANSP[] = "transp";
-static const char ARG[] = "argument";
-static const char RESULT[] = "result";
-static const char ROUTINE[] = "local";
-static char RETVAL[] = "retval";
-
-char _errbuf[256];		/* For all messages */
-
-static void internal_proctype (const proc_list * plist);
-static void p_xdrfunc (const char *rname, const char *typename);
-static void write_real_program (const definition * def);
-static void write_program (const definition * def, const char *storage);
-static void printerr (const char *err, const char *transp);
-static void printif (const char *proc, const char *transp, const char *arg);
-static void write_inetmost (const char *infile);
-static void print_return (const char *space);
-static void print_pmapunset (const char *space);
-static void print_err_message (const char *space);
-static void write_timeout_func (void);
-static void write_pm_most (const char *infile, int netflag);
-static void write_rpc_svc_fg (const char *infile, const char *sp);
-static void open_log_file (const char *infile, const char *sp);
-
-static void
-p_xdrfunc (const char *rname, const char *typename)
-{
-  if (Cflag)
-    f_print (fout, "\t\t_xdr_%s = (xdrproc_t) xdr_%s;\n", rname,
-	     stringfix (typename));
-  else
-    f_print (fout, "\t\t_xdr_%s = xdr_%s;\n", rname, stringfix (typename));
-}
-
-void
-internal_proctype (const proc_list * plist)
-{
-  f_print (fout, "static ");
-  ptype (plist->res_prefix, plist->res_type, 1);
-  f_print (fout, "*");
-}
-
-
-/*
- * write most of the service, that is, everything but the registrations.
- */
-void
-write_most (const char *infile /* our name */ , int netflag, int nomain)
-{
-  if (inetdflag || pmflag)
-    {
-      const char *var_type;
-      /* WHY? */
-      var_type = (nomain ? "extern" : "");
-      f_print (fout, "%s int _rpcpmstart;", var_type);
-      f_print (fout, "\t\t/* Started by a port monitor ? */\n");
-      if (!tirpcflag)
-	{
-	  f_print (fout, "%s int _rpcfdtype;", var_type);
-	  f_print (fout, "\t\t/* Whether Stream or Datagram ? */\n");
-	}
-      if (timerflag)
-	{
-#if 0
-	  f_print (fout, "%s int _rpcsvcdirty;", var_type);
-	  f_print (fout, "\t/* Still serving ? */\n");
-#else
-	  f_print(fout, " /* States a server can be in wrt request */\n\n");
-	  f_print(fout, "#define\t_IDLE 0\n");
-	  f_print(fout, "#define\t_SERVED 1\n");
-	  f_print(fout, "#define\t_SERVING 2\n\n");
-	  f_print(fout, "static int _rpcsvcstate = _IDLE;");
-	  f_print(fout, "\t /* Set when a request is serviced */\n");
-
-	  if (mtflag)
-	    {
-	      f_print (fout, "mutex_t _svcstate_lock;");
-	      f_print (fout,
-		       "\t\t\t/* Mutex lock for variable_rpcsvcstate */\n");
-	    }
-#endif
-	}
-      write_svc_aux (nomain);
-    }
-  /* write out dispatcher and stubs */
-  write_programs (nomain ? NULL : "static");
-
-  if (nomain)
-    return;
-
-  if (Cflag)
-    f_print (fout, "\nint\nmain (int argc, char **argv)\n");
-  else
-    {
-      f_print (fout, "\nint\nmain (argc, argv)\n");
-      f_print (fout, "\tint argc;\n");
-      f_print (fout, "\tchar **argv;\n");
-    }
-  f_print (fout, "{\n");
-  if (inetdflag)
-    {
-      write_inetmost (infile);	/* Includes call to write_rpc_svc_fg() */
-    }
-  else
-    {
-      if (tirpcflag)
-	{
-	  if (netflag)
-	    {
-	      f_print (fout, "\tregister SVCXPRT *%s;\n", TRANSP);
-	      f_print (fout, "\tstruct netconfig *nconf = NULL;\n");
-	    }
-	  f_print (fout, "\tpid_t pid;\n");
-	  f_print (fout, "\tint i;\n");
-	  f_print (fout, "\tchar mname[FMNAMESZ + 1];\n\n");
-
-	  if (mtflag & timerflag)
-	    f_print (fout,
-		     "\tmutex_init (&_svcstate_lock, USYNC_THREAD, NULL);\n");
-
- 	  write_pm_most (infile, netflag);
-	  f_print (fout, "\telse {\n");
-	  write_rpc_svc_fg (infile, "\t\t");
-	  f_print (fout, "\t}\n");
-	}
-      else
-	{
-	  f_print (fout, "\tregister SVCXPRT *%s;\n", TRANSP);
-	  f_print (fout, "\n");
-	  print_pmapunset ("\t");
-	}
-    }
-
-  if (logflag && !inetdflag)
-    {
-      open_log_file (infile, "\t");
-    }
-}
-
-/*
- * write a registration for the given transport
- */
-void
-write_netid_register (const char *transp)
-{
-  list *l;
-  definition *def;
-  version_list *vp;
-  const char *sp;
-  char tmpbuf[32];
-
-  sp = "";
-  f_print (fout, "\n");
-  f_print (fout, "%s\tnconf = getnetconfigent (\"%s\");\n", sp, transp);
-  f_print (fout, "%s\tif (nconf == NULL) {\n", sp);
-  (void) sprintf (_errbuf, "cannot find %s netid.", transp);
-  sprintf (tmpbuf, "%s\t\t", sp);
-  print_err_message (tmpbuf);
-  f_print (fout, "%s\t\texit (1);\n", sp);
-  f_print (fout, "%s\t}\n", sp);
-  f_print (fout, "%s\t%s = svc_tli_create (RPC_ANYFD, nconf, 0, 0, 0);\n",
-	   sp, TRANSP /*, transp *//* ?!?... */ );
-  f_print (fout, "%s\tif (%s == NULL) {\n", sp, TRANSP);
-  sprintf (_errbuf, "cannot create %s service.", transp);
-  print_err_message (tmpbuf);
-  f_print (fout, "%s\t\texit (1);\n", sp);
-  f_print (fout, "%s\t}\n", sp);
-
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind != DEF_PROGRAM)
-	{
-	  continue;
-	}
-      for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-	{
-	  f_print (fout, "%s\t(void) rpcb_unset (%s, %s, nconf);\n",
-		   sp, def->def_name, vp->vers_name);
-	  f_print (fout, "%s\tif (!svc_reg (%s, %s, %s, ",
-		   sp, TRANSP, def->def_name, vp->vers_name);
-	  pvname (def->def_name, vp->vers_num);
-	  f_print (fout, ", nconf)) {\n");
-	  (void) sprintf (_errbuf, "unable to register (%s, %s, %s).",
-			  def->def_name, vp->vers_name, transp);
-	  print_err_message (tmpbuf);
-	  f_print (fout, "%s\t\texit (1);\n", sp);
-	  f_print (fout, "%s\t}\n", sp);
-	}
-    }
-  f_print (fout, "%s\tfreenetconfigent (nconf);\n", sp);
-}
-
-/*
- * write a registration for the given transport for TLI
- */
-void
-write_nettype_register (const char *transp)
-{
-  list *l;
-  definition *def;
-  version_list *vp;
-
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind != DEF_PROGRAM)
-	{
-	  continue;
-	}
-      for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-	{
-	  f_print (fout, "\tif (!svc_create (");
-	  pvname (def->def_name, vp->vers_num);
-	  f_print (fout, ", %s, %s, \"%s\")) {\n ",
-		   def->def_name, vp->vers_name, transp);
-	  (void) sprintf (_errbuf,
-			  "unable to create (%s, %s) for %s.",
-			  def->def_name, vp->vers_name, transp);
-	  print_err_message ("\t\t");
-	  f_print (fout, "\t\texit (1);\n");
-	  f_print (fout, "\t}\n");
-	}
-    }
-}
-
-/*
- * write the rest of the service
- */
-void
-write_rest (void)
-{
-  f_print (fout, "\n");
-  if (inetdflag)
-    {
-      f_print (fout, "\tif (%s == (SVCXPRT *)NULL) {\n", TRANSP);
-      (void) sprintf (_errbuf, "could not create a handle");
-      print_err_message ("\t\t");
-      f_print (fout, "\t\texit (1);\n");
-      f_print (fout, "\t}\n");
-      if (timerflag)
-	{
-	  f_print (fout, "\tif (_rpcpmstart) {\n");
-	  f_print (fout,
-		   "\t\t(void) signal (SIGALRM, %s closedown);\n",
-		   Cflag ? "(SIG_PF)" : "(void(*)())");
-	  f_print (fout, "\t\t(void) alarm (_RPCSVC_CLOSEDOWN);\n");
-	  f_print (fout, "\t}\n");
-	}
-    }
-  f_print (fout, "\tsvc_run ();\n");
-  (void) sprintf (_errbuf, "svc_run returned");
-  print_err_message ("\t");
-  f_print (fout, "\texit (1);\n");
-  f_print (fout, "\t/* NOTREACHED */\n");
-  f_print (fout, "}\n");
-}
-
-void
-write_programs (const char *storage)
-{
-  list *l;
-  definition *def;
-
-  /* write out stubs for procedure  definitions */
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind == DEF_PROGRAM)
-	{
-	  write_real_program (def);
-	}
-    }
-
-  /* write out dispatcher for each program */
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind == DEF_PROGRAM)
-	{
-	  write_program (def, storage);
-	}
-    }
-}
-
-/* write out definition of internal function (e.g. _printmsg_1(...))
-   which calls server's defintion of actual function (e.g. printmsg_1(...)).
-   Unpacks single user argument of printmsg_1 to call-by-value format
-   expected by printmsg_1. */
-static void
-write_real_program (const definition * def)
-{
-  version_list *vp;
-  proc_list *proc;
-  decl_list *l;
-
-  if (!newstyle)
-    return;			/* not needed for old style */
-  for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-    {
-      for (proc = vp->procs; proc != NULL; proc = proc->next)
-	{
-	  fprintf (fout, "\n");
-	  if (!mtflag)
-	    internal_proctype (proc);
-	  else
-	    f_print (fout, "int");
-	  f_print (fout, "\n_");
-	  pvname (proc->proc_name, vp->vers_num);
-	  if (Cflag)
-	    {
-	      f_print (fout, " (");
-	      /* arg name */
-	      if (proc->arg_num > 1)
-		f_print (fout, "%s", proc->args.argname);
-	      else
-		ptype (proc->args.decls->decl.prefix,
-		       proc->args.decls->decl.type, 0);
-	      if (mtflag)
-		{
-		  f_print(fout, " *argp, void *%s, struct svc_req *%s)\n",
-			  RESULT, RQSTP);
-		}
-	      else
-		f_print (fout, " *argp, struct svc_req *%s)\n",
-			 RQSTP);
-	    }
-	  else
-	    {
-	      if (mtflag)
-		f_print(fout, " (argp, %s, %s)\n", RESULT, RQSTP);
-	      else
-		f_print (fout, " (argp, %s)\n", RQSTP);
-	      /* arg name */
-	      if (proc->arg_num > 1)
-		f_print (fout, "\t%s *argp;\n", proc->args.argname);
-	      else
-		{
-		  f_print (fout, "\t");
-		  ptype (proc->args.decls->decl.prefix,
-			 proc->args.decls->decl.type, 0);
-		  f_print (fout, " *argp;\n");
-		}
-	      f_print (fout, "	struct svc_req *%s;\n", RQSTP);
-	    }
-
-	  f_print (fout, "{\n");
-	  f_print (fout, "\treturn (");
-	  if (Cflag || mtflag)
-	    pvname_svc (proc->proc_name, vp->vers_num);
-	  else
-	    pvname (proc->proc_name, vp->vers_num);
-	  f_print (fout, "(");
-	  if (proc->arg_num < 2)
-	    {			/* single argument */
-	      if (!streq (proc->args.decls->decl.type, "void"))
-		f_print (fout, "*argp, ");	/* non-void */
-	    }
-	  else
-	    {
-	      for (l = proc->args.decls; l != NULL; l = l->next)
-		f_print (fout, "argp->%s, ", l->decl.name);
-	    }
-	  if (mtflag)
-	    f_print (fout, "%s, ", RESULT);
-	  f_print (fout, "%s));\n}\n", RQSTP);
-	}
-    }
-}
-
-static void
-write_program (const definition * def, const char *storage)
-{
-  version_list *vp;
-  proc_list *proc;
-  int filled;
-
-  for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-    {
-      f_print (fout, "\n");
-      if (storage != NULL)
-	{
-	  f_print (fout, "%s ", storage);
-	}
-      f_print (fout, "void\n");
-      pvname (def->def_name, vp->vers_num);
-
-      if (Cflag)
-	{
-	  f_print (fout, "(struct svc_req *%s, ", RQSTP);
-	  f_print (fout, "register SVCXPRT *%s)\n", TRANSP);
-	}
-      else
-	{
-	  f_print (fout, "(%s, %s)\n", RQSTP, TRANSP);
-	  f_print (fout, "	struct svc_req *%s;\n", RQSTP);
-	  f_print (fout, "	register SVCXPRT *%s;\n", TRANSP);
-	}
-
-      f_print (fout, "{\n");
-
-      filled = 0;
-      f_print (fout, "\tunion {\n");
-      for (proc = vp->procs; proc != NULL; proc = proc->next)
-	{
-	  if (proc->arg_num < 2)
-	    {			/* single argument */
-	      if (streq (proc->args.decls->decl.type,
-			 "void"))
-		{
-		  continue;
-		}
-	      filled = 1;
-	      f_print (fout, "\t\t");
-	      ptype (proc->args.decls->decl.prefix,
-		     proc->args.decls->decl.type, 0);
-	      pvname (proc->proc_name, vp->vers_num);
-	      f_print (fout, "_arg;\n");
-
-	    }
-	  else
-	    {
-	      filled = 1;
-	      f_print (fout, "\t\t%s", proc->args.argname);
-	      f_print (fout, " ");
-	      pvname (proc->proc_name, vp->vers_num);
-	      f_print (fout, "_arg;\n");
-	    }
-	}
-      if (!filled)
-	{
-	  f_print (fout, "\t\tint fill;\n");
-	}
-      f_print (fout, "\t} %s;\n", ARG);
-      if (mtflag)
-	{
-	  f_print(fout, "\tunion {\n");
-	  for (proc = vp->procs; proc != NULL; proc = proc->next)
-	    if (!streq (proc->res_type, "void"))
-	      {
-		f_print(fout, "\t\t");
-		ptype(proc->res_prefix, proc->res_type, 0);
-		pvname(proc->proc_name, vp->vers_num);
-		f_print(fout, "_res;\n");
-	      }
-	  f_print(fout, "\t} %s;\n", RESULT);
-	  f_print(fout, "\tbool_t %s;\n", RETVAL);
-
-	} else
-	  f_print (fout, "\tchar *%s;\n", RESULT);
-
-      if (Cflag)
-	{
-	  f_print (fout, "\txdrproc_t _xdr_%s, _xdr_%s;\n", ARG, RESULT);
-	  if (mtflag)
-	    f_print(fout,
-		    "\tbool_t (*%s)(char *, void *, struct svc_req *);\n",
-		    ROUTINE);
-	  else
-	    f_print (fout, "\tchar *(*%s)(char *, struct svc_req *);\n",
-		     ROUTINE);
-	}
-      else
-	{
-	  f_print (fout, "\tbool_t (*_xdr_%s)(), (*_xdr_%s)();\n", ARG, RESULT);
-	  if (mtflag)
-	    f_print(fout, "\tbool_t (*%s)();\n", ROUTINE);
-	  else
-	    f_print (fout, "\tchar *(*%s)();\n", ROUTINE);
-	}
-      f_print (fout, "\n");
-
-      if (timerflag)
-#if 0
-	f_print (fout, "\t_rpcsvcdirty = 1;\n");
-#else
-      {
-	if (mtflag)
-	  f_print(fout, "\tmutex_lock(&_svcstate_lock);\n");
-	f_print(fout, "\t_rpcsvcstate = _SERVING;\n");
-	if (mtflag)
-	  f_print(fout, "\tmutex_unlock(&_svcstate_lock);\n");
-      }
-#endif
-
-      f_print (fout, "\tswitch (%s->rq_proc) {\n", RQSTP);
-      if (!nullproc (vp->procs))
-	{
-	  f_print (fout, "\tcase NULLPROC:\n");
-	  f_print (fout,
-		   "\t\t(void) svc_sendreply (%s, (xdrproc_t) xdr_void, (char *)NULL);\n",
-		   TRANSP);
-	  print_return ("\t\t");
-	  f_print (fout, "\n");
-	}
-      for (proc = vp->procs; proc != NULL; proc = proc->next)
-	{
-	  f_print (fout, "\tcase %s:\n", proc->proc_name);
-	  if (proc->arg_num < 2)
-	    {			/* single argument */
-	      p_xdrfunc (ARG, proc->args.decls->decl.type);
-	    }
-	  else
-	    {
-	      p_xdrfunc (ARG, proc->args.argname);
-	    }
-	  p_xdrfunc (RESULT, proc->res_type);
-	  if (Cflag)
-	    {
-	      if (mtflag)
-		f_print(fout,
-			"\t\t%s = (bool_t (*) (char *, void *,  struct svc_req *))",
-			ROUTINE);
-	      else
-		f_print (fout,
-			 "\t\t%s = (char *(*)(char *, struct svc_req *)) ",
-			 ROUTINE);
-	    }
-	  else
-	    if (mtflag)
-	      f_print(fout, "\t\t%s = (bool_t (*)()) ", ROUTINE);
-	    else
-	      f_print (fout, "\t\t%s = (char *(*)()) ", ROUTINE);
-
-	  if (newstyle)
-	    {			/* new style: calls internal routine */
-	      f_print (fout, "_");
-	    }
-	  if ((Cflag || mtflag) && !newstyle)
-	    pvname_svc (proc->proc_name, vp->vers_num);
-	  else
-	    pvname (proc->proc_name, vp->vers_num);
-	  f_print (fout, ";\n");
-	  f_print (fout, "\t\tbreak;\n\n");
-	}
-      f_print (fout, "\tdefault:\n");
-      printerr ("noproc", TRANSP);
-      print_return ("\t\t");
-      f_print (fout, "\t}\n");
-
-      f_print (fout, "\tmemset ((char *)&%s, 0, sizeof (%s));\n", ARG, ARG);
-      printif ("getargs", TRANSP, ARG);
-      printerr ("decode", TRANSP);
-      print_return ("\t\t");
-      f_print (fout, "\t}\n");
-
-      if (!mtflag)
-	{
-	  if (Cflag)
-	    f_print (fout, "\t%s = (*%s)((char *)&%s, %s);\n",
-		     RESULT, ROUTINE, ARG, RQSTP);
-	  else
-	    f_print (fout, "\t%s = (*%s)(&%s, %s);\n",
-		     RESULT, ROUTINE, ARG, RQSTP);
-	}
-      else
-	if (Cflag)
-	  f_print(fout, "\t%s = (bool_t) (*%s)((char *)&%s, (void *)&%s, %s);\n",
-		  RETVAL, ROUTINE, ARG, RESULT, RQSTP);
-	else
-	  f_print(fout, "\t%s = (bool_t) (*%s)(&%s, &%s, %s);\n",
-		  RETVAL, ROUTINE, ARG, RESULT, RQSTP);
-      if (mtflag)
-	f_print(fout,
-		"\tif (%s > 0 && !svc_sendreply(%s, (xdrproc_t) _xdr_%s, (char *)&%s)) {\n",
-		RETVAL, TRANSP, RESULT, RESULT);
-      else
-	f_print(fout,
-		"\tif (%s != NULL && !svc_sendreply(%s, (xdrproc_t) _xdr_%s, %s)) {\n",
-		RESULT, TRANSP, RESULT, RESULT);
-
-      printerr ("systemerr", TRANSP);
-      f_print (fout, "\t}\n");
-
-      printif ("freeargs", TRANSP, ARG);
-
-      sprintf (_errbuf, "unable to free arguments");
-      print_err_message ("\t\t");
-      f_print (fout, "\t\texit (1);\n");
-      f_print (fout, "\t}\n");
-      /* print out free routine */
-      if (mtflag)
-	{
-	  f_print(fout,"\tif (!");
-	  pvname(def->def_name, vp->vers_num);
-	  f_print(fout,"_freeresult (%s, _xdr_%s, (caddr_t) &%s))\n",
-		  TRANSP, RESULT, RESULT);
-	  (void) sprintf(_errbuf, "unable to free results");
-	  print_err_message("\t\t");
-	  f_print(fout, "\n");
-	}
-      print_return ("\t");
-      f_print (fout, "}\n");
-    }
-}
-
-static void
-printerr (const char *err, const char *transp)
-{
-  f_print (fout, "\t\tsvcerr_%s (%s);\n", err, transp);
-}
-
-static void
-printif (const char *proc, const char *transp, const char *arg)
-{
-  f_print (fout, "\tif (!svc_%s (%s, (xdrproc_t) _xdr_%s, (caddr_t) &%s)) {\n",
-	   proc, transp, arg, arg);
-}
-
-int
-nullproc (const proc_list * proc)
-{
-  for (; proc != NULL; proc = proc->next)
-    {
-      if (streq (proc->proc_num, "0"))
-	{
-	  return 1;
-	}
-    }
-  return 0;
-}
-
-static void
-write_inetmost (const char *infile)
-{
-  f_print (fout, "\tregister SVCXPRT *%s;\n", TRANSP);
-  f_print (fout, "\tint sock;\n");
-  f_print (fout, "\tint proto;\n");
-  f_print (fout, "\tstruct sockaddr_in saddr;\n");
-  f_print (fout, "\tint asize = sizeof (saddr);\n");
-  f_print (fout, "\n");
-  f_print (fout,
-       "\tif (getsockname (0, (struct sockaddr *)&saddr, &asize) == 0) {\n");
-  f_print (fout, "\t\tint ssize = sizeof (int);\n\n");
-  f_print (fout, "\t\tif (saddr.sin_family != AF_INET)\n");
-  f_print (fout, "\t\t\texit (1);\n");
-  f_print (fout, "\t\tif (getsockopt (0, SOL_SOCKET, SO_TYPE,\n");
-  f_print (fout, "\t\t\t\t(char *)&_rpcfdtype, &ssize) == -1)\n");
-  f_print (fout, "\t\t\texit (1);\n");
-  f_print (fout, "\t\tsock = 0;\n");
-  f_print (fout, "\t\t_rpcpmstart = 1;\n");
-  f_print (fout, "\t\tproto = 0;\n");
-  open_log_file (infile, "\t\t");
-  f_print (fout, "\t} else {\n");
-  write_rpc_svc_fg (infile, "\t\t");
-  f_print (fout, "\t\tsock = RPC_ANYSOCK;\n");
-  print_pmapunset ("\t\t");
-  f_print (fout, "\t}\n");
-}
-
-static void
-print_return (const char *space)
-{
-  if (exitnow)
-    f_print (fout, "%sexit (0);\n", space);
-  else
-    {
-      if (timerflag)
-	{
-#if 0
-	  f_print (fout, "%s_rpcsvcdirty = 0;\n", space);
-#else
-	  if (mtflag)
-	    f_print(fout, "%smutex_lock(&_svcstate_lock);\n", space);
-	  f_print(fout, "%s_rpcsvcstate = _SERVED;\n", space);
-	  if (mtflag)
-	    f_print(fout, "%smutex_unlock(&_svcstate_lock);\n", space);
-#endif
-	}
-      f_print (fout, "%sreturn;\n", space);
-    }
-}
-
-static void
-print_pmapunset (const char *space)
-{
-  list *l;
-  definition *def;
-  version_list *vp;
-
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind == DEF_PROGRAM)
-	{
-	  for (vp = def->def.pr.versions; vp != NULL;
-	       vp = vp->next)
-	    {
-	      f_print (fout, "%spmap_unset (%s, %s);\n",
-		       space, def->def_name, vp->vers_name);
-	    }
-	}
-    }
-}
-
-static void
-print_err_message (const char *space)
-{
-  if (logflag)
-    f_print (fout, "%ssyslog (LOG_ERR, \"%%s\", \"%s\");\n", space, _errbuf);
-  else if (inetdflag || pmflag)
-    f_print (fout, "%s_msgout (\"%s\");\n", space, _errbuf);
-  else
-    f_print (fout, "%sfprintf (stderr, \"%%s\", \"%s\");\n", space, _errbuf);
-}
-
-/*
- * Write the server auxiliary function ( _msgout, timeout)
- */
-void
-write_svc_aux (int nomain)
-{
-  if (!logflag)
-    write_msg_out ();
-  if (!nomain)
-    write_timeout_func ();
-}
-
-/*
- * Write the _msgout function
- */
-
-void
-write_msg_out (void)
-{
-  f_print (fout, "\n");
-  f_print (fout, "static\n");
-  if (!Cflag)
-    {
-      f_print (fout, "void _msgout (msg)\n");
-      f_print (fout, "\tchar *msg;\n");
-    }
-  else
-    {
-      f_print (fout, "void _msgout (char* msg)\n");
-    }
-  f_print (fout, "{\n");
-  f_print (fout, "#ifdef RPC_SVC_FG\n");
-  if (inetdflag || pmflag)
-    f_print (fout, "\tif (_rpcpmstart)\n");
-  f_print (fout, "\t\tsyslog (LOG_ERR, \"%%s\", msg);\n");
-  f_print (fout, "\telse\n");
-  f_print (fout, "\t\tfprintf (stderr, \"%%s\\n\", msg);\n");
-  f_print (fout, "#else\n");
-  f_print (fout, "\tsyslog (LOG_ERR, \"%%s\", msg);\n");
-  f_print (fout, "#endif\n");
-  f_print (fout, "}\n");
-}
-
-/*
- * Write the timeout function
- */
-static void
-write_timeout_func (void)
-{
-  if (!timerflag)
-    return;
-  f_print (fout, "\n");
-  f_print (fout, "static void\n");
-  if (Cflag)
-    f_print (fout, "closedown (int sig)\n");
-  else
-    f_print (fout, "closedown (sig)\n\tint sig;\n");
-  f_print (fout, "{\n");
-
-#if 0
-  f_print (fout, "\t(void) signal (sig, %s closedown);\n",
-	   Cflag ? "(SIG_PF)" : "(void(*)())");
-#endif
-  if (mtflag)
-    f_print(fout, "\tmutex_lock(&_svcstate_lock);\n");
-#if 0
-  f_print (fout, "\tif (_rpcsvcdirty == 0) {\n");
-#else
-  f_print(fout, "\tif (_rpcsvcstate == _IDLE) {\n");
-#endif
-  f_print (fout, "\t\textern fd_set svc_fdset;\n");
-  f_print (fout, "\t\tstatic int size;\n");
-  f_print (fout, "\t\tint i, openfd;\n");
-  if (tirpcflag && pmflag)
-    {
-      f_print (fout, "\t\tstruct t_info tinfo;\n\n");
-      f_print (fout, "\t\tif (!t_getinfo(0, &tinfo) && (tinfo.servtype == T_CLTS))\n");
-    }
-  else
-    {
-      f_print (fout, "\n\t\tif (_rpcfdtype == SOCK_DGRAM)\n");
-    }
-  f_print (fout, "\t\t\texit (0);\n");
-  f_print (fout, "\t\tif (size == 0) {\n");
-  if (tirpcflag)
-    {
-      f_print (fout, "\t\t\tstruct rlimit rl;\n\n");
-      f_print (fout, "\t\t\trl.rlim_max = 0;\n");
-      f_print (fout, "\t\t\tgetrlimit(RLIMIT_NOFILE, &rl);\n");
-      f_print (fout, "\t\t\tif ((size = rl.rlim_max) == 0) {\n");
-      if (mtflag)
-	f_print(fout, "\t\t\t\tmutex_unlock(&_svcstate_lock);\n");
-       f_print (fout, "\t\t\t\treturn;\n\t\t\t}\n");
-    }
-  else
-    {
-      f_print (fout, "\t\t\tsize = getdtablesize();\n");
-    }
-  f_print (fout, "\t\t}\n");
-  f_print (fout, "\t\tfor (i = 0, openfd = 0; i < size && openfd < 2; i++)\n");
-  f_print (fout, "\t\t\tif (FD_ISSET(i, &svc_fdset))\n");
-  f_print (fout, "\t\t\t\topenfd++;\n");
-  f_print (fout, "\t\tif (openfd <= 1)\n");
-  f_print (fout, "\t\t\texit (0);\n");
-  f_print (fout, "\t}\n");
-  f_print(fout, "\tif (_rpcsvcstate == _SERVED)\n");
-  f_print(fout, "\t\t_rpcsvcstate = _IDLE;\n\n");
-  if (mtflag)
-    f_print(fout, "\tmutex_unlock(&_svcstate_lock);\n");
-  f_print(fout, "\t(void) signal(SIGALRM, %s closedown);\n",
-	  Cflag? "(SIG_PF)" : "(void(*)())");
-  f_print (fout, "\talarm (_RPCSVC_CLOSEDOWN);\n");
-  f_print (fout, "}\n");
-}
-
-/*
- * Write the most of port monitor support
- */
-static void
-write_pm_most (const char *infile, int netflag)
-{
-  list *l;
-  definition *def;
-  version_list *vp;
-
-  f_print (fout, "\tif (!ioctl(0, I_LOOK, mname) &&\n");
-  f_print (fout, "\t\t(!strcmp(mname, \"sockmod\") ||");
-  f_print (fout, " !strcmp(mname, \"timod\"))) {\n");
-  f_print (fout, "\t\tchar *netid;\n");
-  if (!netflag)
-    {				/* Not included by -n option */
-      f_print (fout, "\t\tstruct netconfig *nconf = NULL;\n");
-      f_print (fout, "\t\tSVCXPRT *%s;\n", TRANSP);
-    }
-  if (timerflag)
-    f_print (fout, "\t\tint pmclose;\n");
-/* not necessary, defined in /usr/include/stdlib */
-/*      f_print(fout, "\t\textern char *getenv();\n"); */
-  f_print (fout, "\n");
-  f_print (fout, "\t\t_rpcpmstart = 1;\n");
-  if (logflag)
-    open_log_file (infile, "\t\t");
-  f_print (fout, "\t\tif ((netid = getenv(\"NLSPROVIDER\")) == NULL) {\n");
-  sprintf (_errbuf, "cannot get transport name");
-  print_err_message ("\t\t\t");
-  f_print (fout, "\t\t} else if ((nconf = getnetconfigent(netid)) == NULL) {\n");
-  sprintf (_errbuf, "cannot get transport info");
-  print_err_message ("\t\t\t");
-  f_print (fout, "\t\t}\n");
-  /*
-   * A kludgy support for inetd services. Inetd only works with
-   * sockmod, and RPC works only with timod, hence all this jugglery
-   */
-  f_print (fout, "\t\tif (strcmp(mname, \"sockmod\") == 0) {\n");
-  f_print (fout, "\t\t\tif (ioctl(0, I_POP, 0) || ioctl(0, I_PUSH, \"timod\")) {\n");
-  sprintf (_errbuf, "could not get the right module");
-  print_err_message ("\t\t\t\t");
-  f_print (fout, "\t\t\t\texit(1);\n");
-  f_print (fout, "\t\t\t}\n");
-  f_print (fout, "\t\t}\n");
-  if (timerflag)
-    f_print (fout, "\t\tpmclose = (t_getstate(0) != T_DATAXFER);\n");
-  f_print (fout, "\t\tif ((%s = svc_tli_create(0, nconf, NULL, 0, 0)) == NULL) {\n",
-	   TRANSP);
-  sprintf (_errbuf, "cannot create server handle");
-  print_err_message ("\t\t\t");
-  f_print (fout, "\t\t\texit(1);\n");
-  f_print (fout, "\t\t}\n");
-  f_print (fout, "\t\tif (nconf)\n");
-  f_print (fout, "\t\t\tfreenetconfigent(nconf);\n");
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind != DEF_PROGRAM)
-	{
-	  continue;
-	}
-      for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-	{
-	  f_print (fout,
-		   "\t\tif (!svc_reg(%s, %s, %s, ",
-		   TRANSP, def->def_name, vp->vers_name);
-	  pvname (def->def_name, vp->vers_num);
-	  f_print (fout, ", 0)) {\n");
-	  (void) sprintf (_errbuf, "unable to register (%s, %s).",
-			  def->def_name, vp->vers_name);
-	  print_err_message ("\t\t\t");
-	  f_print (fout, "\t\t\texit(1);\n");
-	  f_print (fout, "\t\t}\n");
-	}
-    }
-  if (timerflag)
-    {
-      f_print (fout, "\t\tif (pmclose) {\n");
-      f_print (fout, "\t\t\t(void) signal(SIGALRM, %s closedown);\n",
-	       Cflag ? "(SIG_PF)" : "(void(*)())");
-      f_print (fout, "\t\t\t(void) alarm(_RPCSVC_CLOSEDOWN);\n");
-      f_print (fout, "\t\t}\n");
-    }
-  f_print (fout, "\t\tsvc_run();\n");
-  f_print (fout, "\t\texit(1);\n");
-  f_print (fout, "\t\t/* NOTREACHED */\n");
-  f_print (fout, "\t}\n");
-}
-
-/*
- * Support for backgrounding the server if self started.
- */
-static void
-write_rpc_svc_fg (const char *infile, const char *sp)
-{
-  f_print (fout, "#ifndef RPC_SVC_FG\n");
-  f_print (fout, "%sint size;\n", sp);
-  if (tirpcflag)
-    f_print (fout, "%sstruct rlimit rl;\n", sp);
-  if (inetdflag)
-    f_print (fout, "%sint pid, i;\n\n", sp);
-  f_print (fout, "%spid = fork();\n", sp);
-  f_print (fout, "%sif (pid < 0) {\n", sp);
-  f_print (fout, "%s\tperror(\"cannot fork\");\n", sp);
-  f_print (fout, "%s\texit(1);\n", sp);
-  f_print (fout, "%s}\n", sp);
-  f_print (fout, "%sif (pid)\n", sp);
-  f_print (fout, "%s\texit(0);\n", sp);
-  /* get number of file descriptors */
-  if (tirpcflag)
-    {
-      f_print (fout, "%srl.rlim_max = 0;\n", sp);
-      f_print (fout, "%sgetrlimit(RLIMIT_NOFILE, &rl);\n", sp);
-      f_print (fout, "%sif ((size = rl.rlim_max) == 0)\n", sp);
-      f_print (fout, "%s\texit(1);\n", sp);
-    }
-  else
-    {
-      f_print (fout, "%ssize = getdtablesize();\n", sp);
-    }
-
-  f_print (fout, "%sfor (i = 0; i < size; i++)\n", sp);
-  f_print (fout, "%s\t(void) close(i);\n", sp);
-  /* Redirect stderr and stdout to console */
-  f_print (fout, "%si = open(\"/dev/console\", 2);\n", sp);
-  f_print (fout, "%s(void) dup2(i, 1);\n", sp);
-  f_print (fout, "%s(void) dup2(i, 2);\n", sp);
-  /* This removes control of the controlling terminal */
-  if (tirpcflag)
-    f_print (fout, "%ssetsid();\n", sp);
-  else
-    {
-      f_print (fout, "%si = open(\"/dev/tty\", 2);\n", sp);
-      f_print (fout, "%sif (i >= 0) {\n", sp);
-      f_print (fout, "%s\t(void) ioctl(i, TIOCNOTTY, (char *)NULL);\n", sp);;
-      f_print (fout, "%s\t(void) close(i);\n", sp);
-      f_print (fout, "%s}\n", sp);
-    }
-  if (!logflag)
-    open_log_file (infile, sp);
-  f_print (fout, "#endif\n");
-  if (logflag)
-    open_log_file (infile, sp);
-}
-
-static void
-open_log_file (const char *infile, const char *sp)
-{
-  char *s;
-
-  s = strrchr (infile, '.');
-  if (s)
-    *s = '\0';
-  f_print (fout, "%sopenlog(\"%s\", LOG_PID, LOG_DAEMON);\n", sp, infile);
-  if (s)
-    *s = '.';
-}
-
-/*
- * write a registration for the given transport for Inetd
- */
-void
-write_inetd_register (const char *transp)
-{
-  list *l;
-  definition *def;
-  version_list *vp;
-  const char *sp;
-  int isudp;
-  char tmpbuf[32];
-
-  if (inetdflag)
-    sp = "\t";
-  else
-    sp = "";
-  if (streq (transp, "udp") || streq (transp, "udp6"))
-    isudp = 1;
-  else
-    isudp = 0;
-  f_print (fout, "\n");
-  if (inetdflag)
-    {
-      f_print (fout, "\tif ((_rpcfdtype == 0) || (_rpcfdtype == %s)) {\n",
-	       isudp ? "SOCK_DGRAM" : "SOCK_STREAM");
-    }
-  f_print (fout, "%s\t%s = svc%s_create(%s",
-	   sp, TRANSP, transp, inetdflag ? "sock" : "RPC_ANYSOCK");
-  if (!isudp)
-    f_print (fout, ", 0, 0");
-  f_print (fout, ");\n");
-  f_print (fout, "%s\tif (%s == NULL) {\n", sp, TRANSP);
-  (void) sprintf (_errbuf, "cannot create %s service.", transp);
-  (void) sprintf (tmpbuf, "%s\t\t", sp);
-  print_err_message (tmpbuf);
-  f_print (fout, "%s\t\texit(1);\n", sp);
-  f_print (fout, "%s\t}\n", sp);
-
-  if (inetdflag)
-    {
-      f_print (fout, "%s\tif (!_rpcpmstart)\n\t", sp);
-      f_print (fout, "%s\tproto = IPPROTO_%s;\n",
-	       sp, isudp ? "UDP" : "TCP");
-    }
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind != DEF_PROGRAM)
-	{
-	  continue;
-	}
-      for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-	{
-	  f_print (fout, "%s\tif (!svc_register(%s, %s, %s, ",
-		   sp, TRANSP, def->def_name, vp->vers_name);
-	  pvname (def->def_name, vp->vers_num);
-	  if (inetdflag)
-	    f_print (fout, ", proto)) {\n");
-	  else
-	    f_print (fout, ", IPPROTO_%s)) {\n",
-		     isudp ? "UDP" : "TCP");
-	  (void) sprintf (_errbuf, "unable to register (%s, %s, %s).",
-			  def->def_name, vp->vers_name, transp);
-	  print_err_message (tmpbuf);
-	  f_print (fout, "%s\t\texit(1);\n", sp);
-	  f_print (fout, "%s\t}\n", sp);
-	}
-    }
-  if (inetdflag)
-    f_print (fout, "\t}\n");
-}
diff --git a/sunrpc/rpc_tblout.c b/sunrpc/rpc_tblout.c
deleted file mode 100644
index a7d2f43528..0000000000
--- a/sunrpc/rpc_tblout.c
+++ /dev/null
@@ -1,178 +0,0 @@ 
-/*
- * From: @(#)rpc_tblout.c 1.4 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_tblout.c, Dispatch table outputter for the RPC protocol compiler
- */
-#include <stdio.h>
-#include <string.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define TABSIZE		8
-#define TABCOUNT	5
-#define TABSTOP		(TABSIZE*TABCOUNT)
-
-static const char tabstr[TABCOUNT + 1] = "\t\t\t\t\t";
-
-static const char tbl_hdr[] = "struct rpcgen_table %s_table[] = {\n";
-static const char tbl_end[] = "};\n";
-
-static const char null_entry[] = "\n\t(char *(*)())0,\n\
- \t(xdrproc_t) xdr_void,\t\t\t0,\n\
- \t(xdrproc_t) xdr_void,\t\t\t0,\n";
-
-
-static const char tbl_nproc[] = "int %s_nproc =\n\tsizeof(%s_table)/sizeof(%s_table[0]);\n\n";
-
-static void write_table (const definition * def);
-static void printit (const char *prefix, const char *type);
-
-void
-write_tables (void)
-{
-  list *l;
-  definition *def;
-
-  f_print (fout, "\n");
-  for (l = defined; l != NULL; l = l->next)
-    {
-      def = (definition *) l->val;
-      if (def->def_kind == DEF_PROGRAM)
-	{
-	  write_table (def);
-	}
-    }
-}
-
-static void
-write_table (const definition * def)
-{
-  version_list *vp;
-  proc_list *proc;
-  int current;
-  int expected;
-  char progvers[100];
-  int warning;
-
-  for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
-    {
-      warning = 0;
-      s_print (progvers, "%s_%s",
-	       locase (def->def_name), vp->vers_num);
-      /* print the table header */
-      f_print (fout, tbl_hdr, progvers);
-
-      if (nullproc (vp->procs))
-	{
-	  expected = 0;
-	}
-      else
-	{
-	  expected = 1;
-	  f_print (fout, null_entry);
-	}
-      for (proc = vp->procs; proc != NULL; proc = proc->next)
-	{
-	  current = atoi (proc->proc_num);
-	  if (current != expected++)
-	    {
-	      f_print (fout,
-		       "\n/*\n * WARNING: table out of order\n */\n");
-	      if (warning == 0)
-		{
-		  f_print (stderr,
-			   "WARNING %s table is out of order\n",
-			   progvers);
-		  warning = 1;
-		  nonfatalerrors = 1;
-		}
-	      expected = current + 1;
-	    }
-	  f_print (fout, "\n\t(char *(*)())RPCGEN_ACTION(");
-
-	  /* routine to invoke */
-	  if (Cflag && !newstyle)
-	    pvname_svc (proc->proc_name, vp->vers_num);
-	  else
-	    {
-	      if (newstyle)
-		f_print (fout, "_");	/* calls internal func */
-	      pvname (proc->proc_name, vp->vers_num);
-	    }
-	  f_print (fout, "),\n");
-
-	  /* argument info */
-	  if (proc->arg_num > 1)
-	    printit ((char *) NULL, proc->args.argname);
-	  else
-	    /* do we have to do something special for newstyle */
-	    printit (proc->args.decls->decl.prefix,
-		     proc->args.decls->decl.type);
-	  /* result info */
-	  printit (proc->res_prefix, proc->res_type);
-	}
-
-      /* print the table trailer */
-      f_print (fout, tbl_end);
-      f_print (fout, tbl_nproc, progvers, progvers, progvers);
-    }
-}
-
-static void
-printit (const char *prefix, const char *type)
-{
-  int len;
-  int tabs;
-
-
-  len = fprintf (fout, "\txdr_%s,", stringfix (type));
-  /* account for leading tab expansion */
-  len += TABSIZE - 1;
-  /* round up to tabs required */
-  tabs = (TABSTOP - len + TABSIZE - 1) / TABSIZE;
-  f_print (fout, "%s", &tabstr[TABCOUNT - tabs]);
-
-  if (streq (type, "void"))
-    {
-      f_print (fout, "0");
-    }
-  else
-    {
-      f_print (fout, "sizeof ( ");
-      /* XXX: should "follow" be 1 ??? */
-      ptype (prefix, type, 0);
-      f_print (fout, ")");
-    }
-  f_print (fout, ",\n");
-}
diff --git a/sunrpc/rpc_thread.c b/sunrpc/rpc_thread.c
index 0abe6dc172..d282db69f7 100644
--- a/sunrpc/rpc_thread.c
+++ b/sunrpc/rpc_thread.c
@@ -87,7 +87,7 @@  __rpc_thread_svc_fdset (void)
 		return &svc_fdset;
 	return &tvp->svc_fdset_s;
 }
-libc_hidden_nolink_sunrpc (__rpc_thread_svc_fdset, GLIBC_2_2_3)
+libc_hidden_nolink (__rpc_thread_svc_fdset, GLIBC_2_2_3)
 
 struct rpc_createerr *
 __rpc_thread_createerr (void)
@@ -99,7 +99,7 @@  __rpc_thread_createerr (void)
 		return &rpc_createerr;
 	return &tvp->rpc_createerr_s;
 }
-libc_hidden_nolink_sunrpc (__rpc_thread_createerr, GLIBC_2_2_3)
+libc_hidden_nolink (__rpc_thread_createerr, GLIBC_2_2_3)
 
 struct pollfd **
 __rpc_thread_svc_pollfd (void)
@@ -114,7 +114,7 @@  __rpc_thread_svc_pollfd (void)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (__rpc_thread_svc_pollfd)
 #else
-libc_hidden_nolink_sunrpc (__rpc_thread_svc_pollfd, GLIBC_2_2_3)
+libc_hidden_nolink (__rpc_thread_svc_pollfd, GLIBC_2_2_3)
 #endif
 
 int *
@@ -130,5 +130,5 @@  __rpc_thread_svc_max_pollfd (void)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (__rpc_thread_svc_max_pollfd)
 #else
-libc_hidden_nolink_sunrpc (__rpc_thread_svc_max_pollfd, GLIBC_2_2_3)
+libc_hidden_nolink (__rpc_thread_svc_max_pollfd, GLIBC_2_2_3)
 #endif
diff --git a/sunrpc/rpc_util.c b/sunrpc/rpc_util.c
deleted file mode 100644
index 52aa69757b..0000000000
--- a/sunrpc/rpc_util.c
+++ /dev/null
@@ -1,525 +0,0 @@ 
-/*
- * From: @(#)rpc_util.c 1.11 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_util.c, Utility routines for the RPC protocol compiler
- */
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <unistd.h>
-#include "rpc_scan.h"
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define ARGEXT "argument"
-
-char curline[MAXLINESIZE];	/* current read line */
-const char *where = curline;	/* current point in line */
-int linenum = 0;		/* current line number */
-
-const char *infilename;		/* input filename */
-
-#define NFILES 7
-const char *outfiles[NFILES];	/* output file names */
-int nfiles;
-
-FILE *fout;			/* file pointer of current output */
-FILE *fin;			/* file pointer of current input */
-
-list *defined;			/* list of defined things */
-
-static int findit (const definition * def, const char *type);
-static const char *fixit (const char *type, const char *orig);
-static int typedefed (const definition * def, const char *type);
-static const char *toktostr (tok_kind kind);
-static void printbuf (void);
-static void printwhere (void);
-
-/*
- * Reinitialize the world
- */
-void
-reinitialize (void)
-{
-  memset (curline, 0, MAXLINESIZE);
-  where = curline;
-  linenum = 0;
-  defined = NULL;
-}
-
-/*
- * string equality
- */
-int
-streq (const char *a, const char *b)
-{
-  return strcmp (a, b) == 0;
-}
-
-/*
- * find a value in a list
- */
-definition *
-findval (list *lst, const char *val,
-	 int (*cmp) (const definition *, const char *))
-{
-
-  for (; lst != NULL; lst = lst->next)
-    {
-      if (cmp (lst->val, val))
-	{
-	  return lst->val;
-	}
-    }
-  return NULL;
-}
-
-/*
- * store a value in a list
- */
-void
-storeval (list **lstp, definition *val)
-{
-  list **l;
-  list *lst;
-
-
-  for (l = lstp; *l != NULL; l = (list **) & (*l)->next);
-  lst = ALLOC (list);
-  lst->val = val;
-  lst->next = NULL;
-  *l = lst;
-}
-
-static int
-findit (const definition * def, const char *type)
-{
-  return streq (def->def_name, type);
-}
-
-static const char *
-fixit (const char *type, const char *orig)
-{
-  definition *def;
-
-  def = findval (defined, type, findit);
-  if (def == NULL || def->def_kind != DEF_TYPEDEF)
-    {
-      return orig;
-    }
-  switch (def->def.ty.rel)
-    {
-    case REL_VECTOR:
-      if (streq (def->def.ty.old_type, "opaque"))
-	return ("char");
-      else
-	return (def->def.ty.old_type);
-    case REL_ALIAS:
-      return (fixit (def->def.ty.old_type, orig));
-    default:
-      return orig;
-    }
-}
-
-const char *
-fixtype (const char *type)
-{
-  return fixit (type, type);
-}
-
-const char *
-stringfix (const char *type)
-{
-  if (streq (type, "string"))
-    {
-      return "wrapstring";
-    }
-  else
-    {
-      return type;
-    }
-}
-
-void
-ptype (const char *prefix, const char *type, int follow)
-{
-  if (prefix != NULL)
-    {
-      if (streq (prefix, "enum"))
-	{
-	  f_print (fout, "enum ");
-	}
-      else
-	{
-	  f_print (fout, "struct ");
-	}
-    }
-  if (streq (type, "bool"))
-    {
-      f_print (fout, "bool_t ");
-    }
-  else if (streq (type, "string"))
-    {
-      f_print (fout, "char *");
-    }
-  else
-    {
-      f_print (fout, "%s ", follow ? fixtype (type) : type);
-    }
-}
-
-static int
-typedefed (const definition * def, const char *type)
-{
-  if (def->def_kind != DEF_TYPEDEF || def->def.ty.old_prefix != NULL)
-    {
-      return 0;
-    }
-  else
-    {
-      return streq (def->def_name, type);
-    }
-}
-
-int
-isvectordef (const char *type, relation rel)
-{
-  definition *def;
-
-  for (;;)
-    {
-      switch (rel)
-	{
-	case REL_VECTOR:
-	  return !streq (type, "string");
-	case REL_ARRAY:
-	  return 0;
-	case REL_POINTER:
-	  return 0;
-	case REL_ALIAS:
-	  def = findval (defined, type, typedefed);
-	  if (def == NULL)
-	    {
-	      return 0;
-	    }
-	  type = def->def.ty.old_type;
-	  rel = def->def.ty.rel;
-	}
-    }
-}
-
-char *
-locase (const char *str)
-{
-  char c;
-  static char buf[100];
-  char *p = buf;
-
-  while ((c = *str++) != 0)
-    {
-      *p++ = (c >= 'A' && c <= 'Z') ? (c - 'A' + 'a') : c;
-    }
-  *p = 0;
-  return buf;
-}
-
-void
-pvname_svc (const char *pname, const char *vnum)
-{
-  f_print (fout, "%s_%s_svc", locase (pname), vnum);
-}
-
-void
-pvname (const char *pname, const char *vnum)
-{
-  f_print (fout, "%s_%s", locase (pname), vnum);
-}
-
-/*
- * print a useful (?) error message, and then die
- */
-void
-error (const char *msg)
-{
-  printwhere ();
-  f_print (stderr, "%s, line %d: ", infilename, linenum);
-  f_print (stderr, "%s\n", msg);
-  crash ();
-}
-
-/*
- * Something went wrong, unlink any files that we may have created and then
- * die.
- */
-void
-crash (void)
-{
-  int i;
-
-  for (i = 0; i < nfiles; i++)
-    {
-      unlink (outfiles[i]);
-    }
-  exit (1);
-}
-
-void
-record_open (const char *file)
-{
-  if (nfiles < NFILES)
-    {
-      outfiles[nfiles++] = file;
-    }
-  else
-    {
-      f_print (stderr, "too many files!\n");
-      crash ();
-    }
-}
-
-static char expectbuf[100];
-
-/*
- * error, token encountered was not the expected one
- */
-void
-expected1 (tok_kind exp1)
-{
-  s_print (expectbuf, "expected '%s'",
-	   toktostr (exp1));
-  error (expectbuf);
-}
-
-/*
- * error, token encountered was not one of two expected ones
- */
-void
-expected2 (tok_kind exp1, tok_kind exp2)
-{
-  s_print (expectbuf, "expected '%s' or '%s'",
-	   toktostr (exp1),
-	   toktostr (exp2));
-  error (expectbuf);
-}
-
-/*
- * error, token encountered was not one of 3 expected ones
- */
-void
-expected3 (tok_kind exp1, tok_kind exp2, tok_kind exp3)
-{
-  s_print (expectbuf, "expected '%s', '%s' or '%s'",
-	   toktostr (exp1),
-	   toktostr (exp2),
-	   toktostr (exp3));
-  error (expectbuf);
-}
-
-void
-tabify (FILE * f, int tab)
-{
-  while (tab--)
-    {
-      (void) fputc ('\t', f);
-    }
-}
-
-
-static const token tokstrings[] =
-{
-  {TOK_IDENT, "identifier"},
-  {TOK_CONST, "const"},
-  {TOK_RPAREN, ")"},
-  {TOK_LPAREN, "("},
-  {TOK_RBRACE, "}"},
-  {TOK_LBRACE, "{"},
-  {TOK_LBRACKET, "["},
-  {TOK_RBRACKET, "]"},
-  {TOK_STAR, "*"},
-  {TOK_COMMA, ","},
-  {TOK_EQUAL, "="},
-  {TOK_COLON, ":"},
-  {TOK_SEMICOLON, ";"},
-  {TOK_UNION, "union"},
-  {TOK_STRUCT, "struct"},
-  {TOK_SWITCH, "switch"},
-  {TOK_CASE, "case"},
-  {TOK_DEFAULT, "default"},
-  {TOK_ENUM, "enum"},
-  {TOK_TYPEDEF, "typedef"},
-  {TOK_INT, "int"},
-  {TOK_SHORT, "short"},
-  {TOK_LONG, "long"},
-  {TOK_UNSIGNED, "unsigned"},
-  {TOK_DOUBLE, "double"},
-  {TOK_FLOAT, "float"},
-  {TOK_CHAR, "char"},
-  {TOK_STRING, "string"},
-  {TOK_OPAQUE, "opaque"},
-  {TOK_BOOL, "bool"},
-  {TOK_VOID, "void"},
-  {TOK_PROGRAM, "program"},
-  {TOK_VERSION, "version"},
-  {TOK_EOF, "??????"}
-};
-
-static const char *
-toktostr (tok_kind kind)
-{
-  const token *sp;
-
-  for (sp = tokstrings; sp->kind != TOK_EOF && sp->kind != kind; sp++);
-  return sp->str;
-}
-
-static void
-printbuf (void)
-{
-  char c;
-  int i;
-  int cnt;
-
-#define TABSIZE 4
-
-  for (i = 0; (c = curline[i]) != 0; i++)
-    {
-      if (c == '\t')
-	{
-	  cnt = 8 - (i % TABSIZE);
-	  c = ' ';
-	}
-      else
-	{
-	  cnt = 1;
-	}
-      while (cnt--)
-	{
-	  (void) fputc (c, stderr);
-	}
-    }
-}
-
-static void
-printwhere (void)
-{
-  int i;
-  char c;
-  int cnt;
-
-  printbuf ();
-  for (i = 0; i < where - curline; i++)
-    {
-      c = curline[i];
-      if (c == '\t')
-	{
-	  cnt = 8 - (i % TABSIZE);
-	}
-      else
-	{
-	  cnt = 1;
-	}
-      while (cnt--)
-	{
-	  (void) fputc ('^', stderr);
-	}
-    }
-  (void) fputc ('\n', stderr);
-}
-
-char *
-make_argname (const char *pname, const char *vname)
-{
-  char *name;
-
-  name = malloc (strlen (pname) + strlen (vname) + strlen (ARGEXT) + 3);
-  if (!name)
-    {
-      fprintf (stderr, "failed in malloc");
-      exit (1);
-    }
-  sprintf (name, "%s_%s_%s", locase (pname), vname, ARGEXT);
-  return name;
-}
-
-bas_type *typ_list_h;
-bas_type *typ_list_t;
-
-void
-add_type (int len, const char *type)
-{
-  bas_type *ptr;
-
-
-  if ((ptr = malloc (sizeof (bas_type))) == NULL)
-    {
-      fprintf (stderr, "failed in malloc");
-      exit (1);
-    }
-
-  ptr->name = type;
-  ptr->length = len;
-  ptr->next = NULL;
-  if (typ_list_t == NULL)
-    {
-
-      typ_list_t = ptr;
-      typ_list_h = ptr;
-    }
-  else
-    {
-
-      typ_list_t->next = ptr;
-      typ_list_t = ptr;
-    }
-
-}
-
-
-bas_type *
-find_type (const char *type)
-{
-  bas_type *ptr;
-
-  ptr = typ_list_h;
-
-
-  while (ptr != NULL)
-    {
-      if (strcmp (ptr->name, type) == 0)
-	return ptr;
-      else
-	ptr = ptr->next;
-    };
-  return NULL;
-}
diff --git a/sunrpc/rpc_util.h b/sunrpc/rpc_util.h
deleted file mode 100644
index 53316d9516..0000000000
--- a/sunrpc/rpc_util.h
+++ /dev/null
@@ -1,154 +0,0 @@ 
-/*      @(#)rpc_util.h  1.5  90/08/29  */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * rpc_util.h, Useful definitions for the RPC protocol compiler
- */
-
-#include <stdlib.h>
-
-#define alloc(size)		malloc((unsigned)(size))
-#define ALLOC(object)   (object *) malloc(sizeof(object))
-
-#define s_print	(void) sprintf
-#define f_print (void) fprintf
-
-struct list {
-	definition *val;
-	struct list *next;
-};
-typedef struct list list;
-
-struct xdrfunc {
-	char *name;
-	int pointerp;
-	struct xdrfunc *next;
-};
-typedef struct xdrfunc xdrfunc;
-
-#define PUT 1
-#define GET 2
-
-/*
- * Global variables
- */
-#define MAXLINESIZE 1024
-extern char curline[MAXLINESIZE];
-extern const char *where;
-extern int linenum;
-
-extern const char *infilename;
-extern FILE *fout;
-extern FILE *fin;
-
-extern list *defined;
-
-extern bas_type *typ_list_h;
-extern bas_type *typ_list_t;
-extern xdrfunc *xdrfunc_head, *xdrfunc_tail;
-
-/*
- * All the option flags
- */
-extern int inetdflag;
-extern int pmflag;
-extern int tblflag;
-extern int logflag;
-extern int newstyle;
-extern int Cflag;      /* C++ flag */
-extern int CCflag;     /* C++ flag */
-extern int tirpcflag;  /* flag for generating tirpc code */
-extern int inlineflag; /* if this is 0, then do not generate inline code */
-extern int mtflag;
-
-/*
- * Other flags related with inetd jumpstart.
- */
-extern int indefinitewait;
-extern int exitnow;
-extern int timerflag;
-
-extern int nonfatalerrors;
-
-/*
- * rpc_util routines
- */
-void storeval(list **lstp, definition *val);
-#define STOREVAL(list,item) storeval(list,item)
-
-definition *findval(list *lst, const char *val,
-		    int (*cmp)(const definition *, const char *));
-#define FINDVAL(list,item,finder) findval(list, item, finder)
-
-const char *fixtype(const char *type);
-const char *stringfix(const char *type);
-char *locase(const char *str);
-void pvname_svc(const char *pname, const char *vnum);
-void pvname(const char *pname, const char *vnum);
-void ptype(const char *prefix, const char *type, int follow);
-int isvectordef(const char *type, relation rel);
-int streq(const char *a, const char *b);
-void error(const char *msg);
-void tabify(FILE *f, int tab);
-void record_open(const char *file);
-bas_type *find_type(const char *type);
-
-
-/*
- * rpc_cout routines
- */
-void emit(definition *def);
-
-/*
- * rpc_hout routines
- */
-void print_datadef(definition *def);
-void print_funcdef(definition *def);
-
-/*
- * rpc_svcout routines
- */
-void write_most(const char *infile, int netflag, int nomain);
-void write_register(void);
-void write_rest(void);
-void write_programs(const char *storage);
-void write_svc_aux(int nomain);
-void write_inetd_register(const char *transp);
-void write_netid_register(const char *);
-void write_nettype_register(const char *);
-/*
- * rpc_clntout routines
- */
-void write_stubs(void);
-
-/*
- * rpc_tblout routines
- */
-void write_tables(void);
diff --git a/sunrpc/rpcsvc/bootparam.h b/sunrpc/rpcsvc/bootparam.h
deleted file mode 100644
index 0cd3ebbe5a..0000000000
--- a/sunrpc/rpcsvc/bootparam.h
+++ /dev/null
@@ -1,23 +0,0 @@ 
-/* Copyright (C) 1999-2020 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _RPCSVC_BOOTPARAM_H
-#define _RPCSVC_BOOTPARAM_H
-
-#include <rpcsvc/bootparam_prot.h>
-
-#endif  /* _RPCSVC_BOOTPARAM_H */
diff --git a/sunrpc/rpcsvc/bootparam_prot.x b/sunrpc/rpcsvc/bootparam_prot.x
deleted file mode 100644
index 117e428560..0000000000
--- a/sunrpc/rpcsvc/bootparam_prot.x
+++ /dev/null
@@ -1,97 +0,0 @@ 
-/* @(#)bootparam_prot.x	2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * RPC for bootparms service.
- * There are two procedures:
- *   WHOAMI takes a net address and returns a client name and also a
- *	likely net address for routing
- *   GETFILE takes a client name and file identifier and returns the
- *	server name, server net address and pathname for the file.
- *   file identifiers typically include root, swap, pub and dump
- */
-
-#ifdef RPC_HDR
-%#include <rpc/types.h>
-%#include <sys/time.h>
-%#include <sys/errno.h>
-%#include <nfs/nfs.h>
-#endif
-
-const MAX_MACHINE_NAME  = 255;
-const MAX_PATH_LEN	= 1024;
-const MAX_FILEID	= 32;
-const IP_ADDR_TYPE	= 1;
-
-typedef	string	bp_machine_name_t<MAX_MACHINE_NAME>;
-typedef	string	bp_path_t<MAX_PATH_LEN>;
-typedef	string	bp_fileid_t<MAX_FILEID>;
-
-struct	ip_addr_t {
-	char	net;
-	char	host;
-	char	lh;
-	char	impno;
-};
-
-union bp_address switch (int address_type) {
-	case IP_ADDR_TYPE:
-		ip_addr_t	ip_addr;
-};
-
-struct bp_whoami_arg {
-	bp_address		client_address;
-};
-
-struct bp_whoami_res {
-	bp_machine_name_t	client_name;
-	bp_machine_name_t	domain_name;
-	bp_address		router_address;
-};
-
-struct bp_getfile_arg {
-	bp_machine_name_t	client_name;
-	bp_fileid_t		file_id;
-};
-
-struct bp_getfile_res {
-	bp_machine_name_t	server_name;
-	bp_address		server_address;
-	bp_path_t		server_path;
-};
-
-program BOOTPARAMPROG {
-	version BOOTPARAMVERS {
-		bp_whoami_res	BOOTPARAMPROC_WHOAMI(bp_whoami_arg) = 1;
-		bp_getfile_res	BOOTPARAMPROC_GETFILE(bp_getfile_arg) = 2;
-	} = 1;
-} = 100026;
diff --git a/sunrpc/rpcsvc/key_prot.x b/sunrpc/rpcsvc/key_prot.x
deleted file mode 100644
index 9baf943916..0000000000
--- a/sunrpc/rpcsvc/key_prot.x
+++ /dev/null
@@ -1,283 +0,0 @@ 
-/*
- * Key server protocol definition
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The keyserver is a public key storage/encryption/decryption service
- * The encryption method used is based on the Diffie-Hellman exponential
- * key exchange technology.
- *
- * The key server is local to each machine, akin to the portmapper.
- * Under TI-RPC, communication with the keyserver is through the
- * loopback transport.
- *
- * NOTE: This .x file generates the USER level headers for the keyserver.
- * the KERNEL level headers are created by hand as they kernel has special
- * requirements.
- */
-
-%#if 0
-%#pragma ident	"@(#)key_prot.x	1.7	94/04/29 SMI"
-%#endif
-%
-%/* Copyright (c)  1990, 1991 Sun Microsystems, Inc. */
-%
-%/*
-% * Compiled from key_prot.x using rpcgen.
-% * DO NOT EDIT THIS FILE!
-% * This is NOT source code!
-% */
-
-/*
- * PROOT and MODULUS define the way the Diffie-Hellman key is generated.
- *
- * MODULUS should be chosen as a prime of the form: MODULUS == 2*p + 1,
- * where p is also prime.
- *
- * PROOT satisfies the following two conditions:
- * (1) (PROOT ** 2) % MODULUS != 1
- * (2) (PROOT ** p) % MODULUS != 1
- *
- */
-
-const PROOT = 3;
-const HEXMODULUS = "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b";
-
-const HEXKEYBYTES = 48;		/* HEXKEYBYTES == strlen(HEXMODULUS) */
-const KEYSIZE = 192;		/* KEYSIZE == bit length of key */
-const KEYBYTES = 24;		/* byte length of key */
-
-/*
- * The first 16 hex digits of the encrypted secret key are used as
- * a checksum in the database.
- */
-const KEYCHECKSUMSIZE = 16;
-
-/*
- * status of operation
- */
-enum keystatus {
-	KEY_SUCCESS,	/* no problems */
-	KEY_NOSECRET,	/* no secret key stored */
-	KEY_UNKNOWN,	/* unknown netname */
-	KEY_SYSTEMERR 	/* system error (out of memory, encryption failure) */
-};
-
-typedef opaque keybuf[HEXKEYBYTES];	/* store key in hex */
-
-typedef string netnamestr<MAXNETNAMELEN>;
-
-/*
- * Argument to ENCRYPT or DECRYPT
- */
-struct cryptkeyarg {
-	netnamestr remotename;
-	des_block deskey;
-};
-
-/*
- * Argument to ENCRYPT_PK or DECRYPT_PK
- */
-struct cryptkeyarg2 {
-	netnamestr remotename;
-	netobj	remotekey;	/* Contains a length up to 1024 bytes */
-	des_block deskey;
-};
-
-
-/*
- * Result of ENCRYPT, DECRYPT, ENCRYPT_PK, and DECRYPT_PK
- */
-union cryptkeyres switch (keystatus status) {
-case KEY_SUCCESS:
-	des_block deskey;
-default:
-	void;
-};
-
-const MAXGIDS  = 16;	/* max number of gids in gid list */
-
-/*
- * Unix credential
- */
-struct unixcred {
-	u_int uid;
-	u_int gid;
-	u_int gids<MAXGIDS>;
-};
-
-/*
- * Result returned from GETCRED
- */
-union getcredres switch (keystatus status) {
-case KEY_SUCCESS:
-	unixcred cred;
-default:
-	void;
-};
-/*
- * key_netstarg;
- */
-
-struct key_netstarg {
-	keybuf st_priv_key;
-	keybuf st_pub_key;
-	netnamestr st_netname;
-};
-
-union key_netstres switch (keystatus status){
-case KEY_SUCCESS:
-	key_netstarg knet;
-default:
-	void;
-};
-
-#ifdef RPC_HDR
-%
-%#ifndef opaque
-%#define opaque char
-%#endif
-%
-#endif
-program KEY_PROG {
-	version KEY_VERS {
-
-		/*
-		 * This is my secret key.
-	 	 * Store it for me.
-		 */
-		keystatus
-		KEY_SET(keybuf) = 1;
-
-		/*
-		 * I want to talk to X.
-		 * Encrypt a conversation key for me.
-	 	 */
-		cryptkeyres
-		KEY_ENCRYPT(cryptkeyarg) = 2;
-
-		/*
-		 * X just sent me a message.
-		 * Decrypt the conversation key for me.
-		 */
-		cryptkeyres
-		KEY_DECRYPT(cryptkeyarg) = 3;
-
-		/*
-		 * Generate a secure conversation key for me
-		 */
-		des_block
-		KEY_GEN(void) = 4;
-
-		/*
-		 * Get me the uid, gid and group-access-list associated
-		 * with this netname (for kernel which cannot use NIS)
-		 */
-		getcredres
-		KEY_GETCRED(netnamestr) = 5;
-	} = 1;
-	version KEY_VERS2 {
-
-		/*
-		 * #######
-		 * Procedures 1-5 are identical to version 1
-		 * #######
-		 */
-
-		/*
-		 * This is my secret key.
-	 	 * Store it for me.
-		 */
-		keystatus
-		KEY_SET(keybuf) = 1;
-
-		/*
-		 * I want to talk to X.
-		 * Encrypt a conversation key for me.
-	 	 */
-		cryptkeyres
-		KEY_ENCRYPT(cryptkeyarg) = 2;
-
-		/*
-		 * X just sent me a message.
-		 * Decrypt the conversation key for me.
-		 */
-		cryptkeyres
-		KEY_DECRYPT(cryptkeyarg) = 3;
-
-		/*
-		 * Generate a secure conversation key for me
-		 */
-		des_block
-		KEY_GEN(void) = 4;
-
-		/*
-		 * Get me the uid, gid and group-access-list associated
-		 * with this netname (for kernel which cannot use NIS)
-		 */
-		getcredres
-		KEY_GETCRED(netnamestr) = 5;
-
-		/*
-		 * I want to talk to X. and I know X's public key
-		 * Encrypt a conversation key for me.
-	 	 */
-		cryptkeyres
-		KEY_ENCRYPT_PK(cryptkeyarg2) = 6;
-
-		/*
-		 * X just sent me a message. and I know X's public key
-		 * Decrypt the conversation key for me.
-		 */
-		cryptkeyres
-		KEY_DECRYPT_PK(cryptkeyarg2) = 7;
-
-		/*
-		 * Store my public key, netname and private key.
-		 */
-		keystatus
-		KEY_NET_PUT(key_netstarg) = 8;
-
-		/*
-		 * Retrieve my public key, netname and private key.
-		 */
- 		key_netstres
-		KEY_NET_GET(void) = 9;
-
-		/*
-		 * Return me the conversation key that is constructed
-		 * from my secret key and this publickey.
-		 */
-
-		cryptkeyres
-		KEY_GET_CONV(keybuf) = 10;
-
-
-	} = 2;
-} = 100029;
diff --git a/sunrpc/rpcsvc/klm_prot.x b/sunrpc/rpcsvc/klm_prot.x
deleted file mode 100644
index aee5b1a962..0000000000
--- a/sunrpc/rpcsvc/klm_prot.x
+++ /dev/null
@@ -1,130 +0,0 @@ 
-/* @(#)klm_prot.x	2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Kernel/lock manager protocol definition
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * protocol used between the UNIX kernel (the "client") and the
- * local lock manager.  The local lock manager is a deamon running
- * above the kernel.
- */
-
-const	LM_MAXSTRLEN = 1024;
-
-/*
- * lock manager status returns
- */
-enum klm_stats {
-	klm_granted = 0,	/* lock is granted */
-	klm_denied = 1,		/* lock is denied */
-	klm_denied_nolocks = 2, /* no lock entry available */
-	klm_working = 3		/* lock is being processed */
-};
-
-/*
- * lock manager lock identifier
- */
-struct klm_lock {
-	string server_name<LM_MAXSTRLEN>;
-	netobj fh;		/* a counted file handle */
-	int pid;		/* holder of the lock */
-	unsigned l_offset;	/* beginning offset of the lock */
-	unsigned l_len;		/* byte length of the lock;
-				 * zero means through end of file */
-};
-
-/*
- * lock holder identifier
- */
-struct klm_holder {
-	bool exclusive;		/* FALSE if shared lock */
-	int svid;		/* holder of the lock (pid) */
-	unsigned l_offset;	/* beginning offset of the lock */
-	unsigned l_len;		/* byte length of the lock;
-				 * zero means through end of file */
-};
-
-/*
- * reply to KLM_LOCK / KLM_UNLOCK / KLM_CANCEL
- */
-struct klm_stat {
-	klm_stats stat;
-};
-
-/*
- * reply to a KLM_TEST call
- */
-union klm_testrply switch (klm_stats stat) {
-	case klm_denied:
-		struct klm_holder holder;
-	default: /* All other cases return no arguments */
-		void;
-};
-
-
-/*
- * arguments to KLM_LOCK
- */
-struct klm_lockargs {
-	bool block;
-	bool exclusive;
-	struct klm_lock alock;
-};
-
-/*
- * arguments to KLM_TEST
- */
-struct klm_testargs {
-	bool exclusive;
-	struct klm_lock alock;
-};
-
-/*
- * arguments to KLM_UNLOCK
- */
-struct klm_unlockargs {
-	struct klm_lock alock;
-};
-
-program KLM_PROG {
-	version KLM_VERS {
-
-		klm_testrply	KLM_TEST (struct klm_testargs) =	1;
-
-		klm_stat	KLM_LOCK (struct klm_lockargs) =	2;
-
-		klm_stat	KLM_CANCEL (struct klm_lockargs) =	3;
-		/* klm_granted=> the cancel request fails due to lock is already granted */
-		/* klm_denied=> the cancel request successfully aborts
-lock request  */
-
-		klm_stat	KLM_UNLOCK (struct klm_unlockargs) =	4;
-	} = 1;
-} = 100020;
diff --git a/sunrpc/rpcsvc/mount.x b/sunrpc/rpcsvc/mount.x
deleted file mode 100644
index ed3b339c49..0000000000
--- a/sunrpc/rpcsvc/mount.x
+++ /dev/null
@@ -1,161 +0,0 @@ 
-/* @(#)mount.x	2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Protocol description for the mount program
- */
-
-
-const MNTPATHLEN = 1024;	/* maximum bytes in a pathname argument */
-const MNTNAMLEN = 255;		/* maximum bytes in a name argument */
-const FHSIZE = 32;		/* size in bytes of a file handle */
-
-/*
- * The fhandle is the file handle that the server passes to the client.
- * All file operations are done using the file handles to refer to a file
- * or a directory. The file handle can contain whatever information the
- * server needs to distinguish an individual file.
- */
-typedef opaque fhandle[FHSIZE];
-
-/*
- * If a status of zero is returned, the call completed successfully, and
- * a file handle for the directory follows. A non-zero status indicates
- * some sort of error. The status corresponds with UNIX error numbers.
- */
-union fhstatus switch (unsigned fhs_status) {
-case 0:
-	fhandle fhs_fhandle;
-default:
-	void;
-};
-
-/*
- * The type dirpath is the pathname of a directory
- */
-typedef string dirpath<MNTPATHLEN>;
-
-/*
- * The type name is used for arbitrary names (hostnames, groupnames)
- */
-typedef string name<MNTNAMLEN>;
-
-/*
- * A list of who has what mounted
- */
-typedef struct mountbody *mountlist;
-struct mountbody {
-	name ml_hostname;
-	dirpath ml_directory;
-	mountlist ml_next;
-};
-
-/*
- * A list of netgroups
- */
-typedef struct groupnode *groups;
-struct groupnode {
-	name gr_name;
-	groups gr_next;
-};
-
-/*
- * A list of what is exported and to whom
- */
-typedef struct exportnode *exports;
-struct exportnode {
-	dirpath ex_dir;
-	groups ex_groups;
-	exports ex_next;
-};
-
-program MOUNTPROG {
-	/*
-	 * Version one of the mount protocol communicates with version two
-	 * of the NFS protocol. The only connecting point is the fhandle
-	 * structure, which is the same for both protocols.
-	 */
-	version MOUNTVERS {
-		/*
-		 * Does no work. It is made available in all RPC services
-		 * to allow server response testing and timing
-		 */
-		void
-		MOUNTPROC_NULL(void) = 0;
-
-		/*
-		 * If fhs_status is 0, then fhs_fhandle contains the
-		 * file handle for the directory. This file handle may
-		 * be used in the NFS protocol. This procedure also adds
-		 * a new entry to the mount list for this client mounting
-		 * the directory.
-		 * Unix authentication required.
-		 */
-		fhstatus
-		MOUNTPROC_MNT(dirpath) = 1;
-
-		/*
-		 * Returns the list of remotely mounted filesystems. The
-		 * mountlist contains one entry for each hostname and
-		 * directory pair.
-		 */
-		mountlist
-		MOUNTPROC_DUMP(void) = 2;
-
-		/*
-		 * Removes the mount list entry for the directory
-		 * Unix authentication required.
-		 */
-		void
-		MOUNTPROC_UMNT(dirpath) = 3;
-
-		/*
-		 * Removes all of the mount list entries for this client
-		 * Unix authentication required.
-		 */
-		void
-		MOUNTPROC_UMNTALL(void) = 4;
-
-		/*
-		 * Returns a list of all the exported filesystems, and which
-		 * machines are allowed to import it.
-		 */
-		exports
-		MOUNTPROC_EXPORT(void)  = 5;
-
-		/*
-		 * Identical to MOUNTPROC_EXPORT above
-		 */
-		exports
-		MOUNTPROC_EXPORTALL(void) = 6;
-	} = 1;
-} = 100005;
diff --git a/sunrpc/rpcsvc/nfs_prot.x b/sunrpc/rpcsvc/nfs_prot.x
deleted file mode 100644
index ad992e238f..0000000000
--- a/sunrpc/rpcsvc/nfs_prot.x
+++ /dev/null
@@ -1,352 +0,0 @@ 
-/* @(#)nfs_prot.x	2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * nfs_prot.x 1.2 87/10/12
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-const NFS_PORT          = 2049;
-const NFS_MAXDATA       = 8192;
-const NFS_MAXPATHLEN    = 1024;
-const NFS_MAXNAMLEN	= 255;
-const NFS_FHSIZE	= 32;
-const NFS_COOKIESIZE	= 4;
-const NFS_FIFO_DEV	= -1;	/* size kludge for named pipes */
-
-/*
- * File types
- */
-const NFSMODE_FMT  = 0170000;	/* type of file */
-const NFSMODE_DIR  = 0040000;	/* directory */
-const NFSMODE_CHR  = 0020000;	/* character special */
-const NFSMODE_BLK  = 0060000;	/* block special */
-const NFSMODE_REG  = 0100000;	/* regular */
-const NFSMODE_LNK  = 0120000;	/* symbolic link */
-const NFSMODE_SOCK = 0140000;	/* socket */
-const NFSMODE_FIFO = 0010000;	/* fifo */
-
-/*
- * Error status
- */
-enum nfsstat {
-	NFS_OK= 0,		/* no error */
-	NFSERR_PERM=1,		/* Not owner */
-	NFSERR_NOENT=2,		/* No such file or directory */
-	NFSERR_IO=5,		/* I/O error */
-	NFSERR_NXIO=6,		/* No such device or address */
-	NFSERR_ACCES=13,	/* Permission denied */
-	NFSERR_EXIST=17,	/* File exists */
-	NFSERR_NODEV=19,	/* No such device */
-	NFSERR_NOTDIR=20,	/* Not a directory*/
-	NFSERR_ISDIR=21,	/* Is a directory */
-	NFSERR_FBIG=27,		/* File too large */
-	NFSERR_NOSPC=28,	/* No space left on device */
-	NFSERR_ROFS=30,		/* Read-only file system */
-	NFSERR_NAMETOOLONG=63,	/* File name too long */
-	NFSERR_NOTEMPTY=66,	/* Directory not empty */
-	NFSERR_DQUOT=69,	/* Disc quota exceeded */
-	NFSERR_STALE=70,	/* Stale NFS file handle */
-	NFSERR_WFLUSH=99	/* write cache flushed */
-};
-
-/*
- * File types
- */
-enum ftype {
-	NFNON = 0,	/* non-file */
-	NFREG = 1,	/* regular file */
-	NFDIR = 2,	/* directory */
-	NFBLK = 3,	/* block special */
-	NFCHR = 4,	/* character special */
-	NFLNK = 5,	/* symbolic link */
-	NFSOCK = 6,	/* unix domain sockets */
-	NFBAD = 7,	/* unused */
-	NFFIFO = 8 	/* named pipe */
-};
-
-/*
- * File access handle
- */
-struct nfs_fh {
-	opaque data[NFS_FHSIZE];
-};
-
-/*
- * Timeval
- */
-struct nfstime {
-	unsigned seconds;
-	unsigned useconds;
-};
-
-
-/*
- * File attributes
- */
-struct fattr {
-	ftype type;		/* file type */
-	unsigned mode;		/* protection mode bits */
-	unsigned nlink;		/* # hard links */
-	unsigned uid;		/* owner user id */
-	unsigned gid;		/* owner group id */
-	unsigned size;		/* file size in bytes */
-	unsigned blocksize;	/* preferred block size */
-	unsigned rdev;		/* special device # */
-	unsigned blocks;	/* Kb of disk used by file */
-	unsigned fsid;		/* device # */
-	unsigned fileid;	/* inode # */
-	nfstime	atime;		/* time of last access */
-	nfstime	mtime;		/* time of last modification */
-	nfstime	ctime;		/* time of last change */
-};
-
-/*
- * File attributes which can be set
- */
-struct sattr {
-	unsigned mode;	/* protection mode bits */
-	unsigned uid;	/* owner user id */
-	unsigned gid;	/* owner group id */
-	unsigned size;	/* file size in bytes */
-	nfstime	atime;	/* time of last access */
-	nfstime	mtime;	/* time of last modification */
-};
-
-
-typedef string filename<NFS_MAXNAMLEN>;
-typedef string nfspath<NFS_MAXPATHLEN>;
-
-/*
- * Reply status with file attributes
- */
-union attrstat switch (nfsstat status) {
-case NFS_OK:
-	fattr attributes;
-default:
-	void;
-};
-
-struct sattrargs {
-	nfs_fh file;
-	sattr attributes;
-};
-
-/*
- * Arguments for directory operations
- */
-struct diropargs {
-	nfs_fh	dir;	/* directory file handle */
-	filename name;		/* name (up to NFS_MAXNAMLEN bytes) */
-};
-
-struct diropokres {
-	nfs_fh file;
-	fattr attributes;
-};
-
-/*
- * Results from directory operation
- */
-union diropres switch (nfsstat status) {
-case NFS_OK:
-	diropokres diropres;
-default:
-	void;
-};
-
-union readlinkres switch (nfsstat status) {
-case NFS_OK:
-	nfspath data;
-default:
-	void;
-};
-
-/*
- * Arguments to remote read
- */
-struct readargs {
-	nfs_fh file;		/* handle for file */
-	unsigned offset;	/* byte offset in file */
-	unsigned count;		/* immediate read count */
-	unsigned totalcount;	/* total read count (from this offset)*/
-};
-
-/*
- * Status OK portion of remote read reply
- */
-struct readokres {
-	fattr	attributes;	/* attributes, need for pagin*/
-	opaque data<NFS_MAXDATA>;
-};
-
-union readres switch (nfsstat status) {
-case NFS_OK:
-	readokres reply;
-default:
-	void;
-};
-
-/*
- * Arguments to remote write
- */
-struct writeargs {
-	nfs_fh	file;		/* handle for file */
-	unsigned beginoffset;	/* beginning byte offset in file */
-	unsigned offset;	/* current byte offset in file */
-	unsigned totalcount;	/* total write count (to this offset)*/
-	opaque data<NFS_MAXDATA>;
-};
-
-struct createargs {
-	diropargs where;
-	sattr attributes;
-};
-
-struct renameargs {
-	diropargs from;
-	diropargs to;
-};
-
-struct linkargs {
-	nfs_fh from;
-	diropargs to;
-};
-
-struct symlinkargs {
-	diropargs from;
-	nfspath to;
-	sattr attributes;
-};
-
-
-typedef opaque nfscookie[NFS_COOKIESIZE];
-
-/*
- * Arguments to readdir
- */
-struct readdirargs {
-	nfs_fh dir;		/* directory handle */
-	nfscookie cookie;
-	unsigned count;		/* number of directory bytes to read */
-};
-
-struct entry {
-	unsigned fileid;
-	filename name;
-	nfscookie cookie;
-	entry *nextentry;
-};
-
-struct dirlist {
-	entry *entries;
-	bool eof;
-};
-
-union readdirres switch (nfsstat status) {
-case NFS_OK:
-	dirlist reply;
-default:
-	void;
-};
-
-struct statfsokres {
-	unsigned tsize;	/* preferred transfer size in bytes */
-	unsigned bsize;	/* fundamental file system block size */
-	unsigned blocks;	/* total blocks in file system */
-	unsigned bfree;	/* free blocks in fs */
-	unsigned bavail;	/* free blocks avail to non-superuser */
-};
-
-union statfsres switch (nfsstat status) {
-case NFS_OK:
-	statfsokres reply;
-default:
-	void;
-};
-
-/*
- * Remote file service routines
- */
-program NFS_PROGRAM {
-	version NFS_VERSION {
-		void
-		NFSPROC_NULL(void) = 0;
-
-		attrstat
-		NFSPROC_GETATTR(nfs_fh) =	1;
-
-		attrstat
-		NFSPROC_SETATTR(sattrargs) = 2;
-
-		void
-		NFSPROC_ROOT(void) = 3;
-
-		diropres
-		NFSPROC_LOOKUP(diropargs) = 4;
-
-		readlinkres
-		NFSPROC_READLINK(nfs_fh) = 5;
-
-		readres
-		NFSPROC_READ(readargs) = 6;
-
-		void
-		NFSPROC_WRITECACHE(void) = 7;
-
-		attrstat
-		NFSPROC_WRITE(writeargs) = 8;
-
-		diropres
-		NFSPROC_CREATE(createargs) = 9;
-
-		nfsstat
-		NFSPROC_REMOVE(diropargs) = 10;
-
-		nfsstat
-		NFSPROC_RENAME(renameargs) = 11;
-
-		nfsstat
-		NFSPROC_LINK(linkargs) = 12;
-
-		nfsstat
-		NFSPROC_SYMLINK(symlinkargs) = 13;
-
-		diropres
-		NFSPROC_MKDIR(createargs) = 14;
-
-		nfsstat
-		NFSPROC_RMDIR(diropargs) = 15;
-
-		readdirres
-		NFSPROC_READDIR(readdirargs) = 16;
-
-		statfsres
-		NFSPROC_STATFS(nfs_fh) = 17;
-	} = 2;
-} = 100003;
diff --git a/sunrpc/rpcsvc/nlm_prot.x b/sunrpc/rpcsvc/nlm_prot.x
deleted file mode 100644
index 81ff13735e..0000000000
--- a/sunrpc/rpcsvc/nlm_prot.x
+++ /dev/null
@@ -1,203 +0,0 @@ 
-/* @(#)nlm_prot.x	2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Network lock manager protocol definition
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * protocol used between local lock manager and remote lock manager
- */
-
-#ifdef RPC_HDR
-%#define LM_MAXSTRLEN	1024
-%#define MAXNAMELEN	LM_MAXSTRLEN+1
-#endif
-
-/*
- * status of a call to the lock manager
- */
-enum nlm_stats {
-	nlm_granted = 0,
-	nlm_denied = 1,
-	nlm_denied_nolocks = 2,
-	nlm_blocked = 3,
-	nlm_denied_grace_period = 4
-};
-
-struct nlm_holder {
-	bool exclusive;
-	int svid;
-	netobj oh;
-	unsigned l_offset;
-	unsigned l_len;
-};
-
-union nlm_testrply switch (nlm_stats stat) {
-	case nlm_denied:
-		struct nlm_holder holder;
-	default:
-		void;
-};
-
-struct nlm_stat {
-	nlm_stats stat;
-};
-
-struct nlm_res {
-	netobj cookie;
-	nlm_stat stat;
-};
-
-struct nlm_testres {
-	netobj cookie;
-	nlm_testrply stat;
-};
-
-struct nlm_lock {
-	string caller_name<LM_MAXSTRLEN>;
-	netobj fh;		/* identify a file */
-	netobj oh;		/* identify owner of a lock */
-	int svid;		/* generated from pid for svid */
-	unsigned l_offset;
-	unsigned l_len;
-};
-
-struct nlm_lockargs {
-	netobj cookie;
-	bool block;
-	bool exclusive;
-	struct nlm_lock alock;
-	bool reclaim;		/* used for recovering locks */
-	int state;		/* specify local status monitor state */
-};
-
-struct nlm_cancargs {
-	netobj cookie;
-	bool block;
-	bool exclusive;
-	struct nlm_lock alock;
-};
-
-struct nlm_testargs {
-	netobj cookie;
-	bool exclusive;
-	struct nlm_lock alock;
-};
-
-struct nlm_unlockargs {
-	netobj cookie;
-	struct nlm_lock alock;
-};
-
-
-#ifdef RPC_HDR
-%/*
-% * The following enums are actually bit encoded for efficient
-% * boolean algebra.... DON'T change them.....
-% */
-#endif
-enum	fsh_mode {
-	fsm_DN  = 0,	/* deny none */
-	fsm_DR  = 1,	/* deny read */
-	fsm_DW  = 2,	/* deny write */
-	fsm_DRW = 3	/* deny read/write */
-};
-
-enum	fsh_access {
-	fsa_NONE = 0,	/* for completeness */
-	fsa_R    = 1,	/* read only */
-	fsa_W    = 2,	/* write only */
-	fsa_RW   = 3	/* read/write */
-};
-
-struct	nlm_share {
-	string caller_name<LM_MAXSTRLEN>;
-	netobj	fh;
-	netobj	oh;
-	fsh_mode	mode;
-	fsh_access	access;
-};
-
-struct	nlm_shareargs {
-	netobj	cookie;
-	nlm_share	share;
-	bool	reclaim;
-};
-
-struct	nlm_shareres {
-	netobj	cookie;
-	nlm_stats	stat;
-	int	sequence;
-};
-
-struct	nlm_notify {
-	string name<MAXNAMELEN>;
-	long state;
-};
-
-/*
- * Over-the-wire protocol used between the network lock managers
- */
-
-program NLM_PROG {
-	version NLM_VERS {
-
-		nlm_testres	NLM_TEST(struct nlm_testargs) =	1;
-
-		nlm_res		NLM_LOCK(struct nlm_lockargs) =	2;
-
-		nlm_res		NLM_CANCEL(struct nlm_cancargs) = 3;
-		nlm_res		NLM_UNLOCK(struct nlm_unlockargs) =	4;
-
-		/*
-		 * remote lock manager call-back to grant lock
-		 */
-		nlm_res		NLM_GRANTED(struct nlm_testargs)= 5;
-		/*
-		 * message passing style of requesting lock
-		 */
-		void		NLM_TEST_MSG(struct nlm_testargs) = 6;
-		void		NLM_LOCK_MSG(struct nlm_lockargs) = 7;
-		void		NLM_CANCEL_MSG(struct nlm_cancargs) =8;
-		void		NLM_UNLOCK_MSG(struct nlm_unlockargs) = 9;
-		void		NLM_GRANTED_MSG(struct nlm_testargs) = 10;
-		void		NLM_TEST_RES(nlm_testres) = 11;
-		void		NLM_LOCK_RES(nlm_res) = 12;
-		void		NLM_CANCEL_RES(nlm_res) = 13;
-		void		NLM_UNLOCK_RES(nlm_res) = 14;
-		void		NLM_GRANTED_RES(nlm_res) = 15;
-	} = 1;
-
-	version NLM_VERSX {
-		nlm_shareres	NLM_SHARE(nlm_shareargs) = 20;
-		nlm_shareres	NLM_UNSHARE(nlm_shareargs) = 21;
-		nlm_res		NLM_NM_LOCK(nlm_lockargs) = 22;
-		void		NLM_FREE_ALL(nlm_notify) = 23;
-	} = 3;
-
-} = 100021;
diff --git a/sunrpc/rpcsvc/rex.x b/sunrpc/rpcsvc/rex.x
deleted file mode 100644
index b5baf15a85..0000000000
--- a/sunrpc/rpcsvc/rex.x
+++ /dev/null
@@ -1,229 +0,0 @@ 
-/* @(#)rex.x	2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Remote execution (rex) protocol specification
- */
-
-const STRINGSIZE = 1024;
-typedef string rexstring<1024>;
-
-/*
- * values to pass to REXPROC_SIGNAL
- */
-const SIGINT = 2;	/* interrupt */
-
-/*
- * Values for rst_flags, below
- */
-const REX_INTERACTIVE = 1;	/* interactive mode */
-
-struct rex_start {
-	rexstring rst_cmd<>;	/* list of command and args */
-	rexstring rst_host;	/* working directory host name */
-	rexstring rst_fsname;	/* working directory file system name */
-	rexstring rst_dirwithin;/* working directory within file system */
-	rexstring rst_env<>;	/* list of environment */
-	unsigned int rst_port0;	/* port for stdin */
-	unsigned int rst_port1;	/* port for stdout */
-	unsigned int rst_port2;	/* port for stderr */
-	unsigned int rst_flags;	/* options - see const above */
-};
-
-struct rex_result {
-   	int rlt_stat;		/* integer status code */
-	rexstring rlt_message;	/* string message for human consumption */
-};
-
-
-struct sgttyb {
-	unsigned four;	/* always equals 4 */
-	opaque chars[4];
-	/* chars[0] == input speed */
-	/* chars[1] == output speed */
-	/* chars[2] == kill character */
-	/* chars[3] == erase character */
-	unsigned flags;
-};
-/* values for speeds above (baud rates)  */
-const B0  = 0;
-const B50 = 1;
-const B75 = 2;
-const B110 = 3;
-const B134 = 4;
-const B150 = 5;
-const B200 = 6;
-const B300 = 7;
-const B600 = 8;
-const B1200 = 9;
-const B1800 = 10;
-const B2400 = 11;
-const B4800 = 12;
-const B9600 = 13;
-const B19200 = 14;
-const B38400 = 15;
-
-/* values for flags above */
-const TANDEM = 0x00000001; /* send stopc on out q full */
-const CBREAK = 0x00000002; /* half-cooked mode */
-const LCASE = 0x00000004; /* simulate lower case */
-const ECHO = 0x00000008; /* echo input */
-const CRMOD = 0x00000010; /* map \r to \r\n on output */
-const RAW = 0x00000020; /* no i/o processing */
-const ODDP = 0x00000040; /* get/send odd parity */
-const EVENP = 0x00000080; /* get/send even parity */
-const ANYP = 0x000000c0; /* get any parity/send none */
-const NLDELAY = 0x00000300; /* \n delay */
-const  NL0 = 0x00000000;
-const  NL1 = 0x00000100; /* tty 37 */
-const  NL2 = 0x00000200; /* vt05 */
-const  NL3 = 0x00000300;
-const TBDELAY = 0x00000c00; /* horizontal tab delay */
-const  TAB0 = 0x00000000;
-const  TAB1 = 0x00000400; /* tty 37 */
-const  TAB2 = 0x00000800;
-const XTABS = 0x00000c00; /* expand tabs on output */
-const CRDELAY = 0x00003000; /* \r delay */
-const  CR0 = 0x00000000;
-const  CR1 = 0x00001000; /* tn 300 */
-const  CR2 = 0x00002000; /* tty 37 */
-const  CR3 = 0x00003000; /* concept 100 */
-const VTDELAY = 0x00004000; /* vertical tab delay */
-const  FF0 = 0x00000000;
-const  FF1 = 0x00004000; /* tty 37 */
-const BSDELAY = 0x00008000; /* \b delay */
-const  BS0 = 0x00000000;
-const  BS1 = 0x00008000;
-const CRTBS = 0x00010000; /* do backspacing for crt */
-const PRTERA = 0x00020000; /* \ ... / erase */
-const CRTERA = 0x00040000; /* " \b " to wipe out char */
-const TILDE = 0x00080000; /* hazeltine tilde kludge */
-const MDMBUF = 0x00100000; /* start/stop output on carrier intr */
-const LITOUT = 0x00200000; /* literal output */
-const TOSTOP = 0x00400000; /* SIGTTOU on background output */
-const FLUSHO = 0x00800000; /* flush output to terminal */
-const NOHANG = 0x01000000; /* no SIGHUP on carrier drop */
-const L001000 = 0x02000000;
-const CRTKIL = 0x04000000; /* kill line with " \b " */
-const PASS8 = 0x08000000;
-const CTLECH = 0x10000000; /* echo control chars as ^X */
-const PENDIN = 0x20000000; /* tp->t_rawq needs reread */
-const DECCTQ = 0x40000000; /* only ^Q starts after ^S */
-const NOFLSH = 0x80000000; /* no output flush on signal */
-
-struct tchars {
-	unsigned six;	/* always equals 6 */
-	opaque chars[6];
-	/* chars[0] == interrupt char */
-	/* chars[1] == quit char */
-	/* chars[2] == start output char */
-	/* chars[3] == stop output char */
-	/* chars[4] == end-of-file char */
-	/* chars[5] == input delimiter (like nl) */
-};
-
-struct ltchars {
-	unsigned six;	/* always equals 6 */
-	opaque chars[6];
-	/* chars[0] == stop process signal */
-	/* chars[1] == delayed stop process signal */
-	/* chars[2] == reprint line */
-	/* chars[3] == flush output */
-	/* chars[4] == word erase */
-	/* chars[5] == literal next character */
-	unsigned mode;
-};
-
-struct rex_ttysize {
-	int ts_lines;
-	int ts_cols;
-};
-
-struct rex_ttymode {
-    sgttyb basic;    /* standard unix tty flags */
-    tchars more; /* interrupt, kill characters, etc. */
-    ltchars yetmore; /* special Berkeley characters */
-    unsigned andmore;     /* and Berkeley modes */
-};
-
-/* values for andmore above */
-const LCRTBS = 0x0001;	/* do backspacing for crt */
-const LPRTERA = 0x0002;	/* \ ... / erase */
-const LCRTERA = 0x0004;	/* " \b " to wipe out char */
-const LTILDE = 0x0008;	/* hazeltine tilde kludge */
-const LMDMBUF = 0x0010;	/* start/stop output on carrier intr */
-const LLITOUT = 0x0020;	/* literal output */
-const LTOSTOP = 0x0040;	/* SIGTTOU on background output */
-const LFLUSHO = 0x0080;	/* flush output to terminal */
-const LNOHANG = 0x0100;	/* no SIGHUP on carrier drop */
-const LL001000 = 0x0200;
-const LCRTKIL = 0x0400;	/* kill line with " \b " */
-const LPASS8 = 0x0800;
-const LCTLECH = 0x1000;	/* echo control chars as ^X */
-const LPENDIN = 0x2000;	/* needs reread */
-const LDECCTQ = 0x4000;	/* only ^Q starts after ^S */
-const LNOFLSH = 0x8000;	/* no output flush on signal */
-
-program REXPROG {
-	version REXVERS {
-
-		/*
-		 * Start remote execution
-		 */
-		rex_result
-		REXPROC_START(rex_start) = 1;
-
-		/*
-		 * Wait for remote execution to terminate
-		 */
-		rex_result
-		REXPROC_WAIT(void) = 2;
-
-		/*
-		 * Send tty modes
-		 */
-		void
-		REXPROC_MODES(rex_ttymode) = 3;
-
-		/*
-		 * Send window size change
-		 */
-		void
-		REXPROC_WINCH(rex_ttysize) = 4;
-
-		/*
-		 * Send other signal
-		 */
-		void
-		REXPROC_SIGNAL(int) = 5;
-	} = 1;
-} = 100017;
diff --git a/sunrpc/rpcsvc/rquota.x b/sunrpc/rpcsvc/rquota.x
deleted file mode 100644
index c4575240d3..0000000000
--- a/sunrpc/rpcsvc/rquota.x
+++ /dev/null
@@ -1,61 +0,0 @@ 
-/* @(#)rquota.x	2.1 88/08/01 4.0 RPCSRC */
-/* @(#)rquota.x 1.2 87/09/20 Copyr 1987 Sun Micro */
-
-/*
- * Remote quota protocol
- * Requires unix authentication
- */
-
-const RQ_PATHLEN = 1024;
-
-struct getquota_args {
-	string gqa_pathp<RQ_PATHLEN>;  	/* path to filesystem of interest */
-	int gqa_uid;	        	/* inquire about quota for uid */
-};
-
-/*
- * remote quota structure
- */
-struct rquota {
-	int rq_bsize;			/* block size for block counts */
-	bool rq_active;  		/* indicates whether quota is active */
-	unsigned int rq_bhardlimit;	/* absolute limit on disk blks alloc */
-	unsigned int rq_bsoftlimit;	/* preferred limit on disk blks */
-	unsigned int rq_curblocks;	/* current block count */
-	unsigned int rq_fhardlimit;	/* absolute limit on allocated files */
-	unsigned int rq_fsoftlimit;	/* preferred file limit */
-	unsigned int rq_curfiles;	/* current # allocated files */
-	unsigned int rq_btimeleft;	/* time left for excessive disk use */
-	unsigned int rq_ftimeleft;	/* time left for excessive files */
-};
-
-enum gqr_status {
-	Q_OK = 1,		/* quota returned */
-	Q_NOQUOTA = 2,  	/* noquota for uid */
-	Q_EPERM = 3		/* no permission to access quota */
-};
-
-union getquota_rslt switch (gqr_status status) {
-case Q_OK:
-	rquota gqr_rquota;	/* valid if status == Q_OK */
-case Q_NOQUOTA:
-	void;
-case Q_EPERM:
-	void;
-};
-
-program RQUOTAPROG {
-	version RQUOTAVERS {
-		/*
-		 * Get all quotas
-		 */
-		getquota_rslt
-		RQUOTAPROC_GETQUOTA(getquota_args) = 1;
-
-		/*
-	 	 * Get active quotas only
-		 */
-		getquota_rslt
-		RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2;
-	} = 1;
-} = 100011;
diff --git a/sunrpc/rpcsvc/rstat.x b/sunrpc/rpcsvc/rstat.x
deleted file mode 100644
index 9b7b102218..0000000000
--- a/sunrpc/rpcsvc/rstat.x
+++ /dev/null
@@ -1,145 +0,0 @@ 
-/* @(#)rstat.x	2.2 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Gather statistics on remote machines
- */
-
-#ifdef RPC_HDR
-
-%#ifndef FSCALE
-%/*
-% * Scale factor for scaled integers used to count load averages.
-% */
-%#define FSHIFT  8               /* bits to right of fixed binary point */
-%#define FSCALE  (1<<FSHIFT)
-%
-%#endif /* ndef FSCALE */
-
-#endif /* def RPC_HDR */
-
-const CPUSTATES = 4;
-const DK_NDRIVE = 4;
-
-/*
- * GMT since 0:00, January 1, 1970
- */
-struct rstat_timeval {
-	unsigned int tv_sec;	/* seconds */
-	unsigned int tv_usec;	/* and microseconds */
-};
-
-struct statstime {				/* RSTATVERS_TIME */
-	int cp_time[CPUSTATES];
-	int dk_xfer[DK_NDRIVE];
-	unsigned int v_pgpgin;	/* these are cumulative sum */
-	unsigned int v_pgpgout;
-	unsigned int v_pswpin;
-	unsigned int v_pswpout;
-	unsigned int v_intr;
-	int if_ipackets;
-	int if_ierrors;
-	int if_oerrors;
-	int if_collisions;
-	unsigned int v_swtch;
-	int avenrun[3];         /* scaled by FSCALE */
-	rstat_timeval boottime;
-	rstat_timeval curtime;
-	int if_opackets;
-};
-
-struct statsswtch {			/* RSTATVERS_SWTCH */
-	int cp_time[CPUSTATES];
-	int dk_xfer[DK_NDRIVE];
-	unsigned int v_pgpgin;	/* these are cumulative sum */
-	unsigned int v_pgpgout;
-	unsigned int v_pswpin;
-	unsigned int v_pswpout;
-	unsigned int v_intr;
-	int if_ipackets;
-	int if_ierrors;
-	int if_oerrors;
-	int if_collisions;
-	unsigned int v_swtch;
-	unsigned int avenrun[3];/* scaled by FSCALE */
-	rstat_timeval boottime;
-	int if_opackets;
-};
-
-struct stats {				/* RSTATVERS_ORIG */
-	int cp_time[CPUSTATES];
-	int dk_xfer[DK_NDRIVE];
-	unsigned int v_pgpgin;	/* these are cumulative sum */
-	unsigned int v_pgpgout;
-	unsigned int v_pswpin;
-	unsigned int v_pswpout;
-	unsigned int v_intr;
-	int if_ipackets;
-	int if_ierrors;
-	int if_oerrors;
-	int if_collisions;
-	int if_opackets;
-};
-
-
-program RSTATPROG {
-	/*
-	 * Newest version includes current time and context switching info
-	 */
-	version RSTATVERS_TIME {
-		statstime
-		RSTATPROC_STATS(void) = 1;
-
-		unsigned int
-		RSTATPROC_HAVEDISK(void) = 2;
-	} = 3;
-	/*
-	 * Does not have current time
-	 */
-	version RSTATVERS_SWTCH {
-		statsswtch
-		RSTATPROC_STATS(void) = 1;
-
-		unsigned int
-		RSTATPROC_HAVEDISK(void) = 2;
-	} = 2;
-	/*
-	 * Old version has no info about current time or context switching
-	 */
-	version RSTATVERS_ORIG {
-		stats
-		RSTATPROC_STATS(void) = 1;
-
-		unsigned int
-		RSTATPROC_HAVEDISK(void) = 2;
-	} = 1;
-} = 100001;
diff --git a/sunrpc/rpcsvc/rusers.x b/sunrpc/rpcsvc/rusers.x
deleted file mode 100644
index 5bbfe97e79..0000000000
--- a/sunrpc/rpcsvc/rusers.x
+++ /dev/null
@@ -1,228 +0,0 @@ 
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-%/*
-% * Find out about remote users
-% */
-
-const RUSERS_MAXUSERLEN = 32;
-const RUSERS_MAXLINELEN = 32;
-const RUSERS_MAXHOSTLEN = 257;
-
-struct rusers_utmp {
-	string ut_user<RUSERS_MAXUSERLEN>;	/* aka ut_name */
-	string ut_line<RUSERS_MAXLINELEN>;	/* device */
-	string ut_host<RUSERS_MAXHOSTLEN>;	/* host user logged on from */
-	int ut_type;				/* type of entry */
-	int ut_time;				/* time entry was made */
-	unsigned int ut_idle;			/* minutes idle */
-};
-
-typedef rusers_utmp utmp_array<>;
-
-#ifdef RPC_HDR
-%
-%/*
-% * Values for ut_type field above.
-% */
-#endif
-const	RUSERS_EMPTY = 0;
-const	RUSERS_RUN_LVL = 1;
-const	RUSERS_BOOT_TIME = 2;
-const	RUSERS_OLD_TIME = 3;
-const	RUSERS_NEW_TIME = 4;
-const	RUSERS_INIT_PROCESS = 5;
-const	RUSERS_LOGIN_PROCESS = 6;
-const	RUSERS_USER_PROCESS = 7;
-const	RUSERS_DEAD_PROCESS = 8;
-const	RUSERS_ACCOUNTING = 9;
-
-program RUSERSPROG {
-
-	version RUSERSVERS_3 {
-		int
-		RUSERSPROC_NUM(void) = 1;
-
-		utmp_array
-		RUSERSPROC_NAMES(void) = 2;
-
-		utmp_array
-		RUSERSPROC_ALLNAMES(void) = 3;
-	} = 3;
-
-} = 100002;
-
-#ifdef RPC_HDR
-%
-%
-%#ifdef	__cplusplus
-%extern "C" {
-%#endif
-%
-%#include <rpc/xdr.h>
-%
-%/*
-% * The following structures are used by version 2 of the rusersd protocol.
-% * They were not developed with rpcgen, so they do not appear as RPCL.
-% */
-%
-%#define	RUSERSVERS_IDLE 2
-%#define	RUSERSVERS 3		/* current version */
-%#define	MAXUSERS 100
-%
-%/*
-% * This is the structure used in version 2 of the rusersd RPC service.
-% * It corresponds to the utmp structure for BSD systems.
-% */
-%struct ru_utmp {
-%	char	ut_line[8];		/* tty name */
-%	char	ut_name[8];		/* user id */
-%	char	ut_host[16];		/* host name, if remote */
-%	long int ut_time;		/* time on */
-%};
-%
-%struct utmparr {
-%       struct ru_utmp **uta_arr;
-%       int uta_cnt;
-%};
-%typedef struct utmparr utmparr;
-%
-%extern bool_t xdr_utmparr (XDR *xdrs, struct utmparr *objp) __THROW;
-%
-%struct utmpidle {
-%	struct ru_utmp ui_utmp;
-%	unsigned int ui_idle;
-%};
-%
-%struct utmpidlearr {
-%	struct utmpidle **uia_arr;
-%	int uia_cnt;
-%};
-%
-%extern bool_t xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp) __THROW;
-%
-%#ifdef	__cplusplus
-%}
-%#endif
-#endif
-
-
-#ifdef	RPC_XDR
-%bool_t xdr_utmp (XDR *xdrs, struct ru_utmp *objp);
-%
-%bool_t
-%xdr_utmp (XDR *xdrs, struct ru_utmp *objp)
-%{
-%	/* Since the fields are char foo [xxx], we should not free them. */
-%	if (xdrs->x_op != XDR_FREE)
-%	{
-%		char *ptr;
-%		unsigned int size;
-%		ptr = objp->ut_line;
-%		size = sizeof (objp->ut_line);
-%		if (!xdr_bytes (xdrs, &ptr, &size, size)) {
-%			return (FALSE);
-%		}
-%		ptr = objp->ut_name;
-%		size = sizeof (objp->ut_name);
-%		if (!xdr_bytes (xdrs, &ptr, &size, size)) {
-%			return (FALSE);
-%		}
-%		ptr = objp->ut_host;
-%		size = sizeof (objp->ut_host);
-%		if (!xdr_bytes (xdrs, &ptr, &size, size)) {
-%			return (FALSE);
-%		}
-%	}
-%	if (!xdr_long(xdrs, &objp->ut_time)) {
-%		return (FALSE);
-%	}
-%	return (TRUE);
-%}
-%
-%bool_t xdr_utmpptr(XDR *xdrs, struct ru_utmp **objpp);
-%
-%bool_t
-%xdr_utmpptr (XDR *xdrs, struct ru_utmp **objpp)
-%{
-%	if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp),
-%			   (xdrproc_t) xdr_utmp)) {
-%		return (FALSE);
-%	}
-%	return (TRUE);
-%}
-%
-%bool_t
-%xdr_utmparr (XDR *xdrs, struct utmparr *objp)
-%{
-%	if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt,
-%		       MAXUSERS, sizeof(struct ru_utmp *),
-%		       (xdrproc_t) xdr_utmpptr)) {
-%		return (FALSE);
-%	}
-%	return (TRUE);
-%}
-%
-%bool_t xdr_utmpidle(XDR *xdrs, struct utmpidle *objp);
-%
-%bool_t
-%xdr_utmpidle (XDR *xdrs, struct utmpidle *objp)
-%{
-%	if (!xdr_utmp(xdrs, &objp->ui_utmp)) {
-%		return (FALSE);
-%	}
-%	if (!xdr_u_int(xdrs, &objp->ui_idle)) {
-%		return (FALSE);
-%	}
-%	return (TRUE);
-%}
-%
-%bool_t xdr_utmpidleptr(XDR *xdrs, struct utmpidle **objp);
-%
-%bool_t
-%xdr_utmpidleptr (XDR *xdrs, struct utmpidle **objpp)
-%{
-%	if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle),
-%			   (xdrproc_t) xdr_utmpidle)) {
-%		return (FALSE);
-%	}
-%	return (TRUE);
-%}
-%
-%bool_t
-%xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp)
-%{
-%	if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt,
-%		       MAXUSERS, sizeof(struct utmpidle *),
-%		       (xdrproc_t) xdr_utmpidleptr)) {
-%		return (FALSE);
-%	}
-%	return (TRUE);
-%}
-#endif
diff --git a/sunrpc/rpcsvc/sm_inter.x b/sunrpc/rpcsvc/sm_inter.x
deleted file mode 100644
index 767f0e0856..0000000000
--- a/sunrpc/rpcsvc/sm_inter.x
+++ /dev/null
@@ -1,110 +0,0 @@ 
-/*
- * Status monitor protocol specification
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-program SM_PROG {
-	version SM_VERS  {
-		/* res_stat = stat_succ if status monitor agrees to monitor */
-		/* res_stat = stat_fail if status monitor cannot monitor */
-		/* if res_stat == stat_succ, state = state number of site sm_name */
-		struct sm_stat_res			 SM_STAT(struct sm_name) = 1;
-
-		/* res_stat = stat_succ if status monitor agrees to monitor */
-		/* res_stat = stat_fail if status monitor cannot monitor */
-		/* stat consists of state number of local site */
-		struct sm_stat_res			 SM_MON(struct mon) = 2;
-
-		/* stat consists of state number of local site */
-		struct sm_stat				 SM_UNMON(struct mon_id) = 3;
-
-		/* stat consists of state number of local site */
-		struct sm_stat				 SM_UNMON_ALL(struct my_id) = 4;
-
-		void					 SM_SIMU_CRASH(void) = 5;
-
-	} = 1;
-} = 100024;
-
-const	SM_MAXSTRLEN = 1024;
-
-struct sm_name {
-	string mon_name<SM_MAXSTRLEN>;
-};
-
-struct my_id {
-	string	 my_name<SM_MAXSTRLEN>;		/* name of the site initiating the monitoring request*/
-	int	my_prog;			/* rpc program # of the requesting process */
-	int	my_vers;			/* rpc version # of the requesting process */
-	int	my_proc;			/* rpc procedure # of the requesting process */
-};
-
-struct mon_id {
-	string	mon_name<SM_MAXSTRLEN>;		/* name of the site to be monitored */
-	struct my_id my_id;
-};
-
-
-struct mon{
-	struct mon_id mon_id;
-	opaque priv[16]; 		/* private information to store at monitor for requesting process */
-};
-
-
-/*
- * state # of status monitor monotonically increases each time
- * status of the site changes:
- * an even number (>= 0) indicates the site is down and
- * an odd number (> 0) indicates the site is up;
- */
-struct sm_stat {
-	int state;		/* state # of status monitor */
-};
-
-enum res {
-	stat_succ = 0,		/* status monitor agrees to monitor */
-	stat_fail = 1		/* status monitor cannot monitor */
-};
-
-struct sm_stat_res {
-	res res_stat;
-	int state;
-};
-
-/*
- * structure of the status message sent back by the status monitor
- * when monitor site status changes
- */
-struct status {
-	string mon_name<SM_MAXSTRLEN>;
-	int state;
-	opaque priv[16];		/* stored private information */
-};
diff --git a/sunrpc/rpcsvc/spray.x b/sunrpc/rpcsvc/spray.x
deleted file mode 100644
index 68b7c48442..0000000000
--- a/sunrpc/rpcsvc/spray.x
+++ /dev/null
@@ -1,84 +0,0 @@ 
-/* @(#)spray.x	2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Spray a server with packets
- * Useful for testing flakiness of network interfaces
- */
-
-const SPRAYMAX = 8845;	/* max amount can spray */
-
-/*
- * GMT since 0:00, 1 January 1970
- */
-struct spraytimeval {
-	unsigned int sec;
-	unsigned int usec;
-};
-
-/*
- * spray statistics
- */
-struct spraycumul {
-	unsigned int counter;
-	spraytimeval clock;
-};
-
-/*
- * spray data
- */
-typedef opaque sprayarr<SPRAYMAX>;
-
-program SPRAYPROG {
-	version SPRAYVERS {
-		/*
-		 * Just throw away the data and increment the counter
-		 * This call never returns, so the client should always
-		 * time it out.
-		 */
-		void
-		SPRAYPROC_SPRAY(sprayarr) = 1;
-
-		/*
-		 * Get the value of the counter and elapsed time  since
-		 * last CLEAR.
-		 */
-		spraycumul
-		SPRAYPROC_GET(void) = 2;
-
-		/*
-		 * Clear the counter and reset the elapsed time
-		 */
-		void
-		SPRAYPROC_CLEAR(void) = 3;
-	} = 1;
-} = 100012;
diff --git a/sunrpc/rpcsvc/yppasswd.x b/sunrpc/rpcsvc/yppasswd.x
deleted file mode 100644
index 34e3efe3f9..0000000000
--- a/sunrpc/rpcsvc/yppasswd.x
+++ /dev/null
@@ -1,61 +0,0 @@ 
-/* @(#)yppasswd.x	2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials
- *       provided with the distribution.
- *     * Neither the name of the "Oracle America, Inc." nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * YP password update protocol
- * Requires unix authentication
- */
-program YPPASSWDPROG {
-	version YPPASSWDVERS {
-		/*
-		 * Update my passwd entry
-		 */
-		int
-		YPPASSWDPROC_UPDATE(yppasswd) = 1;
-	} = 1;
-} = 100009;
-
-
-struct passwd {
-	string pw_name<>;	/* username */
-	string pw_passwd<>;	/* encrypted password */
-	int pw_uid;		/* user id */
-	int pw_gid;		/* group id */
-	string pw_gecos<>;	/* in real life name */
-	string pw_dir<>;	/* home directory */
-	string pw_shell<>;	/* default shell */
-};
-
-struct yppasswd {
-	string oldpass<>;	/* unencrypted old password */
-	passwd newpw;		/* new passwd entry */
-};
diff --git a/sunrpc/rtime.c b/sunrpc/rtime.c
index e3cffe26d4..9c57a7dedb 100644
--- a/sunrpc/rtime.c
+++ b/sunrpc/rtime.c
@@ -142,4 +142,4 @@  rtime (struct sockaddr_in *addrp, struct rpc_timeval *timep,
   timep->tv_usec = 0;
   return 0;
 }
-libc_hidden_nolink_sunrpc (rtime, GLIBC_2_1)
+libc_hidden_nolink (rtime, GLIBC_2_1)
diff --git a/sunrpc/svc.c b/sunrpc/svc.c
index 917e9a311c..48fedd1e68 100644
--- a/sunrpc/svc.c
+++ b/sunrpc/svc.c
@@ -126,7 +126,7 @@  xprt_register (SVCXPRT *xprt)
 					       POLLRDNORM | POLLRDBAND);
     }
 }
-libc_hidden_nolink_sunrpc (xprt_register, GLIBC_2_0)
+libc_hidden_nolink (xprt_register, GLIBC_2_0)
 
 /* De-activate a transport handle. */
 void
@@ -150,7 +150,7 @@  xprt_unregister (SVCXPRT *xprt)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xprt_unregister)
 #else
-libc_hidden_nolink_sunrpc (xprt_unregister, GLIBC_2_0)
+libc_hidden_nolink (xprt_unregister, GLIBC_2_0)
 #endif
 
 
@@ -218,7 +218,7 @@  pmap_it:
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svc_register)
 #else
-libc_hidden_nolink_sunrpc (svc_register, GLIBC_2_0)
+libc_hidden_nolink (svc_register, GLIBC_2_0)
 #endif
 
 /* Remove a service program from the callout list. */
@@ -243,7 +243,7 @@  svc_unregister (rpcprog_t prog, rpcvers_t vers)
   if (is_mapped)
     pmap_unset (prog, vers);
 }
-libc_hidden_nolink_sunrpc (svc_unregister, GLIBC_2_0)
+libc_hidden_nolink (svc_unregister, GLIBC_2_0)
 
 /* ******************* REPLY GENERATION ROUTINES  ************ */
 
@@ -265,7 +265,7 @@  svc_sendreply (register SVCXPRT *xprt, xdrproc_t xdr_results,
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svc_sendreply)
 #else
-libc_hidden_nolink_sunrpc (svc_sendreply, GLIBC_2_0)
+libc_hidden_nolink (svc_sendreply, GLIBC_2_0)
 #endif
 
 /* No procedure error reply */
@@ -283,7 +283,7 @@  svcerr_noproc (register SVCXPRT *xprt)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svcerr_noproc)
 #else
-libc_hidden_nolink_sunrpc (svcerr_noproc, GLIBC_2_0)
+libc_hidden_nolink (svcerr_noproc, GLIBC_2_0)
 #endif
 
 /* Can't decode args error reply */
@@ -301,7 +301,7 @@  svcerr_decode (register SVCXPRT *xprt)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svcerr_decode)
 #else
-libc_hidden_nolink_sunrpc (svcerr_decode, GLIBC_2_0)
+libc_hidden_nolink (svcerr_decode, GLIBC_2_0)
 #endif
 
 /* Some system error */
@@ -319,7 +319,7 @@  svcerr_systemerr (register SVCXPRT *xprt)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svcerr_systemerr)
 #else
-libc_hidden_nolink_sunrpc (svcerr_systemerr, GLIBC_2_0)
+libc_hidden_nolink (svcerr_systemerr, GLIBC_2_0)
 #endif
 
 /* Authentication error reply */
@@ -334,7 +334,7 @@  svcerr_auth (SVCXPRT *xprt, enum auth_stat why)
   rply.rjcted_rply.rj_why = why;
   SVC_REPLY (xprt, &rply);
 }
-libc_hidden_nolink_sunrpc (svcerr_auth, GLIBC_2_0)
+libc_hidden_nolink (svcerr_auth, GLIBC_2_0)
 
 /* Auth too weak error reply */
 void
@@ -342,7 +342,7 @@  svcerr_weakauth (SVCXPRT *xprt)
 {
   svcerr_auth (xprt, AUTH_TOOWEAK);
 }
-libc_hidden_nolink_sunrpc (svcerr_weakauth, GLIBC_2_0)
+libc_hidden_nolink (svcerr_weakauth, GLIBC_2_0)
 
 /* Program unavailable error reply */
 void
@@ -356,7 +356,7 @@  svcerr_noprog (register SVCXPRT *xprt)
   rply.acpted_rply.ar_stat = PROG_UNAVAIL;
   SVC_REPLY (xprt, &rply);
 }
-libc_hidden_nolink_sunrpc (svcerr_noprog, GLIBC_2_0)
+libc_hidden_nolink (svcerr_noprog, GLIBC_2_0)
 
 /* Program version mismatch error reply */
 void
@@ -373,7 +373,7 @@  svcerr_progvers (register SVCXPRT *xprt, rpcvers_t low_vers,
   rply.acpted_rply.ar_vers.high = high_vers;
   SVC_REPLY (xprt, &rply);
 }
-libc_hidden_nolink_sunrpc (svcerr_progvers, GLIBC_2_0)
+libc_hidden_nolink (svcerr_progvers, GLIBC_2_0)
 
 /* ******************* SERVER INPUT STUFF ******************* */
 
@@ -402,7 +402,7 @@  svc_getreq (int rdfds)
   readfds.fds_bits[0] = rdfds;
   svc_getreqset (&readfds);
 }
-libc_hidden_nolink_sunrpc (svc_getreq, GLIBC_2_0)
+libc_hidden_nolink (svc_getreq, GLIBC_2_0)
 
 void
 svc_getreqset (fd_set *readfds)
@@ -421,7 +421,7 @@  svc_getreqset (fd_set *readfds)
     for (mask = *maskp++; (bit = ffsl (mask)); mask ^= (1L << (bit - 1)))
       svc_getreq_common (sock + bit - 1);
 }
-libc_hidden_nolink_sunrpc (svc_getreqset, GLIBC_2_0)
+libc_hidden_nolink (svc_getreqset, GLIBC_2_0)
 
 void
 svc_getreq_poll (struct pollfd *pfdp, int pollretval)
@@ -450,7 +450,7 @@  svc_getreq_poll (struct pollfd *pfdp, int pollretval)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svc_getreq_poll)
 #else
-libc_hidden_nolink_sunrpc (svc_getreq_poll, GLIBC_2_2)
+libc_hidden_nolink (svc_getreq_poll, GLIBC_2_2)
 #endif
 
 
@@ -543,7 +543,7 @@  svc_getreq_common (const int fd)
     }
   while (stat == XPRT_MOREREQS);
 }
-libc_hidden_nolink_sunrpc (svc_getreq_common, GLIBC_2_2)
+libc_hidden_nolink (svc_getreq_common, GLIBC_2_2)
 
 /* If there are no file descriptors available, then accept will fail.
    We want to delay here so the connection request can be dequeued;
diff --git a/sunrpc/svc_auth.c b/sunrpc/svc_auth.c
index 5bca9557e3..aed4487988 100644
--- a/sunrpc/svc_auth.c
+++ b/sunrpc/svc_auth.c
@@ -106,7 +106,7 @@  _authenticate (register struct svc_req *rqst, struct rpc_msg *msg)
 
   return AUTH_REJECTEDCRED;
 }
-libc_hidden_nolink_sunrpc (_authenticate, GLIBC_2_1)
+libc_hidden_nolink (_authenticate, GLIBC_2_1)
 
 static enum auth_stat
 _svcauth_null (struct svc_req *rqst, struct rpc_msg *msg)
diff --git a/sunrpc/svc_raw.c b/sunrpc/svc_raw.c
index f0176311d5..d5a3f138cb 100644
--- a/sunrpc/svc_raw.c
+++ b/sunrpc/svc_raw.c
@@ -85,7 +85,7 @@  svcraw_create (void)
   xdrmem_create (&srp->xdr_stream, srp->_raw_buf, UDPMSGSIZE, XDR_FREE);
   return &srp->server;
 }
-libc_hidden_nolink_sunrpc (svcraw_create, GLIBC_2_0)
+libc_hidden_nolink (svcraw_create, GLIBC_2_0)
 
 static enum xprt_stat
 svcraw_stat (SVCXPRT *xprt)
diff --git a/sunrpc/svc_run.c b/sunrpc/svc_run.c
index e563707fcc..f85af73c44 100644
--- a/sunrpc/svc_run.c
+++ b/sunrpc/svc_run.c
@@ -47,7 +47,7 @@  svc_exit (void)
   svc_pollfd = NULL;
   svc_max_pollfd = 0;
 }
-libc_hidden_nolink_sunrpc (svc_exit, GLIBC_2_0)
+libc_hidden_nolink (svc_exit, GLIBC_2_0)
 
 void
 svc_run (void)
@@ -105,5 +105,5 @@  svc_run (void)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svc_run)
 #else
-libc_hidden_nolink_sunrpc (svc_run, GLIBC_2_0)
+libc_hidden_nolink (svc_run, GLIBC_2_0)
 #endif
diff --git a/sunrpc/svc_tcp.c b/sunrpc/svc_tcp.c
index efbdd22548..6766c5a3cf 100644
--- a/sunrpc/svc_tcp.c
+++ b/sunrpc/svc_tcp.c
@@ -205,7 +205,7 @@  svctcp_create (int sock, u_int sendsize, u_int recvsize)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svctcp_create)
 #else
-libc_hidden_nolink_sunrpc (svctcp_create, GLIBC_2_0)
+libc_hidden_nolink (svctcp_create, GLIBC_2_0)
 #endif
 
 /*
@@ -217,7 +217,7 @@  svcfd_create (int fd, u_int sendsize, u_int recvsize)
 {
   return makefd_xprt (fd, sendsize, recvsize);
 }
-libc_hidden_nolink_sunrpc (svcfd_create, GLIBC_2_0)
+libc_hidden_nolink (svcfd_create, GLIBC_2_0)
 
 static SVCXPRT *
 makefd_xprt (int fd, u_int sendsize, u_int recvsize)
diff --git a/sunrpc/svc_udp.c b/sunrpc/svc_udp.c
index ae67c9b36a..7091e786d1 100644
--- a/sunrpc/svc_udp.c
+++ b/sunrpc/svc_udp.c
@@ -200,7 +200,7 @@  svcudp_create: xp_pad is too small for IP_PKTINFO\n"));
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svcudp_bufcreate)
 #else
-libc_hidden_nolink_sunrpc (svcudp_bufcreate, GLIBC_2_0)
+libc_hidden_nolink (svcudp_bufcreate, GLIBC_2_0)
 #endif
 
 SVCXPRT *
@@ -211,7 +211,7 @@  svcudp_create (int sock)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (svcudp_create)
 #else
-libc_hidden_nolink_sunrpc (svcudp_create, GLIBC_2_0)
+libc_hidden_nolink (svcudp_create, GLIBC_2_0)
 #endif
 
 static enum xprt_stat
@@ -507,7 +507,7 @@  svcudp_enablecache (SVCXPRT *transp, u_long size)
   su->su_cache = (char *) uc;
   return 1;
 }
-libc_hidden_nolink_sunrpc (svcudp_enablecache, GLIBC_2_0)
+libc_hidden_nolink (svcudp_enablecache, GLIBC_2_0)
 
 
 /*
diff --git a/sunrpc/svc_unix.c b/sunrpc/svc_unix.c
index e01afeabe6..2964df4a83 100644
--- a/sunrpc/svc_unix.c
+++ b/sunrpc/svc_unix.c
@@ -202,7 +202,7 @@  svcunix_create (int sock, u_int sendsize, u_int recvsize, char *path)
   xprt_register (xprt);
   return xprt;
 }
-libc_hidden_nolink_sunrpc (svcunix_create, GLIBC_2_1)
+libc_hidden_nolink (svcunix_create, GLIBC_2_1)
 
 /*
  * Like svunix_create(), except the routine takes any *open* UNIX file
@@ -213,7 +213,7 @@  svcunixfd_create (int fd, u_int sendsize, u_int recvsize)
 {
   return makefd_xprt (fd, sendsize, recvsize);
 }
-libc_hidden_nolink_sunrpc (svcunixfd_create, GLIBC_2_1)
+libc_hidden_nolink (svcunixfd_create, GLIBC_2_1)
 
 static SVCXPRT *
 makefd_xprt (int fd, u_int sendsize, u_int recvsize)
diff --git a/sunrpc/svcauth_des.c b/sunrpc/svcauth_des.c
index 7607abc818..ba5da65d9d 100644
--- a/sunrpc/svcauth_des.c
+++ b/sunrpc/svcauth_des.c
@@ -585,7 +585,7 @@  authdes_getucred (const struct authdes_cred *adc, uid_t * uid, gid_t * gid,
     groups[i] = cred->groups[i];
   return 1;
 }
-libc_hidden_nolink_sunrpc (authdes_getucred, GLIBC_2_1)
+libc_hidden_nolink (authdes_getucred, GLIBC_2_1)
 
 static void
 invalidate (char *cred)
diff --git a/sunrpc/xcrypt.c b/sunrpc/xcrypt.c
index cb04a92cd2..1a53a5096a 100644
--- a/sunrpc/xcrypt.c
+++ b/sunrpc/xcrypt.c
@@ -128,7 +128,7 @@  xencrypt (char *secret, char *passwd)
   free (buf);
   return 1;
 }
-libc_hidden_nolink_sunrpc (xencrypt, GLIBC_2_0)
+libc_hidden_nolink (xencrypt, GLIBC_2_0)
 
 /*
  * Decrypt secret key using passwd
@@ -164,7 +164,7 @@  xdecrypt (char *secret, char *passwd)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdecrypt)
 #else
-libc_hidden_nolink_sunrpc (xdecrypt, GLIBC_2_1)
+libc_hidden_nolink (xdecrypt, GLIBC_2_1)
 #endif
 
 /*
diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c
index b5fb7455e2..4c90df84c5 100644
--- a/sunrpc/xdr.c
+++ b/sunrpc/xdr.c
@@ -74,7 +74,7 @@  xdr_free (xdrproc_t proc, char *objp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_free)
 #else
-libc_hidden_nolink_sunrpc (xdr_free, GLIBC_2_0)
+libc_hidden_nolink (xdr_free, GLIBC_2_0)
 #endif
 
 /*
@@ -88,7 +88,7 @@  xdr_void (void)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_void)
 #else
-libc_hidden_nolink_sunrpc (xdr_void, GLIBC_2_0)
+libc_hidden_nolink (xdr_void, GLIBC_2_0)
 #endif
 
 /*
@@ -129,7 +129,7 @@  xdr_int (XDR *xdrs, int *ip)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_int)
 #else
-libc_hidden_nolink_sunrpc (xdr_int, GLIBC_2_0)
+libc_hidden_nolink (xdr_int, GLIBC_2_0)
 #endif
 
 /*
@@ -169,7 +169,7 @@  xdr_u_int (XDR *xdrs, u_int *up)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_u_int)
 #else
-libc_hidden_nolink_sunrpc (xdr_u_int, GLIBC_2_0)
+libc_hidden_nolink (xdr_u_int, GLIBC_2_0)
 #endif
 
 /*
@@ -197,7 +197,7 @@  xdr_long (XDR *xdrs, long *lp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_long)
 #else
-libc_hidden_nolink_sunrpc (xdr_long, GLIBC_2_0)
+libc_hidden_nolink (xdr_long, GLIBC_2_0)
 #endif
 
 /*
@@ -236,7 +236,7 @@  xdr_u_long (XDR *xdrs, u_long *ulp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_u_long)
 #else
-libc_hidden_nolink_sunrpc (xdr_u_long, GLIBC_2_0)
+libc_hidden_nolink (xdr_u_long, GLIBC_2_0)
 #endif
 
 /*
@@ -272,7 +272,7 @@  xdr_hyper (XDR *xdrs, quad_t *llp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_hyper)
 #else
-libc_hidden_nolink_sunrpc (xdr_hyper, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_hyper, GLIBC_2_1_1)
 #endif
 
 /*
@@ -308,7 +308,7 @@  xdr_u_hyper (XDR *xdrs, u_quad_t *ullp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_u_hyper)
 #else
-libc_hidden_nolink_sunrpc (xdr_u_hyper, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_u_hyper, GLIBC_2_1_1)
 #endif
 
 bool_t
@@ -319,7 +319,7 @@  xdr_longlong_t (XDR *xdrs, quad_t *llp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_longlong_t)
 #else
-libc_hidden_nolink_sunrpc (xdr_longlong_t, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_longlong_t, GLIBC_2_1_1)
 #endif
 
 bool_t
@@ -330,7 +330,7 @@  xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_u_longlong_t)
 #else
-libc_hidden_nolink_sunrpc (xdr_u_longlong_t, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_u_longlong_t, GLIBC_2_1_1)
 #endif
 
 /*
@@ -363,7 +363,7 @@  xdr_short (XDR *xdrs, short *sp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_short)
 #else
-libc_hidden_nolink_sunrpc (xdr_short, GLIBC_2_0)
+libc_hidden_nolink (xdr_short, GLIBC_2_0)
 #endif
 
 /*
@@ -396,7 +396,7 @@  xdr_u_short (XDR *xdrs, u_short *usp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_u_short)
 #else
-libc_hidden_nolink_sunrpc (xdr_u_short, GLIBC_2_0)
+libc_hidden_nolink (xdr_u_short, GLIBC_2_0)
 #endif
 
 
@@ -419,7 +419,7 @@  xdr_char (XDR *xdrs, char *cp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_char)
 #else
-libc_hidden_nolink_sunrpc (xdr_char, GLIBC_2_0)
+libc_hidden_nolink (xdr_char, GLIBC_2_0)
 #endif
 
 /*
@@ -441,7 +441,7 @@  xdr_u_char (XDR *xdrs, u_char *cp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_u_char)
 #else
-libc_hidden_nolink_sunrpc (xdr_u_char, GLIBC_2_0)
+libc_hidden_nolink (xdr_u_char, GLIBC_2_0)
 #endif
 
 /*
@@ -474,7 +474,7 @@  xdr_bool (XDR *xdrs, bool_t *bp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_bool)
 #else
-libc_hidden_nolink_sunrpc (xdr_bool, GLIBC_2_0)
+libc_hidden_nolink (xdr_bool, GLIBC_2_0)
 #endif
 
 /*
@@ -530,7 +530,7 @@  xdr_enum (XDR *xdrs, enum_t *ep)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_enum)
 #else
-libc_hidden_nolink_sunrpc (xdr_enum, GLIBC_2_0)
+libc_hidden_nolink (xdr_enum, GLIBC_2_0)
 #endif
 
 /*
@@ -585,7 +585,7 @@  xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_opaque)
 #else
-libc_hidden_nolink_sunrpc (xdr_opaque, GLIBC_2_0)
+libc_hidden_nolink (xdr_opaque, GLIBC_2_0)
 #endif
 
 /*
@@ -649,7 +649,7 @@  xdr_bytes (XDR *xdrs, char **cpp, u_int *sizep, u_int maxsize)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_bytes)
 #else
-libc_hidden_nolink_sunrpc (xdr_bytes, GLIBC_2_0)
+libc_hidden_nolink (xdr_bytes, GLIBC_2_0)
 #endif
 
 /*
@@ -664,7 +664,7 @@  xdr_netobj (XDR *xdrs, struct netobj *np)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_netobj)
 #else
-libc_hidden_nolink_sunrpc (xdr_netobj, GLIBC_2_0)
+libc_hidden_nolink (xdr_netobj, GLIBC_2_0)
 #endif
 
 /*
@@ -716,7 +716,7 @@  xdr_union (XDR *xdrs,
   return ((dfault == NULL_xdrproc_t) ? FALSE :
 	  (*dfault) (xdrs, unp, LASTUNSIGNED));
 }
-libc_hidden_nolink_sunrpc (xdr_union, GLIBC_2_0)
+libc_hidden_nolink (xdr_union, GLIBC_2_0)
 
 
 /*
@@ -807,7 +807,7 @@  xdr_string (XDR *xdrs, char **cpp, u_int maxsize)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_string)
 #else
-libc_hidden_nolink_sunrpc (xdr_string, GLIBC_2_0)
+libc_hidden_nolink (xdr_string, GLIBC_2_0)
 #endif
 
 /*
@@ -826,5 +826,5 @@  xdr_wrapstring (XDR *xdrs, char **cpp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_wrapstring)
 #else
-libc_hidden_nolink_sunrpc (xdr_wrapstring, GLIBC_2_0)
+libc_hidden_nolink (xdr_wrapstring, GLIBC_2_0)
 #endif
diff --git a/sunrpc/xdr_array.c b/sunrpc/xdr_array.c
index 18383d437e..066c16b0f6 100644
--- a/sunrpc/xdr_array.c
+++ b/sunrpc/xdr_array.c
@@ -132,7 +132,7 @@  xdr_array (XDR *xdrs,
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_array)
 #else
-libc_hidden_nolink_sunrpc (xdr_array, GLIBC_2_0)
+libc_hidden_nolink (xdr_array, GLIBC_2_0)
 #endif
 
 /*
@@ -163,4 +163,4 @@  xdr_vector (XDR *xdrs, char *basep, u_int nelem, u_int elemsize,
     }
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdr_vector, GLIBC_2_0)
+libc_hidden_nolink (xdr_vector, GLIBC_2_0)
diff --git a/sunrpc/xdr_float.c b/sunrpc/xdr_float.c
index 844a96e56e..e842543417 100644
--- a/sunrpc/xdr_float.c
+++ b/sunrpc/xdr_float.c
@@ -157,7 +157,7 @@  xdr_float (XDR *xdrs, float *fp)
 	}
 	return (FALSE);
 }
-libc_hidden_nolink_sunrpc (xdr_float, GLIBC_2_0)
+libc_hidden_nolink (xdr_float, GLIBC_2_0)
 
 /*
  * This routine works on Suns (Sky / 68000's) and Vaxen.
@@ -297,4 +297,4 @@  xdr_double (XDR *xdrs, double *dp)
 	}
 	return (FALSE);
 }
-libc_hidden_nolink_sunrpc (xdr_double, GLIBC_2_0)
+libc_hidden_nolink (xdr_double, GLIBC_2_0)
diff --git a/sunrpc/xdr_intXX_t.c b/sunrpc/xdr_intXX_t.c
index 64bc84bcbb..4294978019 100644
--- a/sunrpc/xdr_intXX_t.c
+++ b/sunrpc/xdr_intXX_t.c
@@ -48,14 +48,14 @@  xdr_int64_t (XDR *xdrs, int64_t *ip)
       return FALSE;
     }
 }
-libc_hidden_nolink_sunrpc (xdr_int64_t, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_int64_t, GLIBC_2_1_1)
 
 bool_t
 xdr_quad_t (XDR *xdrs, quad_t *ip)
 {
   return xdr_int64_t (xdrs, (int64_t *) ip);
 }
-libc_hidden_nolink_sunrpc (xdr_quad_t, GLIBC_2_3_4)
+libc_hidden_nolink (xdr_quad_t, GLIBC_2_3_4)
 
 /* XDR 64bit unsigned integers */
 bool_t
@@ -84,14 +84,14 @@  xdr_uint64_t (XDR *xdrs, uint64_t *uip)
       return FALSE;
     }
 }
-libc_hidden_nolink_sunrpc (xdr_uint64_t, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_uint64_t, GLIBC_2_1_1)
 
 bool_t
 xdr_u_quad_t (XDR *xdrs, u_quad_t *ip)
 {
   return xdr_uint64_t (xdrs, (uint64_t *) ip);
 }
-libc_hidden_nolink_sunrpc (xdr_u_quad_t, GLIBC_2_3_4)
+libc_hidden_nolink (xdr_u_quad_t, GLIBC_2_3_4)
 
 /* XDR 32bit integers */
 bool_t
@@ -109,7 +109,7 @@  xdr_int32_t (XDR *xdrs, int32_t *lp)
       return FALSE;
     }
 }
-libc_hidden_nolink_sunrpc (xdr_int32_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_int32_t, GLIBC_2_1)
 
 /* XDR 32bit unsigned integers */
 bool_t
@@ -130,7 +130,7 @@  xdr_uint32_t (XDR *xdrs, uint32_t *ulp)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_uint32_t)
 #else
-libc_hidden_nolink_sunrpc (xdr_uint32_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_uint32_t, GLIBC_2_1)
 #endif
 
 /* XDR 16bit integers */
@@ -155,7 +155,7 @@  xdr_int16_t (XDR *xdrs, int16_t *ip)
       return FALSE;
     }
 }
-libc_hidden_nolink_sunrpc (xdr_int16_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_int16_t, GLIBC_2_1)
 
 /* XDR 16bit unsigned integers */
 bool_t
@@ -179,7 +179,7 @@  xdr_uint16_t (XDR *xdrs, uint16_t *uip)
       return FALSE;
     }
 }
-libc_hidden_nolink_sunrpc (xdr_uint16_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_uint16_t, GLIBC_2_1)
 
 /* XDR 8bit integers */
 bool_t
@@ -203,7 +203,7 @@  xdr_int8_t (XDR *xdrs, int8_t *ip)
       return FALSE;
     }
 }
-libc_hidden_nolink_sunrpc (xdr_int8_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_int8_t, GLIBC_2_1)
 
 /* XDR 8bit unsigned integers */
 bool_t
@@ -227,4 +227,4 @@  xdr_uint8_t (XDR *xdrs, uint8_t *uip)
       return FALSE;
     }
 }
-libc_hidden_nolink_sunrpc (xdr_uint8_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_uint8_t, GLIBC_2_1)
diff --git a/sunrpc/xdr_mem.c b/sunrpc/xdr_mem.c
index 46a1f6f190..35a7abc307 100644
--- a/sunrpc/xdr_mem.c
+++ b/sunrpc/xdr_mem.c
@@ -82,7 +82,7 @@  xdrmem_create (XDR *xdrs, const caddr_t addr, u_int size, enum xdr_op op)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdrmem_create)
 #else
-libc_hidden_nolink_sunrpc (xdrmem_create, GLIBC_2_0)
+libc_hidden_nolink (xdrmem_create, GLIBC_2_0)
 #endif
 
 /*
diff --git a/sunrpc/xdr_rec.c b/sunrpc/xdr_rec.c
index c9a1eaad63..8e40847271 100644
--- a/sunrpc/xdr_rec.c
+++ b/sunrpc/xdr_rec.c
@@ -191,7 +191,7 @@  xdrrec_create (XDR *xdrs, u_int sendsize,
   rstrm->fbtbc = 0;
   rstrm->last_frag = TRUE;
 }
-libc_hidden_nolink_sunrpc (xdrrec_create, GLIBC_2_0)
+libc_hidden_nolink (xdrrec_create, GLIBC_2_0)
 
 
 /*
@@ -479,7 +479,7 @@  xdrrec_skiprecord (XDR *xdrs)
   rstrm->last_frag = FALSE;
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdrrec_skiprecord, GLIBC_2_0)
+libc_hidden_nolink (xdrrec_skiprecord, GLIBC_2_0)
 
 /*
  * Lookahead function.
@@ -503,7 +503,7 @@  xdrrec_eof (XDR *xdrs)
     return TRUE;
   return FALSE;
 }
-libc_hidden_nolink_sunrpc (xdrrec_eof, GLIBC_2_0)
+libc_hidden_nolink (xdrrec_eof, GLIBC_2_0)
 
 /*
  * The client must tell the package when an end-of-record has occurred.
@@ -530,7 +530,7 @@  xdrrec_endofrecord (XDR *xdrs, bool_t sendnow)
   rstrm->out_finger += BYTES_PER_XDR_UNIT;
   return TRUE;
 }
-libc_hidden_nolink_sunrpc (xdrrec_endofrecord, GLIBC_2_0)
+libc_hidden_nolink (xdrrec_endofrecord, GLIBC_2_0)
 
 
 /*
diff --git a/sunrpc/xdr_ref.c b/sunrpc/xdr_ref.c
index eab3b74227..d92d2783e5 100644
--- a/sunrpc/xdr_ref.c
+++ b/sunrpc/xdr_ref.c
@@ -93,7 +93,7 @@  xdr_reference (XDR *xdrs,
     }
   return stat;
 }
-libc_hidden_nolink_sunrpc (xdr_reference, GLIBC_2_0)
+libc_hidden_nolink (xdr_reference, GLIBC_2_0)
 
 
 /*
@@ -136,5 +136,5 @@  xdr_pointer (XDR *xdrs, char **objpp, u_int obj_size, xdrproc_t xdr_obj)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_pointer)
 #else
-libc_hidden_nolink_sunrpc (xdr_pointer, GLIBC_2_0)
+libc_hidden_nolink (xdr_pointer, GLIBC_2_0)
 #endif
diff --git a/sunrpc/xdr_sizeof.c b/sunrpc/xdr_sizeof.c
index 1592406d64..5578b0932b 100644
--- a/sunrpc/xdr_sizeof.c
+++ b/sunrpc/xdr_sizeof.c
@@ -162,5 +162,5 @@  xdr_sizeof (xdrproc_t func, void *data)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdr_sizeof)
 #else
-libc_hidden_nolink_sunrpc (xdr_sizeof, GLIBC_2_1)
+libc_hidden_nolink (xdr_sizeof, GLIBC_2_1)
 #endif
diff --git a/sunrpc/xdr_stdio.c b/sunrpc/xdr_stdio.c
index 0c2cbb78de..5de841fa53 100644
--- a/sunrpc/xdr_stdio.c
+++ b/sunrpc/xdr_stdio.c
@@ -193,5 +193,5 @@  xdrstdio_putint32 (XDR *xdrs, const int32_t *ip)
 #ifdef EXPORT_RPC_SYMBOLS
 libc_hidden_def (xdrstdio_create)
 #else
-libc_hidden_nolink_sunrpc (xdrstdio_create, GLIBC_2_0)
+libc_hidden_nolink (xdrstdio_create, GLIBC_2_0)
 #endif