mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			157 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/src/compress.cpp
 | |
| +++ b/src/compress.cpp
 | |
| @@ -41,7 +41,7 @@ unsigned upx_adler32(const void *buf, un
 | |
|      if (len == 0)
 | |
|          return adler;
 | |
|      assert(buf != NULL);
 | |
| -#if 0
 | |
| +#if !(WITH_UCL)
 | |
|      return adler32(adler, (const Bytef *) buf, len); // zlib
 | |
|  #elif (WITH_UCL)
 | |
|      return ucl_adler32(adler, (const ucl_bytep) buf, len);
 | |
| --- a/src/conf.h
 | |
| +++ b/src/conf.h
 | |
| @@ -179,7 +179,7 @@
 | |
|  #  undef __unix
 | |
|  #endif
 | |
|  
 | |
| -#if !defined(WITH_UCL)
 | |
| +#if defined(WITH_UCL)
 | |
|  #  define WITH_UCL 1
 | |
|  #endif
 | |
|  #if 0 && !defined(WITH_LZMA)
 | |
| @@ -640,7 +640,11 @@ struct lzma_compress_config_t
 | |
|  };
 | |
|  
 | |
|  
 | |
| +#if (WITH_UCL)
 | |
|  struct ucl_compress_config_t : public REAL_ucl_compress_config_t
 | |
| +#else
 | |
| +struct ucl_compress_config_t
 | |
| +#endif
 | |
|  {
 | |
|      void reset() { memset(this, 0xff, sizeof(*this)); }
 | |
|  };
 | |
| @@ -692,7 +696,9 @@ struct lzma_compress_result_t
 | |
|  
 | |
|  struct ucl_compress_result_t
 | |
|  {
 | |
| +#if (WITH_UCL)
 | |
|      ucl_uint result[16];
 | |
| +#endif
 | |
|  
 | |
|      void reset() { memset(this, 0, sizeof(*this)); }
 | |
|  };
 | |
| --- a/src/main.cpp
 | |
| +++ b/src/main.cpp
 | |
| @@ -618,7 +618,9 @@ static int do_option(int optc, const cha
 | |
|          opt->method = -1;
 | |
|          opt->all_filters = true;
 | |
|          opt->filter = -1;
 | |
| +#if (WITH_UCL)
 | |
|          opt->crp.crp_ucl.m_size = 999999;
 | |
| +#endif
 | |
|          /* fallthrough */
 | |
|      case 900:                               // --best
 | |
|          if (!set_method(-1, 10))
 | |
| @@ -709,6 +711,7 @@ static int do_option(int optc, const cha
 | |
|          opt->exact = true;
 | |
|          break;
 | |
|      // compression runtime parameters
 | |
| +#if (WITH_UCL)
 | |
|      case 801:
 | |
|          getoptvar(&opt->crp.crp_ucl.c_flags, 0, 3, arg);
 | |
|          break;
 | |
| @@ -730,6 +733,7 @@ static int do_option(int optc, const cha
 | |
|      case 807:
 | |
|          getoptvar(&opt->crp.crp_ucl.m_size, 10000u, 999999u, arg);
 | |
|          break;
 | |
| +#endif
 | |
|      case 811:
 | |
|          getoptvar(&opt->crp.crp_lzma.pos_bits, arg);
 | |
|          break;
 | |
| --- a/src/Makefile
 | |
| +++ b/src/Makefile
 | |
| @@ -57,7 +57,10 @@ ifneq ($(wildcard $(UPX_UCLDIR)/include/
 | |
|  INCLUDES += -I$(UPX_UCLDIR)/include
 | |
|  LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext))))
 | |
|  endif
 | |
| -LIBS += -lucl -lz
 | |
| +ifeq ($(WITH_UCL),1)
 | |
| +LIBS += -lucl
 | |
| +endif
 | |
| +LIBS += -lz
 | |
|  # you should set envvar UPX_LZMADIR to point to your unpacked LZMA SDK
 | |
|  include $(top_srcdir)/src/stub/src/c/Makevars.lzma
 | |
|  ifneq ($(UPX_LZMA_VERSION),)
 | |
| --- a/src/packer.cpp
 | |
| +++ b/src/packer.cpp
 | |
| @@ -199,6 +199,7 @@ bool Packer::compress(upx_bytep i_ptr, u
 | |
|      if (cconf_parm)
 | |
|          cconf = *cconf_parm;
 | |
|      // cconf options
 | |
| +#if (WITH_UCL)
 | |
|      if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method))
 | |
|      {
 | |
|          if (opt->crp.crp_ucl.c_flags != -1)
 | |
| @@ -216,6 +217,7 @@ bool Packer::compress(upx_bytep i_ptr, u
 | |
|              step = 0;
 | |
|  #endif
 | |
|      }
 | |
| +#endif
 | |
|      if (M_IS_LZMA(ph.method))
 | |
|      {
 | |
|          oassign(cconf.conf_lzma.pos_bits, opt->crp.crp_lzma.pos_bits);
 | |
| @@ -250,6 +252,7 @@ bool Packer::compress(upx_bytep i_ptr, u
 | |
|      if (r != UPX_E_OK)
 | |
|          throwInternalError("compression failed");
 | |
|  
 | |
| +#if (WITH_UCL)
 | |
|      if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method))
 | |
|      {
 | |
|          const ucl_uint *res = ph.compress_result.result_ucl.result;
 | |
| @@ -267,6 +270,7 @@ bool Packer::compress(upx_bytep i_ptr, u
 | |
|              assert(cconf.conf_ucl.max_match == 0 || cconf.conf_ucl.max_match >= ph.max_match_found);
 | |
|          }
 | |
|      }
 | |
| +#endif
 | |
|  
 | |
|      //printf("\nPacker::compress: %d/%d: %7d -> %7d\n", ph.method, ph.level, ph.u_len, ph.c_len);
 | |
|      if (!checkCompressionRatio(ph.u_len, ph.c_len))
 | |
| --- a/src/p_exe.cpp
 | |
| +++ b/src/p_exe.cpp
 | |
| @@ -506,7 +506,9 @@ void PackExe::pack(OutputFile *fo)
 | |
|      Filter ft(ph.level);
 | |
|      // compress (max_match = 8192)
 | |
|      upx_compress_config_t cconf; cconf.reset();
 | |
| +#if (WITH_UCL)
 | |
|      cconf.conf_ucl.max_match = MAXMATCH;
 | |
| +#endif
 | |
|      cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28 KiB stack
 | |
|      compressWithFilters(&ft, 32, &cconf);
 | |
|  
 | |
| --- a/src/p_ps1.cpp
 | |
| +++ b/src/p_ps1.cpp
 | |
| @@ -499,7 +499,9 @@ void PackPs1::pack(OutputFile *fo)
 | |
|  
 | |
|      // compress (max_match = 65535)
 | |
|      upx_compress_config_t cconf; cconf.reset();
 | |
| +#if (WITH_UCL)
 | |
|      cconf.conf_ucl.max_match = 65535;
 | |
| +#endif
 | |
|      cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28 KiB stack
 | |
|      compressWithFilters(&ft, sa_cnt, &cconf);
 | |
|  
 | |
| --- a/src/p_tos.cpp
 | |
| +++ b/src/p_tos.cpp
 | |
| @@ -506,7 +506,9 @@ void PackTos::pack(OutputFile *fo)
 | |
|      Filter ft(ph.level);
 | |
|      // compress (max_match = 65535)
 | |
|      upx_compress_config_t cconf; cconf.reset();
 | |
| +#if (WITH_UCL)
 | |
|      cconf.conf_ucl.max_match = 65535;
 | |
| +#endif
 | |
|      cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28 KiB stack
 | |
|      compressWithFilters(&ft, 512, &cconf);
 | |
|  
 |