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 ff6c939..8e8b679 100644
--- a/include/import/slz-tables.h
+++ b/include/import/slz-tables.h
@@ -124,9 +124,13 @@
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 @@
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 76e89e2..231e09c 100644
--- a/src/slz.c
+++ b/src/slz.c
@@ -1307,6 +1307,8 @@
__attribute__((constructor))
static void __slz_initialize(void)
{
+#if !defined(__ARM_FEATURE_CRC32)
__slz_make_crc_table();
+#endif
__slz_prepare_dist_table();
}