From: Willy Tarreau Date: Wed, 12 May 2021 06:36:09 +0000 (+0200) Subject: IMPORT: slz: do not produce the crc32_fast table when CRC is natively supported X-Git-Tag: v2.4.0~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9e274280a471decfa8e53e0d271693d3b2caf53d;p=thirdparty%2Fhaproxy.git IMPORT: slz: do not produce the crc32_fast table when CRC is natively supported On ARM with native CRC support, no need to inflate the executable with a 4kB CRC table, let's just drop it. This is slz upstream commit d8715db20b2968d1f3012a734021c0978758f911. --- diff --git a/include/import/slz-tables.h b/include/import/slz-tables.h index ff6c93901f..8e8b679fbb 100644 --- a/include/import/slz-tables.h +++ b/include/import/slz-tables.h @@ -124,9 +124,13 @@ static const uint32_t len_fh[259] = { 0x0d1d23, 0x0d1e23, 0x0800a3 /* 256-258 */ }; +#if !defined(__ARM_FEATURE_CRC32) static uint32_t crc32_fast[4][256]; +#endif + static uint32_t fh_dist_table[32768]; +#if !defined(__ARM_FEATURE_CRC32) /* Make the table for a fast CRC. * Not thread-safe, must be called exactly once. */ @@ -159,6 +163,7 @@ static inline void __slz_make_crc_table(void) crc32_fast[3][n] = 0xff000000 ^ crc32_fast[0][(0x0000ff00 ^ crc32_fast[2][n] ^ 0xff) & 0xff] ^ (crc32_fast[2][n] >> 8); } } +#endif /* Returns code for lengths 1 to 32768. The bit size for the next value can be * found this way : diff --git a/src/slz.c b/src/slz.c index 76e89e20e2..231e09c091 100644 --- a/src/slz.c +++ b/src/slz.c @@ -1307,6 +1307,8 @@ int slz_rfc1950_finish(struct slz_stream *strm, unsigned char *buf) __attribute__((constructor)) static void __slz_initialize(void) { +#if !defined(__ARM_FEATURE_CRC32) __slz_make_crc_table(); +#endif __slz_prepare_dist_table(); }