diff --git a/src/p_djgpp2.cpp b/src/p_djgpp2.cpp index a8483815..4ed94d7b 100644 --- a/src/p_djgpp2.cpp +++ b/src/p_djgpp2.cpp @@ -271,6 +271,7 @@ void PackDjgpp2::pack(OutputFile *fo) // filter Filter ft(opt->level); tryFilters(&ft, ibuf, usize - data->size, text->vaddr & ~0x1ff); + buildLoader(&ft); // compress ph.filter = ft.id; diff --git a/src/p_djgpp2.h b/src/p_djgpp2.h index 7b14f641..4c8d77fa 100644 --- a/src/p_djgpp2.h +++ b/src/p_djgpp2.h @@ -55,6 +55,7 @@ public: protected: virtual int buildLoader(const Filter *ft); virtual void handleStub(OutputFile *fo); + virtual bool readFileHeader(); long coff_offset; @@ -94,7 +95,6 @@ protected: external_scnhdr_t *text,*data,*bss; - bool readFileHeader(); void stripDebug(); }; diff --git a/src/p_tos.h b/src/p_tos.h index f58785ad..df7b3c05 100644 --- a/src/p_tos.h +++ b/src/p_tos.h @@ -57,8 +57,8 @@ protected: virtual const upx_byte *getLoader() const; virtual int getLoaderSize() const; - bool readFileHeader(); - bool checkFileHeader(); + virtual bool readFileHeader(); + virtual bool checkFileHeader(); struct tos_header_t { diff --git a/src/p_w32pe.cpp b/src/p_w32pe.cpp index f16829f4..ab31e1eb 100644 --- a/src/p_w32pe.cpp +++ b/src/p_w32pe.cpp @@ -1619,6 +1619,7 @@ void PackW32Pe::pack(OutputFile *fo) Filter ft(opt->level); if (allow_filter) tryFilters(&ft, ibuf + ih.codebase, ih.codesize); + buildLoader(&ft); // compress ph.filter = ft.id; @@ -1629,7 +1630,6 @@ void PackW32Pe::pack(OutputFile *fo) // verify filter ft.verifyUnfilter(); - buildLoader(&ft); #else // new version using compressWithFilters() diff --git a/src/p_w32pe.h b/src/p_w32pe.h index 3260c8d3..499458e4 100644 --- a/src/p_w32pe.h +++ b/src/p_w32pe.h @@ -64,12 +64,12 @@ public: { return (version == 12); } protected: + virtual bool readFileHeader(); virtual bool testUnpackVersion(int version) const; virtual int buildLoader(const Filter *ft); unsigned pe_offset; bool isrtm; - bool readFileHeader(); unsigned processImports(); void processImports(unsigned);