libbb: commonalize a bit of little-endian CRC32 table generation code
function old new delta global_crc32_new_table_le - 11 +11 crc32_new_table_le - 9 +9 inflate_unzip_internal 560 556 -4 flash_eraseall_main 823 819 -4 unpack_xz_stream 2403 2394 -9 lzop_main 121 112 -9 gzip_main 187 178 -9 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 0/5 up/down: 20/-35) Total: -15 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
06076494da
commit
ddacb03e87
@ -2239,7 +2239,7 @@ int gzip_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
ALLOC(ush, G1.prev, 1L << BITS);
|
ALLOC(ush, G1.prev, 1L << BITS);
|
||||||
|
|
||||||
/* Initialize the CRC32 table */
|
/* Initialize the CRC32 table */
|
||||||
global_crc32_table = crc32_filltable(NULL, 0);
|
global_crc32_new_table_le();
|
||||||
|
|
||||||
argv += optind;
|
argv += optind;
|
||||||
return bbunpack(argv, pack_gzip, append_ext, "gz");
|
return bbunpack(argv, pack_gzip, append_ext, "gz");
|
||||||
|
@ -1000,7 +1000,7 @@ inflate_unzip_internal(STATE_PARAM transformer_state_t *xstate)
|
|||||||
gunzip_bb = 0;
|
gunzip_bb = 0;
|
||||||
|
|
||||||
/* Create the crc table */
|
/* Create the crc table */
|
||||||
gunzip_crc_table = crc32_filltable(NULL, 0);
|
gunzip_crc_table = crc32_new_table_le();
|
||||||
gunzip_crc = ~0;
|
gunzip_crc = ~0;
|
||||||
|
|
||||||
error_msg = "corrupted data";
|
error_msg = "corrupted data";
|
||||||
|
@ -52,7 +52,7 @@ unpack_xz_stream(transformer_state_t *xstate)
|
|||||||
IF_DESKTOP(long long) int total = 0;
|
IF_DESKTOP(long long) int total = 0;
|
||||||
|
|
||||||
if (!global_crc32_table)
|
if (!global_crc32_table)
|
||||||
global_crc32_table = crc32_filltable(NULL, /*endian:*/ 0);
|
global_crc32_new_table_le();
|
||||||
|
|
||||||
memset(&iobuf, 0, sizeof(iobuf));
|
memset(&iobuf, 0, sizeof(iobuf));
|
||||||
membuf = xmalloc(2 * BUFSIZ);
|
membuf = xmalloc(2 * BUFSIZ);
|
||||||
|
@ -1148,6 +1148,6 @@ int lzop_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
if (ENABLE_UNLZOP && applet_name[4] == 'o')
|
if (ENABLE_UNLZOP && applet_name[4] == 'o')
|
||||||
option_mask32 |= OPT_DECOMPRESS;
|
option_mask32 |= OPT_DECOMPRESS;
|
||||||
|
|
||||||
global_crc32_table = crc32_filltable(NULL, 0);
|
global_crc32_new_table_le();
|
||||||
return bbunpack(argv, pack_lzop, make_new_name_lzop, /*unused:*/ NULL);
|
return bbunpack(argv, pack_lzop, make_new_name_lzop, /*unused:*/ NULL);
|
||||||
}
|
}
|
||||||
|
@ -1928,6 +1928,8 @@ typedef struct md5_ctx_t md5sha_ctx_t;
|
|||||||
|
|
||||||
extern uint32_t *global_crc32_table;
|
extern uint32_t *global_crc32_table;
|
||||||
uint32_t *crc32_filltable(uint32_t *tbl256, int endian) FAST_FUNC;
|
uint32_t *crc32_filltable(uint32_t *tbl256, int endian) FAST_FUNC;
|
||||||
|
uint32_t *crc32_new_table_le(void) FAST_FUNC;
|
||||||
|
uint32_t *global_crc32_new_table_le(void) FAST_FUNC;
|
||||||
uint32_t crc32_block_endian1(uint32_t val, const void *buf, unsigned len, uint32_t *crc_table) FAST_FUNC;
|
uint32_t crc32_block_endian1(uint32_t val, const void *buf, unsigned len, uint32_t *crc_table) FAST_FUNC;
|
||||||
uint32_t crc32_block_endian0(uint32_t val, const void *buf, unsigned len, uint32_t *crc_table) FAST_FUNC;
|
uint32_t crc32_block_endian0(uint32_t val, const void *buf, unsigned len, uint32_t *crc_table) FAST_FUNC;
|
||||||
|
|
||||||
|
@ -41,6 +41,16 @@ uint32_t* FAST_FUNC crc32_filltable(uint32_t *crc_table, int endian)
|
|||||||
|
|
||||||
return crc_table - 256;
|
return crc_table - 256;
|
||||||
}
|
}
|
||||||
|
/* Common uses: */
|
||||||
|
uint32_t* FAST_FUNC crc32_new_table_le(void)
|
||||||
|
{
|
||||||
|
return crc32_filltable(NULL, 0);
|
||||||
|
}
|
||||||
|
uint32_t* FAST_FUNC global_crc32_new_table_le(void)
|
||||||
|
{
|
||||||
|
global_crc32_table = crc32_new_table_le();
|
||||||
|
return global_crc32_table;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t FAST_FUNC crc32_block_endian1(uint32_t val, const void *buf, unsigned len, uint32_t *crc_table)
|
uint32_t FAST_FUNC crc32_block_endian1(uint32_t val, const void *buf, unsigned len, uint32_t *crc_table)
|
||||||
{
|
{
|
||||||
|
@ -101,7 +101,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
if (flags & OPTION_J) {
|
if (flags & OPTION_J) {
|
||||||
uint32_t *crc32_table;
|
uint32_t *crc32_table;
|
||||||
|
|
||||||
crc32_table = crc32_filltable(NULL, 0);
|
crc32_table = crc32_new_table_le();
|
||||||
|
|
||||||
cleanmarker.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
|
cleanmarker.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
|
||||||
cleanmarker.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER);
|
cleanmarker.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER);
|
||||||
|
@ -177,7 +177,7 @@ check_gpt_label(void)
|
|||||||
|
|
||||||
init_unicode();
|
init_unicode();
|
||||||
if (!global_crc32_table) {
|
if (!global_crc32_table) {
|
||||||
global_crc32_table = crc32_filltable(NULL, 0);
|
global_crc32_new_table_le();
|
||||||
}
|
}
|
||||||
|
|
||||||
crc = SWAP_LE32(gpt_hdr->hdr_crc32);
|
crc = SWAP_LE32(gpt_hdr->hdr_crc32);
|
||||||
|
Loading…
Reference in New Issue
Block a user