Cleanups: start working on -Wsuggest-override, add some "final". NFCI.
This commit is contained in:
@@ -98,6 +98,7 @@ mf.CXXFLAGS += -fno-strict-aliasing -fno-strict-overflow
|
|||||||
mf.CXXFLAGS += -funsigned-char
|
mf.CXXFLAGS += -funsigned-char
|
||||||
mf.CXXFLAGS += $(CXXFLAGS_SANITIZE)
|
mf.CXXFLAGS += $(CXXFLAGS_SANITIZE)
|
||||||
mf.CXXFLAGS += -Wall -Wextra -Wcast-align -Wcast-qual -Wmissing-declarations -Wpointer-arith -Wshadow -Wvla -Wwrite-strings
|
mf.CXXFLAGS += -Wall -Wextra -Wcast-align -Wcast-qual -Wmissing-declarations -Wpointer-arith -Wshadow -Wvla -Wwrite-strings
|
||||||
|
##mf.CXXFLAGS += -Wsuggest-override
|
||||||
mf.CXXFLAGS += $(CXXFLAGS_WERROR)
|
mf.CXXFLAGS += $(CXXFLAGS_WERROR)
|
||||||
|
|
||||||
# rules
|
# rules
|
||||||
|
|||||||
+7
-2
@@ -84,9 +84,14 @@ struct AbstractPolicy {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(BELE_RTP)
|
||||||
|
#undef C
|
||||||
|
#define C const override
|
||||||
|
#endif
|
||||||
|
|
||||||
struct BEPolicy
|
struct BEPolicy
|
||||||
#if defined(BELE_RTP)
|
#if defined(BELE_RTP)
|
||||||
: public AbstractPolicy
|
final : public AbstractPolicy
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
inline BEPolicy() {}
|
inline BEPolicy() {}
|
||||||
@@ -142,7 +147,7 @@ struct BEPolicy
|
|||||||
|
|
||||||
struct LEPolicy
|
struct LEPolicy
|
||||||
#if defined(BELE_RTP)
|
#if defined(BELE_RTP)
|
||||||
: public AbstractPolicy
|
final : public AbstractPolicy
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
inline LEPolicy() {}
|
inline LEPolicy() {}
|
||||||
|
|||||||
@@ -36,6 +36,9 @@
|
|||||||
#if (ACC_CC_GNUC >= 0x040200)
|
#if (ACC_CC_GNUC >= 0x040200)
|
||||||
# pragma GCC diagnostic ignored "-Wshadow"
|
# pragma GCC diagnostic ignored "-Wshadow"
|
||||||
#endif
|
#endif
|
||||||
|
#if (ACC_CC_GNUC >= 0x050100)
|
||||||
|
# pragma GCC diagnostic ignored "-Wsuggest-override"
|
||||||
|
#endif
|
||||||
#if (ACC_CC_MSC)
|
#if (ACC_CC_MSC)
|
||||||
# pragma warning(disable: 4456) // -Wno-shadow
|
# pragma warning(disable: 4456) // -Wno-shadow
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+10
-10
@@ -86,7 +86,7 @@ public:
|
|||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
class InputFile : public FileBase
|
class InputFile final : public FileBase
|
||||||
{
|
{
|
||||||
typedef FileBase super;
|
typedef FileBase super;
|
||||||
public:
|
public:
|
||||||
@@ -99,15 +99,15 @@ public:
|
|||||||
sopen(name, flags, -1);
|
sopen(name, flags, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int read(void *buf, int len);
|
virtual int read(void *buf, int len) override;
|
||||||
virtual int readx(void *buf, int len);
|
virtual int readx(void *buf, int len) override;
|
||||||
virtual int read(MemBuffer *buf, int len);
|
virtual int read(MemBuffer *buf, int len);
|
||||||
virtual int readx(MemBuffer *buf, int len);
|
virtual int readx(MemBuffer *buf, int len);
|
||||||
virtual int read(MemBuffer &buf, int len);
|
virtual int read(MemBuffer &buf, int len);
|
||||||
virtual int readx(MemBuffer &buf, int len);
|
virtual int readx(MemBuffer &buf, int len);
|
||||||
|
|
||||||
virtual upx_off_t seek(upx_off_t off, int whence);
|
virtual upx_off_t seek(upx_off_t off, int whence) override;
|
||||||
virtual upx_off_t tell() const;
|
virtual upx_off_t tell() const override;
|
||||||
virtual upx_off_t st_size_orig() const;
|
virtual upx_off_t st_size_orig() const;
|
||||||
protected:
|
protected:
|
||||||
upx_off_t _length_orig;
|
upx_off_t _length_orig;
|
||||||
@@ -118,7 +118,7 @@ protected:
|
|||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
class OutputFile : public FileBase
|
class OutputFile final : public FileBase
|
||||||
{
|
{
|
||||||
typedef FileBase super;
|
typedef FileBase super;
|
||||||
public:
|
public:
|
||||||
@@ -132,17 +132,17 @@ public:
|
|||||||
}
|
}
|
||||||
virtual bool openStdout(int flags=0, bool force=false);
|
virtual bool openStdout(int flags=0, bool force=false);
|
||||||
|
|
||||||
virtual void write(const void *buf, int len);
|
virtual void write(const void *buf, int len) override;
|
||||||
virtual void write(const MemBuffer *buf, int len);
|
virtual void write(const MemBuffer *buf, int len);
|
||||||
virtual void write(const MemBuffer &buf, int len);
|
virtual void write(const MemBuffer &buf, int len);
|
||||||
virtual void set_extent(upx_off_t offset, upx_off_t length);
|
virtual void set_extent(upx_off_t offset, upx_off_t length) override;
|
||||||
virtual upx_off_t unset_extent(); // returns actual length
|
virtual upx_off_t unset_extent(); // returns actual length
|
||||||
|
|
||||||
upx_off_t getBytesWritten() const { return bytes_written; }
|
upx_off_t getBytesWritten() const { return bytes_written; }
|
||||||
virtual upx_off_t st_size() const; // { return _length; }
|
virtual upx_off_t st_size() const override; // { return _length; }
|
||||||
|
|
||||||
// FIXME - these won't work when using the '--stdout' option
|
// FIXME - these won't work when using the '--stdout' option
|
||||||
virtual upx_off_t seek(upx_off_t off, int whence);
|
virtual upx_off_t seek(upx_off_t off, int whence) override;
|
||||||
virtual void rewrite(const void *buf, int len);
|
virtual void rewrite(const void *buf, int len);
|
||||||
|
|
||||||
// util
|
// util
|
||||||
|
|||||||
+27
-27
@@ -155,21 +155,21 @@ class ElfLinkerAMD64 : public ElfLinker {
|
|||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void alignCode(unsigned len) { alignWithByte(len, 0x90); }
|
virtual void alignCode(unsigned len) override { alignWithByte(len, 0x90); }
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerARM64 : public ElfLinker {
|
class ElfLinkerARM64 final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void alignCode(unsigned len) { alignWithByte(len, 0x90); }
|
virtual void alignCode(unsigned len) override { alignWithByte(len, 0x90); }
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerArmBE : public ElfLinker {
|
class ElfLinkerArmBE final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -177,38 +177,38 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerArmLE : public ElfLinker {
|
class ElfLinkerArmLE final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerArm64LE : public ElfLinker {
|
class ElfLinkerArm64LE final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerM68k : public ElfLinker {
|
class ElfLinkerM68k final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ElfLinkerM68k() { bele = &N_BELE_RTP::be_policy; }
|
ElfLinkerM68k() { bele = &N_BELE_RTP::be_policy; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void alignCode(unsigned len);
|
virtual void alignCode(unsigned len) override;
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerMipsBE : public ElfLinker {
|
class ElfLinkerMipsBE final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -216,18 +216,18 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerMipsLE : public ElfLinker {
|
class ElfLinkerMipsLE final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerPpc32 : public ElfLinker {
|
class ElfLinkerPpc32 final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -235,18 +235,18 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerPpc64le : public ElfLinker {
|
class ElfLinkerPpc64le final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerPpc64 : public ElfLinker {
|
class ElfLinkerPpc64 final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -254,16 +254,16 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ElfLinkerX86 : public ElfLinker {
|
class ElfLinkerX86 final : public ElfLinker {
|
||||||
typedef ElfLinker super;
|
typedef ElfLinker super;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void alignCode(unsigned len) { alignWithByte(len, 0x90); }
|
virtual void alignCode(unsigned len) override { alignWithByte(len, 0x90); }
|
||||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||||
const char *type);
|
const char *type) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* already included */
|
#endif /* already included */
|
||||||
|
|||||||
+2
-2
@@ -56,8 +56,8 @@ public:
|
|||||||
unsigned s1addr);
|
unsigned s1addr);
|
||||||
virtual void addNewRelocations(Reloc &, unsigned upxsection);
|
virtual void addNewRelocations(Reloc &, unsigned upxsection);
|
||||||
virtual unsigned getProcessImportParam(unsigned upxsection);
|
virtual unsigned getProcessImportParam(unsigned upxsection);
|
||||||
virtual void setOhDataBase(const pe_section_t *osection);
|
virtual void setOhDataBase(const pe_section_t *osection) override;
|
||||||
virtual void setOhHeaderSize(const pe_section_t *osection);
|
virtual void setOhHeaderSize(const pe_section_t *osection) override;
|
||||||
virtual void pack(OutputFile *fo);
|
virtual void pack(OutputFile *fo);
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack();
|
||||||
|
|||||||
+13
-13
@@ -39,26 +39,26 @@ class PackCom : public Packer
|
|||||||
typedef Packer super;
|
typedef Packer super;
|
||||||
public:
|
public:
|
||||||
PackCom(InputFile *f) : super(f) { bele = &N_BELE_RTP::le_policy; }
|
PackCom(InputFile *f) : super(f) { bele = &N_BELE_RTP::le_policy; }
|
||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const override { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_DOS_COM; }
|
virtual int getFormat() const override { return UPX_F_DOS_COM; }
|
||||||
virtual const char *getName() const { return "dos/com"; }
|
virtual const char *getName() const override { return "dos/com"; }
|
||||||
//virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.com" : "i286-dos16.com"; }
|
//virtual const char *getFullName(const options_t *o) const override { return o && o->cpu == o->CPU_8086 ? "i086-dos16.com" : "i286-dos16.com"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "i086-dos16.com"; }
|
virtual const char *getFullName(const options_t *) const override { return "i086-dos16.com"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const override;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const override;
|
||||||
|
|
||||||
virtual void pack(OutputFile *fo);
|
virtual void pack(OutputFile *fo) override;
|
||||||
virtual void unpack(OutputFile *fo);
|
virtual void unpack(OutputFile *fo) override;
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack() override;
|
||||||
virtual int canUnpack();
|
virtual int canUnpack() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual unsigned getCallTrickOffset() const { return 0x100; }
|
virtual unsigned getCallTrickOffset() const { return 0x100; }
|
||||||
virtual Linker* newLinker() const;
|
virtual Linker* newLinker() const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft) override;
|
||||||
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);
|
||||||
};
|
};
|
||||||
|
|||||||
+15
-15
@@ -34,32 +34,32 @@
|
|||||||
// dos/exe
|
// dos/exe
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
class PackExe : public Packer
|
class PackExe final : public Packer
|
||||||
{
|
{
|
||||||
typedef Packer super;
|
typedef Packer super;
|
||||||
public:
|
public:
|
||||||
PackExe(InputFile *f);
|
PackExe(InputFile *f);
|
||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const override { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_DOS_EXE; }
|
virtual int getFormat() const override { return UPX_F_DOS_EXE; }
|
||||||
virtual const char *getName() const { return "dos/exe"; }
|
virtual const char *getName() const override { return "dos/exe"; }
|
||||||
//virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.exe" : "i286-dos16.exe"; }
|
//virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.exe" : "i286-dos16.exe"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "i086-dos16.exe"; }
|
virtual const char *getFullName(const options_t *) const override { return "i086-dos16.exe"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const override;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const override;
|
||||||
|
|
||||||
virtual void pack(OutputFile *fo);
|
virtual void pack(OutputFile *fo) override;
|
||||||
virtual void unpack(OutputFile *fo);
|
virtual void unpack(OutputFile *fo) override;
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack() override;
|
||||||
virtual int canUnpack();
|
virtual int canUnpack() override;
|
||||||
|
|
||||||
// unpacker capabilities
|
// unpacker capabilities
|
||||||
virtual bool canUnpackVersion(int version) const
|
virtual bool canUnpackVersion(int version) const override
|
||||||
{
|
{
|
||||||
// NOTE: could adapt p_exe.cpp to support (version >= 8)
|
// NOTE: could adapt p_exe.cpp to support (version >= 8)
|
||||||
return (version >= 10);
|
return (version >= 10);
|
||||||
}
|
}
|
||||||
virtual bool canUnpackFormat(int format) const
|
virtual bool canUnpackFormat(int format) const override
|
||||||
{
|
{
|
||||||
return (format == UPX_F_DOS_EXE || format == UPX_F_DOS_EXEH);
|
return (format == UPX_F_DOS_EXE || format == UPX_F_DOS_EXEH);
|
||||||
}
|
}
|
||||||
@@ -70,8 +70,8 @@ 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 void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft) override;
|
||||||
virtual Linker* newLinker() const;
|
virtual Linker* newLinker() const override;
|
||||||
void addLoaderEpilogue(int flag);
|
void addLoaderEpilogue(int flag);
|
||||||
|
|
||||||
__packed_struct(exe_header_t)
|
__packed_struct(exe_header_t)
|
||||||
|
|||||||
+10
-10
@@ -34,25 +34,25 @@
|
|||||||
// dos/sys
|
// dos/sys
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
class PackSys : public PackCom
|
class PackSys final : public PackCom
|
||||||
{
|
{
|
||||||
typedef PackCom super;
|
typedef PackCom super;
|
||||||
public:
|
public:
|
||||||
PackSys(InputFile *f) : super(f) { }
|
PackSys(InputFile *f) : super(f) { }
|
||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const override { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_DOS_SYS; }
|
virtual int getFormat() const override { return UPX_F_DOS_SYS; }
|
||||||
virtual const char *getName() const { return "dos/sys"; }
|
virtual const char *getName() const override { return "dos/sys"; }
|
||||||
//virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.sys" : "i286-dos16.sys"; }
|
//virtual const char *getFullName(const options_t *o) const override { return o && o->cpu == o->CPU_8086 ? "i086-dos16.sys" : "i286-dos16.sys"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "i086-dos16.sys"; }
|
virtual const char *getFullName(const options_t *) const override { return "i086-dos16.sys"; }
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual unsigned getCallTrickOffset() const { return 0; }
|
virtual unsigned getCallTrickOffset() const override { return 0; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft) override;
|
||||||
virtual void patchLoader(OutputFile *fo, upx_byte *, int, unsigned);
|
virtual void patchLoader(OutputFile *fo, upx_byte *, int, unsigned) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+17
-16
@@ -32,33 +32,34 @@
|
|||||||
// atari/tos
|
// atari/tos
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
class PackTos : public Packer {
|
class PackTos final : public Packer {
|
||||||
typedef Packer super;
|
typedef Packer super;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PackTos(InputFile *f);
|
PackTos(InputFile *f);
|
||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const override { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_ATARI_TOS; }
|
virtual int getFormat() const override { return UPX_F_ATARI_TOS; }
|
||||||
virtual const char *getName() const { return "atari/tos"; }
|
virtual const char *getName() const override { return "atari/tos"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "m68k-atari.tos"; }
|
virtual const char *getFullName(const options_t *) const override { return "m68k-atari.tos"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const override;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const override;
|
||||||
|
|
||||||
virtual void pack(OutputFile *fo);
|
virtual void pack(OutputFile *fo) override;
|
||||||
virtual void unpack(OutputFile *fo);
|
virtual void unpack(OutputFile *fo) override;
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack() override;
|
||||||
virtual int canUnpack();
|
virtual int canUnpack() override;
|
||||||
|
|
||||||
virtual void fileInfo();
|
virtual void fileInfo() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual Linker *newLinker() const;
|
virtual Linker *newLinker() const override;
|
||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft) override;
|
||||||
|
|
||||||
unsigned getDecomprOffset(int method, int small) const;
|
unsigned getDecomprOffset(int method, int small) const;
|
||||||
|
|
||||||
virtual int readFileHeader();
|
int readFileHeader();
|
||||||
virtual bool checkFileHeader();
|
bool checkFileHeader();
|
||||||
|
|
||||||
struct alignas(1) tos_header_t {
|
struct alignas(1) tos_header_t {
|
||||||
BE16 fh_magic;
|
BE16 fh_magic;
|
||||||
|
|||||||
+2
-2
@@ -52,8 +52,8 @@ public:
|
|||||||
unsigned sizeof_oh, unsigned isize_isplit,
|
unsigned sizeof_oh, unsigned isize_isplit,
|
||||||
unsigned s1addr);
|
unsigned s1addr);
|
||||||
virtual void addNewRelocations(Reloc &, unsigned upxsection);
|
virtual void addNewRelocations(Reloc &, unsigned upxsection);
|
||||||
virtual void setOhDataBase(const pe_section_t *osection);
|
virtual void setOhDataBase(const pe_section_t *osection) override;
|
||||||
virtual void setOhHeaderSize(const pe_section_t *osection);
|
virtual void setOhHeaderSize(const pe_section_t *osection) override;
|
||||||
virtual void pack(OutputFile *fo);
|
virtual void pack(OutputFile *fo);
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack();
|
||||||
|
|||||||
+2
-2
@@ -50,8 +50,8 @@ public:
|
|||||||
virtual void defineSymbols(unsigned ncsection, unsigned upxsection,
|
virtual void defineSymbols(unsigned ncsection, unsigned upxsection,
|
||||||
unsigned sizeof_oh, unsigned isize_isplit,
|
unsigned sizeof_oh, unsigned isize_isplit,
|
||||||
unsigned s1addr);
|
unsigned s1addr);
|
||||||
virtual void setOhDataBase(const pe_section_t *) {}
|
virtual void setOhDataBase(const pe_section_t *) override {}
|
||||||
virtual void setOhHeaderSize(const pe_section_t *) {}
|
virtual void setOhHeaderSize(const pe_section_t *) override {}
|
||||||
virtual void pack(OutputFile *fo);
|
virtual void pack(OutputFile *fo);
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack();
|
||||||
|
|||||||
+15
-15
@@ -34,38 +34,38 @@
|
|||||||
// watcom/le
|
// watcom/le
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
class PackWcle : public Packer, public LeFile
|
class PackWcle final : public Packer, public LeFile
|
||||||
{
|
{
|
||||||
typedef Packer super;
|
typedef Packer super;
|
||||||
public:
|
public:
|
||||||
PackWcle(InputFile *f) : super(f), LeFile(f) { bele = &N_BELE_RTP::le_policy; }
|
PackWcle(InputFile *f) : super(f), LeFile(f) { bele = &N_BELE_RTP::le_policy; }
|
||||||
virtual int getVersion() const { return 13; }
|
virtual int getVersion() const override { return 13; }
|
||||||
virtual int getFormat() const { return UPX_F_WATCOM_LE; }
|
virtual int getFormat() const override { return UPX_F_WATCOM_LE; }
|
||||||
virtual const char *getName() const { return "watcom/le"; }
|
virtual const char *getName() const override { return "watcom/le"; }
|
||||||
virtual const char *getFullName(const options_t *) const { return "i386-dos32.watcom.le"; }
|
virtual const char *getFullName(const options_t *) const override { return "i386-dos32.watcom.le"; }
|
||||||
virtual const int *getCompressionMethods(int method, int level) const;
|
virtual const int *getCompressionMethods(int method, int level) const override;
|
||||||
virtual const int *getFilters() const;
|
virtual const int *getFilters() const override;
|
||||||
|
|
||||||
virtual void pack(OutputFile *fo);
|
virtual void pack(OutputFile *fo) override;
|
||||||
virtual void unpack(OutputFile *fo);
|
virtual void unpack(OutputFile *fo) override;
|
||||||
|
|
||||||
virtual bool canPack();
|
virtual bool canPack() override;
|
||||||
virtual int canUnpack();
|
virtual int canUnpack() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void handleStub(OutputFile *fo);
|
virtual void handleStub(OutputFile *fo);
|
||||||
|
|
||||||
virtual void buildLoader(const Filter *ft);
|
virtual void buildLoader(const Filter *ft) override;
|
||||||
virtual Linker* newLinker() const;
|
virtual Linker* newLinker() const override;
|
||||||
|
|
||||||
virtual void readObjectTable();
|
virtual void readObjectTable() override;
|
||||||
virtual void encodeObjectTable();
|
virtual void encodeObjectTable();
|
||||||
virtual void decodeObjectTable();
|
virtual void decodeObjectTable();
|
||||||
|
|
||||||
virtual void encodeFixupPageTable();
|
virtual void encodeFixupPageTable();
|
||||||
virtual void decodeFixupPageTable();
|
virtual void decodeFixupPageTable();
|
||||||
|
|
||||||
virtual void encodePageMap();
|
virtual void encodePageMap() override;
|
||||||
|
|
||||||
virtual void encodeEntryTable();
|
virtual void encodeEntryTable();
|
||||||
virtual void decodeEntryTable();
|
virtual void decodeEntryTable();
|
||||||
|
|||||||
+2
-4
@@ -629,10 +629,8 @@ int Packer::patchPackHeader(void *b, int blen) {
|
|||||||
return boff;
|
return boff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Packer::getPackHeader(void const *b, int blen, bool allow_incompressible) {
|
||||||
bool Packer::getPackHeader(void const *b, int blen, bool allow_incompressible)
|
if (!ph.fillPackHeader((unsigned char const *) b, blen))
|
||||||
{
|
|
||||||
if (!ph.fillPackHeader((unsigned char const *)b, blen))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (ph.version > getVersion())
|
if (ph.version > getVersion())
|
||||||
|
|||||||
+2
-2
@@ -199,8 +199,8 @@ protected:
|
|||||||
|
|
||||||
// packheader handling
|
// packheader handling
|
||||||
virtual int patchPackHeader(void *b, int blen);
|
virtual int patchPackHeader(void *b, int blen);
|
||||||
virtual bool getPackHeader(void const *b, int blen, bool allow_incompressible=false);
|
virtual bool getPackHeader(void const *b, int blen, bool allow_incompressible = false);
|
||||||
virtual bool readPackHeader(int len, bool allow_incompressible=false);
|
virtual bool readPackHeader(int len, bool allow_incompressible = false);
|
||||||
virtual void checkAlreadyPacked(const void *b, int blen);
|
virtual void checkAlreadyPacked(const void *b, int blen);
|
||||||
|
|
||||||
// loader core
|
// loader core
|
||||||
|
|||||||
+2
-2
@@ -596,7 +596,7 @@ class PeFile::ImportLinker : public ElfLinkerAMD64
|
|||||||
{
|
{
|
||||||
struct tstr : private ::noncopyable
|
struct tstr : private ::noncopyable
|
||||||
{
|
{
|
||||||
char *s;
|
char *s = nullptr;
|
||||||
explicit tstr(char *str) : s(str) {}
|
explicit tstr(char *str) : s(str) {}
|
||||||
~tstr() { delete [] s; }
|
~tstr() { delete [] s; }
|
||||||
operator char *() const { return s; }
|
operator char *() const { return s; }
|
||||||
@@ -717,7 +717,7 @@ class PeFile::ImportLinker : public ElfLinkerAMD64
|
|||||||
return strcmp(s1->name, s2->name);
|
return strcmp(s1->name, s2->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void alignCode(unsigned len) { alignWithByte(len, 0); }
|
virtual void alignCode(unsigned len) override { alignWithByte(len, 0); }
|
||||||
|
|
||||||
const Section *getThunk(const char *dll, const char *proc, char tsep) const
|
const Section *getThunk(const char *dll, const char *proc, char tsep) const
|
||||||
{
|
{
|
||||||
|
|||||||
+4
-4
@@ -42,10 +42,10 @@ int upx_safe_vsnprintf(char *str, upx_rsize_t max_size, const char *format, va_l
|
|||||||
else
|
else
|
||||||
assert(max_size == 0);
|
assert(max_size == 0);
|
||||||
|
|
||||||
long long n = vsnprintf(str, max_size, format, ap);
|
long long len = vsnprintf(str, max_size, format, ap);
|
||||||
assert(n >= 0);
|
assert(len >= 0);
|
||||||
assert(n < UPX_RSIZE_MAX_STR);
|
assert(len < UPX_RSIZE_MAX_STR);
|
||||||
size = (size_t) n + 1;
|
size = (size_t) len + 1;
|
||||||
|
|
||||||
// postconditions
|
// postconditions
|
||||||
assert(size > 0);
|
assert(size > 0);
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class UiPacker;
|
|||||||
//
|
//
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
class UiPacker {
|
class UiPacker final {
|
||||||
public:
|
public:
|
||||||
UiPacker(const Packer *p_);
|
UiPacker(const Packer *p_);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user