1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

Removed unused Packer::freezeLoader(). Changed return type of

buildLoader() from "int" to "void".
This commit is contained in:
Markus F.X.J. Oberhumer 2006-11-12 20:57:08 +01:00
parent 9e72ecd93d
commit be235ddc38
38 changed files with 84 additions and 122 deletions

View File

@ -462,7 +462,7 @@ bool PackArmPe::canPack()
} }
int PackArmPe::buildLoader(const Filter *ft) void PackArmPe::buildLoader(const Filter *ft)
{ {
const unsigned char *loader = use_thumb_stub ? nrv_loader_thumb : nrv_loader_arm; const unsigned char *loader = use_thumb_stub ? nrv_loader_thumb : nrv_loader_arm;
unsigned size = use_thumb_stub ? sizeof(nrv_loader_thumb) : sizeof(nrv_loader_arm); unsigned size = use_thumb_stub ? sizeof(nrv_loader_thumb) : sizeof(nrv_loader_arm);
@ -503,8 +503,6 @@ int PackArmPe::buildLoader(const Filter *ft)
addLoader("+40C,LZMA_DECODE,LZMA_DEC10", NULL); addLoader("+40C,LZMA_DECODE,LZMA_DEC10", NULL);
addLoader("IDENTSTR,UPX1HEAD", NULL); addLoader("IDENTSTR,UPX1HEAD", NULL);
freezeLoader();
return getLoaderSize();
} }

View File

@ -51,7 +51,7 @@ public:
virtual int canUnpack(); virtual int canUnpack();
protected: protected:
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual unsigned processImports(); virtual unsigned processImports();

View File

@ -136,7 +136,7 @@ void PackCom::patchLoader(OutputFile *fo,
} }
int PackCom::buildLoader(const Filter *ft) void PackCom::buildLoader(const Filter *ft)
{ {
initLoader(nrv2b_loader,sizeof(nrv2b_loader)); initLoader(nrv2b_loader,sizeof(nrv2b_loader));
addLoader("COMMAIN1", addLoader("COMMAIN1",
@ -155,8 +155,6 @@ int PackCom::buildLoader(const Filter *ft)
assert(ft->calls > 0); assert(ft->calls > 0);
addFilter16(ft->id); addFilter16(ft->id);
} }
freezeLoader();
return getLoaderSize();
} }

View File

@ -56,7 +56,7 @@ protected:
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
protected: protected:
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual void patchLoader(OutputFile *fo, upx_byte *, int, unsigned); virtual void patchLoader(OutputFile *fo, upx_byte *, int, unsigned);
virtual void addFilter16(int filter_id); virtual void addFilter16(int filter_id);
}; };

View File

@ -89,7 +89,7 @@ Linker* PackDjgpp2::newLinker() const
} }
int PackDjgpp2::buildLoader(const Filter *ft) void PackDjgpp2::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
initLoader(nrv_loader, sizeof(nrv_loader)); initLoader(nrv_loader, sizeof(nrv_loader));
@ -109,8 +109,6 @@ int PackDjgpp2::buildLoader(const Filter *ft)
addFilter32(ft->id); addFilter32(ft->id);
} }
addLoader("DJRETURN,+40C,UPX1HEAD", NULL); addLoader("DJRETURN,+40C,UPX1HEAD", NULL);
freezeLoader();
return getLoaderSize();
} }

View File

@ -59,7 +59,7 @@ protected:
virtual unsigned findOverlapOverhead(const upx_bytep buf, virtual unsigned findOverlapOverhead(const upx_bytep buf,
unsigned range = 0, unsigned range = 0,
unsigned upper_limit = ~0u) const; unsigned upper_limit = ~0u) const;
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
long coff_offset; long coff_offset;

View File

@ -94,14 +94,12 @@ void PackElks8086::readKernel()
// //
**************************************************************************/ **************************************************************************/
int PackElks8086::buildLoader(const Filter *ft) void PackElks8086::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
initLoader(nrv_loader, sizeof(nrv_loader)); initLoader(nrv_loader, sizeof(nrv_loader));
// FIXME // FIXME
UNUSED(ft); UNUSED(ft);
freezeLoader();
return getLoaderSize();
} }

View File

@ -113,7 +113,7 @@ int PackExe::fillExeHeader(struct exe_header_t *eh) const
} }
int PackExe::buildLoader(const Filter *) void PackExe::buildLoader(const Filter *)
{ {
struct exe_header_t tmp_oh; struct exe_header_t tmp_oh;
int flag = fillExeHeader(&tmp_oh); int flag = fillExeHeader(&tmp_oh);
@ -189,8 +189,6 @@ int PackExe::buildLoader(const Filter *)
"EXERETIP", "EXERETIP",
NULL NULL
); );
freezeLoader();
return getLoaderSize();
} }

View File

@ -68,7 +68,7 @@ protected:
virtual int readFileHeader(void); virtual int readFileHeader(void);
virtual int fillExeHeader(struct exe_header_t *) const; virtual int fillExeHeader(struct exe_header_t *) const;
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
struct exe_header_t struct exe_header_t

View File

@ -431,7 +431,7 @@ void PackLinuxElf32x86::defineSymbols(Filter const *const ft)
} }
} }
int void
PackLinuxElf32::buildLinuxLoader( PackLinuxElf32::buildLinuxLoader(
upx_byte const *const proto, upx_byte const *const proto,
unsigned const szproto, unsigned const szproto,
@ -488,13 +488,11 @@ PackLinuxElf32::buildLinuxLoader(
addStubEntrySections(ft); addStubEntrySections(ft);
freezeLoader();
defineSymbols(ft); defineSymbols(ft);
linker->relocate(); linker->relocate();
return getLoaderSize();
} }
int void
PackLinuxElf64::buildLinuxLoader( PackLinuxElf64::buildLinuxLoader(
upx_byte const *const proto, upx_byte const *const proto,
unsigned const szproto, unsigned const szproto,
@ -538,10 +536,8 @@ PackLinuxElf64::buildLinuxLoader(
addStubEntrySections(ft); addStubEntrySections(ft);
freezeLoader();
defineSymbols(ft); defineSymbols(ft);
linker->relocate(); linker->relocate();
return getLoaderSize();
} }
void void
@ -629,7 +625,7 @@ static const
static const static const
#include "stub/i386-linux.elf-fold.h" #include "stub/i386-linux.elf-fold.h"
int void
PackLinuxElf32x86::buildLoader(const Filter *ft) PackLinuxElf32x86::buildLoader(const Filter *ft)
{ {
unsigned char tmp[sizeof(linux_i386elf_fold)]; unsigned char tmp[sizeof(linux_i386elf_fold)];
@ -647,7 +643,7 @@ PackLinuxElf32x86::buildLoader(const Filter *ft)
} }
} }
} }
return buildLinuxLoader( buildLinuxLoader(
linux_i386elf_loader, sizeof(linux_i386elf_loader), linux_i386elf_loader, sizeof(linux_i386elf_loader),
tmp, sizeof(linux_i386elf_fold), ft ); tmp, sizeof(linux_i386elf_fold), ft );
} }
@ -657,7 +653,7 @@ static const
static const static const
#include "stub/i386-bsd.elf-fold.h" #include "stub/i386-bsd.elf-fold.h"
int void
PackBSDElf32x86::buildLoader(const Filter *ft) PackBSDElf32x86::buildLoader(const Filter *ft)
{ {
unsigned char tmp[sizeof(bsd_i386elf_fold)]; unsigned char tmp[sizeof(bsd_i386elf_fold)];
@ -675,7 +671,7 @@ PackBSDElf32x86::buildLoader(const Filter *ft)
} }
} }
} }
return buildLinuxLoader( buildLinuxLoader(
bsd_i386elf_loader, sizeof(bsd_i386elf_loader), bsd_i386elf_loader, sizeof(bsd_i386elf_loader),
tmp, sizeof(bsd_i386elf_fold), ft ); tmp, sizeof(bsd_i386elf_fold), ft );
} }
@ -687,7 +683,7 @@ static const
static const static const
#include "stub/i386-openbsd.elf-fold.h" #include "stub/i386-openbsd.elf-fold.h"
int void
PackOpenBSDElf32x86::buildLoader(const Filter *ft) PackOpenBSDElf32x86::buildLoader(const Filter *ft)
{ {
unsigned char tmp[sizeof(openbsd_i386elf_fold)]; unsigned char tmp[sizeof(openbsd_i386elf_fold)];
@ -705,7 +701,7 @@ PackOpenBSDElf32x86::buildLoader(const Filter *ft)
} }
} }
} }
return buildLinuxLoader( buildLinuxLoader(
bsd_i386elf_loader, sizeof(bsd_i386elf_loader), bsd_i386elf_loader, sizeof(bsd_i386elf_loader),
tmp, sizeof(openbsd_i386elf_fold), ft ); tmp, sizeof(openbsd_i386elf_fold), ft );
} }
@ -777,16 +773,16 @@ ehdr_lebe(Elf_LE32_Ehdr *const ehdr_le, Elf_BE32_Ehdr const *const ehdr_be)
ehdr_le->e_shstrndx = ehdr_be->e_shstrndx; ehdr_le->e_shstrndx = ehdr_be->e_shstrndx;
} }
int void
PackLinuxElf32armBe::buildLoader(Filter const *ft) PackLinuxElf32armBe::buildLoader(Filter const *ft)
{ {
return ARM_buildLoader(ft, true); ARM_buildLoader(ft, true);
} }
int void
PackLinuxElf32armLe::buildLoader(Filter const *ft) PackLinuxElf32armLe::buildLoader(Filter const *ft)
{ {
return ARM_buildLoader(ft, false); ARM_buildLoader(ft, false);
} }
static const static const
@ -794,10 +790,10 @@ static const
static const static const
#include "stub/powerpc-linux.elf-fold.h" #include "stub/powerpc-linux.elf-fold.h"
int void
PackLinuxElf32ppc::buildLoader(const Filter *ft) PackLinuxElf32ppc::buildLoader(const Filter *ft)
{ {
return buildLinuxLoader( buildLinuxLoader(
linux_elfppc32_loader, sizeof(linux_elfppc32_loader), linux_elfppc32_loader, sizeof(linux_elfppc32_loader),
linux_elfppc32_fold, sizeof(linux_elfppc32_fold), ft ); linux_elfppc32_fold, sizeof(linux_elfppc32_fold), ft );
} }
@ -807,10 +803,10 @@ static const
static const static const
#include "stub/amd64-linux.elf-fold.h" #include "stub/amd64-linux.elf-fold.h"
int void
PackLinuxElf64amd::buildLoader(const Filter *ft) PackLinuxElf64amd::buildLoader(const Filter *ft)
{ {
return buildLinuxLoader( buildLinuxLoader(
linux_elf64amd_loader, sizeof(linux_elf64amd_loader), linux_elf64amd_loader, sizeof(linux_elf64amd_loader),
linux_elf64amd_fold, sizeof(linux_elf64amd_fold), ft ); linux_elf64amd_fold, sizeof(linux_elf64amd_fold), ft );
} }
@ -1515,7 +1511,7 @@ PackLinuxElf32armLe::getFilters() const
return ARM_getFilters(false); return ARM_getFilters(false);
} }
int void
PackLinuxElf32::ARM_buildLoader(const Filter *ft, bool const isBE) PackLinuxElf32::ARM_buildLoader(const Filter *ft, bool const isBE)
{ {
unsigned const sz_loader = sizeof(linux_elf32arm_loader); unsigned const sz_loader = sizeof(linux_elf32arm_loader);
@ -1542,7 +1538,7 @@ PackLinuxElf32::ARM_buildLoader(const Filter *ft, bool const isBE)
} }
} }
if (!asm_brev) { // was assembled to match target if (!asm_brev) { // was assembled to match target
return buildLinuxLoader(linux_elf32arm_loader, sz_loader, buildLinuxLoader(linux_elf32arm_loader, sz_loader,
tmp_fold, sz_fold, ft ); tmp_fold, sz_fold, ft );
} }
else { // was assembled brev() from target else { // was assembled brev() from target
@ -1567,7 +1563,7 @@ PackLinuxElf32::ARM_buildLoader(const Filter *ft, bool const isBE)
(isBE ? (void (*)(void *, void const *))ehdr_bele (isBE ? (void (*)(void *, void const *))ehdr_bele
: (void (*)(void *, void const *))ehdr_lebe) : (void (*)(void *, void const *))ehdr_lebe)
(tmp_fold.getVoidPtr(), (void const *)linux_elf32arm_fold); (tmp_fold.getVoidPtr(), (void const *)linux_elf32arm_fold);
return buildLinuxLoader(brev_loader, sz_loader, tmp_fold, sz_fold, ft); buildLinuxLoader(brev_loader, sz_loader, tmp_fold, sz_fold, ft);
} }
} }

View File

@ -40,7 +40,7 @@ class PackLinuxElf : public PackUnix
public: public:
PackLinuxElf(InputFile *f); PackLinuxElf(InputFile *f);
virtual ~PackLinuxElf(); virtual ~PackLinuxElf();
/*virtual int buildLoader(const Filter *);*/ /*virtual void buildLoader(const Filter *);*/
virtual bool canUnpackVersion(int version) const { return (version >= 11); } virtual bool canUnpackVersion(int version) const { return (version >= 11); }
protected: protected:
@ -90,7 +90,7 @@ protected:
// These ARM routines are essentially common to big/little endian, // These ARM routines are essentially common to big/little endian,
// but the class hierarchy splits after this class. // but the class hierarchy splits after this class.
virtual int ARM_buildLoader(Filter const *ft, bool isBE); virtual void ARM_buildLoader(Filter const *ft, bool isBE);
virtual void ARM_defineSymbols(Filter const *ft); virtual void ARM_defineSymbols(Filter const *ft);
virtual void ARM_updateLoader(OutputFile *); virtual void ARM_updateLoader(OutputFile *);
virtual void ARM_pack1(OutputFile *, bool isBE); virtual void ARM_pack1(OutputFile *, bool isBE);
@ -106,7 +106,7 @@ protected:
void const *proto, void const *proto,
unsigned const brka unsigned const brka
); );
virtual int buildLinuxLoader( virtual void buildLinuxLoader(
upx_byte const *const proto, // assembly-only sections upx_byte const *const proto, // assembly-only sections
unsigned const szproto, unsigned const szproto,
upx_byte const *const fold, // linked assembly + C section upx_byte const *const fold, // linked assembly + C section
@ -172,7 +172,7 @@ class PackLinuxElf64 : public PackLinuxElf
public: public:
PackLinuxElf64(InputFile *f); PackLinuxElf64(InputFile *f);
virtual ~PackLinuxElf64(); virtual ~PackLinuxElf64();
/*virtual int buildLoader(const Filter *);*/ /*virtual void buildLoader(const Filter *);*/
protected: protected:
virtual int checkEhdr(Elf64_Ehdr const *ehdr) const; virtual int checkEhdr(Elf64_Ehdr const *ehdr) const;
@ -188,7 +188,7 @@ protected:
void const *proto, void const *proto,
unsigned const brka unsigned const brka
); );
virtual int buildLinuxLoader( virtual void buildLinuxLoader(
upx_byte const *const proto, // assembly-only sections upx_byte const *const proto, // assembly-only sections
unsigned const szproto, unsigned const szproto,
upx_byte const *const fold, // linked assembly + C section upx_byte const *const fold, // linked assembly + C section
@ -288,7 +288,7 @@ public:
protected: protected:
virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void pack1(OutputFile *, Filter &); // generate executable header
//virtual void pack3(OutputFile *, Filter &); // append loader //virtual void pack3(OutputFile *, Filter &); // append loader
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual void defineSymbols(Filter const *); virtual void defineSymbols(Filter const *);
}; };
@ -308,7 +308,7 @@ public:
virtual const int *getFilters() const; virtual const int *getFilters() const;
protected: protected:
virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
}; };
@ -331,7 +331,7 @@ public:
protected: protected:
virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
virtual void addStubEntrySections(Filter const *); virtual void addStubEntrySections(Filter const *);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual void defineSymbols(Filter const *); virtual void defineSymbols(Filter const *);
@ -349,7 +349,7 @@ public:
protected: protected:
virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
}; };
class PackFreeBSDElf32x86 : public PackBSDElf32x86 class PackFreeBSDElf32x86 : public PackBSDElf32x86
@ -376,7 +376,7 @@ public:
virtual ~PackOpenBSDElf32x86(); virtual ~PackOpenBSDElf32x86();
protected: protected:
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual void generateElfHdr( virtual void generateElfHdr(
OutputFile *, OutputFile *,
void const *proto, void const *proto,
@ -402,7 +402,7 @@ protected:
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
virtual void updateLoader(OutputFile *); virtual void updateLoader(OutputFile *);
virtual void defineSymbols(Filter const *); virtual void defineSymbols(Filter const *);
}; };
@ -421,7 +421,7 @@ protected:
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
virtual void updateLoader(OutputFile *); virtual void updateLoader(OutputFile *);
virtual void defineSymbols(Filter const *); virtual void defineSymbols(Filter const *);
}; };

View File

@ -292,7 +292,7 @@ Linker *PackLinuxI386::newLinker() const
return new ElfLinkerX86; return new ElfLinkerX86;
} }
int void
PackLinuxI386::buildLinuxLoader( PackLinuxI386::buildLinuxLoader(
upx_byte const *const proto, upx_byte const *const proto,
unsigned const szproto, unsigned const szproto,
@ -372,7 +372,6 @@ PackLinuxI386::buildLinuxLoader(
addLoader("IDENTSTR", NULL); addLoader("IDENTSTR", NULL);
addLoader("LEXEC020", NULL); addLoader("LEXEC020", NULL);
addLoader("FOLDEXEC", NULL); addLoader("FOLDEXEC", NULL);
freezeLoader();
if (ph.method == M_LZMA) { if (ph.method == M_LZMA) {
const lzma_compress_result_t *res = &ph.compress_result.result_lzma; const lzma_compress_result_t *res = &ph.compress_result.result_lzma;
unsigned const properties = // lc, lp, pb, dummy unsigned const properties = // lc, lp, pb, dummy
@ -394,10 +393,9 @@ PackLinuxI386::buildLinuxLoader(
} }
} }
linker->relocate(); linker->relocate();
return getLoaderSize();
} }
int void
PackLinuxI386::buildLoader(Filter const *ft) PackLinuxI386::buildLoader(Filter const *ft)
{ {
unsigned const sz_fold = sizeof(linux_i386exec_fold); unsigned const sz_fold = sizeof(linux_i386exec_fold);
@ -412,12 +410,12 @@ PackLinuxI386::buildLoader(Filter const *ft)
patch_le32(buf,sz_fold,"UPX3",progid); patch_le32(buf,sz_fold,"UPX3",progid);
patch_le32(buf,sz_fold,"UPX2",exetype > 0 ? 0 : 0x7fffffff); patch_le32(buf,sz_fold,"UPX2",exetype > 0 ? 0 : 0x7fffffff);
return buildLinuxLoader( buildLinuxLoader(
linux_i386exec_loader, sizeof(linux_i386exec_loader), linux_i386exec_loader, sizeof(linux_i386exec_loader),
buf, sz_fold, ft ); buf, sz_fold, ft );
} }
int void
PackBSDI386::buildLoader(Filter const *ft) PackBSDI386::buildLoader(Filter const *ft)
{ {
unsigned const sz_fold = sizeof(bsd_i386exec_fold); unsigned const sz_fold = sizeof(bsd_i386exec_fold);
@ -432,7 +430,7 @@ PackBSDI386::buildLoader(Filter const *ft)
patch_le32(buf,sz_fold,"UPX3",progid); patch_le32(buf,sz_fold,"UPX3",progid);
patch_le32(buf,sz_fold,"UPX2",exetype > 0 ? 0 : 0x7fffffff); patch_le32(buf,sz_fold,"UPX2",exetype > 0 ? 0 : 0x7fffffff);
return buildLinuxLoader( buildLinuxLoader(
bsd_i386exec_loader, sizeof(bsd_i386exec_loader), bsd_i386exec_loader, sizeof(bsd_i386exec_loader),
buf, sz_fold, ft ); buf, sz_fold, ft );
} }

View File

@ -51,7 +51,7 @@ public:
virtual const char *getName() const { return "linux/386"; } virtual const char *getName() const { return "linux/386"; }
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const; virtual const int *getFilters() const;
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
virtual bool canPack(); virtual bool canPack();
@ -64,7 +64,7 @@ protected:
// loader util // loader util
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual int getLoaderPrefixSize() const; virtual int getLoaderPrefixSize() const;
virtual int buildLinuxLoader( virtual void buildLinuxLoader(
upx_byte const *const proto, // assembly-only sections upx_byte const *const proto, // assembly-only sections
unsigned const szproto, unsigned const szproto,
upx_byte const *const fold, // linked assembly + C section upx_byte const *const fold, // linked assembly + C section
@ -133,7 +133,7 @@ public:
protected: protected:
virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
}; };
#endif /* already included */ #endif /* already included */

View File

@ -182,7 +182,6 @@ void PackLinuxElf32x86interp::pack3(OutputFile *fo, Filter &/*ft*/)
addLoader("LXPTI200", NULL); addLoader("LXPTI200", NULL);
addLoader("FOLDEXEC", NULL); addLoader("FOLDEXEC", NULL);
freezeLoader();
upx_byte const *p = getLoader(); upx_byte const *p = getLoader();
lsize = getLoaderSize(); lsize = getLoaderSize();
updateLoader(fo); updateLoader(fo);

View File

@ -71,7 +71,7 @@ umax(unsigned a, unsigned b)
return a; return a;
} }
int void
PackLinuxI386sh::buildLoader(Filter const *ft) PackLinuxI386sh::buildLoader(Filter const *ft)
{ {
unsigned const sz_fold = sizeof(linux_i386sh_fold); unsigned const sz_fold = sizeof(linux_i386sh_fold);
@ -99,7 +99,7 @@ PackLinuxI386sh::buildLoader(Filter const *ft)
bool success = fold_ft.filter(buf + fold_hdrlen, sz_fold - fold_hdrlen); bool success = fold_ft.filter(buf + fold_hdrlen, sz_fold - fold_hdrlen);
UNUSED(success); UNUSED(success);
return buildLinuxLoader( buildLinuxLoader(
linux_i386sh_loader, sizeof(linux_i386sh_loader), linux_i386sh_loader, sizeof(linux_i386sh_loader),
buf, sz_fold, ft ); buf, sz_fold, ft );
} }

View File

@ -48,7 +48,7 @@ public:
virtual int getFormat() const { return UPX_F_LINUX_SH_i386; } virtual int getFormat() const { return UPX_F_LINUX_SH_i386; }
virtual const char *getName() const { return "linux/sh386"; } virtual const char *getName() const { return "linux/sh386"; }
virtual const int *getFilters() const { return NULL; } virtual const int *getFilters() const { return NULL; }
virtual int buildLoader(const Filter *); virtual void buildLoader(const Filter *);
virtual void pack1(OutputFile *fo, Filter &ft); virtual void pack1(OutputFile *fo, Filter &ft);
virtual void pack3(OutputFile *fo, Filter &ft); virtual void pack3(OutputFile *fo, Filter &ft);

View File

@ -90,7 +90,7 @@ void PackMachPPC32::defineSymbols(Filter const *)
} }
int void
PackMachPPC32::buildMachLoader( PackMachPPC32::buildMachLoader(
upx_byte const *const proto, upx_byte const *const proto,
unsigned const szproto, unsigned const szproto,
@ -131,16 +131,14 @@ PackMachPPC32::buildMachLoader(
addStubEntrySections(ft); addStubEntrySections(ft);
freezeLoader();
defineSymbols(ft); defineSymbols(ft);
linker->relocate(); linker->relocate();
return getLoaderSize();
} }
int void
PackMachPPC32::buildLoader(const Filter *ft) PackMachPPC32::buildLoader(const Filter *ft)
{ {
return buildMachLoader( buildMachLoader(
l_mac_ppc32_loader, sizeof(l_mac_ppc32_loader), l_mac_ppc32_loader, sizeof(l_mac_ppc32_loader),
fold_machppc32, sizeof(fold_machppc32), ft ); fold_machppc32, sizeof(fold_machppc32), ft );
} }

View File

@ -180,12 +180,12 @@ public:
virtual unsigned find_SEGMENT_gap(unsigned const k); virtual unsigned find_SEGMENT_gap(unsigned const k);
protected: protected:
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual void patchLoader(); virtual void patchLoader();
virtual void patchLoaderChecksum(); virtual void patchLoaderChecksum();
virtual void updateLoader(OutputFile *); virtual void updateLoader(OutputFile *);
virtual int buildMachLoader( virtual void buildMachLoader(
upx_byte const *const proto, upx_byte const *const proto,
unsigned const szproto, unsigned const szproto,
upx_byte const *const fold, upx_byte const *const fold,

View File

@ -300,7 +300,7 @@ bool PackPs1::canPack()
// //
**************************************************************************/ **************************************************************************/
int PackPs1::buildLoader(const Filter *) void PackPs1::buildLoader(const Filter *)
{ {
const char *method = NULL; const char *method = NULL;
@ -402,8 +402,6 @@ int PackPs1::buildLoader(const Filter *)
} }
addLoader("UPX1HEAD", "IDENTSTR", NULL); addLoader("UPX1HEAD", "IDENTSTR", NULL);
} }
freezeLoader();
return getLoaderSize();
} }
#define OPTYPE(x) (((x) >> 13) & 0x7) #define OPTYPE(x) (((x) >> 13) & 0x7)

View File

@ -59,7 +59,7 @@ protected:
virtual void putBkupHeader(const unsigned char *src, unsigned char *dst, unsigned *len); virtual void putBkupHeader(const unsigned char *src, unsigned char *dst, unsigned *len);
virtual bool getBkupHeader(unsigned char *src, unsigned char * dst); virtual bool getBkupHeader(unsigned char *src, unsigned char * dst);
virtual bool readBkupHeader(); virtual bool readBkupHeader();
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual bool findBssSection(); virtual bool findBssSection();
virtual Linker* newLinker() const; virtual Linker* newLinker() const;

View File

@ -100,7 +100,7 @@ void PackSys::patchLoader(OutputFile *fo,
} }
int PackSys::buildLoader(const Filter *ft) void PackSys::buildLoader(const Filter *ft)
{ {
initLoader(nrv2b_loader,sizeof(nrv2b_loader)); initLoader(nrv2b_loader,sizeof(nrv2b_loader));
addLoader("SYSMAIN1", addLoader("SYSMAIN1",
@ -123,8 +123,6 @@ int PackSys::buildLoader(const Filter *ft)
"SYSJUMP1", "SYSJUMP1",
NULL NULL
); );
freezeLoader();
return getLoaderSize();
} }

View File

@ -49,7 +49,7 @@ protected:
virtual unsigned getCallTrickOffset() const { return 0; } virtual unsigned getCallTrickOffset() const { return 0; }
protected: protected:
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual void patchLoader(OutputFile *fo, upx_byte *, int, unsigned); virtual void patchLoader(OutputFile *fo, upx_byte *, int, unsigned);
}; };

View File

@ -81,7 +81,7 @@ Linker* PackTmt::newLinker() const
} }
int PackTmt::buildLoader(const Filter *ft) void PackTmt::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
initLoader(nrv_loader,sizeof(nrv_loader)); initLoader(nrv_loader,sizeof(nrv_loader));
@ -105,8 +105,6 @@ int PackTmt::buildLoader(const Filter *ft)
"RELOC32J,TMTJUMP1", "RELOC32J,TMTJUMP1",
NULL NULL
); );
freezeLoader();
return getLoaderSize();
} }

View File

@ -57,7 +57,7 @@ protected:
virtual unsigned findOverlapOverhead(const upx_bytep buf, virtual unsigned findOverlapOverhead(const upx_bytep buf,
unsigned range = 0, unsigned range = 0,
unsigned upper_limit = ~0u) const; unsigned upper_limit = ~0u) const;
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
unsigned adam_offset; unsigned adam_offset;

View File

@ -93,7 +93,7 @@ void PackTos::LinkerSymbols::LoopInfo::init(unsigned count_, bool allow_dbra)
} }
int PackTos::buildLoader(const Filter *ft) void PackTos::buildLoader(const Filter *ft)
{ {
assert(ft->id == 0); assert(ft->id == 0);
@ -201,9 +201,6 @@ int PackTos::buildLoader(const Filter *ft)
addLoader("loop3_set_count.l", NULL); addLoader("loop3_set_count.l", NULL);
addLoader("jmpstack", NULL); addLoader("jmpstack", NULL);
freezeLoader();
return getLoaderSize();
} }

View File

@ -55,7 +55,7 @@ public:
protected: protected:
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual int readFileHeader(); virtual int readFileHeader();
virtual bool checkFileHeader(); virtual bool checkFileHeader();

View File

@ -223,7 +223,7 @@ Linker* PackVmlinuxI386::newLinker() const
} }
int PackVmlinuxI386::buildLoader(const Filter *ft) void PackVmlinuxI386::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
initLoader(nrv_loader, sizeof(nrv_loader)); initLoader(nrv_loader, sizeof(nrv_loader));
@ -245,8 +245,6 @@ int PackVmlinuxI386::buildLoader(const Filter *ft)
addFilter32(ft->id); addFilter32(ft->id);
} }
addLoader("LINUX990,IDENTSTR,UPX1HEAD", NULL); addLoader("LINUX990,IDENTSTR,UPX1HEAD", NULL);
freezeLoader();
return getLoaderSize();
} }

View File

@ -56,7 +56,7 @@ public:
protected: protected:
virtual Elf_LE32_Shdr const *getElfSections(); virtual Elf_LE32_Shdr const *getElfSections();
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
// virtual const upx_byte *getLoader() const; // virtual const upx_byte *getLoader() const;
// virtual int getLoaderSize() const; // virtual int getLoaderSize() const;

View File

@ -269,7 +269,7 @@ Linker* PackVmlinuzI386::newLinker() const
// vmlinuz specific // vmlinuz specific
**************************************************************************/ **************************************************************************/
int PackVmlinuzI386::buildLoader(const Filter *ft) void PackVmlinuzI386::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
initLoader(nrv_loader, sizeof(nrv_loader)); initLoader(nrv_loader, sizeof(nrv_loader));
@ -286,8 +286,6 @@ int PackVmlinuzI386::buildLoader(const Filter *ft)
addFilter32(ft->id); addFilter32(ft->id);
} }
addLoader("LINUZ990,IDENTSTR,UPX1HEAD", NULL); addLoader("LINUZ990,IDENTSTR,UPX1HEAD", NULL);
freezeLoader();
return getLoaderSize();
} }
@ -357,7 +355,7 @@ void PackVmlinuzI386::pack(OutputFile *fo)
// bvmlinuz specific // bvmlinuz specific
**************************************************************************/ **************************************************************************/
int PackBvmlinuzI386::buildLoader(const Filter *ft) void PackBvmlinuzI386::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
initLoader(nrv_loader, sizeof(nrv_loader)); initLoader(nrv_loader, sizeof(nrv_loader));
@ -387,8 +385,6 @@ int PackBvmlinuzI386::buildLoader(const Filter *ft)
addFilter32(ft->id); addFilter32(ft->id);
} }
addLoader("LINUZ990", NULL); addLoader("LINUZ990", NULL);
freezeLoader();
return getLoaderSize();
} }

View File

@ -56,7 +56,7 @@ protected:
virtual int decompressKernel(); virtual int decompressKernel();
virtual void readKernel(); virtual void readKernel();
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
// virtual const upx_byte *getLoader() const; // virtual const upx_byte *getLoader() const;
@ -105,7 +105,7 @@ public:
virtual void pack(OutputFile *fo); virtual void pack(OutputFile *fo);
protected: protected:
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
}; };
@ -132,7 +132,7 @@ protected:
virtual int decompressKernel(); virtual int decompressKernel();
virtual void readKernel(); virtual void readKernel();
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
}; };

View File

@ -57,7 +57,7 @@ const int *PackW16Ne::getFilters() const
} }
int PackW16Ne::buildLoader(const Filter *ft) void PackW16Ne::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
// initLoader(nrv_loader,sizeof(nrv_loader)); // initLoader(nrv_loader,sizeof(nrv_loader));
@ -68,8 +68,6 @@ int PackW16Ne::buildLoader(const Filter *ft)
// addLoader("..."); // addLoader("...");
} }
// //
freezeLoader();
return getLoaderSize();
} }

View File

@ -54,7 +54,7 @@ public:
protected: protected:
virtual int readFileHeader(void); virtual int readFileHeader(void);
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
}; };

View File

@ -535,7 +535,7 @@ bool PackW32Pe::canPack()
} }
int PackW32Pe::buildLoader(const Filter *ft) void PackW32Pe::buildLoader(const Filter *ft)
{ {
// recompute tlsindex (see pack() below) // recompute tlsindex (see pack() below)
unsigned tmp_tlsindex = tlsindex; unsigned tmp_tlsindex = tlsindex;
@ -598,8 +598,6 @@ int PackW32Pe::buildLoader(const Filter *ft)
"IDENTSTR,UPX1HEAD", "IDENTSTR,UPX1HEAD",
NULL NULL
); );
freezeLoader();
return getLoaderSize();
} }

View File

@ -53,7 +53,7 @@ public:
protected: protected:
virtual int readFileHeader(); virtual int readFileHeader();
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
bool isrtm; bool isrtm;

View File

@ -88,7 +88,7 @@ Linker* PackWcle::newLinker() const
} }
int PackWcle::buildLoader(const Filter *ft) void PackWcle::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
initLoader(nrv_loader,sizeof(nrv_loader)); initLoader(nrv_loader,sizeof(nrv_loader));
@ -118,8 +118,6 @@ int PackWcle::buildLoader(const Filter *ft)
"WCLEMAI4", "WCLEMAI4",
NULL NULL
); );
freezeLoader();
return getLoaderSize();
} }

View File

@ -54,7 +54,7 @@ public:
protected: protected:
virtual void handleStub(OutputFile *fo); virtual void handleStub(OutputFile *fo);
virtual int buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
virtual Linker* newLinker() const; virtual Linker* newLinker() const;
virtual void readObjectTable(); virtual void readObjectTable();

View File

@ -1028,11 +1028,13 @@ void Packer::initLoader(const void *pdata, int plen, int small)
} }
#if 0
void Packer::addLoader(const char *s) void Packer::addLoader(const char *s)
{ {
if (s && *s) if (s && *s)
linker->addLoader(s); linker->addLoader(s);
} }
#endif
void __acc_cdecl_va Packer::addLoader(const char *s, ...) void __acc_cdecl_va Packer::addLoader(const char *s, ...)
{ {
@ -1314,7 +1316,8 @@ void Packer::compressWithFilters(Filter *parm_ft,
{ {
// get results // get results
ph.overlap_overhead = findOverlapOverhead(*otemp, overlap_range); ph.overlap_overhead = findOverlapOverhead(*otemp, overlap_range);
lsize = buildLoader(&ft); buildLoader(&ft);
lsize = getLoaderSize();
assert(lsize > 0); assert(lsize > 0);
} }
#if 0 #if 0

View File

@ -203,18 +203,17 @@ protected:
virtual void checkAlreadyPacked(const void *b, int blen); virtual void checkAlreadyPacked(const void *b, int blen);
// loader core // loader core
virtual int buildLoader(const Filter *ft) = 0; virtual void buildLoader(const Filter *ft) = 0;
virtual Linker* newLinker() const = 0; virtual Linker* newLinker() const = 0;
// loader util for linker // loader util for linker
void freezeLoader() { }
virtual upx_byte *getLoader() const; virtual upx_byte *getLoader() const;
virtual int getLoaderSize() const; virtual int getLoaderSize() const;
virtual void initLoader(const void *pdata, int plen, int small=-1); virtual void initLoader(const void *pdata, int plen, int small=-1);
#if 1 && (ACC_CC_GNUC >= 0x040100) #if 1 && (ACC_CC_GNUC >= 0x040100)
virtual void addLoader(const char *); //virtual void addLoader(const char *);
virtual void __acc_cdecl_va addLoader(const char *, ...) __attribute__((__sentinel__)); virtual void __acc_cdecl_va addLoader(const char *, ...) __attribute__((__sentinel__));
#else #else
virtual void addLoader(const char *); //virtual void addLoader(const char *);
virtual void __acc_cdecl_va addLoader(const char *, ...); virtual void __acc_cdecl_va addLoader(const char *, ...);
#endif #endif
virtual int getLoaderSection(const char *name, int *slen=NULL) const; virtual int getLoaderSection(const char *name, int *slen=NULL) const;