diff --git a/Makefile b/Makefile
index 6dcfe40c25..eb6ac71a97 100644
--- a/Makefile
+++ b/Makefile
@@ -585,6 +585,10 @@ $(tests-container) $(addsuffix /tests,$(subdirs)) : \
 $(objpfx)testroot.pristine/install.stamp :
 	test -d $(objpfx)testroot.pristine || \
 	  mkdir $(objpfx)testroot.pristine
+	# We need a writable /etc for some of the tests.
+	test -d $(objpfx)testroot.pristine/etc || \
+	  mkdir $(objpfx)testroot.pristine/etc && \
+	  chmod 777 $(objpfx)testroot.pristine/etc
 	# We need a working /bin/sh for some of the tests.
 	test -d $(objpfx)testroot.pristine/bin || \
 	  mkdir $(objpfx)testroot.pristine/bin
diff --git a/NEWS b/NEWS
index cfaf50c816..e474a9a5e3 100644
--- a/NEWS
+++ b/NEWS
@@ -33,6 +33,13 @@ Major new features:
 
 Deprecated and removed features, and other changes affecting compatibility:
 
+* Remove configure option --enable-obsolete-rpc. Sun RPC was removed from glibc.
+  This includes rpcgen program, librpcsvc, and Sun RPC headers. Backward
+  compatibility for old programs is kept only for architectures and ABIs that
+  have been added in or before version 2.28. New programs need to use TI-RPC
+  <http://git.linux-nfs.org/?p=steved/libtirpc.git;a=summary> and rpcsvc-proto
+  <https://github.com/thkukuk/rpcsvc-proto>.
+
 * Remove configure option --enable-obsolete-nsl. libnsl is only built as shared
   library for backward compatibility and the NSS modules libnss_compat,
   libnss_nis and libnss_nisplus are not built at all, libnsl's headers aren't
diff --git a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
index aa44107ad6..2f4ef195bb 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
@@ -14212,20 +14187,16 @@ getrpcent_r.c
 rpc_common.c
 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 9eb71a81b7..16b2cf9999 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 Systemtap <sys/sdt.h> probes should be defined.  */
 #undef USE_STAP_PROBE
 
diff --git a/config.make.in b/config.make.in
index cefb6d4a90..1ac9417245 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-crypt = @build_crypt@
 build-nscd = @build_nscd@
 use-nscd = @use_nscd@
diff --git a/configure b/configure
index 793c0068cc..4795e721e5 100755
--- a/configure
+++ b/configure
@@ -673,7 +673,6 @@ base_machine
 have_tunables
 build_pt_chown
 build_nscd
-link_obsolete_rpc
 libc_cv_static_nss_crypt
 libc_cv_nss_crypt
 build_crypt
@@ -784,7 +783,6 @@ enable_multi_arch
 enable_experimental_malloc
 enable_crypt
 enable_nss_crypt
-enable_obsolete_rpc
 enable_systemtap
 enable_build_nscd
 enable_nscd
@@ -1455,8 +1453,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-systemtap      enable systemtap static probe points [default=no]
   --disable-build-nscd    disable building and installing the nscd daemon
   --disable-nscd          library functions will not contact the nscd daemon
@@ -3636,20 +3632,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-systemtap was given.
 if test "${enable_systemtap+set}" = set; then :
   enableval=$enable_systemtap; systemtap=$enableval
diff --git a/configure.ac b/configure.ac
index 33a1189804..93e68fb696 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([systemtap],
               [AS_HELP_STRING([--enable-systemtap],
 	       [enable systemtap static probe points @<:@default=no@:>@])],
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 9b8a6f11ec..7cb5b57275 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 7cb307246a..9ba89bcf2b 100644
--- a/manual/nss.texi
+++ b/manual/nss.texi
@@ -334,9 +334,7 @@ traditionally handled in a special way.  The appropriate files in the
 with a @code{+} character was found NIS was used.  This kind of lookup
 was removed and now 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 95c7fba3b8..4971675a4c 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -395,8 +395,6 @@ class Context(object):
                                 {'arch': 'i686', 'ccopts': '-m32 -march=i686'}],
                         extra_glibcs=[{'variant': 'disable-multi-arch',
                                        'cfg': ['--disable-multi-arch']},
-                                      {'variant': 'enable-obsolete',
-                                       'cfg': ['--enable-obsolete-rpc']},
                                       {'variant': 'static-pie',
                                        'cfg': ['--enable-static-pie']},
                                       {'variant': 'x32-static-pie',
@@ -410,10 +408,6 @@ class Context(object):
                                        'arch': 'i686',
                                        'ccopts': '-m32 -march=i686',
                                        'cfg': ['--disable-multi-arch']},
-                                      {'variant': 'enable-obsolete',
-                                       'arch': 'i686',
-                                       'ccopts': '-m32 -march=i686',
-                                       'cfg': ['--enable-obsolete-rpc']},
                                       {'arch': 'i486',
                                        'ccopts': '-m32 -march=i486'},
                                       {'arch': 'i586',
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index d5840d0770..671d4ccc24 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -22,11 +22,13 @@ subdir	:= sunrpc
 
 include ../Makeconfig
 
+ifdef have-GLIBC_2.28
+
 # The code in this subdirectory is taken from Sun's RPCSRC-4.0
 # 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 +47,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 +65,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 +79,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), \
@@ -127,6 +86,8 @@ rpc-compat-routines.os = $(addprefix $(objpfx), \
 extra-objs += $(addsuffix .os,$(rpc-compat-routines))
 endif
 
+endif # have-GLIBC_2.28
+
 include ../Rules
 
 ifeq (yes,$(build-shared))
@@ -137,19 +98,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 +111,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/rpcgen.c b/sunrpc/rpcgen.c
deleted file mode 100644
index 1b455ba243..0000000000
--- a/sunrpc/rpcgen.c
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Empty file expected by glibc's standard build rules for
-   executables.  */
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
