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
+8 -1
View File
@@ -523,6 +523,7 @@ void PackUnix::unpackExtent(unsigned wanted, OutputFile *fo,
// Generic Unix canUnpack().
**************************************************************************/
// The prize is the value of overlay_offset: the offset of compressed data
int PackUnix::canUnpack()
{
int const small = 32 + sizeof(overlay_offset);
@@ -534,6 +535,13 @@ int PackUnix::canUnpack()
fi->seek(-(off_t)bufsize, SEEK_END);
fi->readx(buf, bufsize);
return find_overlay_offset(buf);
}
int PackUnix::find_overlay_offset(MemBuffer const &buf)
{
int const small = 32 + sizeof(overlay_offset);
int const bufsize = buf.getSize();
int i = bufsize;
while (i > small && 0 == buf[--i]) { }
i -= small;
@@ -551,7 +559,6 @@ int PackUnix::canUnpack()
return true;
}
/*************************************************************************
// Generic Unix unpack().
//