From d5e7ff02921854e28a9859d443f96900e041ca03 Mon Sep 17 00:00:00 2001 From: Kang-Che Sung Date: Sun, 8 Jan 2017 14:31:06 +0100 Subject: bunzip2: fix code bloat caused by zcat's seamless magic This example single-applet configuration would trigger the bloat: CONFIG_FEATURE_SEAMLESS_XZ=y CONFIG_FEATURE_SEAMLESS_LZMA=y CONFIG_FEATURE_SEAMLESS_BZ2=y CONFIG_FEATURE_SEAMLESS_GZ=y CONFIG_BUNZIP2=y # CONFIG_ZCAT is not set # All other applets disabled Here, the resulting "busybox-bunzip2" binary would contain unpack_gz_stream, unpack_lzma_stream and unpack_xz_stream functions code. In other words, the gzip, lzma and xz decompressors' code are linked into the binary unnecessarily. This happens because SEAMLESS_MAGIC != 0 and compiler is unable to figure out that SEAMLESS_MAGIC bit is never set. Fix this by disabling SEAMLESS_MAGIC option flag (setting its value to 0) when zcat is disabled. This will help the compiler optimize out bbunpack() and no longer generate open_zipped() function call. Signed-off-by: Kang-Che Sung Signed-off-by: Denys Vlasenko --- archival/bbunzip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archival/bbunzip.c b/archival/bbunzip.c index 60a837e..0eff587 100644 --- a/archival/bbunzip.c +++ b/archival/bbunzip.c @@ -25,7 +25,7 @@ enum { OPT_QUIET = 1 << 3, OPT_DECOMPRESS = 1 << 4, OPT_TEST = 1 << 5, - SEAMLESS_MAGIC = (1 << 31) * SEAMLESS_COMPRESSION, + SEAMLESS_MAGIC = (1 << 31) * ENABLE_ZCAT * SEAMLESS_COMPRESSION, }; static -- cgit v1.1