new option "--ptinterp" for linux/elf386 compressing PT_INTERP file

p_lx_elf.cpp options.h main.cpp

committer: jreiser <jreiser> 1032629299 +0000
This commit is contained in:
John Reiser
2002-09-21 17:28:19 +00:00
parent 8ad3d01d81
commit 124cdfda37
3 changed files with 20 additions and 1 deletions
+15 -1
View File
@@ -78,9 +78,23 @@ PackLinuxI386elf::getFilters() const
int
PackLinuxI386elf::buildLoader(const Filter *ft)
{
unsigned char tmp[sizeof(linux_i386elf_fold)];
memcpy(tmp, linux_i386elf_fold, sizeof(linux_i386elf_fold));
if (opt->unix.ptinterp) {
unsigned j;
for (j = 0; j < sizeof(linux_i386elf_fold)-1; ++j) {
if (0x60==tmp[ j]
&& 0x47==tmp[1+j] ) {
/* put INC EDI before PUSHA: inhibits auxv_up for PT_INTERP */
tmp[ j] = 0x47;
tmp[1+j] = 0x60;
break;
}
}
}
return buildLinuxLoader(
linux_i386elf_loader, sizeof(linux_i386elf_loader),
linux_i386elf_fold, sizeof(linux_i386elf_fold), ft );
tmp, sizeof(linux_i386elf_fold), ft );
}