PowerPC64: stub uses new strategy

Needed: expert on TOC for big-endian.  glibc, musl, gcc disagree
on layout (is the .func first?) and usage for .e_entry.
	modified:   p_lx_elf.cpp
	modified:   stub/src/amd64-linux.elf-main.c
	modified:   stub/src/amd64-linux.elf-fold.S
	modified:   stub/src/arch/powerpc/64le/ppc_regs.h
	modified:   stub/src/i386-linux.elf-main.c
	modified:   stub/src/powerpc-linux.elf-entry.S
	modified:   stub/src/powerpc-linux.elf-fold.S
	modified:   stub/src/powerpc64le-darwin.dylib-entry.S
	modified:   stub/src/powerpc64le-darwin.macho-entry.S
	modified:   stub/src/powerpc64le-linux.elf-entry.S
	modified:   stub/src/powerpc64le-linux.elf-fold.S
	modified:   stub/Makefile
	also .h, .bin.dump, .map
This commit is contained in:
John Reiser
2017-10-07 13:43:12 -07:00
parent 7f905724b1
commit b37bc99330
28 changed files with 1542 additions and 1478 deletions
+79 -76
View File
@@ -1,5 +1,5 @@
/* amd64-linux.elf-fold.h
created from amd64-linux.elf-fold.bin, 2042 (0x7fa) bytes
created from amd64-linux.elf-fold.bin, 2081 (0x821) bytes
This file is part of the UPX executable compressor.
@@ -31,20 +31,20 @@
*/
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 2042
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0xc1fc053c
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0x0ce68681
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 2081
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0xb18f1299
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0x983884b3
unsigned char stub_amd64_linux_elf_fold[2042] = {
unsigned char stub_amd64_linux_elf_fold[2081] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 62, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0,
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 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 */ 250, 7, 0, 0, 0, 0, 0, 0,252, 7, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 33, 8, 0, 0, 0, 0, 0, 0, 36, 8, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 250, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 33, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 89, 0, 0,
@@ -65,7 +65,7 @@ unsigned char stub_amd64_linux_elf_fold[2042] = {
/* 0x01a0 */ 200, 49,248,131,224, 8, 72, 41,199, 73,137,254, 72,131,239, 8,
/* 0x01b0 */ 73,141,119,248, 72,193,233, 3,243, 72,165, 72,141,103, 8,252,
/* 0x01c0 */ 75,141, 12, 38, 65, 89, 94, 95, 88, 72,129,236, 0, 8, 0, 0,
/* 0x01d0 */ 80, 72,137,226, 73,137,232,232,219, 4, 0, 0, 72,129,196, 8,
/* 0x01d0 */ 72,137,226, 80, 73,137,232,232, 4, 5, 0, 0, 72,129,196, 8,
/* 0x01e0 */ 8, 0, 0, 72,137, 68, 36, 24, 91, 69, 41,201, 65,137,216,106,
/* 0x01f0 */ 2, 65, 90,106, 1, 90,190, 0, 16, 0, 0,106, 0, 95,106, 9,
/* 0x0200 */ 88, 15, 5,137,223,106, 3, 88, 15, 5, 95, 94,106, 11, 88, 65,
@@ -96,72 +96,75 @@ unsigned char stub_amd64_linux_elf_fold[2042] = {
/* 0x0390 */ 65, 92, 65, 93,195, 72,133,255, 73,137,208,116, 41, 72,139, 7,
/* 0x03a0 */ 137,241, 72, 57,200,116, 17, 72,255,200, 15,148,194, 49,192,133,
/* 0x03b0 */ 246, 15,149,192,133,194,116, 8, 72,137, 15, 76,137, 71, 8,195,
/* 0x03c0 */ 72,131,199, 16,235,215,195, 65, 87,184, 0, 0, 0, 0, 73,137,
/* 0x03d0 */ 255, 65, 86, 65, 85, 65, 84, 73,137,252, 85, 83, 72,131,236,104,
/* 0x03e0 */ 76, 3,103, 32,102,131,127, 16, 3,137, 84, 36, 60, 15,183, 87,
/* 0x03f0 */ 56, 72,137, 76, 36, 48,185, 16, 0, 0, 0, 72,137,116, 36, 64,
/* 0x0400 */ 76,137, 68, 36, 40, 76,137, 76, 36, 32, 15, 68,200, 76,137,230,
/* 0x0410 */ 72,131,205,255, 49,219,131,193, 34,255,202,120, 33,131, 62, 1,
/* 0x0420 */ 117, 22, 72,139, 70, 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70,
/* 0x0430 */ 40, 72, 57,195, 72, 15, 66,216, 72,131,198, 56,235,219, 72,129,
/* 0x0440 */ 229, 0,240,255,255, 49,210, 69, 49,201, 72, 41,235, 65,131,200,
/* 0x0450 */ 255, 72,137,239, 72,129,195,255, 15, 0, 0, 72,129,227, 0,240,
/* 0x0460 */ 255,255, 72,137,222,232,169,253,255,255, 72,141, 20, 24, 72, 41,
/* 0x0470 */ 232,102, 65,131,127, 56, 0, 72,137, 68, 36, 24,199, 68, 36, 20,
/* 0x0480 */ 0, 0, 0, 0, 72,137, 84, 36, 72, 15,132,240, 1, 0, 0, 72,
/* 0x0490 */ 131,124, 36, 64, 0,116, 37, 65,131, 60, 36, 6,117, 30, 72,139,
/* 0x04a0 */ 84, 36, 24, 73, 3, 84, 36, 16,190, 3, 0, 0, 0, 72,139,124,
/* 0x04b0 */ 36, 48,232,222,254,255,255,233,172, 1, 0, 0, 65,131, 60, 36,
/* 0x04c0 */ 1, 15,133,161, 1, 0, 0, 72,131,124, 36, 64, 0,116, 77, 73,
/* 0x04d0 */ 131,124, 36, 8, 0,117, 69, 72,139, 84, 36, 24, 73, 3, 84, 36,
/* 0x04e0 */ 16,190, 3, 0, 0, 0, 73, 3, 87, 32, 72,139,124, 36, 48,232,
/* 0x04f0 */ 161,254,255,255, 73, 15,183, 87, 56, 72,139,124, 36, 48,190, 5,
/* 0x0500 */ 0, 0, 0,232,141,254,255,255, 73, 15,183, 87, 54, 72,139,124,
/* 0x0510 */ 36, 48,190, 4, 0, 0, 0,232,121,254,255,255, 72,139, 68, 36,
/* 0x0520 */ 24, 73, 3, 68, 36, 16, 65,190, 64, 98, 81,115, 65,139, 76, 36,
/* 0x0530 */ 4, 65,131,200,255, 73,139, 84, 36, 32, 72,137,197, 72,137, 68,
/* 0x0540 */ 36, 88, 73,139, 68, 36, 40,131,225, 7, 72,137,235, 72,137, 84,
/* 0x0550 */ 36, 80,193,225, 2,129,227,255, 15, 0, 0, 72, 1,232, 65,211,
/* 0x0560 */ 238, 72, 41,221, 72,137, 68, 36, 8, 73,139, 68, 36, 8, 65,131,
/* 0x0570 */ 230, 7, 76,141, 44, 26,185, 50, 0, 0, 0, 72, 41,216, 72,131,
/* 0x0580 */ 124, 36, 64, 0,117, 7, 68,139, 68, 36, 60,177, 18, 68,137,242,
/* 0x0590 */ 73,137,193, 76,137,238,131,202, 2, 72,131,124, 36, 64, 0, 72,
/* 0x05a0 */ 137,239, 65, 15, 68,214,232,104,252,255,255, 72, 57,197,117,121,
/* 0x05b0 */ 72,131,124, 36, 64, 0,116, 25, 72,139, 76, 36, 32, 72,139, 84,
/* 0x05c0 */ 36, 40, 72,141,116, 36, 80, 72,139,124, 36, 64,232,179,252,255,
/* 0x05d0 */ 255, 76,137,235, 72,247,219,129,227,255, 15, 0, 0, 65,246,198,
/* 0x05e0 */ 2,116, 13, 74,141,124, 45, 0, 49,192, 72,137,217,252,243,170,
/* 0x05f0 */ 72,131,124, 36, 64, 0,116, 59, 73,131,124, 36, 8, 0,117, 23,
/* 0x0600 */ 72,139,124, 36, 48, 72,141, 85, 12,199, 69, 12, 15, 5,195,144,
/* 0x0610 */ 49,246,232,126,253,255,255, 68,137,242, 76,137,238, 72,137,239,
/* 0x0620 */ 232, 25,252,255,255,133,192,116, 10,191,127, 0, 0, 0,232,247,
/* 0x0630 */ 251,255,255, 73,141, 68, 29, 0, 72, 1,197, 72, 59,108, 36, 8,
/* 0x0640 */ 115, 38, 72, 41,108, 36, 8, 69, 49,201, 65,131,200,255, 72,139,
/* 0x0650 */ 116, 36, 8,185, 50, 0, 0, 0, 68,137,242, 72,137,239,232,176,
/* 0x0660 */ 251,255,255, 72, 57,197,117,193,255, 68, 36, 20, 65, 15,183, 71,
/* 0x0670 */ 56, 73,131,196, 56, 57, 68, 36, 20, 15,140, 16,254,255,255, 72,
/* 0x0680 */ 131,188, 36,160, 0, 0, 0, 0,116, 16, 72,139, 68, 36, 24, 72,
/* 0x0690 */ 139,148, 36,160, 0, 0, 0, 72,137, 2, 73,139, 87, 24, 72, 1,
/* 0x06a0 */ 84, 36, 24, 72,139, 68, 36, 24, 72,131,196,104, 91, 93, 65, 92,
/* 0x06b0 */ 65, 93, 65, 94, 65, 95,195, 65, 87, 65, 86, 73,137,206, 49,201,
/* 0x06c0 */ 65, 85, 65, 84, 77,137,204, 85, 72,137,213, 76,141,109, 64, 83,
/* 0x06d0 */ 76,137,195, 72,131,236, 72,139, 7, 72,137,124, 36, 24, 72,137,
/* 0x06e0 */ 116, 36, 16, 72,137,124, 36, 40, 72,137,116, 36, 32, 72,141,124,
/* 0x06f0 */ 36, 16, 72,141,116, 36, 48, 72,137, 84, 36, 56, 76,137,194, 72,
/* 0x0700 */ 137, 68, 36, 48,232,123,251,255,255, 72,141,132, 36,128, 0, 0,
/* 0x0710 */ 0, 72,137, 68, 36, 8, 65, 83, 77,137,225, 49,210, 73,137,216,
/* 0x0720 */ 72,141,116, 36, 40, 80, 76,137,241, 72,137,239, 69, 49,255,232,
/* 0x0730 */ 147,252,255,255,190, 9, 0, 0, 0, 72,137,194, 76,137,247, 73,
/* 0x0740 */ 137,196,232, 78,252,255,255,102,131,125, 56, 0, 65, 89, 65, 90,
/* 0x0750 */ 15,132,146, 0, 0, 0, 65,131,125, 0, 3,117,119, 72,139, 68,
/* 0x0760 */ 36, 8, 49,210, 49,246, 72,139, 56, 73, 3,125, 16,232,196,250,
/* 0x0770 */ 255,255,133,192,137,195,120, 23,186, 0, 4, 0, 0, 72,137,238,
/* 0x0780 */ 137,199,232,191,250,255,255, 72, 61, 0, 4, 0, 0,116, 10,191,
/* 0x0790 */ 127, 0, 0, 0,232,145,250,255,255, 65, 80,255,116, 36, 16, 69,
/* 0x07a0 */ 49,201, 69, 49,192, 49,201,137,218, 49,246, 72,137,239,232, 20,
/* 0x07b0 */ 252,255,255, 73,137,196, 72,139, 68, 36, 24,190, 7, 0, 0, 0,
/* 0x07c0 */ 76,137,247, 72,139, 16,232,202,251,255,255,137,223,232, 96,250,
/* 0x07d0 */ 255,255, 94, 95, 15,183, 69, 56, 65,255,199, 73,131,197, 56, 65,
/* 0x07e0 */ 57,199, 15,130,110,255,255,255, 72,131,196, 72, 76,137,224, 91,
/* 0x07f0 */ 93, 65, 92, 65, 93, 65, 94, 65, 95,195
/* 0x03c0 */ 72,131,199, 16,235,215,195, 65, 87,184, 0, 0, 0, 0, 65, 86,
/* 0x03d0 */ 65, 85, 65, 84, 73,137,252, 85, 83, 72,131,236,104, 76, 3,103,
/* 0x03e0 */ 32,102,131,127, 16, 3, 72,137, 76, 36, 40,185, 16, 0, 0, 0,
/* 0x03f0 */ 76,137, 68, 36, 32, 72,137,124, 36, 64, 72,137,116, 36, 56,137,
/* 0x0400 */ 84, 36, 52, 76,137, 76, 36, 24, 15, 68,200, 72,139,132, 36,160,
/* 0x0410 */ 0, 0, 0, 15,183, 87, 56, 76,137,230, 72,131,205,255, 49,219,
/* 0x0420 */ 49,255,131,193, 34, 76,139, 0,255,202,120, 33,131, 62, 1,117,
/* 0x0430 */ 22, 72,139, 70, 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70, 40,
/* 0x0440 */ 72, 57,195, 72, 15, 66,216, 72,131,198, 56,235,219, 72,129,229,
/* 0x0450 */ 0,240,255,255, 72, 41,235, 72,129,195,255, 15, 0, 0, 72,129,
/* 0x0460 */ 227, 0,240,255,255,246,193, 16,116, 5, 72,137,239,235, 19, 72,
/* 0x0470 */ 133,237,117, 14,137,200, 76,137,199,131,200, 16, 77,133,192, 15,
/* 0x0480 */ 69,200, 49,210, 69, 49,201, 65,131,200,255, 72,137,222,232,128,
/* 0x0490 */ 253,255,255, 72,139, 84, 36, 64, 72,137,199, 72,141, 4, 3, 73,
/* 0x04a0 */ 137,255,199, 68, 36, 20, 0, 0, 0, 0, 73, 41,239, 72,137, 68,
/* 0x04b0 */ 36, 72,102,131,122, 56, 0, 15,132,253, 1, 0, 0, 72,131,124,
/* 0x04c0 */ 36, 56, 0,116, 35, 65,131, 60, 36, 6,117, 28, 73,139, 84, 36,
/* 0x04d0 */ 16, 72,139,124, 36, 40,190, 3, 0, 0, 0, 76, 1,250,232,178,
/* 0x04e0 */ 254,255,255,233,183, 1, 0, 0, 65,131, 60, 36, 1, 15,133,172,
/* 0x04f0 */ 1, 0, 0, 72,131,124, 36, 56, 0,116, 90, 73,131,124, 36, 8,
/* 0x0500 */ 0,117, 82, 72,139, 68, 36, 64, 73,139, 84, 36, 16,190, 3, 0,
/* 0x0510 */ 0, 0, 72,139,124, 36, 40, 76, 1,250, 72, 3, 80, 32,232,114,
/* 0x0520 */ 254,255,255, 72,139, 68, 36, 64, 72,139,124, 36, 40,190, 5, 0,
/* 0x0530 */ 0, 0, 72, 15,183, 80, 56,232, 89,254,255,255, 72,139, 68, 36,
/* 0x0540 */ 64, 72,139,124, 36, 40,190, 4, 0, 0, 0, 72, 15,183, 80, 54,
/* 0x0550 */ 232, 64,254,255,255, 73,139, 68, 36, 16, 65,139, 76, 36, 4, 65,
/* 0x0560 */ 190, 64, 98, 81,115, 65,131,200,255, 73,139, 84, 36, 32, 76, 1,
/* 0x0570 */ 248,131,225, 7, 72,137,197, 72,137, 68, 36, 88, 73,139, 68, 36,
/* 0x0580 */ 40,193,225, 2, 72,137,235, 72,137, 84, 36, 80,129,227,255, 15,
/* 0x0590 */ 0, 0, 65,211,238,185, 50, 0, 0, 0, 72, 1,232, 65,131,230,
/* 0x05a0 */ 7, 72, 41,221, 72,137, 68, 36, 8, 73,139, 68, 36, 8, 76,141,
/* 0x05b0 */ 44, 26, 72, 41,216, 72,131,124, 36, 56, 0,117, 7, 68,139, 68,
/* 0x05c0 */ 36, 52,177, 18, 68,137,242, 73,137,193, 76,137,238,131,202, 2,
/* 0x05d0 */ 72,131,124, 36, 56, 0, 72,137,239, 65, 15, 68,214,232, 49,252,
/* 0x05e0 */ 255,255, 72, 57,197,117,121, 72,131,124, 36, 56, 0,116, 25, 72,
/* 0x05f0 */ 139, 76, 36, 24, 72,139, 84, 36, 32, 72,141,116, 36, 80, 72,139,
/* 0x0600 */ 124, 36, 56,232,124,252,255,255, 76,137,235, 72,247,219,129,227,
/* 0x0610 */ 255, 15, 0, 0, 65,246,198, 2,116, 13, 74,141,124, 45, 0, 49,
/* 0x0620 */ 192, 72,137,217,252,243,170, 72,131,124, 36, 56, 0,116, 59, 73,
/* 0x0630 */ 131,124, 36, 8, 0,117, 23, 72,139,124, 36, 40, 72,141, 85, 12,
/* 0x0640 */ 199, 69, 12, 15, 5,195,144, 49,246,232, 71,253,255,255, 68,137,
/* 0x0650 */ 242, 76,137,238, 72,137,239,232,226,251,255,255,133,192,116, 10,
/* 0x0660 */ 191,127, 0, 0, 0,232,192,251,255,255, 73,141, 68, 29, 0, 72,
/* 0x0670 */ 1,197, 72, 59,108, 36, 8,115, 38, 72, 41,108, 36, 8, 69, 49,
/* 0x0680 */ 201, 65,131,200,255, 72,139,116, 36, 8,185, 50, 0, 0, 0, 68,
/* 0x0690 */ 137,242, 72,137,239,232,121,251,255,255, 72, 57,197,117,193, 72,
/* 0x06a0 */ 139, 84, 36, 64,255, 68, 36, 20, 73,131,196, 56, 15,183, 66, 56,
/* 0x06b0 */ 57, 68, 36, 20, 15,140, 3,254,255,255, 72,139,132, 36,160, 0,
/* 0x06c0 */ 0, 0, 72,139, 84, 36, 64, 76,137, 56, 76, 3,122, 24, 72,131,
/* 0x06d0 */ 196,104, 91, 93, 65, 92, 65, 93, 65, 94, 76,137,248, 65, 95,195,
/* 0x06e0 */ 65, 87, 65, 86, 73,137,206, 49,201, 65, 85, 65, 84, 77,137,204,
/* 0x06f0 */ 85, 72,137,213, 76,141,109, 64, 83, 76,137,195, 72,131,236, 72,
/* 0x0700 */ 139, 7, 72,137,124, 36, 24, 72,137,116, 36, 16, 76,141,188, 36,
/* 0x0710 */ 128, 0, 0, 0, 72,137,124, 36, 40, 72,137,116, 36, 32, 72,141,
/* 0x0720 */ 124, 36, 16, 72,141,116, 36, 48, 72,137, 84, 36, 56, 76,137,194,
/* 0x0730 */ 72,137, 68, 36, 48,232, 74,251,255,255, 65, 83, 77,137,225, 49,
/* 0x0740 */ 210, 73,137,216, 76,137,241, 72,137,239, 72,141,116, 36, 40, 65,
/* 0x0750 */ 87,232,113,252,255,255,190, 9, 0, 0, 0, 72,137,194, 76,137,
/* 0x0760 */ 247, 73,137,196,232, 44,252,255,255, 65, 89, 65, 90,102,131,125,
/* 0x0770 */ 56, 0,199, 68, 36, 12, 0, 0, 0, 0, 15,132,143, 0, 0, 0,
/* 0x0780 */ 65,131,125, 0, 3,117,114, 73,139, 63, 73, 3,125, 16, 49,210,
/* 0x0790 */ 49,246,232,159,250,255,255,133,192,137,195,120, 23,186, 0, 4,
/* 0x07a0 */ 0, 0, 72,137,238,137,199,232,154,250,255,255, 72, 61, 0, 4,
/* 0x07b0 */ 0, 0,116, 10,191,127, 0, 0, 0,232,108,250,255,255, 73,199,
/* 0x07c0 */ 7, 0, 0, 0, 0, 65, 80, 69, 49,201, 69, 49,192, 49,201, 65,
/* 0x07d0 */ 87,137,218, 49,246, 72,137,239,232,234,251,255,255, 73,139, 23,
/* 0x07e0 */ 190, 7, 0, 0, 0, 76,137,247, 73,137,196,232,165,251,255,255,
/* 0x07f0 */ 137,223,232, 59,250,255,255, 94, 95,255, 68, 36, 12, 15,183, 69,
/* 0x0800 */ 56, 73,131,197, 56, 57, 68, 36, 12, 15,130,113,255,255,255, 72,
/* 0x0810 */ 131,196, 72, 76,137,224, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,
/* 0x0820 */ 195
};