aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2019-08-07 01:41:17 +0000
committerXin LI <delphij@FreeBSD.org>2019-08-07 01:41:17 +0000
commita15cb219c6f2b8ed16179c2fce882a2ff327b753 (patch)
tree349e309b3dc2c04b7d3023b638aa084ff4456645
parent67b3fe8ecfee0266f3aaabc0c04e0b9de1af45ec (diff)
downloadsrc-a15cb219c6f2b8ed16179c2fce882a2ff327b753.tar.gz
src-a15cb219c6f2b8ed16179c2fce882a2ff327b753.zip
Expose zlib's utility functions in Z_SOLO library when building kernel.
This allows kernel code to reuse zlib's implementation. PR: 229763 Reviewed by: Yoshihiro Ota <ota j email ne jp> Relnotes: yes Differential Revision: https://reviews.freebsd.org/D21156
Notes
Notes: svn path=/head/; revision=350670
-rw-r--r--sys/conf/files39
-rw-r--r--sys/conf/kern.pre.mk4
-rw-r--r--sys/conf/kmod.mk2
-rw-r--r--sys/contrib/zlib/deflate.c4
-rw-r--r--sys/contrib/zlib/infback.c4
-rw-r--r--sys/contrib/zlib/inflate.c4
-rw-r--r--sys/contrib/zlib/zconf.h12
-rw-r--r--sys/contrib/zlib/zlib.h5
-rw-r--r--sys/contrib/zlib/zutil.h2
-rw-r--r--sys/dev/zlib/zcalloc.c7
-rw-r--r--sys/dev/zlib/zcalloc.h7
-rw-r--r--sys/modules/crypto/Makefile1
-rw-r--r--sys/modules/mxge/mxge/Makefile2
-rw-r--r--sys/modules/zfs/Makefile1
-rw-r--r--sys/modules/zlib/Makefile4
15 files changed, 50 insertions, 48 deletions
diff --git a/sys/conf/files b/sys/conf/files
index 00815a6143c7..ca58e4d8b666 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -273,7 +273,7 @@ cddl/contrib/opensolaris/uts/common/os/callb.c optional zfs compile-with "${Z
cddl/contrib/opensolaris/uts/common/os/fm.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/os/list.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/os/nvpair_alloc_system.c optional zfs compile-with "${ZFS_C}"
-cddl/contrib/opensolaris/uts/common/zmod/zmod.c optional zfs compile-with "${ZFS_C} ${ZLIB_CFLAGS}"
+cddl/contrib/opensolaris/uts/common/zmod/zmod.c optional zfs compile-with "${ZFS_C}"
# zfs lua support
cddl/contrib/opensolaris/uts/common/fs/zfs/lua/lapi.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/uts/common/fs/zfs/lua/lauxlib.c optional zfs compile-with "${ZFS_C}"
@@ -2443,8 +2443,7 @@ mwlboot.fw optional mwlfw \
compile-with "${NORMAL_FW}" \
no-obj no-implicit-rule \
clean "mwlboot.fw"
-dev/mxge/if_mxge.c optional mxge pci \
- compile-with "${ZLIB_C}"
+dev/mxge/if_mxge.c optional mxge pci
dev/mxge/mxge_eth_z8e.c optional mxge pci
dev/mxge/mxge_ethp_z8e.c optional mxge pci
dev/mxge/mxge_rss_eth_z8e.c optional mxge pci
@@ -3999,35 +3998,32 @@ libkern/timingsafe_bcmp.c standard
libkern/zlib.c optional crypto | geom_uzip | ipsec | \
ipsec_support | mxge | netgraph_deflate | ddb_ctf | gzio
contrib/zlib/adler32.c optional crypto | geom_uzip | ipsec | \
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
+contrib/zlib/compress.c optional crypto | geom_uzip | ipsec | \
ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C}"
+ compile-with "${NORMAL_C} -Wno-cast-qual"
contrib/zlib/crc32.c optional crypto | geom_uzip | ipsec | \
- ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C} -Wno-cast-qual"
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
contrib/zlib/deflate.c optional crypto | geom_uzip | ipsec | \
ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C} -Wno-cast-qual"
+ compile-with "${NORMAL_C} -Wno-cast-qual"
contrib/zlib/inffast.c optional crypto | geom_uzip | ipsec | \
- ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C}"
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
contrib/zlib/inflate.c optional crypto | geom_uzip | ipsec | \
- ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C}"
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
contrib/zlib/inftrees.c optional crypto | geom_uzip | ipsec | \
- ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C}"
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
contrib/zlib/trees.c optional crypto | geom_uzip | ipsec | \
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
+contrib/zlib/uncompr.c optional crypto | geom_uzip | ipsec | \
ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C}"
+ compile-with "${NORMAL_C} -Wno-cast-qual"
contrib/zlib/zutil.c optional crypto | geom_uzip | ipsec | \
- ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C}"
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
dev/zlib/zlib_mod.c optional crypto | geom_uzip | ipsec | \
- ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C}"
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
dev/zlib/zcalloc.c optional crypto | geom_uzip | ipsec | \
- ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
- compile-with "${ZLIB_C}"
+ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
net/altq/altq_cbq.c optional altq
net/altq/altq_codel.c optional altq
net/altq/altq_hfsc.c optional altq
@@ -4780,8 +4776,7 @@ opencrypto/crypto.c optional crypto | ipsec | ipsec_support
opencrypto/cryptodev.c optional cryptodev
opencrypto/cryptodev_if.m optional crypto | ipsec | ipsec_support
opencrypto/cryptosoft.c optional crypto | ipsec | ipsec_support
-opencrypto/cryptodeflate.c optional crypto | ipsec | ipsec_support \
- compile-with "${ZLIB_C}"
+opencrypto/cryptodeflate.c optional crypto | ipsec | ipsec_support
opencrypto/gmac.c optional crypto | ipsec | ipsec_support
opencrypto/gfmult.c optional crypto | ipsec | ipsec_support
opencrypto/rmd160.c optional crypto | ipsec | ipsec_support
diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk
index 9c6cf221a82f..8f6d2c5fb60f 100644
--- a/sys/conf/kern.pre.mk
+++ b/sys/conf/kern.pre.mk
@@ -173,10 +173,6 @@ NORMAL_FW= uudecode -o ${.TARGET} ${.ALLSRC}
NORMAL_FWO= ${LD} -b binary --no-warn-mismatch -d -warn-common -r \
-m ${LD_EMULATION} -o ${.TARGET} ${.ALLSRC:M*.fw}
-# for zlib in the kernel
-ZLIB_CFLAGS+= -DZ_SOLO
-ZLIB_C= ${CC} -c ${ZLIB_CFLAGS} ${CFLAGS} ${.IMPSRC}
-
# for ZSTD in the kernel (include zstd/lib/freebsd before other CFLAGS)
ZSTD_C= ${CC} -c -DZSTD_HEAPMODE=1 -I$S/contrib/zstd/lib/freebsd ${CFLAGS} -I$S/contrib/zstd/lib -I$S/contrib/zstd/lib/common ${WERROR} -Wno-inline -Wno-missing-prototypes ${PROF} -U__BMI__ ${.IMPSRC}
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk
index c7857d7126d4..13e899758083 100644
--- a/sys/conf/kmod.mk
+++ b/sys/conf/kmod.mk
@@ -104,8 +104,6 @@ __KLD_SHARED=yes
__KLD_SHARED=no
.endif
-ZLIB_CFLAGS+= -DZ_SOLO
-
.if !empty(CFLAGS:M-O[23s]) && empty(CFLAGS:M-fno-strict-aliasing)
CFLAGS+= -fno-strict-aliasing
.endif
diff --git a/sys/contrib/zlib/deflate.c b/sys/contrib/zlib/deflate.c
index 7809eee81c11..58eabc9959c8 100644
--- a/sys/contrib/zlib/deflate.c
+++ b/sys/contrib/zlib/deflate.c
@@ -266,7 +266,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
strm->msg = Z_NULL;
if (strm->zalloc == (alloc_func)0) {
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
return Z_STREAM_ERROR;
#else
strm->zalloc = zcalloc;
@@ -274,7 +274,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
#endif
}
if (strm->zfree == (free_func)0)
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
return Z_STREAM_ERROR;
#else
strm->zfree = zcfree;
diff --git a/sys/contrib/zlib/infback.c b/sys/contrib/zlib/infback.c
index 59679ecbfc5d..82a641151f40 100644
--- a/sys/contrib/zlib/infback.c
+++ b/sys/contrib/zlib/infback.c
@@ -42,7 +42,7 @@ int stream_size;
return Z_STREAM_ERROR;
strm->msg = Z_NULL; /* in case we return an error */
if (strm->zalloc == (alloc_func)0) {
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
return Z_STREAM_ERROR;
#else
strm->zalloc = zcalloc;
@@ -50,7 +50,7 @@ int stream_size;
#endif
}
if (strm->zfree == (free_func)0)
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
return Z_STREAM_ERROR;
#else
strm->zfree = zcfree;
diff --git a/sys/contrib/zlib/inflate.c b/sys/contrib/zlib/inflate.c
index ac333e8c2eda..968f98501e57 100644
--- a/sys/contrib/zlib/inflate.c
+++ b/sys/contrib/zlib/inflate.c
@@ -207,7 +207,7 @@ int stream_size;
if (strm == Z_NULL) return Z_STREAM_ERROR;
strm->msg = Z_NULL; /* in case we return an error */
if (strm->zalloc == (alloc_func)0) {
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
return Z_STREAM_ERROR;
#else
strm->zalloc = zcalloc;
@@ -215,7 +215,7 @@ int stream_size;
#endif
}
if (strm->zfree == (free_func)0)
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
return Z_STREAM_ERROR;
#else
strm->zfree = zcfree;
diff --git a/sys/contrib/zlib/zconf.h b/sys/contrib/zlib/zconf.h
index 6734ca61512f..3536a8c263f8 100644
--- a/sys/contrib/zlib/zconf.h
+++ b/sys/contrib/zlib/zconf.h
@@ -8,6 +8,12 @@
#ifndef ZCONF_H
#define ZCONF_H
+#ifdef __FreeBSD__
+#ifdef _KERNEL
+#define Z_SOLO
+#endif
+#endif
+
/*
* If you *really* need a unique prefix for all types and library functions,
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
@@ -30,7 +36,7 @@
# define adler32_combine z_adler32_combine
# define adler32_combine64 z_adler32_combine64
# define adler32_z z_adler32_z
-# ifndef Z_SOLO
+# if !defined(Z_SOLO) && !defined(_KERNEL)
# define compress z_compress
# define compress2 z_compress2
# define compressBound z_compressBound
@@ -125,12 +131,12 @@
# define inflate_copyright z_inflate_copyright
# define inflate_fast z_inflate_fast
# define inflate_table z_inflate_table
-# ifndef Z_SOLO
+# if !defined(Z_SOLO) && !defined(_KERNEL)
# define uncompress z_uncompress
# define uncompress2 z_uncompress2
# endif
# define zError z_zError
-# ifndef Z_SOLO
+# if !defined(Z_SOLO) && !defined(_KERNEL)
# define zcalloc z_zcalloc
# define zcfree z_zcfree
# endif
diff --git a/sys/contrib/zlib/zlib.h b/sys/contrib/zlib/zlib.h
index 001624e5ed85..e6f51091ab8f 100644
--- a/sys/contrib/zlib/zlib.h
+++ b/sys/contrib/zlib/zlib.h
@@ -1213,7 +1213,7 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
27-31: 0 (reserved)
*/
-#ifndef Z_SOLO
+#if !defined(Z_SOLO) || defined(_KERNEL)
/* utility functions */
@@ -1288,6 +1288,9 @@ ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen,
length of the source is *sourceLen. On return, *sourceLen is the number of
source bytes consumed.
*/
+#endif /* !Z_SOLO || _KERNEL */
+
+#ifndef Z_SOLO
/* gzip file access functions */
diff --git a/sys/contrib/zlib/zutil.h b/sys/contrib/zlib/zutil.h
index c6197540e74f..a504075bc3ec 100644
--- a/sys/contrib/zlib/zutil.h
+++ b/sys/contrib/zlib/zutil.h
@@ -256,7 +256,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# define Tracecv(c,x)
#endif
-#ifndef Z_SOLO
+#if !defined(Z_SOLO) || defined(_KERNEL)
voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
unsigned size));
void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr));
diff --git a/sys/dev/zlib/zcalloc.c b/sys/dev/zlib/zcalloc.c
index 198633d5de39..6f2b1a17c60c 100644
--- a/sys/dev/zlib/zcalloc.c
+++ b/sys/dev/zlib/zcalloc.c
@@ -24,6 +24,13 @@ zcalloc_nowait(void *nil, u_int items, u_int size)
return mallocarray(items, size, M_ZLIB, M_NOWAIT);
}
+void *
+zcalloc(void *nil, u_int items, u_int size)
+{
+
+ return zcalloc_nowait(nil, items, size);
+}
+
void
zcfree(void *nil, void *ptr)
{
diff --git a/sys/dev/zlib/zcalloc.h b/sys/dev/zlib/zcalloc.h
index f3e33b596346..e415327af680 100644
--- a/sys/dev/zlib/zcalloc.h
+++ b/sys/dev/zlib/zcalloc.h
@@ -6,8 +6,9 @@
#ifndef _DEV_ZLIB_ZCALLOC_
#define _DEV_ZLIB_ZCALLOC_
-void * zcalloc_waitok(void *nil, u_int items, u_int size);
-void * zcalloc_nowait(void *nil, u_int items, u_int size);
-void zcfree(void *nil, void *ptr);
+#include <contrib/zlib/zutil.h>
+#undef local
+void *zcalloc_waitok(void *, u_int, u_int);
+void *zcalloc_nowait(void *, u_int, u_int);
#endif
diff --git a/sys/modules/crypto/Makefile b/sys/modules/crypto/Makefile
index 15e46057597f..09c5d710e985 100644
--- a/sys/modules/crypto/Makefile
+++ b/sys/modules/crypto/Makefile
@@ -23,7 +23,6 @@ KMOD = crypto
SRCS = crypto.c cryptodev_if.c
SRCS += criov.c cryptosoft.c xform.c
SRCS += cast.c cryptodeflate.c rmd160.c rijndael-alg-fst.c rijndael-api.c rijndael-api-fst.c
-CFLAGS.cryptodeflate.c += ${ZLIB_CFLAGS}
SRCS += skipjack.c bf_enc.c bf_ecb.c bf_skey.c
SRCS += camellia.c camellia-api.c
SRCS += des_ecb.c des_enc.c des_setkey.c
diff --git a/sys/modules/mxge/mxge/Makefile b/sys/modules/mxge/mxge/Makefile
index bedbcbe9e0c3..a924aef52021 100644
--- a/sys/modules/mxge/mxge/Makefile
+++ b/sys/modules/mxge/mxge/Makefile
@@ -5,6 +5,4 @@
KMOD= if_mxge
SRCS= if_mxge.c device_if.h bus_if.h pci_if.h opt_inet.h opt_inet6.h
-CFLAGS.if_mxge.c+= ${ZLIB_CFLAGS}
-
.include <bsd.kmod.mk>
diff --git a/sys/modules/zfs/Makefile b/sys/modules/zfs/Makefile
index 7a66499a71bd..241d10478012 100644
--- a/sys/modules/zfs/Makefile
+++ b/sys/modules/zfs/Makefile
@@ -56,7 +56,6 @@ SRCS+= nvpair_alloc_system.c
.PATH: ${SUNW}/uts/common/zmod
SRCS+= zmod.c
-CFLAGS.zmod.c+= ${ZLIB_CFLAGS}
.PATH: ${SYSDIR}/crypto/sha2
SRCS+= sha256c.c sha512c.c
diff --git a/sys/modules/zlib/Makefile b/sys/modules/zlib/Makefile
index ae6554564839..faa81a311194 100644
--- a/sys/modules/zlib/Makefile
+++ b/sys/modules/zlib/Makefile
@@ -11,16 +11,16 @@ SRCS= zlib.c
SRCS+= zcalloc.c
SRCS+= zlib_mod.c
SRCS+= adler32.c
+SRCS+= compress.c
SRCS+= crc32.c
SRCS+= deflate.c
SRCS+= inffast.c
SRCS+= inflate.c
SRCS+= inftrees.c
SRCS+= trees.c
+SRCS+= uncompr.c
SRCS+= zutil.c
-CFLAGS+=${ZLIB_CFLAGS}
-
CWARNFLAGS.compress.c+=-Wno-cast-qual # compress:49
CWARNFLAGS.deflate.c+=-Wno-cast-qual # deflate.c:415
CWARNFLAGS.uncompr.c+=-Wno-cast-qual # uncompr:49