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 <explorer09@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							a474728e82
						
					
				
				
					commit
					d5e7ff0292
				
			@@ -25,7 +25,7 @@ enum {
 | 
				
			|||||||
	OPT_QUIET      = 1 << 3,
 | 
						OPT_QUIET      = 1 << 3,
 | 
				
			||||||
	OPT_DECOMPRESS = 1 << 4,
 | 
						OPT_DECOMPRESS = 1 << 4,
 | 
				
			||||||
	OPT_TEST       = 1 << 5,
 | 
						OPT_TEST       = 1 << 5,
 | 
				
			||||||
	SEAMLESS_MAGIC = (1 << 31) * SEAMLESS_COMPRESSION,
 | 
						SEAMLESS_MAGIC = (1 << 31) * ENABLE_ZCAT * SEAMLESS_COMPRESSION,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static
 | 
					static
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user