WIP unpacking ELF shared library

modified:   Makefile
	modified:   lzma-sdk
	modified:   p_lx_elf.cpp
	modified:   p_lx_elf.h
	modified:   p_mach.cpp
	modified:   p_unix.cpp
	modified:   p_unix.h
	modified:   packer.cpp
	modified:   packer.h
	modified:   stub/arm64-linux.elf-fold.h
	modified:   stub/src/arm64-linux.elf-fold.S
	modified:   stub/tmp/arm64-linux.elf-fold.map
This commit is contained in:
John Reiser
2021-01-15 14:11:09 -08:00
committed by Markus F.X.J. Oberhumer
parent fd6837b267
commit 23f63e4196
11 changed files with 249 additions and 191 deletions
+4
View File
@@ -41,6 +41,7 @@ public:
virtual ~PackLinuxElf();
/*virtual void buildLoader(const Filter *);*/
virtual bool canUnpackVersion(int version) const { return (version >= 11); }
virtual int canUnpack() { return super::canUnpack(); }
protected:
virtual const int *getCompressionMethods(int method, int level) const;
@@ -118,6 +119,7 @@ protected:
virtual void PackLinuxElf32help1(InputFile *f);
virtual int checkEhdr(Elf32_Ehdr const *ehdr) const;
virtual bool canPack();
virtual int canUnpack();
// These ARM routines are essentially common to big/little endian,
// but the class hierarchy splits after this class.
@@ -259,6 +261,7 @@ protected:
virtual void PackLinuxElf64help1(InputFile *f);
virtual int checkEhdr(Elf64_Ehdr const *ehdr) const;
virtual bool canPack();
virtual int canUnpack();
virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual int pack2(OutputFile *, Filter &); // append compressed data
@@ -534,6 +537,7 @@ public:
virtual const char *getName() const { return "linux/i386"; }
virtual const char *getFullName(const options_t *) const { return "i386-linux.elf"; }
virtual const int *getFilters() const;
virtual int canUnpack();
protected:
virtual void pack1(OutputFile *, Filter &); // generate executable header