1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

powerpc64le -fpic dynamically linked binary support

Update stub for -fpic support
 Handle 64K page in p_lx_elf.cpp

Signed-off-by: Thierry Fauck <tfauck@free.fr>
This commit is contained in:
Thierry Fauck 2016-11-08 18:29:10 +01:00
parent 5c0340f9ae
commit b1c07c22ce
3 changed files with 162 additions and 169 deletions

View File

@ -2327,7 +2327,10 @@ PackLinuxElf64::generateElfHdr(
// However, somebody might complain because (.p_vaddr - .p_offset)
// is divisible only by phdr[1].p_align, and not by phdr[0].p_align.
set_te64(&h2->phdr[1].p_align, 0x1000);
set_te64(&h2->phdr[1].p_offset, /*~page_mask*/ 0xfff & brkb);
if ( ~page_mask == 0xffff ) /* 64K specific case */
set_te64(&h2->phdr[1].p_offset, /*~page_mask*/ 0xffff & brkb);
else
set_te64(&h2->phdr[1].p_offset, /*~page_mask*/ 0xfff & brkb);
set_te64(&h2->phdr[1].p_vaddr, brkb);
set_te64(&h2->phdr[1].p_paddr, brkb);

View File

@ -1,5 +1,5 @@
/* powerpc64le-linux.elf-fold.h
created from powerpc64le-linux.elf-fold.bin, 2379 (0x94b) bytes
created from powerpc64le-linux.elf-fold.bin, 2419 (0x973) bytes
This file is part of the UPX executable compressor.
@ -31,21 +31,21 @@
*/
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 2379
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0x1fa74a77
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0xc33ee113
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 2419
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0xf9a25df4
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0xc3ec26a2
unsigned char stub_powerpc64le_linux_elf_fold[2379] = {
unsigned char stub_powerpc64le_linux_elf_fold[2419] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 21, 0, 1, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 21, 0, 1, 0, 0, 0, 40, 9, 16, 0, 0, 0, 0, 0,
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 1, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x0060 */ 252, 8, 0, 0, 0, 0, 0, 0,252, 8, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 40, 9, 0, 0, 0, 0, 0, 0, 40, 9, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
/* 0x0080 */ 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0,
/* 0x0090 */ 0, 9, 16, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 40, 9, 0, 0, 0, 0, 0, 0, 40, 9, 16, 0, 0, 0, 0, 0,
/* 0x0090 */ 40, 9, 16, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0,
/* 0x00a0 */ 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 0, 0, 72,
/* 0x00c0 */ 208, 0, 6, 40, 32, 0,194, 76,191,240,132, 84, 32, 0,194, 77,
@ -59,130 +59,133 @@ unsigned char stub_powerpc64le_linux_elf_fold[2379] = {
/* 0x0140 */ 0, 0, 33,233,225,255,255, 75,221,255,255, 75,248,255,159,128,
/* 0x0150 */ 38, 0, 30, 85,120,251,231,127, 80,248,164,127, 0,248,161, 56,
/* 0x0160 */ 248,255,189, 59, 80,255,132, 56,176, 0,125, 56,208,247, 33, 56,
/* 0x0170 */ 24, 0,195,128,137, 5, 0, 72,120, 27,127,124,120,235,163,127,
/* 0x0180 */ 80,240,157,124,197, 0, 0, 72,166, 3,232,127, 56, 8, 65,232,
/* 0x0190 */ 64, 8, 97,232, 72, 8,129,232, 80, 8,161,232, 88, 8,193,232,
/* 0x01a0 */ 96, 8,225,232,104, 8, 1,233,112, 8, 33,233,120, 8, 65,233,
/* 0x01b0 */ 128, 8, 97,233,136, 8,129,233,144, 8,161,233,152, 8,193,233,
/* 0x01c0 */ 160, 8,225,233,168, 8, 1,234,176, 8, 33,234,184, 8, 65,234,
/* 0x01d0 */ 192, 8, 97,234,200, 8,129,234,208, 8,161,234,216, 8,193,234,
/* 0x01e0 */ 224, 8,225,234,232, 8, 1,235,240, 8, 33,235,248, 8, 65,235,
/* 0x01f0 */ 0, 9, 97,235, 8, 9,129,235, 16, 9,161,235, 24, 9,193,235,
/* 0x0200 */ 32, 9,225,235, 48, 8, 33,232, 32, 0,128, 78, 90, 0, 0, 56,
/* 0x0210 */ 2, 0, 0, 68, 8, 0,227, 64,255,255, 96, 56, 32, 0,128, 78,
/* 0x0220 */ 1, 0, 0, 56,236,255,255, 75, 3, 0, 0, 56,228,255,255, 75,
/* 0x0230 */ 5, 0, 0, 56,220,255,255, 75, 6, 0, 0, 56,212,255,255, 75,
/* 0x0240 */ 125, 0, 0, 56,204,255,255, 75, 91, 0, 0, 56,196,255,255, 75,
/* 0x0250 */ 45, 0, 0, 56,188,255,255, 75, 0, 0, 35, 44, 32, 0,130, 77,
/* 0x0260 */ 0, 0, 36, 47, 0, 0, 67,233, 64, 32,170,127, 16, 0,158, 64,
/* 0x0270 */ 0, 0,131,248, 8, 0,163,248, 32, 0,128, 78, 1, 0,170, 43,
/* 0x0280 */ 8, 0,158, 64,236,255,154, 64, 16, 0, 99, 56,216,255,255, 75,
/* 0x0290 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,233,
/* 0x02a0 */ 8, 0, 3,233, 1, 0,229, 56, 0, 0, 32, 57,166, 3,233,124,
/* 0x02b0 */ 64, 40,170,127, 28, 0,252, 64,166, 2, 8,124,127, 0, 96, 56,
/* 0x02c0 */ 16, 0, 1,248,145,255, 33,248, 89,255,255, 75, 0, 0, 0, 96,
/* 0x02d0 */ 20, 0, 64, 66,174, 72, 72,125,174, 73, 68,125, 1, 0, 41, 57,
/* 0x02e0 */ 240,255,255, 75, 8, 0, 67,233, 20, 74, 74,125, 8, 0, 67,249,
/* 0x02f0 */ 0, 0, 67,233, 80, 80, 41,125, 0, 0, 35,249, 32, 0,128, 78,
/* 0x0300 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 0, 0, 0, 38, 0,128,125,
/* 0x0310 */ 166, 2, 8,124, 8, 0,129,145,133, 5, 0, 72, 97,255, 33,248,
/* 0x0320 */ 120, 27,126,124,120, 35,159,124,120, 43,189,124,120, 51,220,124,
/* 0x0330 */ 0, 0, 38, 46, 0, 0, 63,233, 0, 0,169, 47, 60, 1,158, 65,
/* 0x0340 */ 120,243,195,127,112, 0,129, 56, 12, 0,160, 56, 81,255,255, 75,
/* 0x0350 */ 112, 0, 65,129,116, 0, 33,129, 0, 0,170, 47, 32, 0,158, 64,
/* 0x0360 */ 88, 33, 37,109, 85, 80,133, 47, 28, 0,158, 64, 0, 0, 62,233,
/* 0x0370 */ 0, 0,169, 47, 4, 1,254, 65, 12, 0, 0, 72, 33, 0, 41,121,
/* 0x0380 */ 16, 0,226, 64,127, 0, 96, 56,153,254,255, 75, 0, 0, 0, 96,
/* 0x0390 */ 64, 80, 9,127,240,255,217, 65, 0, 0, 31,233, 64, 64,170,127,
/* 0x03a0 */ 228,255,221, 65, 8, 0,191,232,160, 0,152, 64,120, 75, 36,125,
/* 0x03b0 */ 0, 0, 61,233, 8, 0,126,232,124, 0,193, 56,124, 0, 65,145,
/* 0x03c0 */ 40, 0, 65,248,120, 0,225,136, 16, 0,125,233,166, 3, 41,125,
/* 0x03d0 */ 8, 0, 93,232, 33, 4,128, 78, 40, 0, 65,232, 0, 0,163, 47,
/* 0x03e0 */ 164,255,222, 64,124, 0,129,128,112, 0, 33,129, 0, 32,137,127,
/* 0x03f0 */ 148,255,222, 64,121, 0,193,136, 0, 0,166, 47, 44, 0,158, 65,
/* 0x0400 */ 40, 0,146, 65, 8, 0,127,232,122, 0,161,136, 40, 0, 65,248,
/* 0x0410 */ 0, 0, 60,233, 16, 0,124,233,166, 3, 41,125, 8, 0, 92,232,
/* 0x0420 */ 33, 4,128, 78, 40, 0, 65,232,116, 0, 1,129, 8, 0, 94,233,
/* 0x0430 */ 0, 0, 62,233, 20, 66, 74,125, 80, 72, 40,125, 8, 0, 94,249,
/* 0x0440 */ 0, 0, 62,249, 20, 0, 0, 72,120, 43,164,124,120,243,195,127,
/* 0x0450 */ 120, 75, 37,125, 73,254,255, 75,112, 0, 1,129, 8, 0, 95,233,
/* 0x0460 */ 0, 0, 63,233, 20, 66, 74,125, 80, 72, 40,125, 8, 0, 95,249,
/* 0x0470 */ 0, 0, 63,249,192,254,255, 75,160, 0, 33, 56, 8, 0,129,129,
/* 0x0480 */ 32,129,144,125, 92, 4, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3,
/* 0x0490 */ 128, 4, 0, 0,166, 2, 8,124, 38, 0,128,125, 16, 0, 35,161,
/* 0x04a0 */ 3, 0,137, 47,205, 3, 0, 72, 32, 0,195,234,120, 51,217,124,
/* 0x04b0 */ 120, 27,124,124,120, 35,155,124,120, 43,186,124, 8, 0,129,145,
/* 0x04c0 */ 1,255, 33,248,120, 59,248,124,120, 67, 23,125, 20,178,195,126,
/* 0x04d0 */ 16, 0,192, 56, 8, 0,158, 64, 0, 0,192, 56, 56, 0, 92,161,
/* 0x04e0 */ 34, 8,198, 56,120,179,200,126, 0, 0, 32, 57,255,255,192, 59,
/* 0x04f0 */ 1, 0, 74, 57,166, 3, 73,125, 60, 0, 64, 66, 0, 0, 72,129,
/* 0x0500 */ 1, 0,138, 47, 40, 0,158, 64, 16, 0,232,232, 64, 56,190,127,
/* 0x0510 */ 8, 0,157, 64,120, 59,254,124, 40, 0, 72,233, 20, 82, 71,125,
/* 0x0520 */ 64, 80,169,127, 8, 0,156, 64,120, 83, 73,125, 56, 0, 8, 57,
/* 0x0530 */ 200,255,255, 75, 1, 0, 41, 61,228, 3,222,123,255,255, 41, 57,
/* 0x0540 */ 120,243,195,127, 80, 72,158,124, 0, 0,160, 56,228, 3,132,120,
/* 0x0550 */ 180, 7,198,124,255,255,224, 56, 0, 0, 0, 57,177,252,255, 75,
/* 0x0560 */ 0, 0, 0, 96, 81,115, 64, 62, 0, 0, 96, 58, 0, 0, 59, 46,
/* 0x0570 */ 64, 98, 82, 98, 80, 24,222,127, 56, 0, 60,161, 0,152,137,127,
/* 0x0580 */ 88, 1,157, 64, 0, 0, 54,129, 40, 0,146, 65, 6, 0,137, 47,
/* 0x0590 */ 32, 0,158, 64, 16, 0,182,232,120,203, 35,127, 3, 0,128, 56,
/* 0x05a0 */ 20,242,165,124, 32, 0,165,120,177,252,255, 75, 28, 1, 0, 72,
/* 0x05b0 */ 1, 0,137, 47, 20, 1,158, 64, 4, 0,182,131, 16, 0, 54,233,
/* 0x05c0 */ 40, 0,182,234, 32, 0,246,235,250, 22,189, 87, 32, 4, 42,121,
/* 0x05d0 */ 112, 0,225,251,120, 0, 33,249, 48,236, 93,126,228, 3, 52,121,
/* 0x05e0 */ 20,170,190,126, 20,250,234,127, 20,242,148,126, 20,170,169,126,
/* 0x05f0 */ 126, 7,189, 87, 12, 0,146, 64, 0, 0,160, 56, 8, 0, 0, 72,
/* 0x0600 */ 2, 0,160, 56,120,235,165,124,180, 7,165,124, 16, 0,146, 64,
/* 0x0610 */ 120,211, 71,127, 18, 0,192, 56, 12, 0, 0, 72, 50, 0,192, 56,
/* 0x0620 */ 255,255,224, 56, 8, 0, 22,233,120,163,131,126,120,251,228,127,
/* 0x0630 */ 80, 64, 10,125,217,251,255, 75, 0, 0, 0, 96, 0, 24,180,127,
/* 0x0640 */ 16, 0,254, 65,127, 0, 96, 56,217,251,255, 75, 0, 0, 0, 96,
/* 0x0650 */ 24, 0,146, 65,120,219, 99,127,112, 0,129, 56,120,195, 5,127,
/* 0x0660 */ 120,187,230,126,169,252,255, 75,208, 0, 63,126, 32, 4, 49,122,
/* 0x0670 */ 32, 0,146, 65,120,163,131,126,120,251,228,127,180, 7,165,127,
/* 0x0680 */ 193,251,255, 75, 0, 0, 0, 96, 0, 0,163, 47,184,255,222, 64,
/* 0x0690 */ 20,250,241,127, 20,250,244,127, 64,168,191,127, 44, 0,156, 64,
/* 0x06a0 */ 120,251,227,127, 80,168,159,124,180, 7,165,127, 50, 0,192, 56,
/* 0x06b0 */ 255,255,224, 56, 0, 0, 0, 57, 85,251,255, 75, 0, 0, 0, 96,
/* 0x06c0 */ 0, 24,191,127,128,255,222, 64, 1, 0,115, 58, 56, 0,214, 58,
/* 0x06d0 */ 180, 7,115,126,164,254,255, 75, 0, 1, 33, 56, 24, 0,124,232,
/* 0x06e0 */ 20, 26,126,124, 8, 0,129,129, 32,129,144,125,200, 1, 0, 72,
/* 0x06f0 */ 0, 0, 0, 0, 0, 0, 0, 3,128, 15, 0, 0,166, 2, 8,124,
/* 0x0700 */ 232,255,132, 56, 24, 0, 67,129, 0, 0,192, 56,141, 1, 0, 72,
/* 0x0710 */ 33,255, 33,248,120, 43,191,124,120, 75, 62,125, 64, 0,165, 59,
/* 0x0720 */ 24, 0, 35, 57,144, 0,129,248,136, 0,161,248,120, 59,229,124,
/* 0x0730 */ 112, 0,129,248,120, 0, 33,249,128, 0, 65,249,160, 0,225,248,
/* 0x0740 */ 168, 0, 1,249,152, 0, 33,249,144, 0, 97, 56,128, 0,129, 56,
/* 0x0750 */ 189,251,255, 75, 80, 0, 63,233,120,243,195,127, 3, 0,128, 56,
/* 0x0760 */ 64, 0,169, 56, 32, 0,165,120,241,250,255, 75, 56, 0,191,160,
/* 0x0770 */ 120,243,195,127, 5, 0,128, 56,225,250,255, 75, 24, 0,191,128,
/* 0x0780 */ 120,243,195,127, 9, 0,128, 56,209,250,255, 75,160, 0,225,232,
/* 0x0790 */ 168, 0, 1,233,120,243,198,127,112, 0,129, 56, 0, 0,160, 56,
/* 0x07a0 */ 120,251,227,127,241,252,255, 75, 9, 0,128, 56,120, 27,124,124,
/* 0x07b0 */ 120,243,195,127, 32, 0,133,123, 0, 0,192, 59,157,250,255, 75,
/* 0x07c0 */ 56, 0, 63,161, 0,240,137,127,144, 0,157, 64, 0, 0, 61,129,
/* 0x07d0 */ 3, 0,137, 47,116, 0,158, 64, 16, 0,125,232, 0, 0,128, 56,
/* 0x07e0 */ 0, 0,160, 56, 77,250,255, 75, 0, 0, 0, 96, 0, 0,131, 47,
/* 0x07f0 */ 120, 27,123,124, 16, 0,252, 64,127, 0, 96, 56, 37,250,255, 75,
/* 0x0800 */ 0, 0, 0, 96,120,251,228,127, 0, 4,160, 56, 29,250,255, 75,
/* 0x0810 */ 0, 0, 0, 96, 0, 4,163, 47,224,255,222, 64,120,251,227,127,
/* 0x0820 */ 0, 0,128, 56,120,219,101,127, 0, 0,192, 56, 0, 0,224, 56,
/* 0x0830 */ 0, 0, 0, 57, 97,252,255, 75,120, 27,124,124,120,219, 99,127,
/* 0x0840 */ 249,249,255, 75, 0, 0, 0, 96, 1, 0,222, 59, 56, 0,189, 59,
/* 0x0850 */ 180, 7,222,127,108,255,255, 75,224, 0, 33, 56,120,227,131,127,
/* 0x0860 */ 124, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1,128, 5, 0, 0,
/* 0x0870 */ 136,255, 33,250,144,255, 65,250,152,255, 97,250,160,255,129,250,
/* 0x0880 */ 168,255,161,250,176,255,193,250,184,255,225,250,192,255, 1,251,
/* 0x0890 */ 200,255, 33,251,208,255, 65,251,216,255, 97,251,224,255,129,251,
/* 0x08a0 */ 232,255,161,251,240,255,193,251,248,255,225,251, 16, 0, 1,248,
/* 0x08b0 */ 32, 0,128, 78,136,255, 33,234,144,255, 65,234,152,255, 97,234,
/* 0x08c0 */ 160,255,129,234,168,255,161,234,176,255,193,234,184,255,225,234,
/* 0x08d0 */ 192,255, 1,235,200,255, 33,235,208,255, 65,235,216,255, 97,235,
/* 0x08e0 */ 224,255,129,235, 16, 0, 1,232,232,255,161,235,166, 3, 8,124,
/* 0x08f0 */ 240,255,193,235,248,255,225,235, 32, 0,128, 78, 0, 0, 0, 0,
/* 0x0900 */ 88, 2, 16, 0, 0, 0, 0, 0, 0,137, 16, 0, 0, 0, 0, 0,
/* 0x0910 */ 156, 2, 16, 0, 0, 0, 0, 0, 0,137, 16, 0, 0, 0, 0, 0,
/* 0x0920 */ 12, 3, 16, 0, 0, 0, 0, 0, 0,137, 16, 0, 0, 0, 0, 0,
/* 0x0930 */ 148, 4, 16, 0, 0, 0, 0, 0, 0,137, 16, 0, 0, 0, 0, 0,
/* 0x0940 */ 252, 6, 16, 0, 0, 0, 0, 0, 0,137, 16
/* 0x0170 */ 24, 0,195,128,181, 5, 0, 72,120, 27,127,124,120,235,163,127,
/* 0x0180 */ 80,240,157,124,241, 0, 0, 72,166, 3,232,127, 0, 16,224, 61,
/* 0x0190 */ 192, 8,239, 57, 64,248, 47,124, 28, 0,226, 65, 5, 0,255, 63,
/* 0x01a0 */ 96,106,255, 59, 76,147,159, 57,176,146,159,249, 0, 0,128, 57,
/* 0x01b0 */ 224,145,159,249, 56, 8, 65,232, 64, 8, 97,232, 72, 8,129,232,
/* 0x01c0 */ 80, 8,161,232, 88, 8,193,232, 96, 8,225,232,104, 8, 1,233,
/* 0x01d0 */ 112, 8, 33,233,120, 8, 65,233,128, 8, 97,233,136, 8,129,233,
/* 0x01e0 */ 144, 8,161,233,152, 8,193,233,160, 8,225,233,168, 8, 1,234,
/* 0x01f0 */ 176, 8, 33,234,184, 8, 65,234,192, 8, 97,234,200, 8,129,234,
/* 0x0200 */ 208, 8,161,234,216, 8,193,234,224, 8,225,234,232, 8, 1,235,
/* 0x0210 */ 240, 8, 33,235,248, 8, 65,235, 0, 9, 97,235, 8, 9,129,235,
/* 0x0220 */ 16, 9,161,235, 24, 9,193,235, 32, 9,225,235, 48, 8, 33,232,
/* 0x0230 */ 166, 2,136,125, 32, 0,128, 78, 90, 0, 0, 56, 2, 0, 0, 68,
/* 0x0240 */ 8, 0,227, 64,255,255, 96, 56, 32, 0,128, 78, 1, 0, 0, 56,
/* 0x0250 */ 236,255,255, 75, 3, 0, 0, 56,228,255,255, 75, 5, 0, 0, 56,
/* 0x0260 */ 220,255,255, 75, 6, 0, 0, 56,212,255,255, 75,125, 0, 0, 56,
/* 0x0270 */ 204,255,255, 75, 91, 0, 0, 56,196,255,255, 75, 45, 0, 0, 56,
/* 0x0280 */ 188,255,255, 75, 0, 0, 35, 44, 32, 0,130, 77, 0, 0, 36, 47,
/* 0x0290 */ 0, 0, 67,233, 64, 32,170,127, 16, 0,158, 64, 0, 0,131,248,
/* 0x02a0 */ 8, 0,163,248, 32, 0,128, 78, 1, 0,170, 43, 8, 0,158, 64,
/* 0x02b0 */ 236,255,154, 64, 16, 0, 99, 56,216,255,255, 75, 0, 0, 0, 0,
/* 0x02c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,233, 8, 0, 3,233,
/* 0x02d0 */ 1, 0,229, 56, 0, 0, 32, 57,166, 3,233,124, 64, 40,170,127,
/* 0x02e0 */ 28, 0,252, 64,166, 2, 8,124,127, 0, 96, 56, 16, 0, 1,248,
/* 0x02f0 */ 145,255, 33,248, 89,255,255, 75, 0, 0, 0, 96, 20, 0, 64, 66,
/* 0x0300 */ 174, 72, 72,125,174, 73, 68,125, 1, 0, 41, 57,240,255,255, 75,
/* 0x0310 */ 8, 0, 67,233, 20, 74, 74,125, 8, 0, 67,249, 0, 0, 67,233,
/* 0x0320 */ 80, 80, 41,125, 0, 0, 35,249, 32, 0,128, 78, 0, 0, 0, 0,
/* 0x0330 */ 0, 0, 0, 1,128, 0, 0, 0, 38, 0,128,125,166, 2, 8,124,
/* 0x0340 */ 8, 0,129,145,133, 5, 0, 72, 97,255, 33,248,120, 27,126,124,
/* 0x0350 */ 120, 35,159,124,120, 43,189,124,120, 51,220,124, 0, 0, 38, 46,
/* 0x0360 */ 0, 0, 63,233, 0, 0,169, 47, 60, 1,158, 65,120,243,195,127,
/* 0x0370 */ 112, 0,129, 56, 12, 0,160, 56, 81,255,255, 75,112, 0, 65,129,
/* 0x0380 */ 116, 0, 33,129, 0, 0,170, 47, 32, 0,158, 64, 88, 33, 37,109,
/* 0x0390 */ 85, 80,133, 47, 28, 0,158, 64, 0, 0, 62,233, 0, 0,169, 47,
/* 0x03a0 */ 4, 1,254, 65, 12, 0, 0, 72, 33, 0, 41,121, 16, 0,226, 64,
/* 0x03b0 */ 127, 0, 96, 56,153,254,255, 75, 0, 0, 0, 96, 64, 80, 9,127,
/* 0x03c0 */ 240,255,217, 65, 0, 0, 31,233, 64, 64,170,127,228,255,221, 65,
/* 0x03d0 */ 8, 0,191,232,160, 0,152, 64,120, 75, 36,125, 0, 0, 61,233,
/* 0x03e0 */ 8, 0,126,232,124, 0,193, 56,124, 0, 65,145, 40, 0, 65,248,
/* 0x03f0 */ 120, 0,225,136, 16, 0,125,233,166, 3, 41,125, 8, 0, 93,232,
/* 0x0400 */ 33, 4,128, 78, 40, 0, 65,232, 0, 0,163, 47,164,255,222, 64,
/* 0x0410 */ 124, 0,129,128,112, 0, 33,129, 0, 32,137,127,148,255,222, 64,
/* 0x0420 */ 121, 0,193,136, 0, 0,166, 47, 44, 0,158, 65, 40, 0,146, 65,
/* 0x0430 */ 8, 0,127,232,122, 0,161,136, 40, 0, 65,248, 0, 0, 60,233,
/* 0x0440 */ 16, 0,124,233,166, 3, 41,125, 8, 0, 92,232, 33, 4,128, 78,
/* 0x0450 */ 40, 0, 65,232,116, 0, 1,129, 8, 0, 94,233, 0, 0, 62,233,
/* 0x0460 */ 20, 66, 74,125, 80, 72, 40,125, 8, 0, 94,249, 0, 0, 62,249,
/* 0x0470 */ 20, 0, 0, 72,120, 43,164,124,120,243,195,127,120, 75, 37,125,
/* 0x0480 */ 73,254,255, 75,112, 0, 1,129, 8, 0, 95,233, 0, 0, 63,233,
/* 0x0490 */ 20, 66, 74,125, 80, 72, 40,125, 8, 0, 95,249, 0, 0, 63,249,
/* 0x04a0 */ 192,254,255, 75,160, 0, 33, 56, 8, 0,129,129, 32,129,144,125,
/* 0x04b0 */ 92, 4, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3,128, 4, 0, 0,
/* 0x04c0 */ 166, 2, 8,124, 38, 0,128,125, 16, 0, 35,161, 3, 0,137, 47,
/* 0x04d0 */ 205, 3, 0, 72, 32, 0,195,234,120, 51,217,124,120, 27,124,124,
/* 0x04e0 */ 120, 35,155,124,120, 43,186,124, 8, 0,129,145, 1,255, 33,248,
/* 0x04f0 */ 120, 59,248,124,120, 67, 23,125, 20,178,195,126, 16, 0,192, 56,
/* 0x0500 */ 8, 0,158, 64, 0, 0,192, 56, 56, 0, 92,161, 34, 8,198, 56,
/* 0x0510 */ 120,179,200,126, 0, 0, 32, 57,255,255,192, 59, 1, 0, 74, 57,
/* 0x0520 */ 166, 3, 73,125, 60, 0, 64, 66, 0, 0, 72,129, 1, 0,138, 47,
/* 0x0530 */ 40, 0,158, 64, 16, 0,232,232, 64, 56,190,127, 8, 0,157, 64,
/* 0x0540 */ 120, 59,254,124, 40, 0, 72,233, 20, 82, 71,125, 64, 80,169,127,
/* 0x0550 */ 8, 0,156, 64,120, 83, 73,125, 56, 0, 8, 57,200,255,255, 75,
/* 0x0560 */ 1, 0, 41, 61,228, 3,222,123,255,255, 41, 57,120,243,195,127,
/* 0x0570 */ 80, 72,158,124, 0, 0,160, 56,228, 3,132,120,180, 7,198,124,
/* 0x0580 */ 255,255,224, 56, 0, 0, 0, 57,177,252,255, 75, 0, 0, 0, 96,
/* 0x0590 */ 81,115, 64, 62, 0, 0, 96, 58, 0, 0, 59, 46, 64, 98, 82, 98,
/* 0x05a0 */ 80, 24,222,127, 56, 0, 60,161, 0,152,137,127, 88, 1,157, 64,
/* 0x05b0 */ 0, 0, 54,129, 40, 0,146, 65, 6, 0,137, 47, 32, 0,158, 64,
/* 0x05c0 */ 16, 0,182,232,120,203, 35,127, 3, 0,128, 56, 20,242,165,124,
/* 0x05d0 */ 32, 0,165,120,177,252,255, 75, 28, 1, 0, 72, 1, 0,137, 47,
/* 0x05e0 */ 20, 1,158, 64, 4, 0,182,131, 16, 0, 54,233, 40, 0,182,234,
/* 0x05f0 */ 32, 0,246,235,250, 22,189, 87, 32, 4, 42,121,112, 0,225,251,
/* 0x0600 */ 120, 0, 33,249, 48,236, 93,126,228, 3, 52,121, 20,170,190,126,
/* 0x0610 */ 20,250,234,127, 20,242,148,126, 20,170,169,126,126, 7,189, 87,
/* 0x0620 */ 12, 0,146, 64, 0, 0,160, 56, 8, 0, 0, 72, 2, 0,160, 56,
/* 0x0630 */ 120,235,165,124,180, 7,165,124, 16, 0,146, 64,120,211, 71,127,
/* 0x0640 */ 18, 0,192, 56, 12, 0, 0, 72, 50, 0,192, 56,255,255,224, 56,
/* 0x0650 */ 8, 0, 22,233,120,163,131,126,120,251,228,127, 80, 64, 10,125,
/* 0x0660 */ 217,251,255, 75, 0, 0, 0, 96, 0, 24,180,127, 16, 0,254, 65,
/* 0x0670 */ 127, 0, 96, 56,217,251,255, 75, 0, 0, 0, 96, 24, 0,146, 65,
/* 0x0680 */ 120,219, 99,127,112, 0,129, 56,120,195, 5,127,120,187,230,126,
/* 0x0690 */ 169,252,255, 75,208, 0, 63,126, 32, 4, 49,122, 32, 0,146, 65,
/* 0x06a0 */ 120,163,131,126,120,251,228,127,180, 7,165,127,193,251,255, 75,
/* 0x06b0 */ 0, 0, 0, 96, 0, 0,163, 47,184,255,222, 64, 20,250,241,127,
/* 0x06c0 */ 20,250,244,127, 64,168,191,127, 44, 0,156, 64,120,251,227,127,
/* 0x06d0 */ 80,168,159,124,180, 7,165,127, 50, 0,192, 56,255,255,224, 56,
/* 0x06e0 */ 0, 0, 0, 57, 85,251,255, 75, 0, 0, 0, 96, 0, 24,191,127,
/* 0x06f0 */ 128,255,222, 64, 1, 0,115, 58, 56, 0,214, 58,180, 7,115,126,
/* 0x0700 */ 164,254,255, 75, 0, 1, 33, 56, 24, 0,124,232, 20, 26,126,124,
/* 0x0710 */ 8, 0,129,129, 32,129,144,125,200, 1, 0, 72, 0, 0, 0, 0,
/* 0x0720 */ 0, 0, 0, 3,128, 15, 0, 0,166, 2, 8,124,232,255,132, 56,
/* 0x0730 */ 24, 0, 67,129, 0, 0,192, 56,141, 1, 0, 72, 33,255, 33,248,
/* 0x0740 */ 120, 43,191,124,120, 75, 62,125, 64, 0,165, 59, 24, 0, 35, 57,
/* 0x0750 */ 144, 0,129,248,136, 0,161,248,120, 59,229,124,112, 0,129,248,
/* 0x0760 */ 120, 0, 33,249,128, 0, 65,249,160, 0,225,248,168, 0, 1,249,
/* 0x0770 */ 152, 0, 33,249,144, 0, 97, 56,128, 0,129, 56,189,251,255, 75,
/* 0x0780 */ 80, 0, 63,233,120,243,195,127, 3, 0,128, 56, 64, 0,169, 56,
/* 0x0790 */ 32, 0,165,120,241,250,255, 75, 56, 0,191,160,120,243,195,127,
/* 0x07a0 */ 5, 0,128, 56,225,250,255, 75, 24, 0,191,128,120,243,195,127,
/* 0x07b0 */ 9, 0,128, 56,209,250,255, 75,160, 0,225,232,168, 0, 1,233,
/* 0x07c0 */ 120,243,198,127,112, 0,129, 56, 0, 0,160, 56,120,251,227,127,
/* 0x07d0 */ 241,252,255, 75, 9, 0,128, 56,120, 27,124,124,120,243,195,127,
/* 0x07e0 */ 32, 0,133,123, 0, 0,192, 59,157,250,255, 75, 56, 0, 63,161,
/* 0x07f0 */ 0,240,137,127,144, 0,157, 64, 0, 0, 61,129, 3, 0,137, 47,
/* 0x0800 */ 116, 0,158, 64, 16, 0,125,232, 0, 0,128, 56, 0, 0,160, 56,
/* 0x0810 */ 77,250,255, 75, 0, 0, 0, 96, 0, 0,131, 47,120, 27,123,124,
/* 0x0820 */ 16, 0,252, 64,127, 0, 96, 56, 37,250,255, 75, 0, 0, 0, 96,
/* 0x0830 */ 120,251,228,127, 0, 4,160, 56, 29,250,255, 75, 0, 0, 0, 96,
/* 0x0840 */ 0, 4,163, 47,224,255,222, 64,120,251,227,127, 0, 0,128, 56,
/* 0x0850 */ 120,219,101,127, 0, 0,192, 56, 0, 0,224, 56, 0, 0, 0, 57,
/* 0x0860 */ 97,252,255, 75,120, 27,124,124,120,219, 99,127,249,249,255, 75,
/* 0x0870 */ 0, 0, 0, 96, 1, 0,222, 59, 56, 0,189, 59,180, 7,222,127,
/* 0x0880 */ 108,255,255, 75,224, 0, 33, 56,120,227,131,127,124, 0, 0, 72,
/* 0x0890 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 5, 0, 0,136,255, 33,250,
/* 0x08a0 */ 144,255, 65,250,152,255, 97,250,160,255,129,250,168,255,161,250,
/* 0x08b0 */ 176,255,193,250,184,255,225,250,192,255, 1,251,200,255, 33,251,
/* 0x08c0 */ 208,255, 65,251,216,255, 97,251,224,255,129,251,232,255,161,251,
/* 0x08d0 */ 240,255,193,251,248,255,225,251, 16, 0, 1,248, 32, 0,128, 78,
/* 0x08e0 */ 136,255, 33,234,144,255, 65,234,152,255, 97,234,160,255,129,234,
/* 0x08f0 */ 168,255,161,234,176,255,193,234,184,255,225,234,192,255, 1,235,
/* 0x0900 */ 200,255, 33,235,208,255, 65,235,216,255, 97,235,224,255,129,235,
/* 0x0910 */ 16, 0, 1,232,232,255,161,235,166, 3, 8,124,240,255,193,235,
/* 0x0920 */ 248,255,225,235, 32, 0,128, 78,132, 2, 16, 0, 0, 0, 0, 0,
/* 0x0930 */ 40,137, 16, 0, 0, 0, 0, 0,200, 2, 16, 0, 0, 0, 0, 0,
/* 0x0940 */ 40,137, 16, 0, 0, 0, 0, 0, 56, 3, 16, 0, 0, 0, 0, 0,
/* 0x0950 */ 40,137, 16, 0, 0, 0, 0, 0,192, 4, 16, 0, 0, 0, 0, 0,
/* 0x0960 */ 40,137, 16, 0, 0, 0, 0, 0, 40, 7, 16, 0, 0, 0, 0, 0,
/* 0x0970 */ 40,137, 16
};

View File

@ -94,7 +94,25 @@ L90:
call munmap // unmap compressed program; /proc/self/exe disappears
mtlr r31 // entry address
// lmw r2,4+LINKAREA+OVERHEAD(sp) // restore registers r2 thru r31 32bits load
lis 15,0x1000
addi 15,15,0x8c0 // Check if statically allocated i.e.
cmpld 15,r31 // entry @ 0x10008c0
beq+ rest
/* Dynamic load settings */
addis r31,r31,5
addi r31,r31,27232 // @+0x57e00
addi 12,r31,-27828
std 12,-27984(r31) // required : Inconsistency detected by ld.so: rtld.c:
li 12,0
std 12,-28192(r31) // p 0x...d7e00-0x...d0fe0
// lmw r2,4+LINKAREA+OVERHEAD(sp) // restore registers r2 thru r31 32bits load
/* Restore Save Area */
rest:
ld 2,2*8-8+LINKAREA+OVERHEAD(sp)
ld 3,3*8-8+LINKAREA+OVERHEAD(sp)
ld 4,4*8-8+LINKAREA+OVERHEAD(sp)
@ -127,38 +145,7 @@ L90:
ld 31,31*8-8+LINKAREA+OVERHEAD(sp)
ld r1,LINKAREA+OVERHEAD(sp) // restore r1; deallocate space
/*
ld 2,2*8-8(r1)
ld 3,3*8-8(r1)
ld 4,4*8-8(r1)
ld 5,5*8-8(r1)
ld 6,6*8-8(r1)
ld 7,7*8-8(r1)
ld 8,8*8-8(r1)
ld 9,9*8-8(r1)
ld 10,10*8-8(r1)
ld 11,11*8-8(r1)
ld 12,12*8-8(r1)
ld 13,13*8-8(r1)
ld 14,14*8-8(r1)
ld 15,15*8-8(r1)
ld 16,16*8-8(r1)
ld 17,17*8-8(r1)
ld 18,18*8-8(r1)
ld 19,19*8-8(r1)
ld 20,20*8-8(r1)
ld 21,21*8-8(r1)
ld 22,22*8-8(r1)
ld 23,23*8-8(r1)
ld 24,24*8-8(r1)
ld 25,25*8-8(r1)
ld 26,26*8-8(r1)
ld 27,27*8-8(r1)
ld 28,28*8-8(r1)
ld 29,29*8-8(r1)
ld 30,30*8-8(r1)
ld 31,31*8-8(r1)
*/
mflr 12 // load ld.so.2 address
ret // enter /lib/ld.so.1
SYS_exit= 1