Module Name:    src
Committed By:   riastradh
Date:           Fri Apr 10 22:44:20 UTC 2015

Modified Files:
        src/external/cddl/osnet/dist/uts/common/rpc: types.h xdr.c xdr.h
        src/external/cddl/osnet/lib/libnvpair: Makefile

Log Message:
Use the upstream xdr, with a rename dance to avoid clash with libc.

The upstream xdr provides some functionality expected by the upstream
libnvpair which our libc's xdr does not provide.

When modifying, double-check that libnvpair.so defines no xdr_*
symbols, only _solaris_xdr_*.  (XXX Put this note somewhere...)


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 \
    src/external/cddl/osnet/dist/uts/common/rpc/types.h
cvs rdiff -u -r1.1.1.2 -r1.2 \
    src/external/cddl/osnet/dist/uts/common/rpc/xdr.c \
    src/external/cddl/osnet/dist/uts/common/rpc/xdr.h
cvs rdiff -u -r1.6 -r1.7 src/external/cddl/osnet/lib/libnvpair/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/cddl/osnet/dist/uts/common/rpc/types.h
diff -u src/external/cddl/osnet/dist/uts/common/rpc/types.h:1.1.1.1 src/external/cddl/osnet/dist/uts/common/rpc/types.h:1.2
--- src/external/cddl/osnet/dist/uts/common/rpc/types.h:1.1.1.1	Fri Aug  7 18:33:45 2009
+++ src/external/cddl/osnet/dist/uts/common/rpc/types.h	Fri Apr 10 22:44:20 2015
@@ -88,6 +88,10 @@ typedef long rpc_inline_t;
 #endif
 
 #ifndef	_KERNEL
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
 #define	mem_alloc(bsize)	malloc(bsize)
 #define	mem_free(ptr, bsize)	free(ptr)
 #else

Index: src/external/cddl/osnet/dist/uts/common/rpc/xdr.c
diff -u src/external/cddl/osnet/dist/uts/common/rpc/xdr.c:1.1.1.2 src/external/cddl/osnet/dist/uts/common/rpc/xdr.c:1.2
--- src/external/cddl/osnet/dist/uts/common/rpc/xdr.c:1.1.1.2	Sat Feb 27 22:31:47 2010
+++ src/external/cddl/osnet/dist/uts/common/rpc/xdr.c	Fri Apr 10 22:44:20 2015
@@ -47,10 +47,17 @@
 #include <rpc/xdr.h>
 #include <sys/isa_defs.h>
 
+#ifdef __NetBSD__
+__weak_alias(_solaris_xdr_int32_t,_solaris_xdr_int)
+__weak_alias(_solaris_xdr_uint32_t,_solaris_xdr_u_int)
+__weak_alias(_solaris_xdr_int64_t,_solaris_xdr_longlong_t)
+__weak_alias(_solaris_xdr_uint64_t,_solaris_xdr_u_longlong_t)
+#else
 #pragma weak xdr_int32_t = xdr_int
 #pragma weak xdr_uint32_t = xdr_u_int
 #pragma weak xdr_int64_t = xdr_longlong_t
 #pragma weak xdr_uint64_t = xdr_u_longlong_t
+#endif
 
 #if !defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
 #error "Exactly one of _BIG_ENDIAN or _LITTLE_ENDIAN must be defined"
Index: src/external/cddl/osnet/dist/uts/common/rpc/xdr.h
diff -u src/external/cddl/osnet/dist/uts/common/rpc/xdr.h:1.1.1.2 src/external/cddl/osnet/dist/uts/common/rpc/xdr.h:1.2
--- src/external/cddl/osnet/dist/uts/common/rpc/xdr.h:1.1.1.2	Sat Feb 27 22:31:47 2010
+++ src/external/cddl/osnet/dist/uts/common/rpc/xdr.h	Fri Apr 10 22:44:20 2015
@@ -46,6 +46,39 @@
 #include <sys/stream.h>
 #endif
 
+#ifdef __NetBSD__		/* Avoid conflicts with libc xdr.  */
+/* xdr.c */
+#define	xdr_bool		_solaris_xdr_bool
+#define	xdr_bytes		_solaris_xdr_bytes
+#define	xdr_char		_solaris_xdr_char
+#define	xdr_enum		_solaris_xdr_enum
+#define	xdr_free		_solaris_xdr_free
+#define	xdr_int			_solaris_xdr_int
+#define	xdr_int32_t		_solaris_xdr_int32_t
+#define	xdr_int64_t		_solaris_xdr_int64_t
+#define	xdr_longlong_t		_solaris_xdr_longlong_t
+#define	xdr_netobj		_solaris_xdr_netobj
+#define	xdr_opaque		_solaris_xdr_opaque
+#define	xdr_short		_solaris_xdr_short
+#define	xdr_string		_solaris_xdr_string
+#define	xdr_u_char		_solaris_xdr_u_char
+#define	xdr_u_int		_solaris_xdr_u_int
+#define	xdr_u_longlong_t	_solaris_xdr_u_longlong_t
+#define	xdr_u_short		_solaris_xdr_u_short
+#define	xdr_uint32_t		_solaris_xdr_uint32_t
+#define	xdr_uint64_t		_solaris_xdr_uint64_t
+#define	xdr_union		_solaris_xdr_union
+#define	xdr_vector		_solaris_xdr_vector
+#define	xdr_void		_solaris_xdr_void
+#define	xdr_wrapstring		_solaris_xdr_wrapstring
+
+/* xdr_array.c */
+#define	xdr_array		_solaris_xdr_array
+
+/* xdr_mem.c */
+#define	xdrmem_create		_solaris_xdrmem_create
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -540,7 +573,6 @@ typedef struct xdr_bytesrec xdr_bytesrec
  * XDR_RDMANOCHUNK - for xdr implementaion over RDMA, sets private flags in
  *                   the XDR stream moving over RDMA.
  */
-#ifdef _KERNEL
 #define	XDR_PEEK		2
 #define	XDR_SKIPBYTES		3
 #define	XDR_RDMA_GET_FLAGS	4
@@ -551,7 +583,6 @@ typedef struct xdr_bytesrec xdr_bytesrec
 #define	XDR_RDMA_GET_WLIST	9
 #define	XDR_RDMA_GET_WCINFO	10
 #define	XDR_RDMA_GET_RLIST	11
-#endif
 
 /*
  * These are the public routines for the various implementations of

Index: src/external/cddl/osnet/lib/libnvpair/Makefile
diff -u src/external/cddl/osnet/lib/libnvpair/Makefile:1.6 src/external/cddl/osnet/lib/libnvpair/Makefile:1.7
--- src/external/cddl/osnet/lib/libnvpair/Makefile:1.6	Thu Jan 13 23:18:24 2011
+++ src/external/cddl/osnet/lib/libnvpair/Makefile	Fri Apr 10 22:44:20 2015
@@ -1,13 +1,17 @@
-#	$NetBSD: Makefile,v 1.6 2011/01/13 23:18:24 haad Exp $
+#	$NetBSD: Makefile,v 1.7 2015/04/10 22:44:20 riastradh Exp $
 
 .PATH:  ${.CURDIR}/../../dist/lib/libnvpair
 .PATH:  ${.CURDIR}/../../dist/common/nvpair
+.PATH:  ${.CURDIR}/../../dist/uts/common/rpc
 
 CPPFLAGS+=-Wall -Wno-unknown-pragmas
 
 LIB=	nvpair
 
 SRCS=	libnvpair.c nvpair_alloc_system.c nvpair_alloc_fixed.c nvpair.c
+SRCS+=	xdr.c
+SRCS+=	xdr_array.c
+SRCS+=	xdr_mem.c
 
 .include "../../Makefile.zfs"
 .include <bsd.lib.mk>

Reply via email to