|
@@ -1,321 +0,0 @@
|
|
|
-From e47c7c0d5a923dcdc3b302f9944eb4a70b7ee0be Mon Sep 17 00:00:00 2001
|
|
|
-From: Yonatan Komornik <11005061+yoniko@users.noreply.github.com>
|
|
|
-Date: Sun, 12 Feb 2023 12:32:31 -0800
|
|
|
-Subject: [PATCH] Fix zstd-dll build missing dependencies (#3496)
|
|
|
-
|
|
|
-* Fixes zstd-dll build (https://github.com/facebook/zstd/issues/3492):
|
|
|
-- Adds pool.o and threading.o dependency to the zstd-dll target
|
|
|
-- Moves custom allocation functions into header to avoid needing to add dependency on common.o
|
|
|
-- Adds test target for zstd-dll
|
|
|
-- Adds github workflow that buildis zstd-dll
|
|
|
-
|
|
|
-[nolange79: backport from upstream c78f434aa4f5f1097c8edb975f4c1635817a5a71]
|
|
|
-Signed-off-by: Norbert Lange <nolange79@gmail.com>
|
|
|
----
|
|
|
- .github/workflows/dev-short-tests.yml | 9 +++-
|
|
|
- contrib/linux-kernel/zstd_common_module.c | 3 --
|
|
|
- lib/common/allocations.h | 55 +++++++++++++++++++++++
|
|
|
- lib/common/pool.c | 2 +-
|
|
|
- lib/common/zstd_common.c | 35 ---------------
|
|
|
- lib/common/zstd_internal.h | 5 ---
|
|
|
- lib/compress/zstd_compress.c | 1 +
|
|
|
- lib/compress/zstd_cwksp.h | 1 +
|
|
|
- lib/compress/zstdmt_compress.c | 1 +
|
|
|
- lib/decompress/zstd_ddict.c | 1 +
|
|
|
- lib/decompress/zstd_decompress.c | 1 +
|
|
|
- programs/Makefile | 2 +-
|
|
|
- tests/Makefile | 8 +++-
|
|
|
- 13 files changed, 76 insertions(+), 48 deletions(-)
|
|
|
- create mode 100644 lib/common/allocations.h
|
|
|
-
|
|
|
-diff --git a/.github/workflows/dev-short-tests.yml b/.github/workflows/dev-short-tests.yml
|
|
|
-index 132dbb99..3ae2e9da 100644
|
|
|
---- a/.github/workflows/dev-short-tests.yml
|
|
|
-+++ b/.github/workflows/dev-short-tests.yml
|
|
|
-@@ -55,6 +55,14 @@ jobs:
|
|
|
- run: |
|
|
|
- make c89build V=1
|
|
|
-
|
|
|
-+ build-zstd-dll:
|
|
|
-+ runs-on: ubuntu-latest
|
|
|
-+ steps:
|
|
|
-+ - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # tag=v3
|
|
|
-+ - name: build zstd bin against a dynamic lib (debuglevel for more dependencies)
|
|
|
-+ run: |
|
|
|
-+ make -C lib lib-mt-release
|
|
|
-+ DEBUGLEVEL=2 make -C programs zstd-dll
|
|
|
-
|
|
|
- gcc-7-libzstd:
|
|
|
- runs-on: ubuntu-latest
|
|
|
-@@ -328,7 +336,6 @@ jobs:
|
|
|
- make -j -C programs allVariants MOREFLAGS=-O0
|
|
|
- ./tests/test-variants.sh
|
|
|
-
|
|
|
--
|
|
|
- qemu-consistency:
|
|
|
- name: QEMU ${{ matrix.name }}
|
|
|
- runs-on: ubuntu-20.04
|
|
|
-diff --git a/contrib/linux-kernel/zstd_common_module.c b/contrib/linux-kernel/zstd_common_module.c
|
|
|
-index 2fead39e..466828e3 100644
|
|
|
---- a/contrib/linux-kernel/zstd_common_module.c
|
|
|
-+++ b/contrib/linux-kernel/zstd_common_module.c
|
|
|
-@@ -24,9 +24,6 @@ EXPORT_SYMBOL_GPL(HUF_readStats_wksp);
|
|
|
- EXPORT_SYMBOL_GPL(ZSTD_isError);
|
|
|
- EXPORT_SYMBOL_GPL(ZSTD_getErrorName);
|
|
|
- EXPORT_SYMBOL_GPL(ZSTD_getErrorCode);
|
|
|
--EXPORT_SYMBOL_GPL(ZSTD_customMalloc);
|
|
|
--EXPORT_SYMBOL_GPL(ZSTD_customCalloc);
|
|
|
--EXPORT_SYMBOL_GPL(ZSTD_customFree);
|
|
|
-
|
|
|
- MODULE_LICENSE("Dual BSD/GPL");
|
|
|
- MODULE_DESCRIPTION("Zstd Common");
|
|
|
-diff --git a/lib/common/allocations.h b/lib/common/allocations.h
|
|
|
-new file mode 100644
|
|
|
-index 00000000..a3153c4b
|
|
|
---- /dev/null
|
|
|
-+++ b/lib/common/allocations.h
|
|
|
-@@ -0,0 +1,55 @@
|
|
|
-+/*
|
|
|
-+ * Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
|
-+ * All rights reserved.
|
|
|
-+ *
|
|
|
-+ * This source code is licensed under both the BSD-style license (found in the
|
|
|
-+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
|
-+ * in the COPYING file in the root directory of this source tree).
|
|
|
-+ * You may select, at your option, one of the above-listed licenses.
|
|
|
-+ */
|
|
|
-+
|
|
|
-+/* This file provides custom allocation primitives
|
|
|
-+ */
|
|
|
-+
|
|
|
-+#define ZSTD_DEPS_NEED_MALLOC
|
|
|
-+#include "zstd_deps.h" /* ZSTD_malloc, ZSTD_calloc, ZSTD_free, ZSTD_memset */
|
|
|
-+
|
|
|
-+#include "mem.h" /* MEM_STATIC */
|
|
|
-+#define ZSTD_STATIC_LINKING_ONLY
|
|
|
-+#include "../zstd.h" /* ZSTD_customMem */
|
|
|
-+
|
|
|
-+#ifndef ZSTD_ALLOCATIONS_H
|
|
|
-+#define ZSTD_ALLOCATIONS_H
|
|
|
-+
|
|
|
-+/* custom memory allocation functions */
|
|
|
-+
|
|
|
-+MEM_STATIC void* ZSTD_customMalloc(size_t size, ZSTD_customMem customMem)
|
|
|
-+{
|
|
|
-+ if (customMem.customAlloc)
|
|
|
-+ return customMem.customAlloc(customMem.opaque, size);
|
|
|
-+ return ZSTD_malloc(size);
|
|
|
-+}
|
|
|
-+
|
|
|
-+MEM_STATIC void* ZSTD_customCalloc(size_t size, ZSTD_customMem customMem)
|
|
|
-+{
|
|
|
-+ if (customMem.customAlloc) {
|
|
|
-+ /* calloc implemented as malloc+memset;
|
|
|
-+ * not as efficient as calloc, but next best guess for custom malloc */
|
|
|
-+ void* const ptr = customMem.customAlloc(customMem.opaque, size);
|
|
|
-+ ZSTD_memset(ptr, 0, size);
|
|
|
-+ return ptr;
|
|
|
-+ }
|
|
|
-+ return ZSTD_calloc(1, size);
|
|
|
-+}
|
|
|
-+
|
|
|
-+MEM_STATIC void ZSTD_customFree(void* ptr, ZSTD_customMem customMem)
|
|
|
-+{
|
|
|
-+ if (ptr!=NULL) {
|
|
|
-+ if (customMem.customFree)
|
|
|
-+ customMem.customFree(customMem.opaque, ptr);
|
|
|
-+ else
|
|
|
-+ ZSTD_free(ptr);
|
|
|
-+ }
|
|
|
-+}
|
|
|
-+
|
|
|
-+#endif /* ZSTD_ALLOCATIONS_H */
|
|
|
-diff --git a/lib/common/pool.c b/lib/common/pool.c
|
|
|
-index f3d9d085..d5ca5a78 100644
|
|
|
---- a/lib/common/pool.c
|
|
|
-+++ b/lib/common/pool.c
|
|
|
-@@ -10,9 +10,9 @@
|
|
|
-
|
|
|
-
|
|
|
- /* ====== Dependencies ======= */
|
|
|
-+#include "../common/allocations.h" /* ZSTD_customCalloc, ZSTD_customFree */
|
|
|
- #include "zstd_deps.h" /* size_t */
|
|
|
- #include "debug.h" /* assert */
|
|
|
--#include "zstd_internal.h" /* ZSTD_customCalloc, ZSTD_customFree */
|
|
|
- #include "pool.h"
|
|
|
-
|
|
|
- /* ====== Compiler specifics ====== */
|
|
|
-diff --git a/lib/common/zstd_common.c b/lib/common/zstd_common.c
|
|
|
-index 32085524..3f04c22a 100644
|
|
|
---- a/lib/common/zstd_common.c
|
|
|
-+++ b/lib/common/zstd_common.c
|
|
|
-@@ -14,7 +14,6 @@
|
|
|
- * Dependencies
|
|
|
- ***************************************/
|
|
|
- #define ZSTD_DEPS_NEED_MALLOC
|
|
|
--#include "zstd_deps.h" /* ZSTD_malloc, ZSTD_calloc, ZSTD_free, ZSTD_memset */
|
|
|
- #include "error_private.h"
|
|
|
- #include "zstd_internal.h"
|
|
|
-
|
|
|
-@@ -47,37 +46,3 @@ ZSTD_ErrorCode ZSTD_getErrorCode(size_t code) { return ERR_getErrorCode(code); }
|
|
|
- /*! ZSTD_getErrorString() :
|
|
|
- * provides error code string from enum */
|
|
|
- const char* ZSTD_getErrorString(ZSTD_ErrorCode code) { return ERR_getErrorString(code); }
|
|
|
--
|
|
|
--
|
|
|
--
|
|
|
--/*=**************************************************************
|
|
|
--* Custom allocator
|
|
|
--****************************************************************/
|
|
|
--void* ZSTD_customMalloc(size_t size, ZSTD_customMem customMem)
|
|
|
--{
|
|
|
-- if (customMem.customAlloc)
|
|
|
-- return customMem.customAlloc(customMem.opaque, size);
|
|
|
-- return ZSTD_malloc(size);
|
|
|
--}
|
|
|
--
|
|
|
--void* ZSTD_customCalloc(size_t size, ZSTD_customMem customMem)
|
|
|
--{
|
|
|
-- if (customMem.customAlloc) {
|
|
|
-- /* calloc implemented as malloc+memset;
|
|
|
-- * not as efficient as calloc, but next best guess for custom malloc */
|
|
|
-- void* const ptr = customMem.customAlloc(customMem.opaque, size);
|
|
|
-- ZSTD_memset(ptr, 0, size);
|
|
|
-- return ptr;
|
|
|
-- }
|
|
|
-- return ZSTD_calloc(1, size);
|
|
|
--}
|
|
|
--
|
|
|
--void ZSTD_customFree(void* ptr, ZSTD_customMem customMem)
|
|
|
--{
|
|
|
-- if (ptr!=NULL) {
|
|
|
-- if (customMem.customFree)
|
|
|
-- customMem.customFree(customMem.opaque, ptr);
|
|
|
-- else
|
|
|
-- ZSTD_free(ptr);
|
|
|
-- }
|
|
|
--}
|
|
|
-diff --git a/lib/common/zstd_internal.h b/lib/common/zstd_internal.h
|
|
|
-index 37836dc7..1f942f27 100644
|
|
|
---- a/lib/common/zstd_internal.h
|
|
|
-+++ b/lib/common/zstd_internal.h
|
|
|
-@@ -350,11 +350,6 @@ typedef struct {
|
|
|
- const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx); /* compress & dictBuilder */
|
|
|
- int ZSTD_seqToCodes(const seqStore_t* seqStorePtr); /* compress, dictBuilder, decodeCorpus (shouldn't get its definition from here) */
|
|
|
-
|
|
|
--/* custom memory allocation functions */
|
|
|
--void* ZSTD_customMalloc(size_t size, ZSTD_customMem customMem);
|
|
|
--void* ZSTD_customCalloc(size_t size, ZSTD_customMem customMem);
|
|
|
--void ZSTD_customFree(void* ptr, ZSTD_customMem customMem);
|
|
|
--
|
|
|
-
|
|
|
- /* ZSTD_invalidateRepCodes() :
|
|
|
- * ensures next compression will not use repcodes from previous block.
|
|
|
-diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c
|
|
|
-index b55f684c..173ce242 100644
|
|
|
---- a/lib/compress/zstd_compress.c
|
|
|
-+++ b/lib/compress/zstd_compress.c
|
|
|
-@@ -11,6 +11,7 @@
|
|
|
- /*-*************************************
|
|
|
- * Dependencies
|
|
|
- ***************************************/
|
|
|
-+#include "../common/allocations.h" /* ZSTD_customMalloc, ZSTD_customCalloc, ZSTD_customFree */
|
|
|
- #include "../common/zstd_deps.h" /* INT_MAX, ZSTD_memset, ZSTD_memcpy */
|
|
|
- #include "../common/mem.h"
|
|
|
- #include "hist.h" /* HIST_countFast_wksp */
|
|
|
-diff --git a/lib/compress/zstd_cwksp.h b/lib/compress/zstd_cwksp.h
|
|
|
-index 97676693..9113cdbd 100644
|
|
|
---- a/lib/compress/zstd_cwksp.h
|
|
|
-+++ b/lib/compress/zstd_cwksp.h
|
|
|
-@@ -14,6 +14,7 @@
|
|
|
- /*-*************************************
|
|
|
- * Dependencies
|
|
|
- ***************************************/
|
|
|
-+#include "../common/allocations.h" /* ZSTD_customMalloc, ZSTD_customFree */
|
|
|
- #include "../common/zstd_internal.h"
|
|
|
-
|
|
|
- #if defined (__cplusplus)
|
|
|
-diff --git a/lib/compress/zstdmt_compress.c b/lib/compress/zstdmt_compress.c
|
|
|
-index 7a2c7172..bf2de4a7 100644
|
|
|
---- a/lib/compress/zstdmt_compress.c
|
|
|
-+++ b/lib/compress/zstdmt_compress.c
|
|
|
-@@ -20,6 +20,7 @@
|
|
|
-
|
|
|
-
|
|
|
- /* ====== Dependencies ====== */
|
|
|
-+#include "../common/allocations.h" /* ZSTD_customMalloc, ZSTD_customCalloc, ZSTD_customFree */
|
|
|
- #include "../common/zstd_deps.h" /* ZSTD_memcpy, ZSTD_memset, INT_MAX, UINT_MAX */
|
|
|
- #include "../common/mem.h" /* MEM_STATIC */
|
|
|
- #include "../common/pool.h" /* threadpool */
|
|
|
-diff --git a/lib/decompress/zstd_ddict.c b/lib/decompress/zstd_ddict.c
|
|
|
-index ad5c34a7..309ec0d0 100644
|
|
|
---- a/lib/decompress/zstd_ddict.c
|
|
|
-+++ b/lib/decompress/zstd_ddict.c
|
|
|
-@@ -14,6 +14,7 @@
|
|
|
- /*-*******************************************************
|
|
|
- * Dependencies
|
|
|
- *********************************************************/
|
|
|
-+#include "../common/allocations.h" /* ZSTD_customMalloc, ZSTD_customFree */
|
|
|
- #include "../common/zstd_deps.h" /* ZSTD_memcpy, ZSTD_memmove, ZSTD_memset */
|
|
|
- #include "../common/cpu.h" /* bmi2 */
|
|
|
- #include "../common/mem.h" /* low level memory routines */
|
|
|
-diff --git a/lib/decompress/zstd_decompress.c b/lib/decompress/zstd_decompress.c
|
|
|
-index d487966c..3f3ca57c 100644
|
|
|
---- a/lib/decompress/zstd_decompress.c
|
|
|
-+++ b/lib/decompress/zstd_decompress.c
|
|
|
-@@ -55,6 +55,7 @@
|
|
|
- /*-*******************************************************
|
|
|
- * Dependencies
|
|
|
- *********************************************************/
|
|
|
-+#include "../common/allocations.h" /* ZSTD_customMalloc, ZSTD_customCalloc, ZSTD_customFree */
|
|
|
- #include "../common/zstd_deps.h" /* ZSTD_memcpy, ZSTD_memmove, ZSTD_memset */
|
|
|
- #include "../common/mem.h" /* low level memory routines */
|
|
|
- #define FSE_STATIC_LINKING_ONLY
|
|
|
-diff --git a/programs/Makefile b/programs/Makefile
|
|
|
-index fcff41dc..8507abef 100644
|
|
|
---- a/programs/Makefile
|
|
|
-+++ b/programs/Makefile
|
|
|
-@@ -225,7 +225,7 @@ zstd-noxz : zstd
|
|
|
- .PHONY: zstd-dll
|
|
|
- zstd-dll : LDFLAGS+= -L$(LIBZSTD)
|
|
|
- zstd-dll : LDLIBS += -lzstd
|
|
|
--zstd-dll : ZSTDLIB_LOCAL_SRC = xxhash.c
|
|
|
-+zstd-dll : ZSTDLIB_LOCAL_SRC = xxhash.c pool.c threading.c
|
|
|
- zstd-dll : zstd
|
|
|
-
|
|
|
-
|
|
|
-diff --git a/tests/Makefile b/tests/Makefile
|
|
|
-index 3eed19ea..778c7d67 100644
|
|
|
---- a/tests/Makefile
|
|
|
-+++ b/tests/Makefile
|
|
|
-@@ -95,7 +95,7 @@ allnothread: fullbench fuzzer paramgrill datagen decodecorpus
|
|
|
- dll: fuzzer-dll zstreamtest-dll
|
|
|
-
|
|
|
- .PHONY: zstd zstd32 zstd-nolegacy # only external makefile knows how to build or update them
|
|
|
--zstd zstd32 zstd-nolegacy:
|
|
|
-+zstd zstd32 zstd-nolegacy zstd-dll:
|
|
|
- $(MAKE) -C $(PRGDIR) $@ MOREFLAGS+="$(DEBUGFLAGS)"
|
|
|
-
|
|
|
- .PHONY: libzstd
|
|
|
-@@ -328,13 +328,17 @@ test-all: test test32 test-decodecorpus-cli
|
|
|
- test-zstd: ZSTD = $(PRGDIR)/zstd
|
|
|
- test-zstd: zstd
|
|
|
-
|
|
|
-+.PHONY: test-zstd-dll
|
|
|
-+test-zstd-dll: ZSTD = $(PRGDIR)/zstd
|
|
|
-+test-zstd-dll: zstd-dll
|
|
|
-+
|
|
|
- test-zstd32: ZSTD = $(PRGDIR)/zstd32
|
|
|
- test-zstd32: zstd32
|
|
|
-
|
|
|
- test-zstd-nolegacy: ZSTD = $(PRGDIR)/zstd-nolegacy
|
|
|
- test-zstd-nolegacy: zstd-nolegacy
|
|
|
-
|
|
|
--test-zstd test-zstd32 test-zstd-nolegacy: datagen
|
|
|
-+test-zstd test-zstd32 test-zstd-nolegacy test-zstd-dll: datagen
|
|
|
- file $(ZSTD)
|
|
|
- EXE_PREFIX="$(QEMU_SYS)" ZSTD_BIN="$(ZSTD)" DATAGEN_BIN=./datagen ./playTests.sh $(ZSTDRTTEST)
|
|
|
-
|
|
|
---
|
|
|
-2.39.1
|
|
|
-
|