i386-linux.elf decompress does not need cto8

This commit is contained in:
John Reiser 2006-08-20 11:19:37 -07:00
parent 996a99ad75
commit c19ffafd8d
3 changed files with 893 additions and 902 deletions

View File

@ -416,14 +416,8 @@ void PackLinuxElf32x86::addStubEntrySections(Filter const *ft)
addLoader("FOLDEXEC", NULL);
}
void PackLinuxElf32x86::addLinkerSymbols(Filter const *ft)
void PackLinuxElf32x86::addLinkerSymbols(Filter const */*ft*/)
{
upx_byte *ptr_cto = getLoader();
int sz_cto = getLoaderSize();
if (0x20==(ft->id & 0xF0) || 0x30==(ft->id & 0xF0)) { // push byte '?' ; cto8
patch_le16(ptr_cto, sz_cto, "\x6a?", 0x6a + (ft->cto << 8));
checkPatch(NULL, 0, 0, 0); // reset
}
}
int

File diff suppressed because it is too large Load Diff

View File

@ -68,12 +68,12 @@ decompress:
// // C callable decompressor
// **************************************************************************/
// /* Offsets to parameters, allowing for {push + pusha + call} */
#define O_INP (4+ 8*4 +1*4)
#define O_INS (4+ 8*4 +2*4)
#define O_OUTP (4+ 8*4 +3*4)
#define O_OUTS (4+ 8*4 +4*4)
#define O_PARAM (4+ 8*4 +5*4)
// /* Offsets to parameters, allowing for {pusha + call} */
#define O_INP (8*4 +1*4)
#define O_INS (8*4 +2*4)
#define O_OUTP (8*4 +3*4)
#define O_OUTS (8*4 +4*4)
#define O_PARAM (8*4 +5*4)
#define INP dword ptr [esp+O_INP]
#define INS dword ptr [esp+O_INS]
@ -85,7 +85,6 @@ section LEXEC009
//; empty section for commonality with l_lx_exec86.asm
section LEXEC010
pusha
push '?' // cto8 (sign extension does not matter)
// cld
mov esi, INP
@ -117,8 +116,6 @@ section LEXEC015
mov edx, OUTS
mov [edx], edi
pop edx // cto8
mov [7*4 + esp], eax
popa
ret