From 7b77491c06763811b7cfb12f8c7d335ef6a660a2 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 14:37:01 +0200 Subject: [PATCH] Refactoring: move fields ui_pass and ui_total_passes from class Packer into class UiPacker. --- src/p_lx_elf.cpp | 17 +++++++++-------- src/p_mach.cpp | 9 +++++---- src/packer.cpp | 16 ++++++++-------- src/packer.h | 2 -- src/ui.cpp | 2 +- src/ui.h | 3 +++ 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index a14f667b..d3c559b3 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -40,6 +40,7 @@ #include "p_unix.h" #include "p_lx_exc.h" #include "p_lx_elf.h" +#include "ui.h" #define PT_LOAD32 Elf32_Phdr::PT_LOAD #define PT_LOAD64 Elf64_Phdr::PT_LOAD @@ -1113,13 +1114,13 @@ void PackLinuxElf32::pack2(OutputFile *fo, Filter &ft) unsigned k; // count passes, set ptload vars - ui_total_passes = 0; + uip->ui_total_passes = 0; unsigned const e_phnum = get_native16(&ehdri.e_phnum); for (k = 0; k < e_phnum; ++k) { if (PT_LOAD32 == get_native32(&phdri[k].p_type)) { - ui_total_passes++; + uip->ui_total_passes++; if (find_LOAD_gap(phdri, k, e_phnum)) { - ui_total_passes++; + uip->ui_total_passes++; } } } @@ -1130,7 +1131,7 @@ void PackLinuxElf32::pack2(OutputFile *fo, Filter &ft) unsigned hdr_u_len = sizeof(Elf32_Ehdr) + sz_phdrs; - ui_pass = 0; + uip->ui_pass = 0; ft.addvalue = 0; int nx = 0; @@ -1215,13 +1216,13 @@ void PackLinuxElf64::pack2(OutputFile *fo, Filter &ft) unsigned k; // count passes, set ptload vars - ui_total_passes = 0; + uip->ui_total_passes = 0; unsigned const e_phnum = get_native16(&ehdri.e_phnum); for (k = 0; k < e_phnum; ++k) { if (PT_LOAD64==get_native32(&phdri[k].p_type)) { - ui_total_passes++; + uip->ui_total_passes++; if (find_LOAD_gap(phdri, k, e_phnum)) { - ui_total_passes++; + uip->ui_total_passes++; } } } @@ -1232,7 +1233,7 @@ void PackLinuxElf64::pack2(OutputFile *fo, Filter &ft) unsigned hdr_u_len = sizeof(Elf64_Ehdr) + sz_phdrs; - ui_pass = 0; + uip->ui_pass = 0; ft.addvalue = 0; int nx = 0; diff --git a/src/p_mach.cpp b/src/p_mach.cpp index 1dd46a38..ae95c5b2 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -32,6 +32,7 @@ #include "linker.h" #include "packer.h" #include "p_mach.h" +#include "ui.h" static const #include "stub/powerpc-darwin.macho-entry.h" @@ -225,13 +226,13 @@ PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body unsigned k; // count passes, set ptload vars - ui_total_passes = 0; + uip->ui_total_passes = 0; for (k = 0; k < n_segment; ++k) { if (Mach_segment_command::LC_SEGMENT==msegcmd[k].cmd && 0!=msegcmd[k].filesize ) { - ui_total_passes++; + uip->ui_total_passes++; if (find_SEGMENT_gap(k)) { - ui_total_passes++; + uip->ui_total_passes++; } } } @@ -242,7 +243,7 @@ PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body unsigned hdr_u_len = mhdri.sizeofcmds; - ui_pass = 0; + uip->ui_pass = 0; ft.addvalue = 0; int nx = 0; diff --git a/src/packer.cpp b/src/packer.cpp index 8a282058..5d0f6424 100644 --- a/src/packer.cpp +++ b/src/packer.cpp @@ -41,7 +41,7 @@ Packer::Packer(InputFile *f) : fi(f), file_size(-1), ph_format(-1), ph_version(-1), - uip(NULL), ui_pass(0), ui_total_passes(0), linker(NULL), + uip(NULL), linker(NULL), last_patch(NULL), last_patch_len(0), last_patch_off(0) { file_size = f->st.st_size; @@ -189,9 +189,9 @@ bool Packer::compress(upx_bytep in, upx_bytep out, step = 0; #endif } - if (ui_pass >= 0) - ui_pass++; - uip->startCallback(ph.u_len, step, ui_pass, ui_total_passes); + if (uip->ui_pass >= 0) + uip->ui_pass++; + uip->startCallback(ph.u_len, step, uip->ui_pass, uip->ui_total_passes); uip->firstCallback(); //OutputFile::dump("data.raw", in, ph.u_len); @@ -1268,9 +1268,9 @@ void Packer::compressWithFilters(Filter *parm_ft, // update total_passes; previous (0 < ui_total_passes) means incremental if (strategy < 0) - ui_total_passes += 1 * nmethods - (0 < ui_total_passes); + uip->ui_total_passes += 1 * nmethods - (0 < uip->ui_total_passes); else - ui_total_passes += nfilters * nmethods - (0 < ui_total_passes); + uip->ui_total_passes += nfilters * nmethods - (0 < uip->ui_total_passes); // Working buffer for compressed data. Don't waste memory. MemBuffer *otemp = &obuf; @@ -1327,8 +1327,8 @@ void Packer::compressWithFilters(Filter *parm_ft, if (strategy > 0) { // adjust passes - if (ui_pass >= 0) - ui_pass++; + if (uip->ui_pass >= 0) + uip->ui_pass++; } continue; } diff --git a/src/packer.h b/src/packer.h index c4e88c64..6e950081 100644 --- a/src/packer.h +++ b/src/packer.h @@ -281,8 +281,6 @@ protected: // UI handler UiPacker *uip; - int ui_pass; - int ui_total_passes; // linker Linker *linker; diff --git a/src/ui.cpp b/src/ui.cpp index 7d8ea47b..fc9005a6 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -178,7 +178,7 @@ static const char *mkline(unsigned long fu_len, unsigned long fc_len, **************************************************************************/ UiPacker::UiPacker(const Packer *p_) : - p(p_), s(NULL) + ui_pass(0), ui_total_passes(0), p(p_), s(NULL) { init_global_constants(); diff --git a/src/ui.h b/src/ui.h index afc81cb0..aaea5841 100644 --- a/src/ui.h +++ b/src/ui.h @@ -84,6 +84,9 @@ public: static void uiHeader(); static void uiFooter(const char *n); + int ui_pass; + int ui_total_passes; + protected: virtual void printInfo(int nl=0); const Packer *p;