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
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							a474728e82
						
					
				
				
					commit
					d5e7ff0292
				
			| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user