diff --git a/newlib/ChangeLog b/newlib/ChangeLog index ecd02754e..14be98efb 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,13 @@ +2010-03-02 Charles Wilson + + * libc/xdr/README: Correct grammatical errors. + * libc/include/rpc/types.h: Add public types used + by RPC implementations. + * libc/include/rpc/xdr.h: Add defines used by RPC + implementations. + * libc/xdr/Makefile.am: Eliminate automake warning. + * libc/xdr/Makefile.in: Regenerate. + 2010-03-02 Corinna Vinschen * libc/xdr/Makefile.in: Regenerate. diff --git a/newlib/libc/include/rpc/types.h b/newlib/libc/include/rpc/types.h index e75b037f0..7bb8c997b 100644 --- a/newlib/libc/include/rpc/types.h +++ b/newlib/libc/include/rpc/types.h @@ -52,6 +52,12 @@ typedef int64_t quad_t; typedef int32_t bool_t; typedef int32_t enum_t; +typedef u_int32_t rpcprog_t; +typedef u_int32_t rpcvers_t; +typedef u_int32_t rpcproc_t; +typedef u_int32_t rpcprot_t; +typedef u_int32_t rpcport_t; +typedef int32_t rpc_inline_t; #ifndef NULL # define NULL 0 diff --git a/newlib/libc/include/rpc/xdr.h b/newlib/libc/include/rpc/xdr.h index b129321ae..4f93bf38e 100644 --- a/newlib/libc/include/rpc/xdr.h +++ b/newlib/libc/include/rpc/xdr.h @@ -223,6 +223,16 @@ typedef bool_t _EXFNPTR(xdrproc_t, (XDR *, ...)); (*(xdrs)->x_ops->x_destroy)(xdrs); \ } while (0) +/* + * Solaris strips the '_t' from these types -- not sure why. + * But, let's be compatible. + */ +#define xdr_rpcvers(xdrs, versp) xdr_u_int32(xdrs, versp) +#define xdr_rpcprog(xdrs, progp) xdr_u_int32(xdrs, progp) +#define xdr_rpcproc(xdrs, procp) xdr_u_int32(xdrs, procp) +#define xdr_rpcprot(xdrs, protp) xdr_u_int32(xdrs, protp) +#define xdr_rpcport(xdrs, portp) xdr_u_int32(xdrs, portp) + /* * Support struct for discriminated unions. * You create an array of xdrdiscrim structures, terminated with diff --git a/newlib/libc/xdr/Makefile.am b/newlib/libc/xdr/Makefile.am index 90e4b319a..3214ad6eb 100644 --- a/newlib/libc/xdr/Makefile.am +++ b/newlib/libc/xdr/Makefile.am @@ -17,7 +17,7 @@ GENERAL_SOURCES = \ STDIO_SOURCES = \ xdr_stdio.c -EXTRA_SOURCES = \ +EXTRA_SRC = \ xdr_float_vax.c ## None of these functions are specified by EL/IX @@ -43,7 +43,7 @@ endif endif endif -EXTRA_DIST = README $(EXTRA_SOURCES) +EXTRA_DIST = README $(EXTRA_SRC) libxdr_la_LDFLAGS = -Xcompiler -nostdlib diff --git a/newlib/libc/xdr/Makefile.in b/newlib/libc/xdr/Makefile.in index 7e79aa1fd..c387da9ab 100644 --- a/newlib/libc/xdr/Makefile.in +++ b/newlib/libc/xdr/Makefile.in @@ -253,7 +253,7 @@ GENERAL_SOURCES = \ STDIO_SOURCES = \ xdr_stdio.c -EXTRA_SOURCES = \ +EXTRA_SRC = \ xdr_float_vax.c @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@ELIX_LEVEL_4_FALSE@@HAVE_STDIO_DIR_FALSE@ELIX_SOURCES = $(GENERAL_SOURCES) @@ -262,7 +262,7 @@ EXTRA_SOURCES = \ @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_TRUE@ELIX_SOURCES = @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_TRUE@ELIX_SOURCES = @ELIX_LEVEL_1_TRUE@ELIX_SOURCES = -EXTRA_DIST = README $(EXTRA_SOURCES) +EXTRA_DIST = README $(EXTRA_SRC) libxdr_la_LDFLAGS = -Xcompiler -nostdlib @USE_LIBTOOL_TRUE@noinst_LTLIBRARIES = libxdr.la @USE_LIBTOOL_TRUE@libxdr_la_SOURCES = dummy.c $(ELIX_SOURCES) diff --git a/newlib/libc/xdr/README b/newlib/libc/xdr/README index 51870f818..eaae28364 100644 --- a/newlib/libc/xdr/README +++ b/newlib/libc/xdr/README @@ -1,9 +1,10 @@ INTRODUCTION ====================== -This directory contains a port of the Sun RPC code (derived -from the relicensed -- to 3-clause BSD -- implementation in -Fedora 11's libtirpc package version 0.1.10-7). It has been -adapted for newlib in the following ways: +This directory contains a port of eXternal Data Representation +(XDR) code from SunRPC (derived from the relicensed -- to +3-clause BSD -- implementation in Fedora 11's libtirpc package +version 0.1.10-7). It has been adapted for newlib in the +following ways: 1) xdr_* functions for fixed-width integral types have been added, such as xdr_int32_t() and similar. The implementation @@ -58,7 +59,7 @@ xdr_float.c: ... #elif defined(__vax__) #include "xdr_float_vax.c" - +#else defined(__my_platform__) + +#elif defined(__my_platform__) +#include "xdr_float_my_platform.c" #endif @@ -121,7 +122,7 @@ The desired callback can be registered by calling: The return value is the "old" function pointer, which may be NULL. -However, neither the typedef or the registration function +However, neither the typedef nor the registration function are declared in the public headers. Clients wishing to use them must either declare the necessary symbols manually, or #include "xdr_private.h". More on this point, below. @@ -143,13 +144,13 @@ For instance: ... } -Will cause xdr-generated error messages to go to stderr. +will cause xdr-generated error messages to go to stderr. It is not expected that end-user applications will make use of this facility. Rather, it is expected that IF certain *platforms* desire that these error messages be recorded, -rather expecting client apps print error messages as -necessary, then those platforms will, in their startup +instead of expecting client apps to print error messages as +necessary (*), then those platforms will, in their startup objects or static initialization, direct these messages to a logging facility, strace debug facility, etc. @@ -158,14 +159,15 @@ Therefore, the platform startup code, if part of newlib, can from that file. However, most newlib targets will probably be satisfied with -the default (silent) behavior. Note that the original Sun RPC, -as well as the glibc implementation, print these error messages -to stderr. Cygwin, for greater similarity to glibc, registers -an error message handler similar to the example above, within -its startup code. +the default (silent) behavior. Note that the original Sun RPC +implementation of XDR, as well as the glibc implementation, +print these error messages to stderr. Cygwin, for greater +similarity to glibc, registers an error message handler similar +to the example above, within its startup code. -(*) Client apps should already check for FALSE return values; - in this case they would then check errno and act appropriately. +(*) Client apps should already check for FALSE return values. + In this case when xdr function return FALSE, the client + app would then check errno and act appropriately. LICENSING AND PEDIGREE @@ -185,7 +187,7 @@ As documented in the libtirpc rpm.spec file from Fedora 11: So, in the XDR implementation from Fedora 11's libtirpc package, after the modification above by Tom Callaway, each file carries -the 3-clause BSD license, and not the so-called "SunRPC" license. +the 3-clause BSD license and not the so-called "SunRPC" license. It is from this version that the newlib implementation here was derived, with the modifications described in the introduction, above.