new format UPX_F_LINUX_ELF32_MIPSEL [work in progress]

This commit is contained in:
John Reiser
2007-05-06 06:17:49 -07:00
parent c3363712d9
commit 573009eeb6
17 changed files with 1692 additions and 71 deletions
+4 -2
View File
@@ -337,9 +337,11 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
f_len = shdr->sh_size;
++shdr;
for (int j= -2+ ehdri.e_shnum; --j>=0; ++shdr) {
unsigned prev_end = shdr[-1].sh_size + shdr[-1].sh_offset;
prev_end += ~(-shdr[0].sh_addralign) & -prev_end; // align_up
if ((Shdr::SHF_ALLOC & shdr->sh_flags)
&& (Shdr::SHF_EXECINSTR & shdr->sh_flags)
&& shdr[0].sh_offset==(shdr[-1].sh_size + shdr[-1].sh_offset)) {
&& shdr[0].sh_offset==prev_end) {
f_len += shdr->sh_size;
}
else {
@@ -347,7 +349,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
}
}
}
else { // ft.buf_len already specified, or shdr[1] not instructions
else { // ft.buf_len already specified, or Shdr[1] not instructions
f_ptr = ibuf;
f_len = ph.u_len;
}