- Update 410.patch to contain latest fixes from IBM bsc#1166260
* The build behaviour changed OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/zlib?expand=0&rev=63
This commit is contained in:
parent
5ad2848cad
commit
4ae3c87bd7
211
410.patch
211
410.patch
@ -1,9 +1,9 @@
|
|||||||
From 230b5152e9660eb5e5821c2dbc84ae300dfe1fb1 Mon Sep 17 00:00:00 2001
|
From 79ccd96ec69d2367291568c586aeaae941d2635c Mon Sep 17 00:00:00 2001
|
||||||
From: Ilya Leoshkevich <iii@linux.ibm.com>
|
From: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||||
Date: Wed, 18 Jul 2018 13:14:07 +0200
|
Date: Wed, 18 Jul 2018 13:14:07 +0200
|
||||||
Subject: [PATCH] Add support for IBM Z hardware-accelerated deflate
|
Subject: [PATCH] Add support for IBM Z hardware-accelerated deflate
|
||||||
|
|
||||||
Future versions of IBM Z mainframes will provide DFLTCC instruction,
|
IBM Z mainframes starting from version z15 provide DFLTCC instruction,
|
||||||
which implements deflate algorithm in hardware with estimated
|
which implements deflate algorithm in hardware with estimated
|
||||||
compression and decompression performance orders of magnitude faster
|
compression and decompression performance orders of magnitude faster
|
||||||
than the current zlib and ratio comparable with that of level 1.
|
than the current zlib and ratio comparable with that of level 1.
|
||||||
@ -11,15 +11,15 @@ than the current zlib and ratio comparable with that of level 1.
|
|||||||
This patch adds DFLTCC support to zlib. In order to enable it, the
|
This patch adds DFLTCC support to zlib. In order to enable it, the
|
||||||
following build commands should be used:
|
following build commands should be used:
|
||||||
|
|
||||||
$ CFLAGS=-DDFLTCC ./configure
|
$ ./configure --dfltcc
|
||||||
$ make OBJA=dfltcc.o PIC_OBJA=dfltcc.lo
|
$ make
|
||||||
|
|
||||||
When built like this, zlib would compress in hardware on level 1, and in
|
When built like this, zlib would compress in hardware on level 1, and in
|
||||||
software on all other levels. Decompression will always happen in
|
software on all other levels. Decompression will always happen in
|
||||||
hardware. In order to enable DFLTCC compression for levels 1-6 (i.e. to
|
hardware. In order to enable DFLTCC compression for levels 1-6 (i.e. to
|
||||||
make it used by default) one could either add -DDFLTCC_LEVEL_MASK=0x7e
|
make it used by default) one could either add -DDFLTCC_LEVEL_MASK=0x7e
|
||||||
at compile time, or set the environment variable DFLTCC_LEVEL_MASK to
|
to CFLAGS at compile time, or set the environment variable
|
||||||
0x7e at run time.
|
DFLTCC_LEVEL_MASK to 0x7e at run time.
|
||||||
|
|
||||||
Two DFLTCC compression calls produce the same results only when they
|
Two DFLTCC compression calls produce the same results only when they
|
||||||
both are made on machines of the same generation, and when the
|
both are made on machines of the same generation, and when the
|
||||||
@ -34,15 +34,14 @@ DFLTCC does not support every single zlib feature, in particular:
|
|||||||
* inflate(Z_BLOCK) and inflate(Z_TREES)
|
* inflate(Z_BLOCK) and inflate(Z_TREES)
|
||||||
* inflateMark()
|
* inflateMark()
|
||||||
* inflatePrime()
|
* inflatePrime()
|
||||||
* deflateParams() after the first deflate() call
|
|
||||||
|
|
||||||
When used, these functions will either switch to software, or, in case
|
When used, these functions will either switch to software, or, in case
|
||||||
this is not possible, gracefully fail.
|
this is not possible, gracefully fail.
|
||||||
|
|
||||||
This patch tries to add DFLTCC support in a least intrusive way.
|
This patch tries to add DFLTCC support in the least intrusive way.
|
||||||
All SystemZ-specific code was placed into a separate file, but
|
All SystemZ-specific code is placed into a separate file, but
|
||||||
unfortunately there is still a noticeable amount of changes in the
|
unfortunately there is still a noticeable amount of changes in the
|
||||||
main zlib code. Below is the summary of those changes.
|
main zlib code. Below is the summary of these changes.
|
||||||
|
|
||||||
DFLTCC takes as arguments a parameter block, an input buffer, an output
|
DFLTCC takes as arguments a parameter block, an input buffer, an output
|
||||||
buffer and a window. Since DFLTCC requires parameter block to be
|
buffer and a window. Since DFLTCC requires parameter block to be
|
||||||
@ -61,9 +60,12 @@ deflateResetKeep() and inflateResetKeep() now update the DFLTCC
|
|||||||
parameter block, which is allocated alongside zlib state, using
|
parameter block, which is allocated alongside zlib state, using
|
||||||
the new DEFLATE_RESET_KEEP_HOOK and INFLATE_RESET_KEEP_HOOK macros.
|
the new DEFLATE_RESET_KEEP_HOOK and INFLATE_RESET_KEEP_HOOK macros.
|
||||||
|
|
||||||
In order to make unsupported deflateParams(), inflatePrime() and
|
The new DEFLATE_PARAMS_HOOK switches between hardware and software
|
||||||
inflateMark() calls to fail gracefully, the new DEFLATE_PARAMS_HOOK,
|
deflate implementations when deflateParams() arguments demand this.
|
||||||
INFLATE_PRIME_HOOK and INFLATE_MARK_HOOK macros were introduced.
|
|
||||||
|
In order to make unsupported inflatePrime() and inflateMark() calls
|
||||||
|
fail gracefully, the new INFLATE_PRIME_HOOK and INFLATE_MARK_HOOK macros
|
||||||
|
were introduced.
|
||||||
|
|
||||||
The algorithm implemented in hardware has different compression ratio
|
The algorithm implemented in hardware has different compression ratio
|
||||||
than the one implemented in software. In order for deflateBound() to
|
than the one implemented in software. In order for deflateBound() to
|
||||||
@ -93,12 +95,12 @@ might be not allocated yet, inflate_ensure_window was factored out of
|
|||||||
updatewindow and made ZLIB_INTERNAL.
|
updatewindow and made ZLIB_INTERNAL.
|
||||||
---
|
---
|
||||||
Makefile.in | 8 +
|
Makefile.in | 8 +
|
||||||
configure | 13 +
|
configure | 20 +
|
||||||
contrib/README.contrib | 4 +
|
contrib/README.contrib | 4 +
|
||||||
contrib/s390/dfltcc.c | 904 ++++++++++++++++++++++++++++++++++
|
contrib/s390/dfltcc.c | 920 ++++++++++++++++++++++++++++++++++
|
||||||
contrib/s390/dfltcc.h | 55 +++
|
contrib/s390/dfltcc.h | 55 ++
|
||||||
contrib/s390/dfltcc_deflate.h | 50 ++
|
contrib/s390/dfltcc_deflate.h | 54 ++
|
||||||
deflate.c | 60 ++-
|
deflate.c | 68 ++-
|
||||||
deflate.h | 12 +
|
deflate.h | 12 +
|
||||||
gzguts.h | 4 +
|
gzguts.h | 4 +
|
||||||
inflate.c | 85 +++-
|
inflate.c | 85 +++-
|
||||||
@ -106,7 +108,7 @@ updatewindow and made ZLIB_INTERNAL.
|
|||||||
test/infcover.c | 2 +-
|
test/infcover.c | 2 +-
|
||||||
test/minigzip.c | 4 +
|
test/minigzip.c | 4 +
|
||||||
trees.c | 13 +-
|
trees.c | 13 +-
|
||||||
14 files changed, 1165 insertions(+), 51 deletions(-)
|
14 files changed, 1197 insertions(+), 54 deletions(-)
|
||||||
create mode 100644 contrib/s390/dfltcc.c
|
create mode 100644 contrib/s390/dfltcc.c
|
||||||
create mode 100644 contrib/s390/dfltcc.h
|
create mode 100644 contrib/s390/dfltcc.h
|
||||||
create mode 100644 contrib/s390/dfltcc_deflate.h
|
create mode 100644 contrib/s390/dfltcc_deflate.h
|
||||||
@ -134,7 +136,28 @@ Index: zlib-1.2.11/configure
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- zlib-1.2.11.orig/configure
|
--- zlib-1.2.11.orig/configure
|
||||||
+++ zlib-1.2.11/configure
|
+++ zlib-1.2.11/configure
|
||||||
@@ -911,6 +911,19 @@ EOF
|
@@ -114,6 +114,7 @@ case "$1" in
|
||||||
|
echo ' configure [--const] [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log
|
||||||
|
echo ' [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log
|
||||||
|
echo ' [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log
|
||||||
|
+ echo ' [--dfltcc]' | tee -a configure.log
|
||||||
|
exit 0 ;;
|
||||||
|
-p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;
|
||||||
|
-e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;
|
||||||
|
@@ -137,6 +138,12 @@ case "$1" in
|
||||||
|
-c* | --const) zconst=1; shift ;;
|
||||||
|
-w* | --warn) warn=1; shift ;;
|
||||||
|
-d* | --debug) debug=1; shift ;;
|
||||||
|
+ --dfltcc)
|
||||||
|
+ CFLAGS="$CFLAGS -DDFLTCC"
|
||||||
|
+ OBJC="$OBJC dfltcc.o"
|
||||||
|
+ PIC_OBJC="$PIC_OBJC dfltcc.lo"
|
||||||
|
+ shift
|
||||||
|
+ ;;
|
||||||
|
*)
|
||||||
|
echo "unknown option: $1" | tee -a configure.log
|
||||||
|
echo "$0 --help for help" | tee -a configure.log
|
||||||
|
@@ -911,6 +918,19 @@ EOF
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -173,14 +196,14 @@ Index: zlib-1.2.11/contrib/s390/dfltcc.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ zlib-1.2.11/contrib/s390/dfltcc.c
|
+++ zlib-1.2.11/contrib/s390/dfltcc.c
|
||||||
@@ -0,0 +1,904 @@
|
@@ -0,0 +1,920 @@
|
||||||
+/* dfltcc.c - SystemZ DEFLATE CONVERSION CALL support. */
|
+/* dfltcc.c - SystemZ DEFLATE CONVERSION CALL support. */
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
+ Use the following commands to build zlib with DFLTCC support:
|
+ Use the following commands to build zlib with DFLTCC support:
|
||||||
+
|
+
|
||||||
+ $ CFLAGS=-DDFLTCC ./configure
|
+ $ ./configure --dfltcc
|
||||||
+ $ make OBJA=dfltcc.o PIC_OBJA=dfltcc.lo
|
+ $ make
|
||||||
+*/
|
+*/
|
||||||
+
|
+
|
||||||
+#define _GNU_SOURCE
|
+#define _GNU_SOURCE
|
||||||
@ -407,31 +430,28 @@ Index: zlib-1.2.11/contrib/s390/dfltcc.c
|
|||||||
+/*
|
+/*
|
||||||
+ Compress.
|
+ Compress.
|
||||||
+ */
|
+ */
|
||||||
+local inline int dfltcc_are_params_ok(int level,
|
+local inline int dfltcc_can_deflate_with_params(z_streamp strm,
|
||||||
+ uInt window_bits,
|
+ int level,
|
||||||
+ int strategy,
|
+ uInt window_bits,
|
||||||
+ uLong level_mask);
|
+ int strategy);
|
||||||
+local inline int dfltcc_are_params_ok(level, window_bits, strategy, level_mask)
|
+local inline int dfltcc_can_deflate_with_params(strm,
|
||||||
|
+ level,
|
||||||
|
+ window_bits,
|
||||||
|
+ strategy)
|
||||||
|
+ z_streamp strm;
|
||||||
+ int level;
|
+ int level;
|
||||||
+ uInt window_bits;
|
+ uInt window_bits;
|
||||||
+ int strategy;
|
+ int strategy;
|
||||||
+ uLong level_mask;
|
|
||||||
+{
|
|
||||||
+ return (level_mask & (1 << level)) != 0 &&
|
|
||||||
+ (window_bits == HB_BITS) &&
|
|
||||||
+ (strategy == Z_FIXED || strategy == Z_DEFAULT_STRATEGY);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+int ZLIB_INTERNAL dfltcc_can_deflate(strm)
|
|
||||||
+ z_streamp strm;
|
|
||||||
+{
|
+{
|
||||||
+ deflate_state FAR *state = (deflate_state FAR *)strm->state;
|
+ deflate_state FAR *state = (deflate_state FAR *)strm->state;
|
||||||
+ struct dfltcc_state FAR *dfltcc_state = GET_DFLTCC_STATE(state);
|
+ struct dfltcc_state FAR *dfltcc_state = GET_DFLTCC_STATE(state);
|
||||||
+
|
+
|
||||||
+ /* Unsupported compression settings */
|
+ /* Unsupported compression settings */
|
||||||
+ if (!dfltcc_are_params_ok(state->level, state->w_bits, state->strategy,
|
+ if ((dfltcc_state->level_mask & (1 << level)) == 0)
|
||||||
+ dfltcc_state->level_mask))
|
+ return 0;
|
||||||
|
+ if (window_bits != HB_BITS)
|
||||||
|
+ return 0;
|
||||||
|
+ if (strategy != Z_FIXED && strategy != Z_DEFAULT_STRATEGY)
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+
|
+
|
||||||
+ /* Unsupported hardware */
|
+ /* Unsupported hardware */
|
||||||
@ -443,6 +463,17 @@ Index: zlib-1.2.11/contrib/s390/dfltcc.c
|
|||||||
+ return 1;
|
+ return 1;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
+int ZLIB_INTERNAL dfltcc_can_deflate(strm)
|
||||||
|
+ z_streamp strm;
|
||||||
|
+{
|
||||||
|
+ deflate_state FAR *state = (deflate_state FAR *)strm->state;
|
||||||
|
+
|
||||||
|
+ return dfltcc_can_deflate_with_params(strm,
|
||||||
|
+ state->level,
|
||||||
|
+ state->w_bits,
|
||||||
|
+ state->strategy);
|
||||||
|
+}
|
||||||
|
+
|
||||||
+local void dfltcc_gdht OF((z_streamp strm));
|
+local void dfltcc_gdht OF((z_streamp strm));
|
||||||
+local void dfltcc_gdht(strm)
|
+local void dfltcc_gdht(strm)
|
||||||
+ z_streamp strm;
|
+ z_streamp strm;
|
||||||
@ -526,22 +557,24 @@ Index: zlib-1.2.11/contrib/s390/dfltcc.c
|
|||||||
+ soft_bcc = 0;
|
+ soft_bcc = 0;
|
||||||
+ no_flush = flush == Z_NO_FLUSH;
|
+ no_flush = flush == Z_NO_FLUSH;
|
||||||
+
|
+
|
||||||
+ /* Trailing empty block. Switch to software, except when Continuation Flag
|
+ /* No input data. Return, except when Continuation Flag is set, which means
|
||||||
+ * is set, which means that DFLTCC has buffered some output in the
|
+ * that DFLTCC has buffered some output in the parameter block and needs to
|
||||||
+ * parameter block and needs to be called again in order to flush it.
|
+ * be called again in order to flush it.
|
||||||
+ */
|
+ */
|
||||||
+ if (flush == Z_FINISH && strm->avail_in == 0 && !param->cf) {
|
+ if (strm->avail_in == 0 && !param->cf) {
|
||||||
+ if (param->bcf) {
|
+ /* A block is still open, and the hardware does not support closing
|
||||||
+ /* A block is still open, and the hardware does not support closing
|
+ * blocks without adding data. Thus, close it manually.
|
||||||
+ * blocks without adding data. Thus, close it manually.
|
+ */
|
||||||
+ */
|
+ if (!no_flush && param->bcf) {
|
||||||
+ send_eobs(strm, param);
|
+ send_eobs(strm, param);
|
||||||
+ param->bcf = 0;
|
+ param->bcf = 0;
|
||||||
+ }
|
+ }
|
||||||
+ return 0;
|
+ /* Let one of deflate_* functions write a trailing empty block. */
|
||||||
+ }
|
+ if (flush == Z_FINISH)
|
||||||
+
|
+ return 0;
|
||||||
+ if (strm->avail_in == 0 && !param->cf) {
|
+ /* Clear history. */
|
||||||
|
+ if (flush == Z_FULL_FLUSH)
|
||||||
|
+ param->hl = 0;
|
||||||
+ *result = need_more;
|
+ *result = need_more;
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+ }
|
+ }
|
||||||
@ -595,7 +628,7 @@ Index: zlib-1.2.11/contrib/s390/dfltcc.c
|
|||||||
+ param->cvt = state->wrap == 2 ? CVT_CRC32 : CVT_ADLER32;
|
+ param->cvt = state->wrap == 2 ? CVT_CRC32 : CVT_ADLER32;
|
||||||
+ if (!no_flush)
|
+ if (!no_flush)
|
||||||
+ /* We need to close a block. Always do this in software - when there is
|
+ /* We need to close a block. Always do this in software - when there is
|
||||||
+ * no input data, the hardware will not nohor BCC. */
|
+ * no input data, the hardware will not honor BCC. */
|
||||||
+ soft_bcc = 1;
|
+ soft_bcc = 1;
|
||||||
+ if (flush == Z_FINISH && !param->bcf)
|
+ if (flush == Z_FINISH && !param->bcf)
|
||||||
+ /* We are about to open a BFINAL block, set Block Header Final bit
|
+ /* We are about to open a BFINAL block, set Block Header Final bit
|
||||||
@ -610,8 +643,8 @@ Index: zlib-1.2.11/contrib/s390/dfltcc.c
|
|||||||
+ param->sbb = (unsigned int)state->bi_valid;
|
+ param->sbb = (unsigned int)state->bi_valid;
|
||||||
+ if (param->sbb > 0)
|
+ if (param->sbb > 0)
|
||||||
+ *strm->next_out = (Bytef)state->bi_buf;
|
+ *strm->next_out = (Bytef)state->bi_buf;
|
||||||
+ if (param->hl)
|
+ /* Honor history and check value */
|
||||||
+ param->nt = 0; /* Honor history */
|
+ param->nt = 0;
|
||||||
+ param->cv = state->wrap == 2 ? ZSWAP32(strm->adler) : strm->adler;
|
+ param->cv = state->wrap == 2 ? ZSWAP32(strm->adler) : strm->adler;
|
||||||
+
|
+
|
||||||
+ /* When opening a block, choose a Huffman-Table Type */
|
+ /* When opening a block, choose a Huffman-Table Type */
|
||||||
@ -971,17 +1004,20 @@ Index: zlib-1.2.11/contrib/s390/dfltcc.c
|
|||||||
+ fly with deflateParams, we need to convert between hardware and software
|
+ fly with deflateParams, we need to convert between hardware and software
|
||||||
+ window formats.
|
+ window formats.
|
||||||
+*/
|
+*/
|
||||||
+int ZLIB_INTERNAL dfltcc_deflate_params(strm, level, strategy)
|
+int ZLIB_INTERNAL dfltcc_deflate_params(strm, level, strategy, flush)
|
||||||
+ z_streamp strm;
|
+ z_streamp strm;
|
||||||
+ int level;
|
+ int level;
|
||||||
+ int strategy;
|
+ int strategy;
|
||||||
|
+ int *flush;
|
||||||
+{
|
+{
|
||||||
+ deflate_state FAR *state = (deflate_state FAR *)strm->state;
|
+ deflate_state FAR *state = (deflate_state FAR *)strm->state;
|
||||||
+ struct dfltcc_state FAR *dfltcc_state = GET_DFLTCC_STATE(state);
|
+ struct dfltcc_state FAR *dfltcc_state = GET_DFLTCC_STATE(state);
|
||||||
+ struct dfltcc_param_v0 FAR *param = &dfltcc_state->param;
|
+ struct dfltcc_param_v0 FAR *param = &dfltcc_state->param;
|
||||||
+ int could_deflate = dfltcc_can_deflate(strm);
|
+ int could_deflate = dfltcc_can_deflate(strm);
|
||||||
+ int can_deflate = dfltcc_are_params_ok(level, state->w_bits, strategy,
|
+ int can_deflate = dfltcc_can_deflate_with_params(strm,
|
||||||
+ dfltcc_state->level_mask);
|
+ level,
|
||||||
|
+ state->w_bits,
|
||||||
|
+ strategy);
|
||||||
+
|
+
|
||||||
+ if (can_deflate == could_deflate)
|
+ if (can_deflate == could_deflate)
|
||||||
+ /* We continue to work in the same mode - no changes needed */
|
+ /* We continue to work in the same mode - no changes needed */
|
||||||
@ -991,8 +1027,11 @@ Index: zlib-1.2.11/contrib/s390/dfltcc.c
|
|||||||
+ /* DFLTCC was not used yet - no changes needed */
|
+ /* DFLTCC was not used yet - no changes needed */
|
||||||
+ return Z_OK;
|
+ return Z_OK;
|
||||||
+
|
+
|
||||||
+ /* Switching between hardware and software is not implemented */
|
+ /* For now, do not convert between window formats - simply get rid of the
|
||||||
+ return Z_STREAM_ERROR;
|
+ * old data instead.
|
||||||
|
+ */
|
||||||
|
+ *flush = Z_FULL_FLUSH;
|
||||||
|
+ return Z_OK;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
@ -1142,7 +1181,7 @@ Index: zlib-1.2.11/contrib/s390/dfltcc_deflate.h
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ zlib-1.2.11/contrib/s390/dfltcc_deflate.h
|
+++ zlib-1.2.11/contrib/s390/dfltcc_deflate.h
|
||||||
@@ -0,0 +1,50 @@
|
@@ -0,0 +1,54 @@
|
||||||
+#ifndef DFLTCC_DEFLATE_H
|
+#ifndef DFLTCC_DEFLATE_H
|
||||||
+#define DFLTCC_DEFLATE_H
|
+#define DFLTCC_DEFLATE_H
|
||||||
+
|
+
|
||||||
@ -1154,7 +1193,8 @@ Index: zlib-1.2.11/contrib/s390/dfltcc_deflate.h
|
|||||||
+ block_state *result));
|
+ block_state *result));
|
||||||
+int ZLIB_INTERNAL dfltcc_deflate_params OF((z_streamp strm,
|
+int ZLIB_INTERNAL dfltcc_deflate_params OF((z_streamp strm,
|
||||||
+ int level,
|
+ int level,
|
||||||
+ int strategy));
|
+ int strategy,
|
||||||
|
+ int *flush));
|
||||||
+int ZLIB_INTERNAL dfltcc_deflate_set_dictionary OF((z_streamp strm,
|
+int ZLIB_INTERNAL dfltcc_deflate_set_dictionary OF((z_streamp strm,
|
||||||
+ const Bytef *dictionary,
|
+ const Bytef *dictionary,
|
||||||
+ uInt dict_length));
|
+ uInt dict_length));
|
||||||
@ -1174,11 +1214,14 @@ Index: zlib-1.2.11/contrib/s390/dfltcc_deflate.h
|
|||||||
+ } while (0)
|
+ } while (0)
|
||||||
+#define DEFLATE_RESET_KEEP_HOOK(strm) \
|
+#define DEFLATE_RESET_KEEP_HOOK(strm) \
|
||||||
+ dfltcc_reset((strm), sizeof(deflate_state))
|
+ dfltcc_reset((strm), sizeof(deflate_state))
|
||||||
+#define DEFLATE_PARAMS_HOOK(strm, level, strategy) \
|
+#define DEFLATE_PARAMS_HOOK(strm, level, strategy, hook_flush) \
|
||||||
+ do { \
|
+ do { \
|
||||||
+ int err; \
|
+ int err; \
|
||||||
+\
|
+\
|
||||||
+ err = dfltcc_deflate_params((strm), (level), (strategy)); \
|
+ err = dfltcc_deflate_params((strm), \
|
||||||
|
+ (level), \
|
||||||
|
+ (strategy), \
|
||||||
|
+ (hook_flush)); \
|
||||||
+ if (err == Z_STREAM_ERROR) \
|
+ if (err == Z_STREAM_ERROR) \
|
||||||
+ return err; \
|
+ return err; \
|
||||||
+ } while (0)
|
+ } while (0)
|
||||||
@ -1221,7 +1264,7 @@ Index: zlib-1.2.11/deflate.c
|
|||||||
+#define DEFLATE_SET_DICTIONARY_HOOK(strm, dict, dict_len) do {} while (0)
|
+#define DEFLATE_SET_DICTIONARY_HOOK(strm, dict, dict_len) do {} while (0)
|
||||||
+#define DEFLATE_GET_DICTIONARY_HOOK(strm, dict, dict_len) do {} while (0)
|
+#define DEFLATE_GET_DICTIONARY_HOOK(strm, dict, dict_len) do {} while (0)
|
||||||
+#define DEFLATE_RESET_KEEP_HOOK(strm) do {} while (0)
|
+#define DEFLATE_RESET_KEEP_HOOK(strm) do {} while (0)
|
||||||
+#define DEFLATE_PARAMS_HOOK(strm, level, strategy) do {} while (0)
|
+#define DEFLATE_PARAMS_HOOK(strm, level, strategy, hook_flush) do {} while (0)
|
||||||
+#define DEFLATE_BOUND_ADJUST_COMPLEN(strm, complen, sourceLen) do {} while (0)
|
+#define DEFLATE_BOUND_ADJUST_COMPLEN(strm, complen, sourceLen) do {} while (0)
|
||||||
+#define DEFLATE_NEED_CONSERVATIVE_BOUND(strm) 0
|
+#define DEFLATE_NEED_CONSERVATIVE_BOUND(strm) 0
|
||||||
+#define DEFLATE_HOOK(strm, flush, bstate) 0
|
+#define DEFLATE_HOOK(strm, flush, bstate) 0
|
||||||
@ -1285,15 +1328,33 @@ Index: zlib-1.2.11/deflate.c
|
|||||||
return Z_OK;
|
return Z_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -584,6 +601,7 @@ int ZEXPORT deflateParams(strm, level, s
|
@@ -572,6 +589,7 @@ int ZEXPORT deflateParams(strm, level, s
|
||||||
|
{
|
||||||
|
deflate_state *s;
|
||||||
|
compress_func func;
|
||||||
|
+ int hook_flush = Z_NO_FLUSH;
|
||||||
|
|
||||||
|
if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
|
||||||
|
s = strm->state;
|
||||||
|
@@ -584,12 +602,14 @@ int ZEXPORT deflateParams(strm, level, s
|
||||||
if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
|
if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
|
||||||
return Z_STREAM_ERROR;
|
return Z_STREAM_ERROR;
|
||||||
}
|
}
|
||||||
+ DEFLATE_PARAMS_HOOK(strm, level, strategy);
|
+ DEFLATE_PARAMS_HOOK(strm, level, strategy, &hook_flush);
|
||||||
func = configuration_table[s->level].func;
|
func = configuration_table[s->level].func;
|
||||||
|
|
||||||
if ((strategy != s->strategy || func != configuration_table[level].func) &&
|
- if ((strategy != s->strategy || func != configuration_table[level].func) &&
|
||||||
@@ -659,6 +677,7 @@ uLong ZEXPORT deflateBound(strm, sourceL
|
- s->high_water) {
|
||||||
|
+ if ((strategy != s->strategy || func != configuration_table[level].func ||
|
||||||
|
+ hook_flush != Z_NO_FLUSH) && s->high_water) {
|
||||||
|
/* Flush the last buffer: */
|
||||||
|
- int err = deflate(strm, Z_BLOCK);
|
||||||
|
+ int err = deflate(strm, RANK(hook_flush) > RANK(Z_BLOCK) ?
|
||||||
|
+ hook_flush : Z_BLOCK);
|
||||||
|
if (err == Z_STREAM_ERROR)
|
||||||
|
return err;
|
||||||
|
if (strm->avail_out == 0)
|
||||||
|
@@ -659,6 +679,7 @@ uLong ZEXPORT deflateBound(strm, sourceL
|
||||||
/* conservative upper bound for compressed data */
|
/* conservative upper bound for compressed data */
|
||||||
complen = sourceLen +
|
complen = sourceLen +
|
||||||
((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
|
((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
|
||||||
@ -1301,7 +1362,7 @@ Index: zlib-1.2.11/deflate.c
|
|||||||
|
|
||||||
/* if can't get parameters, return conservative bound plus zlib wrapper */
|
/* if can't get parameters, return conservative bound plus zlib wrapper */
|
||||||
if (deflateStateCheck(strm))
|
if (deflateStateCheck(strm))
|
||||||
@@ -700,7 +719,8 @@ uLong ZEXPORT deflateBound(strm, sourceL
|
@@ -700,7 +721,8 @@ uLong ZEXPORT deflateBound(strm, sourceL
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if not default parameters, return conservative bound */
|
/* if not default parameters, return conservative bound */
|
||||||
@ -1311,7 +1372,7 @@ Index: zlib-1.2.11/deflate.c
|
|||||||
return complen + wraplen;
|
return complen + wraplen;
|
||||||
|
|
||||||
/* default settings: return tight bound for that case */
|
/* default settings: return tight bound for that case */
|
||||||
@@ -727,7 +747,7 @@ local void putShortMSB (s, b)
|
@@ -727,7 +749,7 @@ local void putShortMSB (s, b)
|
||||||
* applications may wish to modify it to avoid allocating a large
|
* applications may wish to modify it to avoid allocating a large
|
||||||
* strm->next_out buffer and copying into it. (See also read_buf()).
|
* strm->next_out buffer and copying into it. (See also read_buf()).
|
||||||
*/
|
*/
|
||||||
@ -1320,7 +1381,7 @@ Index: zlib-1.2.11/deflate.c
|
|||||||
z_streamp strm;
|
z_streamp strm;
|
||||||
{
|
{
|
||||||
unsigned len;
|
unsigned len;
|
||||||
@@ -997,7 +1017,8 @@ int ZEXPORT deflate (strm, flush)
|
@@ -997,7 +1019,8 @@ int ZEXPORT deflate (strm, flush)
|
||||||
(flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
|
(flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
|
||||||
block_state bstate;
|
block_state bstate;
|
||||||
|
|
||||||
@ -1330,7 +1391,7 @@ Index: zlib-1.2.11/deflate.c
|
|||||||
s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :
|
s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :
|
||||||
s->strategy == Z_RLE ? deflate_rle(s, flush) :
|
s->strategy == Z_RLE ? deflate_rle(s, flush) :
|
||||||
(*(configuration_table[s->level].func))(s, flush);
|
(*(configuration_table[s->level].func))(s, flush);
|
||||||
@@ -1086,9 +1107,9 @@ int ZEXPORT deflateEnd (strm)
|
@@ -1086,9 +1109,9 @@ int ZEXPORT deflateEnd (strm)
|
||||||
TRY_FREE(strm, strm->state->pending_buf);
|
TRY_FREE(strm, strm->state->pending_buf);
|
||||||
TRY_FREE(strm, strm->state->head);
|
TRY_FREE(strm, strm->state->head);
|
||||||
TRY_FREE(strm, strm->state->prev);
|
TRY_FREE(strm, strm->state->prev);
|
||||||
@ -1342,7 +1403,7 @@ Index: zlib-1.2.11/deflate.c
|
|||||||
strm->state = Z_NULL;
|
strm->state = Z_NULL;
|
||||||
|
|
||||||
return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;
|
return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;
|
||||||
@@ -1119,13 +1140,13 @@ int ZEXPORT deflateCopy (dest, source)
|
@@ -1119,13 +1142,13 @@ int ZEXPORT deflateCopy (dest, source)
|
||||||
|
|
||||||
zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream));
|
zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream));
|
||||||
|
|
||||||
@ -1359,7 +1420,7 @@ Index: zlib-1.2.11/deflate.c
|
|||||||
ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
|
ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
|
||||||
ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
|
ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
|
||||||
overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
|
overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
|
||||||
@@ -1174,7 +1195,8 @@ local unsigned read_buf(strm, buf, size)
|
@@ -1174,7 +1197,8 @@ local unsigned read_buf(strm, buf, size)
|
||||||
strm->avail_in -= len;
|
strm->avail_in -= len;
|
||||||
|
|
||||||
zmemcpy(buf, strm->next_in, len);
|
zmemcpy(buf, strm->next_in, len);
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Apr 23 08:17:19 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
|
||||||
|
|
||||||
|
- Update 410.patch to contain latest fixes from IBM bsc#1166260
|
||||||
|
* The build behaviour changed
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Oct 29 10:47:18 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
Tue Oct 29 10:47:18 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
||||||
|
|
||||||
|
23
zlib.spec
23
zlib.spec
@ -21,7 +21,6 @@ Version: 1.2.11
|
|||||||
Release: 0
|
Release: 0
|
||||||
Summary: Library implementing the DEFLATE compression algorithm
|
Summary: Library implementing the DEFLATE compression algorithm
|
||||||
License: Zlib
|
License: Zlib
|
||||||
Group: Development/Libraries/C and C++
|
|
||||||
URL: http://www.zlib.net/
|
URL: http://www.zlib.net/
|
||||||
Source0: http://zlib.net/zlib-%{version}.tar.gz
|
Source0: http://zlib.net/zlib-%{version}.tar.gz
|
||||||
Source1: http://zlib.net/zlib-%{version}.tar.gz.asc
|
Source1: http://zlib.net/zlib-%{version}.tar.gz.asc
|
||||||
@ -55,7 +54,6 @@ format.
|
|||||||
|
|
||||||
%package -n libz1
|
%package -n libz1
|
||||||
Summary: Library implementing the DEFLATE compression algorithm
|
Summary: Library implementing the DEFLATE compression algorithm
|
||||||
Group: System/Libraries
|
|
||||||
Provides: %{name} = %{version}-%{release}
|
Provides: %{name} = %{version}-%{release}
|
||||||
Obsoletes: %{name} < %{version}-%{release}
|
Obsoletes: %{name} < %{version}-%{release}
|
||||||
|
|
||||||
@ -67,7 +65,6 @@ format.
|
|||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Development files for zlib, a data compression library
|
Summary: Development files for zlib, a data compression library
|
||||||
Group: Development/Languages/C and C++
|
|
||||||
Requires: glibc-devel
|
Requires: glibc-devel
|
||||||
Requires: libz1 = %{version}
|
Requires: libz1 = %{version}
|
||||||
|
|
||||||
@ -89,7 +86,6 @@ compression.
|
|||||||
|
|
||||||
%package devel-static
|
%package devel-static
|
||||||
Summary: Static library for zlib
|
Summary: Static library for zlib
|
||||||
Group: Development/Languages/C and C++
|
|
||||||
Requires: %{name}-devel = %{version}
|
Requires: %{name}-devel = %{version}
|
||||||
Provides: %{name}-devel:%{_libdir}/libz.a
|
Provides: %{name}-devel:%{_libdir}/libz.a
|
||||||
|
|
||||||
@ -104,14 +100,12 @@ used for development.
|
|||||||
|
|
||||||
%package -n libminizip1
|
%package -n libminizip1
|
||||||
Summary: Library for manipulation with .zip archives
|
Summary: Library for manipulation with .zip archives
|
||||||
Group: System/Libraries
|
|
||||||
|
|
||||||
%description -n libminizip1
|
%description -n libminizip1
|
||||||
Minizip is a library for manipulation with files from .zip archives.
|
Minizip is a library for manipulation with files from .zip archives.
|
||||||
|
|
||||||
%package -n minizip-devel
|
%package -n minizip-devel
|
||||||
Summary: Development files for the minizip library
|
Summary: Development files for the minizip library
|
||||||
Group: Development/Languages/C and C++
|
|
||||||
Requires: %{name}-devel = %{version}
|
Requires: %{name}-devel = %{version}
|
||||||
Requires: libminizip1 = %{version}
|
Requires: libminizip1 = %{version}
|
||||||
Requires: pkgconfig
|
Requires: pkgconfig
|
||||||
@ -133,26 +127,23 @@ cp %{SOURCE4} .
|
|||||||
%build
|
%build
|
||||||
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
||||||
export LDFLAGS="-Wl,-z,relro,-z,now"
|
export LDFLAGS="-Wl,-z,relro,-z,now"
|
||||||
%ifarch s390x s390
|
|
||||||
export CFLAGS="%{optflags} -DDFLTCC"
|
|
||||||
%define addopts OBJA=dfltcc.o PIC_OBJA=dfltcc.lo
|
|
||||||
%else
|
|
||||||
export CFLAGS="%{optflags}"
|
export CFLAGS="%{optflags}"
|
||||||
%define addopts %{nil}
|
|
||||||
%endif
|
|
||||||
# For sure not autotools build
|
# For sure not autotools build
|
||||||
CC="cc" ./configure \
|
CC="cc" ./configure \
|
||||||
--shared \
|
--shared \
|
||||||
--prefix=%{_prefix} \
|
--prefix=%{_prefix} \
|
||||||
--libdir=/%{_lib}
|
--libdir=/%{_lib}
|
||||||
|
%ifarch s390x s390
|
||||||
|
--dfltcc
|
||||||
|
%endif
|
||||||
|
|
||||||
%if %{do_profiling}
|
%if %{do_profiling}
|
||||||
make %{?_smp_mflags} CFLAGS="%{optflags} %{cflags_profile_generate}" %{addopts}
|
make %{?_smp_mflags} CFLAGS="%{optflags} %{cflags_profile_generate}"
|
||||||
make check %{?_smp_mflags}
|
make check %{?_smp_mflags}
|
||||||
make %{?_smp_mflags} clean
|
make %{?_smp_mflags} clean
|
||||||
make %{?_smp_mflags} CFLAGS="%{optflags} %{cflags_profile_feedback}" %{addopts}
|
make %{?_smp_mflags} CFLAGS="%{optflags} %{cflags_profile_feedback}"
|
||||||
%else
|
%else
|
||||||
make %{?_smp_mflags} %{addopts}
|
make %{?_smp_mflags}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# And build minizip
|
# And build minizip
|
||||||
@ -161,7 +152,7 @@ autoreconf -fvi
|
|||||||
%configure \
|
%configure \
|
||||||
--disable-static \
|
--disable-static \
|
||||||
--disable-silent-rules
|
--disable-silent-rules
|
||||||
make %{?_smp_mflags} %{addopts}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
%check
|
%check
|
||||||
make check %{?_smp_mflags}
|
make check %{?_smp_mflags}
|
||||||
|
Loading…
Reference in New Issue
Block a user