mips stub uses new strategy

modified:   p_lx_elf.cpp
	modified:   stub/src/arch/mips/r3000/macros.ash
	modified:   stub/src/arm64-linux.elf-entry.S
	modified:   stub/src/i386-linux.elf-main.c
	modified:   stub/src/mipsel.r3000-linux.elf-entry.S
	modified:   stub/src/mipsel.r3000-linux.elf-fold.S
	also .h, .bin.dump, .map
This commit is contained in:
John Reiser 2017-10-12 21:04:10 -07:00
parent 85eb4c7537
commit e0bc040b0a
14 changed files with 1842 additions and 1951 deletions

View File

@ -590,44 +590,6 @@ void PackLinuxElf::defineSymbols(Filter const *)
void PackLinuxElf32::defineSymbols(Filter const *ft)
{
PackLinuxElf::defineSymbols(ft);
// We want to know if compressed data, plus stub, plus a couple pages,
// will fit below the uncompressed program in memory. But we don't
// know the final total compressed size yet, so use the uncompressed
// size (total over all PT_LOAD32) as an upper bound.
unsigned len = 0; // XXX: 4GB
upx_uint32_t lo_va_user = ~0u; // infinity
for (int j= e_phnum; --j>=0; ) {
if (PT_LOAD32 == get_te32(&phdri[j].p_type)) {
len += (unsigned)get_te32(&phdri[j].p_filesz);
upx_uint32_t const va = get_te32(&phdri[j].p_vaddr);
if (va < lo_va_user) {
lo_va_user = va;
}
}
}
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
upx_uint32_t lo_va_stub = get_te32(&elfout.phdr[0].p_vaddr);
upx_uint32_t adrm;
len += (7&-lsize) + lsize;
const upx_uint32_t my_page_size = 4096u;
const upx_uint32_t my_page_mask = 0u - my_page_size;
is_big = (lo_va_user < (lo_va_stub + len + 2 * my_page_size));
if (is_pie || (is_big /*&& ehdri.ET_EXEC==get_te16(&ehdri.e_type)*/)) {
// .e_entry is set later by PackLinuxElf32::updateLoader
set_te32( &elfout.ehdr.e_entry,
get_te32(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
set_te32(&elfout.phdr[0].p_vaddr, lo_va_user);
set_te32(&elfout.phdr[0].p_paddr, lo_va_user);
lo_va_stub = lo_va_user;
adrm = getbrk(phdri, e_phnum) - lo_va_user;
}
else {
adrm = len;
}
adrm = my_page_mask & (~my_page_mask + adrm); // round up to page boundary
//linker->dumpSymbols(); // debug
}
void PackLinuxElf64::defineSymbols(Filter const *ft)
@ -3030,133 +2992,11 @@ void PackLinuxElf64arm::defineSymbols(Filter const *ft)
void PackLinuxElf32mipseb::defineSymbols(Filter const *ft)
{
PackLinuxElf32::defineSymbols(ft);
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
// We want to know if compressed data, plus stub, plus a couple pages,
// will fit below the uncompressed program in memory. But we don't
// know the final total compressed size yet, so use the uncompressed
// size (total over all PT_LOAD32) as an upper bound.
unsigned len = 0;
unsigned lo_va_user = ~0u; // infinity
for (int j= e_phnum; --j>=0; ) {
if (PT_LOAD32 == get_te32(&phdri[j].p_type)) {
len += (unsigned)get_te32(&phdri[j].p_filesz);
unsigned const va = get_te32(&phdri[j].p_vaddr);
if (va < lo_va_user) {
lo_va_user = va;
}
}
}
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
unsigned lo_va_stub = get_te32(&elfout.phdr[0].p_vaddr);
unsigned adrc;
unsigned adrm;
unsigned adru;
unsigned adrx;
unsigned lenm;
unsigned lenu;
len += (7&-lsize) + lsize;
is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
if (is_big) {
set_te32( &elfout.ehdr.e_entry,
get_te32(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
set_te32(&elfout.phdr[0].p_vaddr, lo_va_user);
set_te32(&elfout.phdr[0].p_paddr, lo_va_user);
lo_va_stub = lo_va_user;
adrc = lo_va_stub;
adrm = getbrk(phdri, e_phnum);
adru = page_mask & (~page_mask + adrm); // round up to page boundary
adrx = adru + hlen;
lenm = page_size + len;
lenu = page_size + len;
}
else {
adrm = lo_va_stub + len;
adrc = adrm;
adru = lo_va_stub;
adrx = lo_va_stub + hlen;
lenm = page_size;
lenu = page_size + len;
}
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
linker->defineSymbol("ADRC", adrc); // addr for copy
linker->defineSymbol("LENU", lenu); // len for unmap
linker->defineSymbol("ADRU", adru); // addr for unmap
linker->defineSymbol("LENM", lenm); // len for map
linker->defineSymbol("ADRM", adrm); // addr for map
//linker->dumpSymbols(); // debug
}
void PackLinuxElf32mipsel::defineSymbols(Filter const *ft)
{
PackLinuxElf32::defineSymbols(ft);
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
// We want to know if compressed data, plus stub, plus a couple pages,
// will fit below the uncompressed program in memory. But we don't
// know the final total compressed size yet, so use the uncompressed
// size (total over all PT_LOAD32) as an upper bound.
unsigned len = 0;
unsigned lo_va_user = ~0u; // infinity
for (int j= e_phnum; --j>=0; ) {
if (PT_LOAD32 == get_te32(&phdri[j].p_type)) {
len += (unsigned)get_te32(&phdri[j].p_filesz);
unsigned const va = get_te32(&phdri[j].p_vaddr);
if (va < lo_va_user) {
lo_va_user = va;
}
}
}
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
unsigned lo_va_stub = get_te32(&elfout.phdr[0].p_vaddr);
unsigned adrc;
unsigned adrm;
unsigned adru;
unsigned adrx;
unsigned lenm;
unsigned lenu;
len += (7&-lsize) + lsize;
is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
if (is_big) {
set_te32( &elfout.ehdr.e_entry,
get_te32(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
set_te32(&elfout.phdr[0].p_vaddr, lo_va_user);
set_te32(&elfout.phdr[0].p_paddr, lo_va_user);
lo_va_stub = lo_va_user;
adrc = lo_va_stub;
adrm = getbrk(phdri, e_phnum);
adru = page_mask & (~page_mask + adrm); // round up to page boundary
adrx = adru + hlen;
lenm = page_size + len;
lenu = page_size + len;
}
else {
adrm = lo_va_stub + len;
adrc = adrm;
adru = lo_va_stub;
adrx = lo_va_stub + hlen;
lenm = 2*page_size;
lenu = 2*page_size + len;
}
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
linker->defineSymbol("ADRC", adrc); // addr for copy
linker->defineSymbol("LENU", lenu); // len for unmap
linker->defineSymbol("ADRU", adru); // addr for unmap
linker->defineSymbol("LENM", lenm); // len for map
linker->defineSymbol("ADRM", adrm); // addr for map
//linker->dumpSymbols(); // debug
}
void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/* mips.r3000-linux.elf-fold.h
created from mips.r3000-linux.elf-fold.bin, 2496 (0x9c0) bytes
created from mips.r3000-linux.elf-fold.bin, 2572 (0xa0c) bytes
This file is part of the UPX executable compressor.
@ -31,165 +31,170 @@
*/
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_SIZE 2496
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_ADLER32 0xf3d41c26
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_CRC32 0x298ad943
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_SIZE 2572
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_ADLER32 0x82082a81
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_CRC32 0x282d6337
unsigned char stub_mips_r3000_linux_elf_fold[2496] = {
unsigned char stub_mips_r3000_linux_elf_fold[2572] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 2, 0, 8, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 48, 1, 0, 52, 0, 32, 0, 2, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0,
/* 0x0040 */ 0, 16, 0, 0, 0, 0, 9,192, 0, 0, 9,192, 0, 0, 0, 5,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 9,192, 0, 0, 0, 0,
/* 0x0040 */ 0, 16, 0, 0, 0, 0, 10, 12, 0, 0, 10, 16, 0, 0, 0, 5,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 10, 12, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 39,162, 0, 32, 39,189,240, 24, 3,160, 24, 33,140, 65, 0, 0,
/* 0x0090 */ 36, 66, 0, 4,172, 97, 0, 0, 36, 99, 0, 4, 20, 32,255,251,
/* 0x00a0 */ 0, 96,128, 33, 36, 99, 0, 4,140, 65, 0, 0, 36, 66, 0, 4,
/* 0x00b0 */ 172, 97, 0, 0, 36, 99, 0, 4, 20, 32,255,251, 0, 96,160, 33,
/* 0x00c0 */ 140, 65, 0, 0,140, 72, 0, 4, 36, 66, 0, 8,172, 97, 0, 0,
/* 0x00d0 */ 172,104, 0, 4, 36, 99, 0, 8, 36, 33,255,250, 20, 32, 0, 2,
/* 0x00e0 */ 36, 33, 0, 6, 0, 8,240, 35, 20, 32,255,245, 0, 96,176, 33,
/* 0x00f0 */ 174, 3, 0, 0, 36, 1, 0, 32,160, 97, 0, 0,160, 97, 0, 1,
/* 0x0100 */ 160, 97, 0, 2, 36, 1, 0, 61,160, 97, 0, 3, 36, 6, 15,255,
/* 0x0110 */ 36,101, 0, 4, 4, 17, 0, 5, 3,224, 32, 33, 47,112,114,111,
/* 0x0120 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0, 36, 2, 15,245,
/* 0x0130 */ 0, 0, 0, 12, 4,224, 0, 2, 0,162, 8, 33,160, 32, 0, 0,
/* 0x0140 */ 39,189,254, 0, 3,192, 80, 33, 0, 0, 72, 33, 2,224, 64, 33,
/* 0x0150 */ 2,128, 56, 33, 3,160, 48, 33, 2,160, 40, 33, 4, 16, 0, 1,
/* 0x0160 */ 36, 2, 1,100, 3,226, 16, 35, 36, 66, 8, 48, 0, 64,248, 9,
/* 0x0170 */ 2, 32, 32, 33, 0, 64,200, 33, 39,161, 2, 0, 39,189,254,212,
/* 0x0180 */ 39,189, 0, 4, 23,161,255,254,175,160,255,252,142,193,255,252,
/* 0x0190 */ 2, 64, 40, 33, 16, 32, 0, 3, 2, 96, 32, 33, 0, 32, 0, 8,
/* 0x01a0 */ 36, 2, 15,251, 3, 32, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x01b0 */ 36, 2, 15,250, 39,189,255,224,175,168, 0, 16,175,169, 0, 20,
/* 0x01c0 */ 0, 0, 0, 12, 16, 0, 0, 2, 39,189, 0, 32, 0, 0, 0, 12,
/* 0x01d0 */ 20,224, 0, 3, 0, 0, 0, 0, 3,224, 0, 8, 0, 0, 0, 0,
/* 0x01e0 */ 3,224, 0, 8, 36, 2,255,255, 3,224, 0, 8, 0, 0, 0, 0,
/* 0x01f0 */ 140,130, 0, 0,140,135, 0, 4, 0, 70, 16, 43, 20, 64, 0, 3,
/* 0x0200 */ 36, 2, 15,161, 16, 0, 0, 10, 0,192, 24, 33, 36, 4, 0,127,
/* 0x0210 */ 4, 17,255,238, 0, 0, 0, 0, 16, 0,255,255, 0, 0, 0, 0,
/* 0x0220 */ 144,226, 0, 0, 36,231, 0, 1,160,162, 0, 0, 36,165, 0, 1,
/* 0x0230 */ 36, 99,255,255, 36, 2,255,255, 20, 98,255,249, 0, 0, 0, 0,
/* 0x0240 */ 140,131, 0, 4,140,130, 0, 0, 0,102, 24, 33, 0, 70, 16, 35,
/* 0x0250 */ 172,130, 0, 0, 3,224, 0, 8,172,131, 0, 4, 39,189,255,216,
/* 0x0260 */ 175,179, 0, 28,175,178, 0, 24,175,177, 0, 20,175,176, 0, 16,
/* 0x0270 */ 0,128,136, 33, 0,160,128, 33, 0,192,152, 33, 0,224,144, 33,
/* 0x0280 */ 16, 0, 0, 82,175,191, 0, 32, 2, 32, 32, 33, 4, 17,255,216,
/* 0x0290 */ 39,165, 0, 4,143,163, 0, 4,143,166, 0, 8, 20, 96, 0, 10,
/* 0x02a0 */ 60, 2, 33, 88, 52, 66, 80, 85, 20,194, 0, 10, 36, 4, 0,127,
/* 0x02b0 */ 142, 34, 0, 0, 0, 0, 0, 0, 20, 64, 0, 7, 36, 2, 15,161,
/* 0x02c0 */ 16, 0, 0, 70, 0, 0, 0, 0, 20,192, 0, 7, 0,102, 16, 43,
/* 0x02d0 */ 36, 4, 0,127, 36, 2, 15,161, 4, 17,255,188, 0, 0, 0, 0,
/* 0x02e0 */ 16, 0,255,255, 0, 0, 0, 0, 20, 64,255,250, 36, 4, 0,127,
/* 0x02f0 */ 142, 2, 0, 0, 0, 0, 0, 0, 0, 67, 16, 43, 20, 64,255,245,
/* 0x0300 */ 0,195, 16, 43,142, 7, 0, 4, 16, 64, 0, 39, 0,224, 40, 33,
/* 0x0310 */ 142, 36, 0, 4,147,168, 0, 12, 0,192, 40, 33,175,163, 0, 0,
/* 0x0320 */ 0,224, 48, 33, 2, 96,248, 9, 3,160, 56, 33, 20, 64,255,233,
/* 0x0330 */ 36, 4, 0,127,143,165, 0, 0,143,162, 0, 4, 0, 0, 0, 0,
/* 0x0340 */ 20,162,255,228, 0, 0, 0, 0,147,167, 0, 13, 0, 0, 0, 0,
/* 0x0350 */ 16,224, 0, 13, 0, 0, 0, 0, 18, 64, 0, 11, 44,162, 2, 1,
/* 0x0360 */ 16, 64, 0, 5, 0, 0, 0, 0,142, 2, 0, 0, 0, 0, 0, 0,
/* 0x0370 */ 20, 69, 0, 5, 0, 0, 0, 0,142, 4, 0, 4,147,166, 0, 14,
/* 0x0380 */ 2, 64,248, 9, 0, 0, 0, 0,143,162, 0, 8,142, 35, 0, 4,
/* 0x0390 */ 142, 36, 0, 0, 0, 98, 24, 33, 0,130, 32, 35,174, 35, 0, 4,
/* 0x03a0 */ 16, 0, 0, 3,174, 36, 0, 0, 4, 17,255,145, 2, 32, 32, 33,
/* 0x03b0 */ 143,162, 0, 4,142, 3, 0, 4,142, 4, 0, 0, 0, 98, 24, 33,
/* 0x03c0 */ 0,130, 32, 35,174, 3, 0, 4,174, 4, 0, 0,142, 2, 0, 0,
/* 0x03d0 */ 0, 0, 0, 0, 20, 64,255,172, 36, 6, 0, 12,143,191, 0, 32,
/* 0x03e0 */ 143,179, 0, 28,143,178, 0, 24,143,177, 0, 20,143,176, 0, 16,
/* 0x03f0 */ 3,224, 0, 8, 39,189, 0, 40, 16,128, 0, 8, 0, 0, 0, 0,
/* 0x0400 */ 140,130, 0, 0, 0, 0, 0, 0, 16, 69, 0, 3, 0, 0, 0, 0,
/* 0x0410 */ 16, 0,255,251, 36,132, 0, 8,172,134, 0, 4, 3,224, 0, 8,
/* 0x0420 */ 0, 0, 0, 0, 39,189,255,168,175,190, 0, 80,175,180, 0, 64,
/* 0x0430 */ 175,177, 0, 52,175,191, 0, 84,175,183, 0, 76,175,182, 0, 72,
/* 0x0440 */ 175,181, 0, 68,175,179, 0, 60,175,178, 0, 56,175,176, 0, 48,
/* 0x0450 */ 148,162, 0, 16,140,163, 0, 28, 0,160,160, 33, 56, 66, 0, 2,
/* 0x0460 */ 148,165, 0, 44, 44, 66, 0, 1, 2,131,136, 33,175,164, 0, 28,
/* 0x0470 */ 0,192,240, 33,175,167, 0, 32,175,168, 0, 36,175,169, 0, 40,
/* 0x0480 */ 1, 64, 32, 33, 0, 2, 57, 0, 36,165,255,255, 0, 11, 16, 39,
/* 0x0490 */ 2, 32, 48, 33, 36, 8,255,255, 0, 0, 72, 33, 36, 10, 0, 1,
/* 0x04a0 */ 16, 0, 0, 19,175,162, 0, 20,140,194, 0, 0, 0, 0, 0, 0,
/* 0x04b0 */ 20, 74, 0, 14, 36,165,255,255,140,195, 0, 8, 0, 0, 0, 0,
/* 0x04c0 */ 0,104, 16, 43, 16, 64, 0, 2, 0, 0, 0, 0, 0, 96, 64, 33,
/* 0x04d0 */ 140,194, 0, 20, 0, 0, 0, 0, 0, 98, 24, 33, 1, 35, 16, 43,
/* 0x04e0 */ 16, 64, 0, 2, 0, 0, 0, 0, 0, 96, 72, 33, 36,198, 0, 32,
/* 0x04f0 */ 4,161,255,237, 1,104,128, 36, 1, 48, 16, 35, 0, 75, 16, 35,
/* 0x0500 */ 36, 66,255,255, 1, 98, 88, 36, 48,227, 0, 16, 16, 96, 0, 3,
/* 0x0510 */ 175,171, 0, 8, 16, 0, 0, 8, 2, 0, 32, 33, 18, 0, 0, 3,
/* 0x0520 */ 0, 0, 0, 0, 16, 0, 0, 4, 0, 0, 32, 33, 16,128, 0, 2,
/* 0x0530 */ 0, 0, 0, 0, 52,231, 0, 16,143,165, 0, 8, 52,231, 8, 2,
/* 0x0540 */ 0, 0, 48, 33, 36, 8,255,255, 4, 17,255, 25, 0, 0, 72, 33,
/* 0x0550 */ 0, 80,184, 35,175,162, 0, 12, 16, 0, 0,144,175,160, 0, 16,
/* 0x0560 */ 142, 35, 0, 0, 0, 0, 0, 0, 20, 98, 0,136, 0, 0, 0, 0,
/* 0x0570 */ 19,192, 0, 12, 0, 0, 0, 0,142, 34, 0, 4, 0, 0, 0, 0,
/* 0x0580 */ 20, 64, 0, 8, 0, 0, 0, 0,143,164, 0, 32, 4, 17,255,154,
/* 0x0590 */ 36, 5, 0, 5,143,164, 0, 32,150,134, 0, 42, 4, 17,255,150,
/* 0x05a0 */ 36, 5, 0, 4,142, 34, 0, 8,142, 35, 0, 24, 2,226,176, 33,
/* 0x05b0 */ 60, 2,115, 81, 0, 3, 24,128, 52, 66, 98, 64, 0, 98,144, 6,
/* 0x05c0 */ 143,163, 0, 20,142, 36, 0, 16, 2,195, 16, 36,175,164, 0, 0,
/* 0x05d0 */ 0,130,152, 33,142, 36, 0, 20,175,182, 0, 4, 50, 85, 0, 7,
/* 0x05e0 */ 175,164, 0, 24, 19,192, 0, 22, 2,194,128, 35, 2, 0, 32, 33,
/* 0x05f0 */ 2, 96, 40, 33, 36, 6, 0, 3, 36, 7, 8, 18, 36, 8,255,255,
/* 0x0600 */ 4, 17,254,235, 0, 0, 72, 33, 22, 2, 0, 74, 50, 66, 0, 4,
/* 0x0610 */ 16, 64, 0, 4, 0, 0, 0, 0,143,167, 0, 40, 16, 0, 0, 2,
/* 0x0620 */ 0, 0, 0, 0, 0, 0, 56, 33,143,166, 0, 28, 3,192, 32, 33,
/* 0x0630 */ 4, 17,255, 10, 3,160, 40, 33, 16, 0, 0, 11, 0, 0, 0, 0,
/* 0x0640 */ 142, 41, 0, 4,143,168, 0, 28, 2, 0, 32, 33, 1, 34, 72, 35,
/* 0x0650 */ 2, 96, 40, 33, 2,160, 48, 33, 4, 17,254,213, 36, 7, 0, 18,
/* 0x0660 */ 22, 2, 0, 53, 36, 4, 0,127,143,164, 0, 20, 0, 19, 16, 35,
/* 0x0670 */ 50,163, 0, 2, 16, 96, 0, 8, 0, 68,144, 36, 18, 64, 0, 6,
/* 0x0680 */ 2, 64, 16, 33, 2, 19, 24, 33, 36, 66,255,255,160, 96, 0, 0,
/* 0x0690 */ 20, 64,255,253, 36, 99, 0, 1, 19,192, 0, 43, 36, 2, 0, 1,
/* 0x06a0 */ 142, 35, 0, 0, 0, 0, 0, 0, 20, 98, 0, 28, 2, 0, 32, 33,
/* 0x06b0 */ 142, 34, 0, 24, 0, 0, 0, 0, 48, 66, 0, 1, 16, 64, 0, 24,
/* 0x06c0 */ 2, 96, 40, 33,142, 36, 0, 20,142, 34, 0, 16,142, 35, 0, 8,
/* 0x06d0 */ 20,130, 0, 17, 0,131, 16, 33, 0, 87, 48, 33,143,163, 0, 20,
/* 0x06e0 */ 0, 6, 16, 35, 0, 98, 16, 36, 44, 66, 0, 12, 20, 64, 0, 12,
/* 0x06f0 */ 2, 0, 32, 33, 36, 2, 0, 12,172,194, 0, 0, 60, 2, 3, 32,
/* 0x0700 */ 52, 66, 0, 8,143,164, 0, 32,172,194, 0, 4,172,192, 0, 8,
/* 0x0710 */ 4, 17,255, 57, 0, 0, 40, 33, 2, 0, 32, 33, 2, 96, 40, 33,
/* 0x0720 */ 2,160, 48, 33, 4, 17,254,169, 36, 2, 16, 29, 16, 64, 0, 6,
/* 0x0730 */ 0, 0, 0, 0, 36, 4, 0,127, 4, 17,254,164, 36, 2, 15,161,
/* 0x0740 */ 16, 0,255,255, 0, 0, 0, 0,143,164, 0, 24, 2,114, 16, 33,
/* 0x0750 */ 2,196, 40, 33, 2, 2,128, 33, 2, 5, 16, 43, 16, 64, 0, 11,
/* 0x0760 */ 0,176, 40, 35, 2,160, 48, 33, 2, 0, 32, 33, 36, 7, 8, 18,
/* 0x0770 */ 36, 8,255,255, 4, 17,254,142, 0, 0, 72, 33, 18, 2, 0, 3,
/* 0x0780 */ 0, 0, 0, 0, 16, 0,255,255, 0, 0, 0, 0,143,162, 0, 16,
/* 0x0790 */ 38, 49, 0, 32, 36, 66, 0, 1,175,162, 0, 16,150,134, 0, 44,
/* 0x07a0 */ 143,163, 0, 16, 0, 0, 0, 0, 0,102, 16, 42, 20, 64,255,108,
/* 0x07b0 */ 36, 2, 0, 1, 19,192, 0, 11, 36, 2, 0, 3,150,131, 0, 16,
/* 0x07c0 */ 0, 0, 0, 0, 16, 98, 0, 7, 0, 0, 0, 0,143,162, 0, 8,
/* 0x07d0 */ 143,163, 0, 12, 0, 0, 0, 0, 0, 67, 32, 33, 4, 17,254,123,
/* 0x07e0 */ 36, 2, 15,205,143,164, 0, 36, 0, 0, 0, 0, 16,128, 0, 2,
/* 0x07f0 */ 0, 0, 0, 0,172,151, 0, 0,142,130, 0, 24,143,191, 0, 84,
/* 0x0800 */ 2,226, 16, 33,143,190, 0, 80,143,183, 0, 76,143,182, 0, 72,
/* 0x0810 */ 143,181, 0, 68,143,180, 0, 64,143,179, 0, 60,143,178, 0, 56,
/* 0x0820 */ 143,177, 0, 52,143,176, 0, 48, 3,224, 0, 8, 39,189, 0, 88,
/* 0x0830 */ 39,189,255,200,175,191, 0, 52,175,180, 0, 48,175,179, 0, 44,
/* 0x0840 */ 175,178, 0, 40,175,177, 0, 36,175,176, 0, 32, 1, 0,136, 33,
/* 0x0850 */ 140,136, 0, 0, 0,160, 24, 33, 0,128, 16, 33, 0,192,144, 33,
/* 0x0860 */ 0,224,152, 33, 1, 64,160, 33, 2, 32, 48, 33, 1, 32,128, 33,
/* 0x0870 */ 39,164, 0, 20, 39,165, 0, 4, 0, 0, 56, 33,175,163, 0, 20,
/* 0x0880 */ 175,163, 0, 12,175,168, 0, 4,175,162, 0, 24,175,162, 0, 16,
/* 0x0890 */ 4, 17,254,114,175,178, 0, 8, 2, 32, 32, 33, 2, 0, 72, 33,
/* 0x08a0 */ 2, 64, 40, 33, 39,166, 0, 12, 2, 96, 56, 33, 3,160, 64, 33,
/* 0x08b0 */ 0, 0, 80, 33, 2,128, 88, 33, 4, 17,254,218,175,160, 0, 0,
/* 0x08c0 */ 0, 64, 48, 33, 2, 96, 32, 33, 36, 5, 0, 9, 4, 17,254,202,
/* 0x08d0 */ 0, 64,136, 33,150, 70, 0, 44, 38, 68, 0, 52, 16, 0, 0, 44,
/* 0x08e0 */ 0, 0, 40, 33,140,131, 0, 0, 36, 2, 0, 3, 20, 98, 0, 40,
/* 0x08f0 */ 36,132, 0, 32, 36,132,255,224,140,130, 0, 8,143,164, 0, 0,
/* 0x0900 */ 0, 0, 40, 33, 0, 68, 32, 33, 0, 0, 48, 33, 4, 17,254, 47,
/* 0x0910 */ 36, 2, 15,165, 4, 64, 0, 9, 0, 64,128, 33, 0, 64, 32, 33,
/* 0x0920 */ 2, 64, 40, 33, 36, 6, 2, 0, 4, 17,254, 40, 36, 2, 15,163,
/* 0x0930 */ 36, 3, 2, 0, 16, 67, 0, 6, 2,128, 88, 33, 36, 4, 0,127,
/* 0x0940 */ 4, 17,254, 34, 36, 2, 15,161, 16, 0,255,255, 0, 0, 0, 0,
/* 0x0950 */ 2, 96, 56, 33, 3,160, 64, 33, 0, 0, 72, 33, 0, 0, 80, 33,
/* 0x0960 */ 4, 17,254,176, 0, 0, 48, 33,143,166, 0, 0, 2, 96, 32, 33,
/* 0x0970 */ 36, 5, 0, 7, 4, 17,254,160, 0, 64,136, 33, 2, 0, 32, 33,
/* 0x0980 */ 4, 17,254, 18, 36, 2, 15,166, 16, 0, 0, 5, 2, 32, 16, 33,
/* 0x0990 */ 0,166, 16, 42, 20, 64,255,211, 36,165, 0, 1, 2, 32, 16, 33,
/* 0x09a0 */ 143,191, 0, 52,143,180, 0, 48,143,179, 0, 44,143,178, 0, 40,
/* 0x09b0 */ 143,177, 0, 36,143,176, 0, 32, 3,224, 0, 8, 39,189, 0, 56
/* 0x0080 */ 36, 2, 0, 0, 3,224, 0, 8, 0, 2, 18, 64, 0, 0, 0, 0,
/* 0x0090 */ 143,178, 0, 24,143,179, 0, 28, 3,160, 16, 33, 39,189,240, 16,
/* 0x00a0 */ 3,160, 24, 33,140, 65, 0, 0, 36, 66, 0, 4,172, 97, 0, 0,
/* 0x00b0 */ 36, 99, 0, 4, 20, 86,255,251, 36,105,255,252,172, 96, 0, 0,
/* 0x00c0 */ 36, 99, 0, 4, 0, 96,176, 33,140, 65, 0, 0,140, 72, 0, 4,
/* 0x00d0 */ 36, 66, 0, 8,172, 97, 0, 0,172,104, 0, 4, 36, 99, 0, 8,
/* 0x00e0 */ 20, 32,255,249, 0, 96,160, 33,173, 35, 0, 0, 36, 1, 0, 32,
/* 0x00f0 */ 160, 97, 0, 0,160, 97, 0, 1,160, 97, 0, 2, 36, 1, 0, 61,
/* 0x0100 */ 160, 97, 0, 3, 36, 6, 15,255, 36,101, 0, 4, 4, 17, 0, 5,
/* 0x0110 */ 3,224, 32, 33, 47,112,114,111, 99, 47,115,101,108,102, 47,101,
/* 0x0120 */ 120,101, 0, 0, 36, 2, 15,245, 0, 0, 0, 12, 4,224, 0, 2,
/* 0x0130 */ 0,162, 8, 33,160, 32, 0, 0, 39,189,254, 0, 3,128, 88, 33,
/* 0x0140 */ 2,160, 80, 33, 0, 0, 72, 33, 3,192, 64, 33, 2,192, 56, 33,
/* 0x0150 */ 3,160, 48, 33, 2, 32, 40, 33, 4, 16, 0, 1, 36, 2, 1, 96,
/* 0x0160 */ 3,226, 16, 35, 36, 66, 8,112, 0, 64,248, 9, 2, 0, 32, 33,
/* 0x0170 */ 39,189, 2, 0, 0, 64,240, 33,143,168, 0, 20, 0, 0, 72, 33,
/* 0x0180 */ 175,168, 0, 16,175,169, 0, 20, 36, 7, 0, 2, 36, 6, 0, 1,
/* 0x0190 */ 0, 28, 40, 34, 0, 0, 32, 33, 36, 2, 15,250, 0, 0, 0, 12,
/* 0x01a0 */ 143,164, 0, 16, 36, 2, 15,166, 0, 0, 0, 12, 39,189, 0, 32,
/* 0x01b0 */ 3,160, 8, 33, 39,189,254,212, 39,189, 0, 4, 23,161,255,254,
/* 0x01c0 */ 175,160,255,252,142,129,255,252, 2, 96, 40, 33, 16, 32, 0, 3,
/* 0x01d0 */ 2, 64, 32, 33, 0, 32, 0, 8, 36, 2, 15,251, 3,192, 0, 8,
/* 0x01e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x01f0 */ 36, 2, 15,250, 39,189,255,224,175,168, 0, 16,175,169, 0, 20,
/* 0x0200 */ 0, 0, 0, 12, 16, 0, 0, 2, 39,189, 0, 32, 0, 0, 0, 12,
/* 0x0210 */ 20,224, 0, 3, 0, 0, 0, 0, 3,224, 0, 8, 0, 0, 0, 0,
/* 0x0220 */ 3,224, 0, 8, 36, 2,255,255, 3,224, 0, 8, 0, 0, 0, 0,
/* 0x0230 */ 140,130, 0, 0,140,135, 0, 4, 0, 70, 16, 43, 20, 64, 0, 3,
/* 0x0240 */ 36, 2, 15,161, 16, 0, 0, 10, 0,192, 24, 33, 36, 4, 0,127,
/* 0x0250 */ 4, 17,255,238, 0, 0, 0, 0, 16, 0,255,255, 0, 0, 0, 0,
/* 0x0260 */ 144,226, 0, 0, 36,231, 0, 1,160,162, 0, 0, 36,165, 0, 1,
/* 0x0270 */ 36, 99,255,255, 36, 2,255,255, 20, 98,255,249, 0, 0, 0, 0,
/* 0x0280 */ 140,131, 0, 4,140,130, 0, 0, 0,102, 24, 33, 0, 70, 16, 35,
/* 0x0290 */ 172,130, 0, 0, 3,224, 0, 8,172,131, 0, 4, 39,189,255,216,
/* 0x02a0 */ 175,179, 0, 28,175,178, 0, 24,175,177, 0, 20,175,176, 0, 16,
/* 0x02b0 */ 0,128,136, 33, 0,160,128, 33, 0,192,152, 33, 0,224,144, 33,
/* 0x02c0 */ 16, 0, 0, 82,175,191, 0, 32, 2, 32, 32, 33, 4, 17,255,216,
/* 0x02d0 */ 39,165, 0, 4,143,163, 0, 4,143,166, 0, 8, 20, 96, 0, 10,
/* 0x02e0 */ 60, 2, 33, 88, 52, 66, 80, 85, 20,194, 0, 10, 36, 4, 0,127,
/* 0x02f0 */ 142, 34, 0, 0, 0, 0, 0, 0, 20, 64, 0, 7, 36, 2, 15,161,
/* 0x0300 */ 16, 0, 0, 70, 0, 0, 0, 0, 20,192, 0, 7, 0,102, 16, 43,
/* 0x0310 */ 36, 4, 0,127, 36, 2, 15,161, 4, 17,255,188, 0, 0, 0, 0,
/* 0x0320 */ 16, 0,255,255, 0, 0, 0, 0, 20, 64,255,250, 36, 4, 0,127,
/* 0x0330 */ 142, 2, 0, 0, 0, 0, 0, 0, 0, 67, 16, 43, 20, 64,255,245,
/* 0x0340 */ 0,195, 16, 43,142, 7, 0, 4, 16, 64, 0, 39, 0,224, 40, 33,
/* 0x0350 */ 142, 36, 0, 4,147,168, 0, 12, 0,192, 40, 33,175,163, 0, 0,
/* 0x0360 */ 0,224, 48, 33, 2, 96,248, 9, 3,160, 56, 33, 20, 64,255,233,
/* 0x0370 */ 36, 4, 0,127,143,165, 0, 0,143,162, 0, 4, 0, 0, 0, 0,
/* 0x0380 */ 20,162,255,228, 0, 0, 0, 0,147,167, 0, 13, 0, 0, 0, 0,
/* 0x0390 */ 16,224, 0, 13, 0, 0, 0, 0, 18, 64, 0, 11, 44,162, 2, 1,
/* 0x03a0 */ 16, 64, 0, 5, 0, 0, 0, 0,142, 2, 0, 0, 0, 0, 0, 0,
/* 0x03b0 */ 20, 69, 0, 5, 0, 0, 0, 0,142, 4, 0, 4,147,166, 0, 14,
/* 0x03c0 */ 2, 64,248, 9, 0, 0, 0, 0,143,162, 0, 8,142, 35, 0, 4,
/* 0x03d0 */ 142, 36, 0, 0, 0, 98, 24, 33, 0,130, 32, 35,174, 35, 0, 4,
/* 0x03e0 */ 16, 0, 0, 3,174, 36, 0, 0, 4, 17,255,145, 2, 32, 32, 33,
/* 0x03f0 */ 143,162, 0, 4,142, 3, 0, 4,142, 4, 0, 0, 0, 98, 24, 33,
/* 0x0400 */ 0,130, 32, 35,174, 3, 0, 4,174, 4, 0, 0,142, 2, 0, 0,
/* 0x0410 */ 0, 0, 0, 0, 20, 64,255,172, 36, 6, 0, 12,143,191, 0, 32,
/* 0x0420 */ 143,179, 0, 28,143,178, 0, 24,143,177, 0, 20,143,176, 0, 16,
/* 0x0430 */ 3,224, 0, 8, 39,189, 0, 40, 16,128, 0, 8, 0, 0, 0, 0,
/* 0x0440 */ 140,130, 0, 0, 0, 0, 0, 0, 16, 69, 0, 3, 0, 0, 0, 0,
/* 0x0450 */ 16, 0,255,251, 36,132, 0, 8,172,134, 0, 4, 3,224, 0, 8,
/* 0x0460 */ 0, 0, 0, 0, 39,189,255,168,175,190, 0, 80,175,180, 0, 64,
/* 0x0470 */ 175,177, 0, 52,175,191, 0, 84,175,183, 0, 76,175,182, 0, 72,
/* 0x0480 */ 175,181, 0, 68,175,179, 0, 60,175,178, 0, 56,175,176, 0, 48,
/* 0x0490 */ 148,162, 0, 16,140,163, 0, 28, 0,160,160, 33, 56, 66, 0, 2,
/* 0x04a0 */ 148,165, 0, 44, 44, 66, 0, 1, 2,131,136, 33,175,164, 0, 28,
/* 0x04b0 */ 0,192,240, 33,175,167, 0, 32,175,168, 0, 36,175,169, 0, 40,
/* 0x04c0 */ 1, 64, 32, 33, 0, 2, 57, 0, 36,165,255,255, 0, 11, 16, 39,
/* 0x04d0 */ 2, 32, 48, 33, 36, 8,255,255, 0, 0, 72, 33, 36, 10, 0, 1,
/* 0x04e0 */ 16, 0, 0, 19,175,162, 0, 20,140,194, 0, 0, 0, 0, 0, 0,
/* 0x04f0 */ 20, 74, 0, 14, 36,165,255,255,140,195, 0, 8, 0, 0, 0, 0,
/* 0x0500 */ 0,104, 16, 43, 16, 64, 0, 2, 0, 0, 0, 0, 0, 96, 64, 33,
/* 0x0510 */ 140,194, 0, 20, 0, 0, 0, 0, 0, 98, 24, 33, 1, 35, 16, 43,
/* 0x0520 */ 16, 64, 0, 2, 0, 0, 0, 0, 0, 96, 72, 33, 36,198, 0, 32,
/* 0x0530 */ 4,161,255,237, 1,104,128, 36, 1, 48, 16, 35, 0, 75, 16, 35,
/* 0x0540 */ 36, 66,255,255, 1, 98, 88, 36, 48,227, 0, 16, 16, 96, 0, 3,
/* 0x0550 */ 175,171, 0, 8, 16, 0, 0, 8, 2, 0, 32, 33, 18, 0, 0, 3,
/* 0x0560 */ 0, 0, 0, 0, 16, 0, 0, 4, 0, 0, 32, 33, 16,128, 0, 2,
/* 0x0570 */ 0, 0, 0, 0, 52,231, 0, 16,143,165, 0, 8, 52,231, 8, 2,
/* 0x0580 */ 0, 0, 48, 33, 36, 8,255,255, 4, 17,255, 25, 0, 0, 72, 33,
/* 0x0590 */ 0, 80,184, 35,175,162, 0, 12, 16, 0, 0,144,175,160, 0, 16,
/* 0x05a0 */ 142, 35, 0, 0, 0, 0, 0, 0, 20, 98, 0,136, 0, 0, 0, 0,
/* 0x05b0 */ 19,192, 0, 12, 0, 0, 0, 0,142, 34, 0, 4, 0, 0, 0, 0,
/* 0x05c0 */ 20, 64, 0, 8, 0, 0, 0, 0,143,164, 0, 32, 4, 17,255,154,
/* 0x05d0 */ 36, 5, 0, 5,143,164, 0, 32,150,134, 0, 42, 4, 17,255,150,
/* 0x05e0 */ 36, 5, 0, 4,142, 34, 0, 8,142, 35, 0, 24, 2,226,176, 33,
/* 0x05f0 */ 60, 2,115, 81, 0, 3, 24,128, 52, 66, 98, 64, 0, 98,144, 6,
/* 0x0600 */ 143,163, 0, 20,142, 36, 0, 16, 2,195, 16, 36,175,164, 0, 0,
/* 0x0610 */ 0,130,152, 33,142, 36, 0, 20,175,182, 0, 4, 50, 85, 0, 7,
/* 0x0620 */ 175,164, 0, 24, 19,192, 0, 22, 2,194,128, 35, 2, 0, 32, 33,
/* 0x0630 */ 2, 96, 40, 33, 36, 6, 0, 3, 36, 7, 8, 18, 36, 8,255,255,
/* 0x0640 */ 4, 17,254,235, 0, 0, 72, 33, 22, 2, 0, 74, 50, 66, 0, 4,
/* 0x0650 */ 16, 64, 0, 4, 0, 0, 0, 0,143,167, 0, 40, 16, 0, 0, 2,
/* 0x0660 */ 0, 0, 0, 0, 0, 0, 56, 33,143,166, 0, 28, 3,192, 32, 33,
/* 0x0670 */ 4, 17,255, 10, 3,160, 40, 33, 16, 0, 0, 11, 0, 0, 0, 0,
/* 0x0680 */ 142, 41, 0, 4,143,168, 0, 28, 2, 0, 32, 33, 1, 34, 72, 35,
/* 0x0690 */ 2, 96, 40, 33, 2,160, 48, 33, 4, 17,254,213, 36, 7, 0, 18,
/* 0x06a0 */ 22, 2, 0, 53, 36, 4, 0,127,143,164, 0, 20, 0, 19, 16, 35,
/* 0x06b0 */ 50,163, 0, 2, 16, 96, 0, 8, 0, 68,144, 36, 18, 64, 0, 6,
/* 0x06c0 */ 2, 64, 16, 33, 2, 19, 24, 33, 36, 66,255,255,160, 96, 0, 0,
/* 0x06d0 */ 20, 64,255,253, 36, 99, 0, 1, 19,192, 0, 43, 36, 2, 0, 1,
/* 0x06e0 */ 142, 35, 0, 0, 0, 0, 0, 0, 20, 98, 0, 28, 2, 0, 32, 33,
/* 0x06f0 */ 142, 34, 0, 24, 0, 0, 0, 0, 48, 66, 0, 1, 16, 64, 0, 24,
/* 0x0700 */ 2, 96, 40, 33,142, 36, 0, 20,142, 34, 0, 16,142, 35, 0, 8,
/* 0x0710 */ 20,130, 0, 17, 0,131, 16, 33, 0, 87, 48, 33,143,163, 0, 20,
/* 0x0720 */ 0, 6, 16, 35, 0, 98, 16, 36, 44, 66, 0, 12, 20, 64, 0, 12,
/* 0x0730 */ 2, 0, 32, 33, 36, 2, 0, 12,172,194, 0, 0, 60, 2, 3,192,
/* 0x0740 */ 52, 66, 0, 8,143,164, 0, 32,172,194, 0, 4,172,192, 0, 8,
/* 0x0750 */ 4, 17,255, 57, 0, 0, 40, 33, 2, 0, 32, 33, 2, 96, 40, 33,
/* 0x0760 */ 2,160, 48, 33, 4, 17,254,169, 36, 2, 16, 29, 16, 64, 0, 6,
/* 0x0770 */ 0, 0, 0, 0, 36, 4, 0,127, 4, 17,254,164, 36, 2, 15,161,
/* 0x0780 */ 16, 0,255,255, 0, 0, 0, 0,143,164, 0, 24, 2,114, 16, 33,
/* 0x0790 */ 2,196, 40, 33, 2, 2,128, 33, 2, 5, 16, 43, 16, 64, 0, 11,
/* 0x07a0 */ 0,176, 40, 35, 2,160, 48, 33, 2, 0, 32, 33, 36, 7, 8, 18,
/* 0x07b0 */ 36, 8,255,255, 4, 17,254,142, 0, 0, 72, 33, 18, 2, 0, 3,
/* 0x07c0 */ 0, 0, 0, 0, 16, 0,255,255, 0, 0, 0, 0,143,162, 0, 16,
/* 0x07d0 */ 38, 49, 0, 32, 36, 66, 0, 1,175,162, 0, 16,150,134, 0, 44,
/* 0x07e0 */ 143,163, 0, 16, 0, 0, 0, 0, 0,102, 16, 42, 20, 64,255,108,
/* 0x07f0 */ 36, 2, 0, 1, 19,192, 0, 11, 36, 2, 0, 3,150,131, 0, 16,
/* 0x0800 */ 0, 0, 0, 0, 16, 98, 0, 7, 0, 0, 0, 0,143,162, 0, 8,
/* 0x0810 */ 143,163, 0, 12, 0, 0, 0, 0, 0, 67, 32, 33, 4, 17,254,123,
/* 0x0820 */ 36, 2, 15,205,143,164, 0, 36, 0, 0, 0, 0, 16,128, 0, 2,
/* 0x0830 */ 0, 0, 0, 0,172,151, 0, 0,142,130, 0, 24,143,191, 0, 84,
/* 0x0840 */ 2,226, 16, 33,143,190, 0, 80,143,183, 0, 76,143,182, 0, 72,
/* 0x0850 */ 143,181, 0, 68,143,180, 0, 64,143,179, 0, 60,143,178, 0, 56,
/* 0x0860 */ 143,177, 0, 52,143,176, 0, 48, 3,224, 0, 8, 39,189, 0, 88,
/* 0x0870 */ 39,189,255,192,175,191, 0, 56,175,181, 0, 52,175,180, 0, 48,
/* 0x0880 */ 175,179, 0, 44,175,178, 0, 40,175,177, 0, 36,175,176, 0, 32,
/* 0x0890 */ 1, 0,136, 33,140,136, 0, 0, 0,160, 24, 33, 0,128, 16, 33,
/* 0x08a0 */ 0,192,152, 33, 0,224,160, 33, 1, 64,144, 33, 2, 32, 48, 33,
/* 0x08b0 */ 1, 32,128, 33, 1, 96,168, 33, 39,164, 0, 20, 39,165, 0, 4,
/* 0x08c0 */ 0, 0, 56, 33,175,163, 0, 20,175,163, 0, 12,175,168, 0, 4,
/* 0x08d0 */ 175,162, 0, 24,175,162, 0, 16, 4, 17,254,112,175,179, 0, 8,
/* 0x08e0 */ 2, 32, 32, 33, 2, 0, 72, 33, 2, 64, 80, 33, 2, 96, 40, 33,
/* 0x08f0 */ 39,166, 0, 12, 2,128, 56, 33, 3,160, 64, 33, 2,160, 88, 33,
/* 0x0900 */ 4, 17,254,216,175,178, 0, 0, 0, 64, 48, 33, 2,128, 32, 33,
/* 0x0910 */ 36, 5, 0, 9, 4, 17,254,200, 0, 64,136, 33,150,102, 0, 44,
/* 0x0920 */ 38,100, 0, 52, 16, 0, 0, 44, 0, 0, 40, 33,140,131, 0, 0,
/* 0x0930 */ 36, 2, 0, 3, 20, 98, 0, 40, 36,132, 0, 32, 36,132,255,224,
/* 0x0940 */ 140,130, 0, 8,143,164, 0, 0, 0, 0, 40, 33, 0, 68, 32, 33,
/* 0x0950 */ 0, 0, 48, 33, 4, 17,254, 45, 36, 2, 15,165, 4, 64, 0, 9,
/* 0x0960 */ 0, 64,128, 33, 0, 64, 32, 33, 2, 96, 40, 33, 36, 6, 2, 0,
/* 0x0970 */ 4, 17,254, 38, 36, 2, 15,163, 36, 3, 2, 0, 16, 67, 0, 6,
/* 0x0980 */ 2,160, 88, 33, 36, 4, 0,127, 4, 17,254, 32, 36, 2, 15,161,
/* 0x0990 */ 16, 0,255,255, 0, 0, 0, 0, 2,128, 56, 33, 3,160, 64, 33,
/* 0x09a0 */ 0, 0, 72, 33, 0, 0, 80, 33, 4, 17,254,174, 0, 0, 48, 33,
/* 0x09b0 */ 143,166, 0, 0, 2,128, 32, 33, 36, 5, 0, 7, 4, 17,254,158,
/* 0x09c0 */ 0, 64,136, 33, 2, 0, 32, 33, 4, 17,254, 16, 36, 2, 15,166,
/* 0x09d0 */ 16, 0, 0, 5, 2, 32, 16, 33, 0,166, 16, 42, 20, 64,255,211,
/* 0x09e0 */ 36,165, 0, 1, 2, 32, 16, 33,143,191, 0, 56,143,181, 0, 52,
/* 0x09f0 */ 143,180, 0, 48,143,179, 0, 44,143,178, 0, 40,143,177, 0, 36,
/* 0x0a00 */ 143,176, 0, 32, 3,224, 0, 8, 39,189, 0, 64
};

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/* mipsel.r3000-linux.elf-fold.h
created from mipsel.r3000-linux.elf-fold.bin, 2496 (0x9c0) bytes
created from mipsel.r3000-linux.elf-fold.bin, 2572 (0xa0c) bytes
This file is part of the UPX executable compressor.
@ -31,165 +31,170 @@
*/
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2496
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x66ad1c25
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xd154782a
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2572
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0xe13f2a80
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xf6e97c27
unsigned char stub_mipsel_r3000_linux_elf_fold[2496] = {
unsigned char stub_mipsel_r3000_linux_elf_fold[2572] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 8, 0, 1, 0, 0, 0,128, 0, 16, 0, 52, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 1, 48, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0,
/* 0x0040 */ 0, 0, 16, 0,192, 9, 0, 0,192, 9, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,192, 9, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 0, 16, 0, 12, 10, 0, 0, 16, 10, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 12, 10, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 32, 0,162, 39, 24,240,189, 39, 33, 24,160, 3, 0, 0, 65,140,
/* 0x0090 */ 4, 0, 66, 36, 0, 0, 97,172, 4, 0, 99, 36,251,255, 32, 20,
/* 0x00a0 */ 33,128, 96, 0, 4, 0, 99, 36, 0, 0, 65,140, 4, 0, 66, 36,
/* 0x00b0 */ 0, 0, 97,172, 4, 0, 99, 36,251,255, 32, 20, 33,160, 96, 0,
/* 0x00c0 */ 0, 0, 65,140, 4, 0, 72,140, 8, 0, 66, 36, 0, 0, 97,172,
/* 0x00d0 */ 4, 0,104,172, 8, 0, 99, 36,250,255, 33, 36, 2, 0, 32, 20,
/* 0x00e0 */ 6, 0, 33, 36, 35,240, 8, 0,245,255, 32, 20, 33,176, 96, 0,
/* 0x00f0 */ 0, 0, 3,174, 32, 0, 1, 36, 0, 0, 97,160, 1, 0, 97,160,
/* 0x0100 */ 2, 0, 97,160, 61, 0, 1, 36, 3, 0, 97,160,255, 15, 6, 36,
/* 0x0110 */ 4, 0,101, 36, 5, 0, 17, 4, 33, 32,224, 3, 47,112,114,111,
/* 0x0120 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0,245, 15, 2, 36,
/* 0x0130 */ 12, 0, 0, 0, 2, 0,224, 4, 33, 8,162, 0, 0, 0, 32,160,
/* 0x0140 */ 0,254,189, 39, 33, 80,192, 3, 33, 72, 0, 0, 33, 64,224, 2,
/* 0x0150 */ 33, 56,128, 2, 33, 48,160, 3, 33, 40,160, 2, 1, 0, 16, 4,
/* 0x0160 */ 100, 1, 2, 36, 35, 16,226, 3, 48, 8, 66, 36, 9,248, 64, 0,
/* 0x0170 */ 33, 32, 32, 2, 33,200, 64, 0, 0, 2,161, 39,212,254,189, 39,
/* 0x0180 */ 4, 0,189, 39,254,255,161, 23,252,255,160,175,252,255,193,142,
/* 0x0190 */ 33, 40, 64, 2, 3, 0, 32, 16, 33, 32, 96, 2, 8, 0, 32, 0,
/* 0x01a0 */ 251, 15, 2, 36, 8, 0, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x01b0 */ 250, 15, 2, 36,224,255,189, 39, 16, 0,168,175, 20, 0,169,175,
/* 0x01c0 */ 12, 0, 0, 0, 2, 0, 0, 16, 32, 0,189, 39, 12, 0, 0, 0,
/* 0x01d0 */ 3, 0,224, 20, 0, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0,
/* 0x01e0 */ 8, 0,224, 3,255,255, 2, 36, 8, 0,224, 3, 0, 0, 0, 0,
/* 0x01f0 */ 0, 0,130,140, 4, 0,135,140, 43, 16, 70, 0, 3, 0, 64, 20,
/* 0x0200 */ 161, 15, 2, 36, 10, 0, 0, 16, 33, 24,192, 0,127, 0, 4, 36,
/* 0x0210 */ 238,255, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0,
/* 0x0220 */ 0, 0,226,144, 1, 0,231, 36, 0, 0,162,160, 1, 0,165, 36,
/* 0x0230 */ 255,255, 99, 36,255,255, 2, 36,249,255, 98, 20, 0, 0, 0, 0,
/* 0x0240 */ 4, 0,131,140, 0, 0,130,140, 33, 24,102, 0, 35, 16, 70, 0,
/* 0x0250 */ 0, 0,130,172, 8, 0,224, 3, 4, 0,131,172,216,255,189, 39,
/* 0x0260 */ 28, 0,179,175, 24, 0,178,175, 20, 0,177,175, 16, 0,176,175,
/* 0x0270 */ 33,136,128, 0, 33,128,160, 0, 33,152,192, 0, 33,144,224, 0,
/* 0x0280 */ 82, 0, 0, 16, 32, 0,191,175, 33, 32, 32, 2,216,255, 17, 4,
/* 0x0290 */ 4, 0,165, 39, 4, 0,163,143, 8, 0,166,143, 10, 0, 96, 20,
/* 0x02a0 */ 88, 33, 2, 60, 85, 80, 66, 52, 10, 0,194, 20,127, 0, 4, 36,
/* 0x02b0 */ 0, 0, 34,142, 0, 0, 0, 0, 7, 0, 64, 20,161, 15, 2, 36,
/* 0x02c0 */ 70, 0, 0, 16, 0, 0, 0, 0, 7, 0,192, 20, 43, 16,102, 0,
/* 0x02d0 */ 127, 0, 4, 36,161, 15, 2, 36,188,255, 17, 4, 0, 0, 0, 0,
/* 0x02e0 */ 255,255, 0, 16, 0, 0, 0, 0,250,255, 64, 20,127, 0, 4, 36,
/* 0x02f0 */ 0, 0, 2,142, 0, 0, 0, 0, 43, 16, 67, 0,245,255, 64, 20,
/* 0x0300 */ 43, 16,195, 0, 4, 0, 7,142, 39, 0, 64, 16, 33, 40,224, 0,
/* 0x0310 */ 4, 0, 36,142, 12, 0,168,147, 33, 40,192, 0, 0, 0,163,175,
/* 0x0320 */ 33, 48,224, 0, 9,248, 96, 2, 33, 56,160, 3,233,255, 64, 20,
/* 0x0330 */ 127, 0, 4, 36, 0, 0,165,143, 4, 0,162,143, 0, 0, 0, 0,
/* 0x0340 */ 228,255,162, 20, 0, 0, 0, 0, 13, 0,167,147, 0, 0, 0, 0,
/* 0x0350 */ 13, 0,224, 16, 0, 0, 0, 0, 11, 0, 64, 18, 1, 2,162, 44,
/* 0x0360 */ 5, 0, 64, 16, 0, 0, 0, 0, 0, 0, 2,142, 0, 0, 0, 0,
/* 0x0370 */ 5, 0, 69, 20, 0, 0, 0, 0, 4, 0, 4,142, 14, 0,166,147,
/* 0x0380 */ 9,248, 64, 2, 0, 0, 0, 0, 8, 0,162,143, 4, 0, 35,142,
/* 0x0390 */ 0, 0, 36,142, 33, 24, 98, 0, 35, 32,130, 0, 4, 0, 35,174,
/* 0x03a0 */ 3, 0, 0, 16, 0, 0, 36,174,145,255, 17, 4, 33, 32, 32, 2,
/* 0x03b0 */ 4, 0,162,143, 4, 0, 3,142, 0, 0, 4,142, 33, 24, 98, 0,
/* 0x03c0 */ 35, 32,130, 0, 4, 0, 3,174, 0, 0, 4,174, 0, 0, 2,142,
/* 0x03d0 */ 0, 0, 0, 0,172,255, 64, 20, 12, 0, 6, 36, 32, 0,191,143,
/* 0x03e0 */ 28, 0,179,143, 24, 0,178,143, 20, 0,177,143, 16, 0,176,143,
/* 0x03f0 */ 8, 0,224, 3, 40, 0,189, 39, 8, 0,128, 16, 0, 0, 0, 0,
/* 0x0400 */ 0, 0,130,140, 0, 0, 0, 0, 3, 0, 69, 16, 0, 0, 0, 0,
/* 0x0410 */ 251,255, 0, 16, 8, 0,132, 36, 4, 0,134,172, 8, 0,224, 3,
/* 0x0420 */ 0, 0, 0, 0,168,255,189, 39, 80, 0,190,175, 64, 0,180,175,
/* 0x0430 */ 52, 0,177,175, 84, 0,191,175, 76, 0,183,175, 72, 0,182,175,
/* 0x0440 */ 68, 0,181,175, 60, 0,179,175, 56, 0,178,175, 48, 0,176,175,
/* 0x0450 */ 16, 0,162,148, 28, 0,163,140, 33,160,160, 0, 2, 0, 66, 56,
/* 0x0460 */ 44, 0,165,148, 1, 0, 66, 44, 33,136,131, 2, 28, 0,164,175,
/* 0x0470 */ 33,240,192, 0, 32, 0,167,175, 36, 0,168,175, 40, 0,169,175,
/* 0x0480 */ 33, 32, 64, 1, 0, 57, 2, 0,255,255,165, 36, 39, 16, 11, 0,
/* 0x0490 */ 33, 48, 32, 2,255,255, 8, 36, 33, 72, 0, 0, 1, 0, 10, 36,
/* 0x04a0 */ 19, 0, 0, 16, 20, 0,162,175, 0, 0,194,140, 0, 0, 0, 0,
/* 0x04b0 */ 14, 0, 74, 20,255,255,165, 36, 8, 0,195,140, 0, 0, 0, 0,
/* 0x04c0 */ 43, 16,104, 0, 2, 0, 64, 16, 0, 0, 0, 0, 33, 64, 96, 0,
/* 0x04d0 */ 20, 0,194,140, 0, 0, 0, 0, 33, 24, 98, 0, 43, 16, 35, 1,
/* 0x04e0 */ 2, 0, 64, 16, 0, 0, 0, 0, 33, 72, 96, 0, 32, 0,198, 36,
/* 0x04f0 */ 237,255,161, 4, 36,128,104, 1, 35, 16, 48, 1, 35, 16, 75, 0,
/* 0x0500 */ 255,255, 66, 36, 36, 88, 98, 1, 16, 0,227, 48, 3, 0, 96, 16,
/* 0x0510 */ 8, 0,171,175, 8, 0, 0, 16, 33, 32, 0, 2, 3, 0, 0, 18,
/* 0x0520 */ 0, 0, 0, 0, 4, 0, 0, 16, 33, 32, 0, 0, 2, 0,128, 16,
/* 0x0530 */ 0, 0, 0, 0, 16, 0,231, 52, 8, 0,165,143, 2, 8,231, 52,
/* 0x0540 */ 33, 48, 0, 0,255,255, 8, 36, 25,255, 17, 4, 33, 72, 0, 0,
/* 0x0550 */ 35,184, 80, 0, 12, 0,162,175,144, 0, 0, 16, 16, 0,160,175,
/* 0x0560 */ 0, 0, 35,142, 0, 0, 0, 0,136, 0, 98, 20, 0, 0, 0, 0,
/* 0x0570 */ 12, 0,192, 19, 0, 0, 0, 0, 4, 0, 34,142, 0, 0, 0, 0,
/* 0x0580 */ 8, 0, 64, 20, 0, 0, 0, 0, 32, 0,164,143,154,255, 17, 4,
/* 0x0590 */ 5, 0, 5, 36, 32, 0,164,143, 42, 0,134,150,150,255, 17, 4,
/* 0x05a0 */ 4, 0, 5, 36, 8, 0, 34,142, 24, 0, 35,142, 33,176,226, 2,
/* 0x05b0 */ 81,115, 2, 60,128, 24, 3, 0, 64, 98, 66, 52, 6,144, 98, 0,
/* 0x05c0 */ 20, 0,163,143, 16, 0, 36,142, 36, 16,195, 2, 0, 0,164,175,
/* 0x05d0 */ 33,152,130, 0, 20, 0, 36,142, 4, 0,182,175, 7, 0, 85, 50,
/* 0x05e0 */ 24, 0,164,175, 22, 0,192, 19, 35,128,194, 2, 33, 32, 0, 2,
/* 0x05f0 */ 33, 40, 96, 2, 3, 0, 6, 36, 18, 8, 7, 36,255,255, 8, 36,
/* 0x0600 */ 235,254, 17, 4, 33, 72, 0, 0, 74, 0, 2, 22, 4, 0, 66, 50,
/* 0x0610 */ 4, 0, 64, 16, 0, 0, 0, 0, 40, 0,167,143, 2, 0, 0, 16,
/* 0x0620 */ 0, 0, 0, 0, 33, 56, 0, 0, 28, 0,166,143, 33, 32,192, 3,
/* 0x0630 */ 10,255, 17, 4, 33, 40,160, 3, 11, 0, 0, 16, 0, 0, 0, 0,
/* 0x0640 */ 4, 0, 41,142, 28, 0,168,143, 33, 32, 0, 2, 35, 72, 34, 1,
/* 0x0650 */ 33, 40, 96, 2, 33, 48,160, 2,213,254, 17, 4, 18, 0, 7, 36,
/* 0x0660 */ 53, 0, 2, 22,127, 0, 4, 36, 20, 0,164,143, 35, 16, 19, 0,
/* 0x0670 */ 2, 0,163, 50, 8, 0, 96, 16, 36,144, 68, 0, 6, 0, 64, 18,
/* 0x0680 */ 33, 16, 64, 2, 33, 24, 19, 2,255,255, 66, 36, 0, 0, 96,160,
/* 0x0690 */ 253,255, 64, 20, 1, 0, 99, 36, 43, 0,192, 19, 1, 0, 2, 36,
/* 0x06a0 */ 0, 0, 35,142, 0, 0, 0, 0, 28, 0, 98, 20, 33, 32, 0, 2,
/* 0x06b0 */ 24, 0, 34,142, 0, 0, 0, 0, 1, 0, 66, 48, 24, 0, 64, 16,
/* 0x06c0 */ 33, 40, 96, 2, 20, 0, 36,142, 16, 0, 34,142, 8, 0, 35,142,
/* 0x06d0 */ 17, 0,130, 20, 33, 16,131, 0, 33, 48, 87, 0, 20, 0,163,143,
/* 0x06e0 */ 35, 16, 6, 0, 36, 16, 98, 0, 12, 0, 66, 44, 12, 0, 64, 20,
/* 0x06f0 */ 33, 32, 0, 2, 12, 0, 2, 36, 0, 0,194,172, 32, 3, 2, 60,
/* 0x0700 */ 8, 0, 66, 52, 32, 0,164,143, 4, 0,194,172, 8, 0,192,172,
/* 0x0710 */ 57,255, 17, 4, 33, 40, 0, 0, 33, 32, 0, 2, 33, 40, 96, 2,
/* 0x0720 */ 33, 48,160, 2,169,254, 17, 4, 29, 16, 2, 36, 6, 0, 64, 16,
/* 0x0730 */ 0, 0, 0, 0,127, 0, 4, 36,164,254, 17, 4,161, 15, 2, 36,
/* 0x0740 */ 255,255, 0, 16, 0, 0, 0, 0, 24, 0,164,143, 33, 16,114, 2,
/* 0x0750 */ 33, 40,196, 2, 33,128, 2, 2, 43, 16, 5, 2, 11, 0, 64, 16,
/* 0x0760 */ 35, 40,176, 0, 33, 48,160, 2, 33, 32, 0, 2, 18, 8, 7, 36,
/* 0x0770 */ 255,255, 8, 36,142,254, 17, 4, 33, 72, 0, 0, 3, 0, 2, 18,
/* 0x0780 */ 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, 16, 0,162,143,
/* 0x0790 */ 32, 0, 49, 38, 1, 0, 66, 36, 16, 0,162,175, 44, 0,134,150,
/* 0x07a0 */ 16, 0,163,143, 0, 0, 0, 0, 42, 16,102, 0,108,255, 64, 20,
/* 0x07b0 */ 1, 0, 2, 36, 11, 0,192, 19, 3, 0, 2, 36, 16, 0,131,150,
/* 0x07c0 */ 0, 0, 0, 0, 7, 0, 98, 16, 0, 0, 0, 0, 8, 0,162,143,
/* 0x07d0 */ 12, 0,163,143, 0, 0, 0, 0, 33, 32, 67, 0,123,254, 17, 4,
/* 0x07e0 */ 205, 15, 2, 36, 36, 0,164,143, 0, 0, 0, 0, 2, 0,128, 16,
/* 0x07f0 */ 0, 0, 0, 0, 0, 0,151,172, 24, 0,130,142, 84, 0,191,143,
/* 0x0800 */ 33, 16,226, 2, 80, 0,190,143, 76, 0,183,143, 72, 0,182,143,
/* 0x0810 */ 68, 0,181,143, 64, 0,180,143, 60, 0,179,143, 56, 0,178,143,
/* 0x0820 */ 52, 0,177,143, 48, 0,176,143, 8, 0,224, 3, 88, 0,189, 39,
/* 0x0830 */ 200,255,189, 39, 52, 0,191,175, 48, 0,180,175, 44, 0,179,175,
/* 0x0840 */ 40, 0,178,175, 36, 0,177,175, 32, 0,176,175, 33,136, 0, 1,
/* 0x0850 */ 0, 0,136,140, 33, 24,160, 0, 33, 16,128, 0, 33,144,192, 0,
/* 0x0860 */ 33,152,224, 0, 33,160, 64, 1, 33, 48, 32, 2, 33,128, 32, 1,
/* 0x0870 */ 20, 0,164, 39, 4, 0,165, 39, 33, 56, 0, 0, 20, 0,163,175,
/* 0x0880 */ 12, 0,163,175, 4, 0,168,175, 24, 0,162,175, 16, 0,162,175,
/* 0x0890 */ 114,254, 17, 4, 8, 0,178,175, 33, 32, 32, 2, 33, 72, 0, 2,
/* 0x08a0 */ 33, 40, 64, 2, 12, 0,166, 39, 33, 56, 96, 2, 33, 64,160, 3,
/* 0x08b0 */ 33, 80, 0, 0, 33, 88,128, 2,218,254, 17, 4, 0, 0,160,175,
/* 0x08c0 */ 33, 48, 64, 0, 33, 32, 96, 2, 9, 0, 5, 36,202,254, 17, 4,
/* 0x08d0 */ 33,136, 64, 0, 44, 0, 70,150, 52, 0, 68, 38, 44, 0, 0, 16,
/* 0x08e0 */ 33, 40, 0, 0, 0, 0,131,140, 3, 0, 2, 36, 40, 0, 98, 20,
/* 0x08f0 */ 32, 0,132, 36,224,255,132, 36, 8, 0,130,140, 0, 0,164,143,
/* 0x0900 */ 33, 40, 0, 0, 33, 32, 68, 0, 33, 48, 0, 0, 47,254, 17, 4,
/* 0x0910 */ 165, 15, 2, 36, 9, 0, 64, 4, 33,128, 64, 0, 33, 32, 64, 0,
/* 0x0920 */ 33, 40, 64, 2, 0, 2, 6, 36, 40,254, 17, 4,163, 15, 2, 36,
/* 0x0930 */ 0, 2, 3, 36, 6, 0, 67, 16, 33, 88,128, 2,127, 0, 4, 36,
/* 0x0940 */ 34,254, 17, 4,161, 15, 2, 36,255,255, 0, 16, 0, 0, 0, 0,
/* 0x0950 */ 33, 56, 96, 2, 33, 64,160, 3, 33, 72, 0, 0, 33, 80, 0, 0,
/* 0x0960 */ 176,254, 17, 4, 33, 48, 0, 0, 0, 0,166,143, 33, 32, 96, 2,
/* 0x0970 */ 7, 0, 5, 36,160,254, 17, 4, 33,136, 64, 0, 33, 32, 0, 2,
/* 0x0980 */ 18,254, 17, 4,166, 15, 2, 36, 5, 0, 0, 16, 33, 16, 32, 2,
/* 0x0990 */ 42, 16,166, 0,211,255, 64, 20, 1, 0,165, 36, 33, 16, 32, 2,
/* 0x09a0 */ 52, 0,191,143, 48, 0,180,143, 44, 0,179,143, 40, 0,178,143,
/* 0x09b0 */ 36, 0,177,143, 32, 0,176,143, 8, 0,224, 3, 56, 0,189, 39
/* 0x0080 */ 0, 0, 2, 36, 8, 0,224, 3, 64, 18, 2, 0, 0, 0, 0, 0,
/* 0x0090 */ 24, 0,178,143, 28, 0,179,143, 33, 16,160, 3, 16,240,189, 39,
/* 0x00a0 */ 33, 24,160, 3, 0, 0, 65,140, 4, 0, 66, 36, 0, 0, 97,172,
/* 0x00b0 */ 4, 0, 99, 36,251,255, 86, 20,252,255,105, 36, 0, 0, 96,172,
/* 0x00c0 */ 4, 0, 99, 36, 33,176, 96, 0, 0, 0, 65,140, 4, 0, 72,140,
/* 0x00d0 */ 8, 0, 66, 36, 0, 0, 97,172, 4, 0,104,172, 8, 0, 99, 36,
/* 0x00e0 */ 249,255, 32, 20, 33,160, 96, 0, 0, 0, 35,173, 32, 0, 1, 36,
/* 0x00f0 */ 0, 0, 97,160, 1, 0, 97,160, 2, 0, 97,160, 61, 0, 1, 36,
/* 0x0100 */ 3, 0, 97,160,255, 15, 6, 36, 4, 0,101, 36, 5, 0, 17, 4,
/* 0x0110 */ 33, 32,224, 3, 47,112,114,111, 99, 47,115,101,108,102, 47,101,
/* 0x0120 */ 120,101, 0, 0,245, 15, 2, 36, 12, 0, 0, 0, 2, 0,224, 4,
/* 0x0130 */ 33, 8,162, 0, 0, 0, 32,160, 0,254,189, 39, 33, 88,128, 3,
/* 0x0140 */ 33, 80,160, 2, 33, 72, 0, 0, 33, 64,192, 3, 33, 56,192, 2,
/* 0x0150 */ 33, 48,160, 3, 33, 40, 32, 2, 1, 0, 16, 4, 96, 1, 2, 36,
/* 0x0160 */ 35, 16,226, 3,112, 8, 66, 36, 9,248, 64, 0, 33, 32, 0, 2,
/* 0x0170 */ 0, 2,189, 39, 33,240, 64, 0, 20, 0,168,143, 33, 72, 0, 0,
/* 0x0180 */ 16, 0,168,175, 20, 0,169,175, 2, 0, 7, 36, 1, 0, 6, 36,
/* 0x0190 */ 34, 40, 28, 0, 33, 32, 0, 0,250, 15, 2, 36, 12, 0, 0, 0,
/* 0x01a0 */ 16, 0,164,143,166, 15, 2, 36, 12, 0, 0, 0, 32, 0,189, 39,
/* 0x01b0 */ 33, 8,160, 3,212,254,189, 39, 4, 0,189, 39,254,255,161, 23,
/* 0x01c0 */ 252,255,160,175,252,255,129,142, 33, 40, 96, 2, 3, 0, 32, 16,
/* 0x01d0 */ 33, 32, 64, 2, 8, 0, 32, 0,251, 15, 2, 36, 8, 0,192, 3,
/* 0x01e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x01f0 */ 250, 15, 2, 36,224,255,189, 39, 16, 0,168,175, 20, 0,169,175,
/* 0x0200 */ 12, 0, 0, 0, 2, 0, 0, 16, 32, 0,189, 39, 12, 0, 0, 0,
/* 0x0210 */ 3, 0,224, 20, 0, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0,
/* 0x0220 */ 8, 0,224, 3,255,255, 2, 36, 8, 0,224, 3, 0, 0, 0, 0,
/* 0x0230 */ 0, 0,130,140, 4, 0,135,140, 43, 16, 70, 0, 3, 0, 64, 20,
/* 0x0240 */ 161, 15, 2, 36, 10, 0, 0, 16, 33, 24,192, 0,127, 0, 4, 36,
/* 0x0250 */ 238,255, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0,
/* 0x0260 */ 0, 0,226,144, 1, 0,231, 36, 0, 0,162,160, 1, 0,165, 36,
/* 0x0270 */ 255,255, 99, 36,255,255, 2, 36,249,255, 98, 20, 0, 0, 0, 0,
/* 0x0280 */ 4, 0,131,140, 0, 0,130,140, 33, 24,102, 0, 35, 16, 70, 0,
/* 0x0290 */ 0, 0,130,172, 8, 0,224, 3, 4, 0,131,172,216,255,189, 39,
/* 0x02a0 */ 28, 0,179,175, 24, 0,178,175, 20, 0,177,175, 16, 0,176,175,
/* 0x02b0 */ 33,136,128, 0, 33,128,160, 0, 33,152,192, 0, 33,144,224, 0,
/* 0x02c0 */ 82, 0, 0, 16, 32, 0,191,175, 33, 32, 32, 2,216,255, 17, 4,
/* 0x02d0 */ 4, 0,165, 39, 4, 0,163,143, 8, 0,166,143, 10, 0, 96, 20,
/* 0x02e0 */ 88, 33, 2, 60, 85, 80, 66, 52, 10, 0,194, 20,127, 0, 4, 36,
/* 0x02f0 */ 0, 0, 34,142, 0, 0, 0, 0, 7, 0, 64, 20,161, 15, 2, 36,
/* 0x0300 */ 70, 0, 0, 16, 0, 0, 0, 0, 7, 0,192, 20, 43, 16,102, 0,
/* 0x0310 */ 127, 0, 4, 36,161, 15, 2, 36,188,255, 17, 4, 0, 0, 0, 0,
/* 0x0320 */ 255,255, 0, 16, 0, 0, 0, 0,250,255, 64, 20,127, 0, 4, 36,
/* 0x0330 */ 0, 0, 2,142, 0, 0, 0, 0, 43, 16, 67, 0,245,255, 64, 20,
/* 0x0340 */ 43, 16,195, 0, 4, 0, 7,142, 39, 0, 64, 16, 33, 40,224, 0,
/* 0x0350 */ 4, 0, 36,142, 12, 0,168,147, 33, 40,192, 0, 0, 0,163,175,
/* 0x0360 */ 33, 48,224, 0, 9,248, 96, 2, 33, 56,160, 3,233,255, 64, 20,
/* 0x0370 */ 127, 0, 4, 36, 0, 0,165,143, 4, 0,162,143, 0, 0, 0, 0,
/* 0x0380 */ 228,255,162, 20, 0, 0, 0, 0, 13, 0,167,147, 0, 0, 0, 0,
/* 0x0390 */ 13, 0,224, 16, 0, 0, 0, 0, 11, 0, 64, 18, 1, 2,162, 44,
/* 0x03a0 */ 5, 0, 64, 16, 0, 0, 0, 0, 0, 0, 2,142, 0, 0, 0, 0,
/* 0x03b0 */ 5, 0, 69, 20, 0, 0, 0, 0, 4, 0, 4,142, 14, 0,166,147,
/* 0x03c0 */ 9,248, 64, 2, 0, 0, 0, 0, 8, 0,162,143, 4, 0, 35,142,
/* 0x03d0 */ 0, 0, 36,142, 33, 24, 98, 0, 35, 32,130, 0, 4, 0, 35,174,
/* 0x03e0 */ 3, 0, 0, 16, 0, 0, 36,174,145,255, 17, 4, 33, 32, 32, 2,
/* 0x03f0 */ 4, 0,162,143, 4, 0, 3,142, 0, 0, 4,142, 33, 24, 98, 0,
/* 0x0400 */ 35, 32,130, 0, 4, 0, 3,174, 0, 0, 4,174, 0, 0, 2,142,
/* 0x0410 */ 0, 0, 0, 0,172,255, 64, 20, 12, 0, 6, 36, 32, 0,191,143,
/* 0x0420 */ 28, 0,179,143, 24, 0,178,143, 20, 0,177,143, 16, 0,176,143,
/* 0x0430 */ 8, 0,224, 3, 40, 0,189, 39, 8, 0,128, 16, 0, 0, 0, 0,
/* 0x0440 */ 0, 0,130,140, 0, 0, 0, 0, 3, 0, 69, 16, 0, 0, 0, 0,
/* 0x0450 */ 251,255, 0, 16, 8, 0,132, 36, 4, 0,134,172, 8, 0,224, 3,
/* 0x0460 */ 0, 0, 0, 0,168,255,189, 39, 80, 0,190,175, 64, 0,180,175,
/* 0x0470 */ 52, 0,177,175, 84, 0,191,175, 76, 0,183,175, 72, 0,182,175,
/* 0x0480 */ 68, 0,181,175, 60, 0,179,175, 56, 0,178,175, 48, 0,176,175,
/* 0x0490 */ 16, 0,162,148, 28, 0,163,140, 33,160,160, 0, 2, 0, 66, 56,
/* 0x04a0 */ 44, 0,165,148, 1, 0, 66, 44, 33,136,131, 2, 28, 0,164,175,
/* 0x04b0 */ 33,240,192, 0, 32, 0,167,175, 36, 0,168,175, 40, 0,169,175,
/* 0x04c0 */ 33, 32, 64, 1, 0, 57, 2, 0,255,255,165, 36, 39, 16, 11, 0,
/* 0x04d0 */ 33, 48, 32, 2,255,255, 8, 36, 33, 72, 0, 0, 1, 0, 10, 36,
/* 0x04e0 */ 19, 0, 0, 16, 20, 0,162,175, 0, 0,194,140, 0, 0, 0, 0,
/* 0x04f0 */ 14, 0, 74, 20,255,255,165, 36, 8, 0,195,140, 0, 0, 0, 0,
/* 0x0500 */ 43, 16,104, 0, 2, 0, 64, 16, 0, 0, 0, 0, 33, 64, 96, 0,
/* 0x0510 */ 20, 0,194,140, 0, 0, 0, 0, 33, 24, 98, 0, 43, 16, 35, 1,
/* 0x0520 */ 2, 0, 64, 16, 0, 0, 0, 0, 33, 72, 96, 0, 32, 0,198, 36,
/* 0x0530 */ 237,255,161, 4, 36,128,104, 1, 35, 16, 48, 1, 35, 16, 75, 0,
/* 0x0540 */ 255,255, 66, 36, 36, 88, 98, 1, 16, 0,227, 48, 3, 0, 96, 16,
/* 0x0550 */ 8, 0,171,175, 8, 0, 0, 16, 33, 32, 0, 2, 3, 0, 0, 18,
/* 0x0560 */ 0, 0, 0, 0, 4, 0, 0, 16, 33, 32, 0, 0, 2, 0,128, 16,
/* 0x0570 */ 0, 0, 0, 0, 16, 0,231, 52, 8, 0,165,143, 2, 8,231, 52,
/* 0x0580 */ 33, 48, 0, 0,255,255, 8, 36, 25,255, 17, 4, 33, 72, 0, 0,
/* 0x0590 */ 35,184, 80, 0, 12, 0,162,175,144, 0, 0, 16, 16, 0,160,175,
/* 0x05a0 */ 0, 0, 35,142, 0, 0, 0, 0,136, 0, 98, 20, 0, 0, 0, 0,
/* 0x05b0 */ 12, 0,192, 19, 0, 0, 0, 0, 4, 0, 34,142, 0, 0, 0, 0,
/* 0x05c0 */ 8, 0, 64, 20, 0, 0, 0, 0, 32, 0,164,143,154,255, 17, 4,
/* 0x05d0 */ 5, 0, 5, 36, 32, 0,164,143, 42, 0,134,150,150,255, 17, 4,
/* 0x05e0 */ 4, 0, 5, 36, 8, 0, 34,142, 24, 0, 35,142, 33,176,226, 2,
/* 0x05f0 */ 81,115, 2, 60,128, 24, 3, 0, 64, 98, 66, 52, 6,144, 98, 0,
/* 0x0600 */ 20, 0,163,143, 16, 0, 36,142, 36, 16,195, 2, 0, 0,164,175,
/* 0x0610 */ 33,152,130, 0, 20, 0, 36,142, 4, 0,182,175, 7, 0, 85, 50,
/* 0x0620 */ 24, 0,164,175, 22, 0,192, 19, 35,128,194, 2, 33, 32, 0, 2,
/* 0x0630 */ 33, 40, 96, 2, 3, 0, 6, 36, 18, 8, 7, 36,255,255, 8, 36,
/* 0x0640 */ 235,254, 17, 4, 33, 72, 0, 0, 74, 0, 2, 22, 4, 0, 66, 50,
/* 0x0650 */ 4, 0, 64, 16, 0, 0, 0, 0, 40, 0,167,143, 2, 0, 0, 16,
/* 0x0660 */ 0, 0, 0, 0, 33, 56, 0, 0, 28, 0,166,143, 33, 32,192, 3,
/* 0x0670 */ 10,255, 17, 4, 33, 40,160, 3, 11, 0, 0, 16, 0, 0, 0, 0,
/* 0x0680 */ 4, 0, 41,142, 28, 0,168,143, 33, 32, 0, 2, 35, 72, 34, 1,
/* 0x0690 */ 33, 40, 96, 2, 33, 48,160, 2,213,254, 17, 4, 18, 0, 7, 36,
/* 0x06a0 */ 53, 0, 2, 22,127, 0, 4, 36, 20, 0,164,143, 35, 16, 19, 0,
/* 0x06b0 */ 2, 0,163, 50, 8, 0, 96, 16, 36,144, 68, 0, 6, 0, 64, 18,
/* 0x06c0 */ 33, 16, 64, 2, 33, 24, 19, 2,255,255, 66, 36, 0, 0, 96,160,
/* 0x06d0 */ 253,255, 64, 20, 1, 0, 99, 36, 43, 0,192, 19, 1, 0, 2, 36,
/* 0x06e0 */ 0, 0, 35,142, 0, 0, 0, 0, 28, 0, 98, 20, 33, 32, 0, 2,
/* 0x06f0 */ 24, 0, 34,142, 0, 0, 0, 0, 1, 0, 66, 48, 24, 0, 64, 16,
/* 0x0700 */ 33, 40, 96, 2, 20, 0, 36,142, 16, 0, 34,142, 8, 0, 35,142,
/* 0x0710 */ 17, 0,130, 20, 33, 16,131, 0, 33, 48, 87, 0, 20, 0,163,143,
/* 0x0720 */ 35, 16, 6, 0, 36, 16, 98, 0, 12, 0, 66, 44, 12, 0, 64, 20,
/* 0x0730 */ 33, 32, 0, 2, 12, 0, 2, 36, 0, 0,194,172,192, 3, 2, 60,
/* 0x0740 */ 8, 0, 66, 52, 32, 0,164,143, 4, 0,194,172, 8, 0,192,172,
/* 0x0750 */ 57,255, 17, 4, 33, 40, 0, 0, 33, 32, 0, 2, 33, 40, 96, 2,
/* 0x0760 */ 33, 48,160, 2,169,254, 17, 4, 29, 16, 2, 36, 6, 0, 64, 16,
/* 0x0770 */ 0, 0, 0, 0,127, 0, 4, 36,164,254, 17, 4,161, 15, 2, 36,
/* 0x0780 */ 255,255, 0, 16, 0, 0, 0, 0, 24, 0,164,143, 33, 16,114, 2,
/* 0x0790 */ 33, 40,196, 2, 33,128, 2, 2, 43, 16, 5, 2, 11, 0, 64, 16,
/* 0x07a0 */ 35, 40,176, 0, 33, 48,160, 2, 33, 32, 0, 2, 18, 8, 7, 36,
/* 0x07b0 */ 255,255, 8, 36,142,254, 17, 4, 33, 72, 0, 0, 3, 0, 2, 18,
/* 0x07c0 */ 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, 16, 0,162,143,
/* 0x07d0 */ 32, 0, 49, 38, 1, 0, 66, 36, 16, 0,162,175, 44, 0,134,150,
/* 0x07e0 */ 16, 0,163,143, 0, 0, 0, 0, 42, 16,102, 0,108,255, 64, 20,
/* 0x07f0 */ 1, 0, 2, 36, 11, 0,192, 19, 3, 0, 2, 36, 16, 0,131,150,
/* 0x0800 */ 0, 0, 0, 0, 7, 0, 98, 16, 0, 0, 0, 0, 8, 0,162,143,
/* 0x0810 */ 12, 0,163,143, 0, 0, 0, 0, 33, 32, 67, 0,123,254, 17, 4,
/* 0x0820 */ 205, 15, 2, 36, 36, 0,164,143, 0, 0, 0, 0, 2, 0,128, 16,
/* 0x0830 */ 0, 0, 0, 0, 0, 0,151,172, 24, 0,130,142, 84, 0,191,143,
/* 0x0840 */ 33, 16,226, 2, 80, 0,190,143, 76, 0,183,143, 72, 0,182,143,
/* 0x0850 */ 68, 0,181,143, 64, 0,180,143, 60, 0,179,143, 56, 0,178,143,
/* 0x0860 */ 52, 0,177,143, 48, 0,176,143, 8, 0,224, 3, 88, 0,189, 39,
/* 0x0870 */ 192,255,189, 39, 56, 0,191,175, 52, 0,181,175, 48, 0,180,175,
/* 0x0880 */ 44, 0,179,175, 40, 0,178,175, 36, 0,177,175, 32, 0,176,175,
/* 0x0890 */ 33,136, 0, 1, 0, 0,136,140, 33, 24,160, 0, 33, 16,128, 0,
/* 0x08a0 */ 33,152,192, 0, 33,160,224, 0, 33,144, 64, 1, 33, 48, 32, 2,
/* 0x08b0 */ 33,128, 32, 1, 33,168, 96, 1, 20, 0,164, 39, 4, 0,165, 39,
/* 0x08c0 */ 33, 56, 0, 0, 20, 0,163,175, 12, 0,163,175, 4, 0,168,175,
/* 0x08d0 */ 24, 0,162,175, 16, 0,162,175,112,254, 17, 4, 8, 0,179,175,
/* 0x08e0 */ 33, 32, 32, 2, 33, 72, 0, 2, 33, 80, 64, 2, 33, 40, 96, 2,
/* 0x08f0 */ 12, 0,166, 39, 33, 56,128, 2, 33, 64,160, 3, 33, 88,160, 2,
/* 0x0900 */ 216,254, 17, 4, 0, 0,178,175, 33, 48, 64, 0, 33, 32,128, 2,
/* 0x0910 */ 9, 0, 5, 36,200,254, 17, 4, 33,136, 64, 0, 44, 0,102,150,
/* 0x0920 */ 52, 0,100, 38, 44, 0, 0, 16, 33, 40, 0, 0, 0, 0,131,140,
/* 0x0930 */ 3, 0, 2, 36, 40, 0, 98, 20, 32, 0,132, 36,224,255,132, 36,
/* 0x0940 */ 8, 0,130,140, 0, 0,164,143, 33, 40, 0, 0, 33, 32, 68, 0,
/* 0x0950 */ 33, 48, 0, 0, 45,254, 17, 4,165, 15, 2, 36, 9, 0, 64, 4,
/* 0x0960 */ 33,128, 64, 0, 33, 32, 64, 0, 33, 40, 96, 2, 0, 2, 6, 36,
/* 0x0970 */ 38,254, 17, 4,163, 15, 2, 36, 0, 2, 3, 36, 6, 0, 67, 16,
/* 0x0980 */ 33, 88,160, 2,127, 0, 4, 36, 32,254, 17, 4,161, 15, 2, 36,
/* 0x0990 */ 255,255, 0, 16, 0, 0, 0, 0, 33, 56,128, 2, 33, 64,160, 3,
/* 0x09a0 */ 33, 72, 0, 0, 33, 80, 0, 0,174,254, 17, 4, 33, 48, 0, 0,
/* 0x09b0 */ 0, 0,166,143, 33, 32,128, 2, 7, 0, 5, 36,158,254, 17, 4,
/* 0x09c0 */ 33,136, 64, 0, 33, 32, 0, 2, 16,254, 17, 4,166, 15, 2, 36,
/* 0x09d0 */ 5, 0, 0, 16, 33, 16, 32, 2, 42, 16,166, 0,211,255, 64, 20,
/* 0x09e0 */ 1, 0,165, 36, 33, 16, 32, 2, 56, 0,191,143, 52, 0,181,143,
/* 0x09f0 */ 48, 0,180,143, 44, 0,179,143, 40, 0,178,143, 36, 0,177,143,
/* 0x0a00 */ 32, 0,176,143, 8, 0,224, 3, 64, 0,189, 39
};

View File

@ -35,6 +35,7 @@
.align 0
.endm
/* http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf */
#define zero $0
#define at $1
#define v0 $2

View File

@ -97,7 +97,7 @@ xPMASK .req x26
xelfa .req x25
xfexp .req x24
// xPMASK, xlefa, xfexp still are used here.
// xPMASK, xelfa, xfexp still are used here.
wLENM .req w29 // overlaps wLENU
xLENM .req x29

View File

@ -456,7 +456,9 @@ make_hatch_mips(
)
{
hatch[0]= 0x0000000c; // syscall
hatch[1]= 0x03200008; // jr $25 # $25 === $t9 === jp
#define RS(r) ((037&(r))<<21)
#define JR 010
hatch[1]= RS(30)|JR; // jr $30 # s8
hatch[2]= 0x00000000; // nop
}
else {
@ -800,6 +802,7 @@ void *upx_main( // returns entry address
Elf32_auxv_t *const av,
f_expand *const f_exp,
f_unfilter *const f_unf,
Elf32_Addr const elfaddr,
size_t const page_mask
) __asm__("upx_main");
void *upx_main( // returns entry address
@ -809,6 +812,7 @@ void *upx_main( // returns entry address
Elf32_auxv_t *const av,
f_expand *const f_exp,
f_unfilter *const f_unf,
Elf32_Addr const elfaddr,
size_t const page_mask
)
@ -873,7 +877,6 @@ void *upx_main(
#endif //}
#if defined(__mips__) /*{*/
Elf32_Addr const elfaddr = 0; // FIXME
Extent xo, xi, xj;
xo.buf = (char *)ehdr; xo.size = bi->sz_unc;
xi.buf = CONST_CAST(char *, bi); xi.size = sz_compressed;

View File

@ -29,9 +29,44 @@
* <jreiser@users.sourceforge.net>
*/
NBPW= 4
#include "arch/mips/r3000/macros.ash"
#include "arch/mips/r3000/bits.ash"
sp_frame= 0x20
// These are local temporaries.
F_ADRM= 2*NBPW
F_LENM= 3*NBPW
// These are passed on stack to unfolded code.
F_PMASK= 4*NBPW
F_fd= 5*NBPW
F_ADRU= 6*NBPW
F_LENU= 7*NBPW
// r_PMASK still is used here
// C-language uses 8 args in registers
a5= 9
a4= 8
//ra 31
#define r_fexp 30 /* s8 */
//sp 29 /* hardware */
#define r_PMASK 28 /* gp */
//k1 27 /* trashed by syscall */
//k0 26 /* trashed by syscall */
//t9, jp 25 /* trashed by syscall ? */
//t8 24 /* trashed by syscall ? */
#define r_fd 23 /* s7 */
#define r_auxv 22 /* s6 */
#define r_elfa 21 /* s5 */
#define r_FOLD 20 /* s4 */
#define r_szuf 19 /* s3 */
#define r_relo 18 /* s2 */
#define r_LENX 17 /* s1 */
#define r_ADRX 16 /* s0 */
#define r_LENU r_LENX
.set mips1
.set noreorder
.set noat
@ -53,6 +88,14 @@ sz_b_info= 12
b_cto8= 10
b_unused=11
AT_NULL= 0 // <elf.h>
AT_PAGESZ= 6
a_type= 0
a_val= NBPW
sz_auxv= 2*NBPW
O_RDONLY= 0
PROT_READ= 1
PROT_WRITE= 2
PROT_EXEC= 4
@ -61,16 +104,20 @@ MAP_PRIVATE= 2
MAP_FIXED= 0x10
MAP_ANONYMOUS= 0x800
PAGE_SHIFT= 12 // default only
PAGE_SIZE = -(~0<<PAGE_SHIFT)
M_NRV2B_LE32=2 // ../conf.h
M_NRV2D_LE32=5
M_NRV2E_LE32=8
/* These from /usr/include/asm/unistd.h */
__NR_Linux = 4000
__NR_write = 4+ __NR_Linux
__NR_exit = 1+ __NR_Linux
__NR_mmap = 90+ __NR_Linux
__NR_exit = 1+ __NR_Linux
__NR_mmap = 90+ __NR_Linux
__NR_mprotect = 125+ __NR_Linux
__NR_open = 5+ __NR_Linux
__NR_write = 4+ __NR_Linux
__NR_cacheflush = 147+ __NR_Linux
/* asm/cachectl.h */
@ -81,19 +128,15 @@ DCACHE= 1<<1
section ELFMAINX
sz_pack2 = . - 4
adrm: .long ADRM
lenm: .long LENM
adru: .long ADRU
adrc: .long ADRC
lenu: .long LENU
adrx: .long ADRX
_start: .globl _start
//// break # debug only
bal main
addiu s7,ra, decompressor - 0f // s7= &decompress
addiu $r_fexp,ra, f_exp - 0f
0:
/* Returns 0 on success; non-zero on failure. */
f_exp: // alternate name
decompressor: // (uchar const *lxsrc, size_t lxsrclen, uchar *lxdst, u32 &lxdstlen, uint method)
#define lxsrc a0
#define lxsrclen a1
@ -102,8 +145,11 @@ decompressor: // (uchar const *lxsrc, size_t lxsrclen, uchar *lxdst, u32 &lxdst
#undef src /* bits.ash */
#define src lxsrc
#define lsrc lxsrclen
#undef dst /* bits.ash */
#define dst lxdst
#define ldst lxdstlen
#define meth a4
UCL_init 32,1,0
decomp_done = eof
@ -187,8 +233,7 @@ lxlzma_retval = lxlzma_srcdone
lw a0,lxlzma_dst(sp)
lw a1,lxlzma_dstdone(sp)
li a2,ICACHE|DCACHE
li v0,__NR_cacheflush
syscall
li v0,__NR_cacheflush; syscall
lw v0,lxlzma_retval(sp) # return value from decompression
@ -237,8 +282,7 @@ eof:
subu a1,lxdst,v1 // actual length generated
sw a1,(lxdstlen)
li a2,ICACHE|DCACHE
li v0,__NR_cacheflush
syscall
li v0,__NR_cacheflush; syscall
lw v0,0(sp)
jr ra
@ -258,111 +302,131 @@ L71:
section ELFMAINZ
L72:
li a0,2 // fd stderr
li v0,__NR_write
syscall
li v0,__NR_write; syscall
die:
li a0,127
li v0,__NR_exit
syscall
/* Decompress the rest of this loader, and jump to it.
Map a page to hold the decompressed bytes. Logically this could
be done by setting .p_memsz for our first PT_LOAD. But as of 2005-11-09,
linux 2.6.14 only does ".bss expansion" on the PT_LOAD that describes the
highest address. [I regard this as a bug, and it makes the kernel's
fs/binfmt_elf.c complicated, buggy, and insecure.] For us, that is the 2nd
PT_LOAD, which is the only way that linux allows to set the brk() for the
uncompressed program. [This is a significant kernel misfeature.]
*/
unfold: // s7= &decompress; s6= &b_info(fold); s5= sz_pack2; s4= &Elf32_Ehdr
/* Get some pages. If small, then get 1 page located just after the end
of the first PT_LOAD of the compressed program. This will still be below
all of the uncompressed program. If large (>=3 MiB uncompressed), then enough
to duplicate the entire compressed PT_LOAD, plus 1 page, located just after
the brk() of the _un_compressed program. The address and length are pre-
calculated by PackLinuxElf64amd::defineSymbols().
*/
#define a4_sys 0x10
#define a5_sys 0x14
#define sp_frame 0x20
li v0,__NR_exit; syscall
unfold: // IN: $r_fexp,$r_auxv,$r_PMASK,$r_FOLD,ra= "/proc/self/exe"
addiu sp,sp,-sp_frame
lw a0,adrm - decompressor(s7)
li a2, PROT_READ | PROT_WRITE
lw a1,lenm - decompressor(s7)
li a3, MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS
sw zero,a4_sys(sp) //; sw zero,a5_sys(sp) // MAP_ANON ==> ignore offset
li v0,__NR_mmap; syscall; bnez a3,err_syscall
move s0,v0 // ADRM: &new page(s); &dst for unfold, or &copy of PT_LOAD[0]
sw $r_PMASK,F_PMASK(sp)
lw s3,adru - decompressor(s7) // for unmap in fold
lw s2,lenu - decompressor(s7) // for unmap in fold
lw s1,adrx - decompressor(s7) // for upx_main
// Open /proc/self/exe
move a0,ra
li a1,O_RDONLY
li v0,__NR_open; syscall; sw v0,F_fd(sp)
// Copy compressed data if needed.
lw a0,adrc - decompressor(s7) // where to copy f_exp
lw t0,-4(s6) // O_BINFO
move a1,s0 // dst
sub s5,s5,t0 // sz_pack2 - O_BINFO; ~= total_size compressed
beq a0,s0,L78 // not needed
add a0,s4,t0 // &b_info for upx_main
move a2,s5 // total_size
bal memcpy
move s1,a1 // new adrx
L78:
// Reserve enough space to decompress the folded code onto $r_FOLD.
lw v0, sz_pack2 - f_exp($r_fexp) // length before stub
addiu $r_elfa,$r_fexp,sz_pack2 - f_exp
li a4,-1
lw $r_szuf,sz_unc($r_FOLD) // sz_unc of fold
li a3,MAP_PRIVATE|MAP_ANONYMOUS
sub $r_elfa,$r_elfa,v0 // $r_elfa= &Elf32_Ehdr of this stub
li a0,0 // kenrel chooses addr
sub v0,$r_FOLD,$r_elfa // offset(fold)
add a1,$r_szuf,v0 // length needed
sw a1,F_LENU(sp)
bal mmapRW0
move $r_LENU,a1
sw v0,F_ADRU(sp)
// Decompress the folded part of this stub, using original decompressor.
lw t0,sz_unc(s6); move a3,sp; sw t0,0(sp) // &dst_len
move a2,a1 // &dst
lw a1,sz_cpr(s6) // src_len
addiu a0,s6,sz_b_info
jalr s7 // decompress(src, srclen, dst, &dstlen /*, method*/)
move s4,a2 // &dst
// Duplicate the input data
lw v0,sz_cpr($r_FOLD) // sz_cpr of fold
sub a1,$r_LENU,$r_szuf // - sz_unc of fold
lw a4,F_fd(sp) // from file
li a3,MAP_PRIVATE|MAP_FIXED // at reserved addr a0 by previous map
add a1,a1,v0 // + sz_cpr of fold; a1 <= .st_size
bal mmapRW0
lw a0,F_ADRU(sp)
sub $r_relo, v0,$r_elfa // relocation amount
move ra,$r_fexp; add $r_fexp,$r_fexp,$r_relo // use old f_exp; $r_fexp= new &f_exp
// Copy decompressor if needed.
lw t0,0(sp) // dst_len
lw a0,adrc - decompressor(s7) // where to copy f_exp
add a1,t0,s4 // a1= last of unfolded
beq a0,s0,L80 // no copy f_exp
subu a2,s6,s7 // &b_info(fold) - &decompress; >= sizeof(decompress)
move a0,s7 // src= &decompress
bal memcpy
move s7,a1 // new &f_exp
move a0,s7 // new &f_exp
// a1= last of unfolded, or last of copy
li a2,ICACHE|DCACHE
li v0,__NR_cacheflush
syscall // moved decompressor
L80:
move a0,s0 // new page
sub a1,a1,s0 // len
li a2,PROT_READ|PROT_EXEC
li v0,__NR_mprotect
syscall
// Decompress from old folded code, overwriting new copy of folded code
lw $r_ADRX, -4($r_FOLD) // O_BINFO
addiu src,$r_FOLD,sz_b_info // a0 old folded code
add $r_FOLD,$r_FOLD,$r_relo // dst for unfoding; use copied data
add t1, $r_FOLD, $r_szuf // + sz_unc = last of unfolded
and t0,$r_fexp,$r_PMASK // base for PROT_EXEC
sw t0,F_ADRM(sp)
sub t1,t1,t0 // length for PROT_EXEC
sw t1,F_LENM(sp)
jr s4 // unfold
nop
// The new f_exp has PROT_WRITE, so use the old f_exp to decompress.
lb meth,b_method($r_FOLD)
sw $r_szuf,0(sp) // lzma uses for EOF
move dst,$r_FOLD // a2 dst for unfolding
lw lsrc,sz_cpr($r_FOLD) // a1
jalr ra // decompress it
move ldst,sp // a3 &slot on stack
memcpy:
lw t0, 0(a0); addiu a1,a1, 8
lw t1, 4(a0); addiu a2,a2,-8
sw t0,-8(a1); addiu a0,a0, 8
bgtz a2,memcpy
sw t1,-4(a1)
// Generate code to compute PAGE_MASK.
lw v0,0($r_FOLD) // "li v0,0"
srl v1,$r_PMASK,9
andi v1,v1,0xffff // 0xffff is NOT sign-extended
or v0,v0,v1 // replace immediate constant
sw v0,0($r_FOLD)
// PROT_EXEC
li a2,PROT_EXEC|PROT_READ
lw a1,F_LENM(sp) // length
lw a0,F_ADRM(sp) // base
li v0,__NR_mprotect; syscall
// Use the unfolded code
addi ra,$r_FOLD,4*4 // jmp over get_page_mask()
lw $r_LENX,sz_pack2 - f_exp($r_fexp)
add $r_ADRX,$r_elfa,$r_ADRX // old compressed data
jr ra
nop
add $r_ADRX,$r_ADRX,$r_relo // new compressed data
err_syscall:
b err_syscall
mmapRW0:
li a5,0 // offset
mmapRW:
li a2,PROT_WRITE|PROT_READ
mmap:
addiu sp,sp,-sp_frame
a4_sys= 4*NBPW // temporary for syscall
a5_sys= 5*NBPW // temporary for syscall
sw a4,a4_sys(sp)
sw a5,a5_sys(sp)
li v0,__NR_mmap; syscall
bnez a3,mmap_bad
nop
jr ra
addiu sp,sp, sp_frame
mmap_bad:
break
zfind: // result in $r_auxv
lw v1,(a0); addiu a0,a0,NBPW
bnez v1,zfind
move $r_auxv,a0
jr ra
li t0,AT_PAGESZ // prepare early
main:
lw s5, sz_pack2 - decompressor(s7) // length before stub
la s4,sz_pack2 - decompressor(s7)
sub s4,s4,s5 // &Elf32_Ehdr
bal zfind
move a0,sp
bal zfind
move a0,$r_auxv
// set $r_PMASK by finding actual page size in Elf32_auxv_t
1:
lw v1,a_type(a0)
addiu a0,a0,sz_auxv
beq v1,t0,2f // AT_PAGESZ
lw v0,a_val - sz_auxv(a0)
bnez v1,1b // AT_NULL
li v0,PAGE_SIZE
2:
sub $r_PMASK,zero,v0
bal unfold
addiu s6,ra,4 // &b_info for folded_loader
addiu $r_FOLD,ra,LrFLD - 0f // &b_info for folded loader
0:
.asciz "/proc/self/exe"; .balign 4
.long O_BINFO
LrFLD:
// { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
/*__XTHEENDX__*/

View File

@ -27,6 +27,7 @@
* <jreiser@users.sourceforge.net>
*/
NBPW= 4
#include "arch/mips/r3000/macros.ash"
#include "arch/mips/r3000/bits.ash"
@ -68,48 +69,72 @@ PATHSIZE=4096
OVERHEAD=2048
MAX_ELF_HDR=512
#define sp_frame 0x20
BAL=0x04110000
MAP_PRIVATE= 0x002
MAP_ANONYMOUS=0x800 # not same as i386
PROT_READ= 1
get_page_mask:
li v0,0 // modified to PAGE_MASK >> 9
jr ra
sll v0,v0,9
nop
sp_frame= 0x20
F_PMASK= 4*NBPW
F_fd= 5*NBPW
F_ADRU= 6*NBPW
F_LENU= 7*NBPW
// The above 4 registers are passed on stack to unfolded code.
a4_sys= 4*NBPW
a5_sys= 5*NBPW
// C-language offers 8 register args; syscall offers only 4
#define a4 t0
#define a5 t1
//ra 31
#define r_fexp 30 /* s8 */
//sp 29 /* hardware */
#define r_PMASK 28 /* gp */
//k1 27 /* trashed by syscall */
//k0 26 /* trashed by syscall */
//t9, jp 25 /* trashed by syscall ? */
//t8 24 /* trashed by syscall ? */
//s7 AVAIL 23 /* s7 */
#define r_auxv 22 /* s6 */
#define r_elfa 21 /* s5 */
#define r_auxe 20 /* s4 */
#define r_LENU 19 /* s3 */
#define r_ADRU 18 /* s2 */
#define r_LENX 17 /* s1 */
#define r_ADRX 16 /* s0 */
/* In:
s7= &decompress
s5= total_size
s3= ADRU
s2= LENU
s1= ADRX
sp= -sp_frame + &{argc,argv...,0,env...,0,auxv...,0,0,strings}
r_ADRX,r_LENX,r_elfa,r_auxv,r_PMASK,r_fexp
sp= -sp_frame{%,%,%,%,PMASK,fd,ADRU,LENU}, {argc,argv...,0,env...,0,auxv...,0,0,strings}
*/
fold_begin:
addiu v0,sp,sp_frame # &argc
addiu sp,-(4+ 4+ PATHSIZE - sp_frame) # alloca: new envp[0], " =", buffer
move v1,sp
L10: # copy argc,argv
lw tmp,0(v0); addiu v0,4
sw tmp,0(v1); addiu v1,4
bnez tmp,L10 # stop when v0= &env[0]
move s0,v1 # new &env[0]
addiu v1,4 # leave space for new env[0]
L20: # copy env
lw tmp,0(v0); addiu v0,4
sw tmp,0(v1); addiu v1,4
bnez tmp,L20 # stop when v0= &auxv[0]
move s4,v1 # new &auxv[0]
L30: # copy auxv
lw tmp,0(v0); lw t0,4(v0); addiu v0,sz_auxv
sw tmp,0(v1); sw t0,4(v1); addiu v1,sz_auxv
AT_PAGESZ= 6
addiu tmp,tmp,-AT_PAGESZ # alter tmp
bnez tmp,0f
addiu tmp,tmp,AT_PAGESZ # restore tmp
negu s8,t0 # -PAGE_SIZE
0:
bnez tmp,L30 # AT_NULL: stop when v0= &auxv[N]
move s6,v1 # new &auxv[N]
//// break
lw $r_ADRU,F_ADRU(sp)
lw $r_LENU,F_LENU(sp)
move v0,sp
addiu sp,(~0<<4)&-(NBPW+ 4+ PATHSIZE - sp_frame) # alloca: new envp[0], " =", buffer
sw v1,0(s0) # new env[0]
move v1,sp
L10: # copy until auxv
lw tmp,0(v0); addiu v0,NBPW
sw tmp,0(v1); addiu v1,NBPW
bne v0,$r_auxv,L10
addiu t1,v1,-NBPW // new envp goes here
sw zero,(v1); addiu v1,NBPW // new terminator for envp
move $r_auxv,v1 // new auxv
L30: // copy auxv
lw tmp,0(v0); lw t0,NBPW(v0); addiu v0,sz_auxv
sw tmp,0(v1); sw t0,NBPW(v1); addiu v1,sz_auxv
bnez tmp,L30 # AT_NULL: stop when v0= &auxv[N]
move $r_auxe,v1 // end of new auxv
sw v1,0(t1) # new env var
li tmp,' '
sb tmp,0(v1) # endian neutral!
sb tmp,1(v1)
@ -131,13 +156,15 @@ AT_PAGESZ= 6
sb $0,(tmp) # null terminate the path
0:
addiu sp,-MAX_ELF_HDR # alloca
move t2,s8 # page_mask
move t3,$r_PMASK # page_mask
move t2,$r_elfa # &Elf32_Ehdr of stub
move t1,zero # &f_unfilter
move t0,s7 # &f_decompress
move a3,s4 # new &auxv[0]
move t0,$r_fexp # &f_decompress
move a3,$r_auxv # new &auxv[0]
move a2,sp # &Elf32_Ehdr tmp space
move a1,s5 # total_size
move a1,$r_LENX # total_size
BAL=0x04110000
/* We need a position-independent call of upx_main, which is external.
"bal upx_main" cannot be assembled by mipsel-elf-as-20060406.
".long BAL + upx_main" then changing R_MIPS_32 to R_MIPS_PC16
@ -152,29 +179,46 @@ AT_PAGESZ= 6
subu v0,ra,v0
addiu v0,v0,%lo(upx_main)
jalr v0
move a0,s1
move a0,$r_ADRX
/* entry= upx_main(b_info *a0, total_size a1, Elf32_Ehdr *a2, Elf32_Auxv_t *a3,
f_decompr t0, f_unfilter t1, page_mask t2 )
f_decompr t0, f_unfilter t1, Elf32_Ehdr &t2, page_mask t3 )
*/
move jp,v0 # &entry
addiu sp,MAX_ELF_HDR # un-alloca
move $r_fexp,v0 # &entry
// Map 1 page of /proc/self/exe so that munmap does not remove all references
lw a4,F_fd(sp)
move a5,$0 // offset
sw a4,a4_sys(sp)
sw a5,a5_sys(sp)
li a3,MAP_PRIVATE
li a2,PROT_READ
neg a1,$r_PMASK // PAGE_SIZE
move a0,$0 // addr
li v0,__NR_mmap; syscall
lw a0,a4_sys(sp) // fd
li v0,__NR_close; syscall
addiu sp,sp,sp_frame
/* Workaround suspected glibc bug: elf/rtld.c assumes uninit local is zero.
2007-11-24 openembedded.org mipsel-linux 2.6.12.6/glibc 2.3.2
*/
addiu tmp, sp, MAX_ELF_HDR # result of un-alloca
move tmp,sp
addiu sp, -300 # estimated stack bound of upx_main and below
0:
addiu sp,4
addiu sp,NBPW
bne sp,tmp,0b
sw $0,-4(sp)
sw $0,-NBPW(sp)
lw tmp,-sz_auxv+ a_val(s6)
move a1,s2 # LENU
lw tmp,-sz_auxv+ a_val($r_auxe) // last .a_val
move a1,$r_LENU
beqz tmp,L40 # could not make escape hatch
move a0,s3 # ADRU
jr tmp # goto munmap escape hatch: [syscall; jr jp; nop]
move a0,$r_ADRU
jr tmp # goto munmap escape hatch: [syscall; jr $r_fexp; nop]
li v0,__NR_munmap
L40:
jr jp # omit munmap
jr $r_fexp # omit munmap
nop
#if 0 /*{ replaced by macros in include/linux.h because of 'bal' vs gcc */
@ -204,24 +248,18 @@ munmap: .globl munmap
mprotect: .globl mprotect
b sysgo; li v0,__NR_mprotect
#define a4_sys 0x10
#define a5_sys 0x14
MAP_PRIVATE= 0x002
MAP_ANONYMOUS=0x800 # not same as i386
mmap_privanon: .globl mmap_privanon
ori a3,a3,MAP_PRIVATE|MAP_ANONYMOUS
li t0,-1 # fd
li t1,0 # offset
mmap: .globl mmap
addiu sp,sp,-sp_frame
sw t0,a4_sys(sp)
sw t1,a5_sys(sp)
sw a4,a4_sys(sp)
sw a5,a5_sys(sp)
li v0,__NR_mmap
syscall
b sysret
addiu sp,sp, sp_frame
addiu sp,sp,sp_frame
#endif /*}*/
/* vim:set ts=8 sw=8 et: */

View File

@ -2,19 +2,19 @@ file format elf32-bigmips
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 ELFMAINX 00000020 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
1 NRV2E 00000154 00000000 00000000 00000054 2**0 CONTENTS, RELOC, READONLY
2 NRV2D 00000144 00000000 00000000 000001a8 2**0 CONTENTS, RELOC, READONLY
3 NRV2B 00000128 00000000 00000000 000002ec 2**0 CONTENTS, RELOC, READONLY
4 LZMA_ELF00 0000009c 00000000 00000000 00000414 2**0 CONTENTS, READONLY
5 LZMA_DEC20 00000ad8 00000000 00000000 000004b0 2**0 CONTENTS, READONLY
6 LZMA_DEC10 00000ad8 00000000 00000000 00000f88 2**0 CONTENTS, READONLY
7 LZMA_DEC30 00000004 00000000 00000000 00001a60 2**0 CONTENTS, READONLY
8 NRV_HEAD 00000010 00000000 00000000 00001a64 2**0 CONTENTS, READONLY
9 NRV_TAIL 00000010 00000000 00000000 00001a74 2**0 CONTENTS, READONLY
10 CFLUSH 00000024 00000000 00000000 00001a84 2**0 CONTENTS, READONLY
11 ELFMAINY 0000002a 00000000 00000000 00001aa8 2**0 CONTENTS, RELOC, READONLY
12 ELFMAINZ 00000124 00000000 00000000 00001ad2 2**0 CONTENTS, RELOC, READONLY
0 ELFMAINX 00000008 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
1 NRV2E 00000154 00000000 00000000 0000003c 2**0 CONTENTS, RELOC, READONLY
2 NRV2D 00000144 00000000 00000000 00000190 2**0 CONTENTS, RELOC, READONLY
3 NRV2B 00000128 00000000 00000000 000002d4 2**0 CONTENTS, RELOC, READONLY
4 LZMA_ELF00 0000009c 00000000 00000000 000003fc 2**0 CONTENTS, READONLY
5 LZMA_DEC20 00000ad8 00000000 00000000 00000498 2**0 CONTENTS, READONLY
6 LZMA_DEC10 00000ad8 00000000 00000000 00000f70 2**0 CONTENTS, READONLY
7 LZMA_DEC30 00000004 00000000 00000000 00001a48 2**0 CONTENTS, READONLY
8 NRV_HEAD 00000010 00000000 00000000 00001a4c 2**0 CONTENTS, READONLY
9 NRV_TAIL 00000010 00000000 00000000 00001a5c 2**0 CONTENTS, READONLY
10 CFLUSH 00000024 00000000 00000000 00001a6c 2**0 CONTENTS, READONLY
11 ELFMAINY 0000002a 00000000 00000000 00001a90 2**0 CONTENTS, RELOC, READONLY
12 ELFMAINZ 00000194 00000000 00000000 00001abc 2**2 CONTENTS, RELOC, READONLY
SYMBOL TABLE:
00000000 l d NRV_TAIL 00000000 NRV_TAIL
00000000 l d ELFMAINZ 00000000 ELFMAINZ
@ -29,24 +29,12 @@ SYMBOL TABLE:
00000000 l d NRV_HEAD 00000000 NRV_HEAD
00000000 l d CFLUSH 00000000 CFLUSH
00000000 l d ELFMAINY 00000000 ELFMAINY
00000000 *UND* 00000000 ADRM
00000000 *UND* 00000000 LENM
00000000 *UND* 00000000 ADRU
00000000 *UND* 00000000 ADRC
00000000 *UND* 00000000 LENU
00000000 *UND* 00000000 ADRX
00000018 g O ELFMAINX 00000000 _start
00000000 g O ELFMAINX 00000000 _start
00000000 *UND* 00000000 O_BINFO
RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE
00000000 R_MIPS_32 ADRM
00000004 R_MIPS_32 LENM
00000008 R_MIPS_32 ADRU
0000000c R_MIPS_32 ADRC
00000010 R_MIPS_32 LENU
00000014 R_MIPS_32 ADRX
00000018 R_MIPS_PC16 ELFMAINZ
00000000 R_MIPS_PC16 ELFMAINZ
RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE
@ -66,4 +54,4 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE
00000120 R_MIPS_32 O_BINFO
00000190 R_MIPS_32 O_BINFO

View File

@ -9,20 +9,20 @@ Linker script and memory map
TARGET(elf32-bigmips)
0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000100080 0x940
.text 0x0000000000100080 0x990
*(.text)
.text 0x0000000000100080 0x130 tmp/mips.r3000-linux.elf-fold.o
.text 0x00000000001001b0 0x810 tmp/mips.r3000-linux.elf-main.o
0x0000000000100830 upx_main
.text 0x0000000000100080 0x170 tmp/mips.r3000-linux.elf-fold.o
.text 0x00000000001001f0 0x820 tmp/mips.r3000-linux.elf-main.o
0x0000000000100870 upx_main
*(.data)
.data 0x00000000001009c0 0x0 tmp/mips.r3000-linux.elf-fold.o
.data 0x00000000001009c0 0x0 tmp/mips.r3000-linux.elf-main.o
.data 0x0000000000100a10 0x0 tmp/mips.r3000-linux.elf-fold.o
.data 0x0000000000100a10 0x0 tmp/mips.r3000-linux.elf-main.o
.data
.bss 0x00000000001009c0 0x0
.bss 0x00000000001009c0 0x0 tmp/mips.r3000-linux.elf-fold.o
.bss 0x00000000001009c0 0x0 tmp/mips.r3000-linux.elf-main.o
.bss 0x0000000000100a10 0x0
.bss 0x0000000000100a10 0x0 tmp/mips.r3000-linux.elf-fold.o
.bss 0x0000000000100a10 0x0 tmp/mips.r3000-linux.elf-main.o
LOAD tmp/mips.r3000-linux.elf-fold.o
LOAD tmp/mips.r3000-linux.elf-main.o
OUTPUT(tmp/mips.r3000-linux.elf-fold.bin elf32-bigmips)

View File

@ -2,19 +2,19 @@ file format elf32-littlemips
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 ELFMAINX 00000020 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
1 NRV2E 0000012c 00000000 00000000 00000054 2**0 CONTENTS, RELOC, READONLY
2 NRV2D 0000011c 00000000 00000000 00000180 2**0 CONTENTS, RELOC, READONLY
3 NRV2B 00000100 00000000 00000000 0000029c 2**0 CONTENTS, RELOC, READONLY
4 LZMA_ELF00 0000009c 00000000 00000000 0000039c 2**0 CONTENTS, READONLY
5 LZMA_DEC20 00000ad8 00000000 00000000 00000438 2**0 CONTENTS, READONLY
6 LZMA_DEC10 00000ad8 00000000 00000000 00000f10 2**0 CONTENTS, READONLY
7 LZMA_DEC30 00000004 00000000 00000000 000019e8 2**0 CONTENTS, READONLY
8 NRV_HEAD 00000010 00000000 00000000 000019ec 2**0 CONTENTS, READONLY
9 NRV_TAIL 00000010 00000000 00000000 000019fc 2**0 CONTENTS, READONLY
10 CFLUSH 00000024 00000000 00000000 00001a0c 2**0 CONTENTS, READONLY
11 ELFMAINY 0000002a 00000000 00000000 00001a30 2**0 CONTENTS, RELOC, READONLY
12 ELFMAINZ 00000124 00000000 00000000 00001a5a 2**0 CONTENTS, RELOC, READONLY
0 ELFMAINX 00000008 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
1 NRV2E 0000012c 00000000 00000000 0000003c 2**0 CONTENTS, RELOC, READONLY
2 NRV2D 0000011c 00000000 00000000 00000168 2**0 CONTENTS, RELOC, READONLY
3 NRV2B 00000100 00000000 00000000 00000284 2**0 CONTENTS, RELOC, READONLY
4 LZMA_ELF00 0000009c 00000000 00000000 00000384 2**0 CONTENTS, READONLY
5 LZMA_DEC20 00000ad8 00000000 00000000 00000420 2**0 CONTENTS, READONLY
6 LZMA_DEC10 00000ad8 00000000 00000000 00000ef8 2**0 CONTENTS, READONLY
7 LZMA_DEC30 00000004 00000000 00000000 000019d0 2**0 CONTENTS, READONLY
8 NRV_HEAD 00000010 00000000 00000000 000019d4 2**0 CONTENTS, READONLY
9 NRV_TAIL 00000010 00000000 00000000 000019e4 2**0 CONTENTS, READONLY
10 CFLUSH 00000024 00000000 00000000 000019f4 2**0 CONTENTS, READONLY
11 ELFMAINY 0000002a 00000000 00000000 00001a18 2**0 CONTENTS, RELOC, READONLY
12 ELFMAINZ 00000194 00000000 00000000 00001a44 2**2 CONTENTS, RELOC, READONLY
SYMBOL TABLE:
00000000 l d NRV_TAIL 00000000 NRV_TAIL
00000000 l d ELFMAINZ 00000000 ELFMAINZ
@ -29,24 +29,12 @@ SYMBOL TABLE:
00000000 l d NRV_HEAD 00000000 NRV_HEAD
00000000 l d CFLUSH 00000000 CFLUSH
00000000 l d ELFMAINY 00000000 ELFMAINY
00000000 *UND* 00000000 ADRM
00000000 *UND* 00000000 LENM
00000000 *UND* 00000000 ADRU
00000000 *UND* 00000000 ADRC
00000000 *UND* 00000000 LENU
00000000 *UND* 00000000 ADRX
00000018 g O ELFMAINX 00000000 _start
00000000 g O ELFMAINX 00000000 _start
00000000 *UND* 00000000 O_BINFO
RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE
00000000 R_MIPS_32 ADRM
00000004 R_MIPS_32 LENM
00000008 R_MIPS_32 ADRU
0000000c R_MIPS_32 ADRC
00000010 R_MIPS_32 LENU
00000014 R_MIPS_32 ADRX
00000018 R_MIPS_PC16 ELFMAINZ
00000000 R_MIPS_PC16 ELFMAINZ
RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE
@ -66,4 +54,4 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE
00000120 R_MIPS_32 O_BINFO
00000190 R_MIPS_32 O_BINFO

View File

@ -9,20 +9,20 @@ Linker script and memory map
TARGET(elf32-littlemips)
0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000100080 0x940
.text 0x0000000000100080 0x990
*(.text)
.text 0x0000000000100080 0x130 tmp/mipsel.r3000-linux.elf-fold.o
.text 0x00000000001001b0 0x810 tmp/mipsel.r3000-linux.elf-main.o
0x0000000000100830 upx_main
.text 0x0000000000100080 0x170 tmp/mipsel.r3000-linux.elf-fold.o
.text 0x00000000001001f0 0x820 tmp/mipsel.r3000-linux.elf-main.o
0x0000000000100870 upx_main
*(.data)
.data 0x00000000001009c0 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.data 0x00000000001009c0 0x0 tmp/mipsel.r3000-linux.elf-main.o
.data 0x0000000000100a10 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.data 0x0000000000100a10 0x0 tmp/mipsel.r3000-linux.elf-main.o
.data
.bss 0x00000000001009c0 0x0
.bss 0x00000000001009c0 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.bss 0x00000000001009c0 0x0 tmp/mipsel.r3000-linux.elf-main.o
.bss 0x0000000000100a10 0x0
.bss 0x0000000000100a10 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.bss 0x0000000000100a10 0x0 tmp/mipsel.r3000-linux.elf-main.o
LOAD tmp/mipsel.r3000-linux.elf-fold.o
LOAD tmp/mipsel.r3000-linux.elf-main.o
OUTPUT(tmp/mipsel.r3000-linux.elf-fold.bin elf32-littlemips)