From a440564ba4a68b65cd7a5e81a98613365a7c88bd Mon Sep 17 00:00:00 2001 From: John Reiser Date: Fri, 21 Apr 2017 08:58:13 -0700 Subject: [PATCH] Fix powerpc64le ABI stack frame omitting spill area for a0-a7 Also use new symbol SZ_FRAME in */ppc_regs.h modified: stub/src/arch/powerpc/32/ppc_regs.h modified: stub/src/arch/powerpc/64le/ppc_regs.h modified: stub/src/powerpc-darwin.dylib-entry.S modified: stub/src/powerpc-darwin.macho-entry.S modified: stub/src/powerpc-darwin.macho-fold.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-darwin.macho-fold.S modified: stub/src/powerpc64le-linux.elf-entry.S modified: stub/src/powerpc64le-linux.elf-fold.S modified: stub/powerpc-darwin.dylib-entry.h modified: stub/powerpc-darwin.macho-entry.h modified: stub/powerpc-darwin.macho-fold.h modified: stub/powerpc-linux.elf-fold.h modified: stub/powerpc64le-darwin.dylib-entry.h modified: stub/powerpc64le-darwin.macho-entry.h modified: stub/powerpc64le-darwin.macho-fold.h modified: stub/powerpc64le-linux.elf-entry.h modified: stub/powerpc64le-linux.elf-fold.h modified: stub/tmp/powerpc64le-darwin.macho-fold.map --- src/stub/powerpc-darwin.dylib-entry.h | 6 +- src/stub/powerpc-darwin.macho-entry.h | 6 +- src/stub/powerpc-darwin.macho-fold.h | 6 +- src/stub/powerpc-linux.elf-fold.h | 6 +- src/stub/powerpc64le-darwin.dylib-entry.h | 8 +- src/stub/powerpc64le-darwin.macho-entry.h | 6 +- src/stub/powerpc64le-darwin.macho-fold.h | 314 +++++++++--------- src/stub/powerpc64le-linux.elf-entry.h | 6 +- src/stub/powerpc64le-linux.elf-fold.h | 26 +- src/stub/src/arch/powerpc/32/ppc_regs.h | 1 + src/stub/src/arch/powerpc/64le/ppc_regs.h | 1 + src/stub/src/powerpc-darwin.dylib-entry.S | 6 +- src/stub/src/powerpc-darwin.macho-entry.S | 2 +- src/stub/src/powerpc-darwin.macho-fold.S | 4 +- src/stub/src/powerpc-linux.elf-fold.S | 7 +- src/stub/src/powerpc64le-darwin.dylib-entry.S | 6 +- src/stub/src/powerpc64le-darwin.macho-entry.S | 2 +- src/stub/src/powerpc64le-darwin.macho-fold.S | 7 +- src/stub/src/powerpc64le-linux.elf-entry.S | 4 +- src/stub/src/powerpc64le-linux.elf-fold.S | 69 ++-- .../tmp/powerpc64le-darwin.macho-fold.map | 136 ++++---- 21 files changed, 313 insertions(+), 316 deletions(-) diff --git a/src/stub/powerpc-darwin.dylib-entry.h b/src/stub/powerpc-darwin.dylib-entry.h index d5d0c4f1..ac92674e 100644 --- a/src/stub/powerpc-darwin.dylib-entry.h +++ b/src/stub/powerpc-darwin.dylib-entry.h @@ -32,8 +32,8 @@ #define STUB_POWERPC_DARWIN_DYLIB_ENTRY_SIZE 8993 -#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_ADLER32 0x8a436210 -#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_CRC32 0x3d13cd40 +#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_ADLER32 0x427b626c +#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_CRC32 0x27e8745c unsigned char stub_powerpc_darwin_dylib_entry[8993] = { /* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -432,7 +432,7 @@ unsigned char stub_powerpc_darwin_dylib_entry[8993] = { /* 0x1890 */ 127,123, 26, 20,124,119, 27,120, 56,122, 0, 4, 72, 0, 0,169, /* 0x18a0 */ 127, 90, 26, 20,124,118, 27,120, 59, 90, 0, 12,150,225,255,248, /* 0x18b0 */ 127,232, 3,166, 56,120, 0, 12,126,196,179,120,127, 37,203,120, -/* 0x18c0 */ 124, 38, 11,120,136,248, 0, 8, 56, 33,255,232, 78,128, 0, 33, +/* 0x18c0 */ 124, 38, 11,120,136,248, 0, 8,148, 33,255,232, 78,128, 0, 33, /* 0x18d0 */ 56, 33, 0, 32,136,216, 0, 9, 40, 6, 0, 0, 65,130,255,160, /* 0x18e0 */ 136,184, 0, 10,128,152, 0, 0,127, 35,203,120, 72, 0, 0,125, /* 0x18f0 */ 75,255,255,140, 72, 0, 0, 29, 68, 0, 0, 2, 56, 96,255,255, diff --git a/src/stub/powerpc-darwin.macho-entry.h b/src/stub/powerpc-darwin.macho-entry.h index 60389966..39534583 100644 --- a/src/stub/powerpc-darwin.macho-entry.h +++ b/src/stub/powerpc-darwin.macho-entry.h @@ -32,8 +32,8 @@ #define STUB_POWERPC_DARWIN_MACHO_ENTRY_SIZE 8920 -#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0x396b180d -#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0x553738e1 +#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0xf6f81869 +#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0xc92bb9f1 unsigned char stub_powerpc_darwin_macho_entry[8920] = { /* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -427,7 +427,7 @@ unsigned char stub_powerpc_darwin_macho_entry[8920] = { /* 0x1840 */ 136,226, 0, 12,124,164, 18, 20, 56,165, 0, 16,124,102, 18, 20, /* 0x1850 */ 56, 99, 0,192,140, 5,255,255,156, 3,255,255, 66, 0,255,248, /* 0x1860 */ 127,233, 3,166, 56,162, 0,128,144,193,255,252, 56,193,255,252, -/* 0x1870 */ 56, 33,255,232, 78,128, 4, 32,127,232, 2,166, 75,255,255,181, +/* 0x1870 */ 148, 33,255,232, 78,128, 4, 32,127,232, 2,166, 75,255,255,181, /* 0x1880 */ 72, 0, 0,128,102,105,108,101, 32,102,111,114,109, 97,116, 32, /* 0x1890 */ 101,108,102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83, /* 0x18a0 */ 101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109, diff --git a/src/stub/powerpc-darwin.macho-fold.h b/src/stub/powerpc-darwin.macho-fold.h index 1242b43e..0fe1f742 100644 --- a/src/stub/powerpc-darwin.macho-fold.h +++ b/src/stub/powerpc-darwin.macho-fold.h @@ -32,8 +32,8 @@ #define STUB_POWERPC_DARWIN_MACHO_FOLD_SIZE 2564 -#define STUB_POWERPC_DARWIN_MACHO_FOLD_ADLER32 0x4c75bfa4 -#define STUB_POWERPC_DARWIN_MACHO_FOLD_CRC32 0xf7d60c1b +#define STUB_POWERPC_DARWIN_MACHO_FOLD_ADLER32 0xac92c000 +#define STUB_POWERPC_DARWIN_MACHO_FOLD_CRC32 0x82d24b33 unsigned char stub_powerpc_darwin_macho_fold[2564] = { /* 0x0000 */ 72, 0, 0,105, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, @@ -46,7 +46,7 @@ unsigned char stub_powerpc_darwin_macho_fold[2564] = { /* 0x0070 */ 149, 33,255,252,124, 41, 11,120,125, 8, 2,166,128,159,255,248, /* 0x0080 */ 124,100,248, 80,128,195, 0, 24, 40, 6, 8, 0, 65,129, 0, 8, /* 0x0090 */ 56,192, 8, 0,124, 61, 11,120,124, 38, 8, 80,124, 37, 11,120, -/* 0x00a0 */ 56, 33,255,232,127,231,251,120, 72, 0, 6,253,127,161,235,120, +/* 0x00a0 */ 148, 33,255,232,127,231,251,120, 72, 0, 6,253,127,161,235,120, /* 0x00b0 */ 128, 67, 0, 0,124, 73, 3,166,128, 67, 0,136,124, 79,241, 32, /* 0x00c0 */ 128, 67, 0,140,124, 65, 3,166,128, 67, 0,144,124, 72, 3,166, /* 0x00d0 */ 184,131, 0, 24,128, 3, 0, 8,128, 67, 0, 16,128, 99, 0, 20, diff --git a/src/stub/powerpc-linux.elf-fold.h b/src/stub/powerpc-linux.elf-fold.h index a9e22950..94b59d90 100644 --- a/src/stub/powerpc-linux.elf-fold.h +++ b/src/stub/powerpc-linux.elf-fold.h @@ -32,8 +32,8 @@ #define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 3312 -#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0xc36b66f0 -#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0xcda01db9 +#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x0276674c +#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0xa25eb95b unsigned char stub_powerpc_linux_elf_fold[3312] = { /* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -54,7 +54,7 @@ unsigned char stub_powerpc_linux_elf_fold[3312] = { /* 0x00f0 */ 128,159,255,248, 85, 30, 0, 38,127,231,251,120,127,164,248, 80, /* 0x0100 */ 56,161,248, 0, 59,189,255,248,160,221, 0, 44, 28,198, 0, 32, /* 0x0110 */ 56,198, 0, 52,124,134, 32, 80,124,125, 50, 20,127,106,219,120, -/* 0x0120 */ 56, 33,247,232,128,195, 0, 24, 72, 0, 9,149,124,127, 27,120, +/* 0x0120 */ 148, 33,247,232,128,195, 0, 24, 72, 0, 9,149,124,127, 27,120, /* 0x0130 */ 127,163,235,120,124,157,240, 80, 72, 0, 0, 81,127,232, 3,166, /* 0x0140 */ 184, 65, 8, 28,128, 33, 8, 24, 78,128, 0, 32, 56, 0, 0, 90, /* 0x0150 */ 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, diff --git a/src/stub/powerpc64le-darwin.dylib-entry.h b/src/stub/powerpc64le-darwin.dylib-entry.h index 07f86386..5bfa46c0 100644 --- a/src/stub/powerpc64le-darwin.dylib-entry.h +++ b/src/stub/powerpc64le-darwin.dylib-entry.h @@ -32,8 +32,8 @@ #define STUB_POWERPC64LE_DARWIN_DYLIB_ENTRY_SIZE 11083 -#define STUB_POWERPC64LE_DARWIN_DYLIB_ENTRY_ADLER32 0x56a6c156 -#define STUB_POWERPC64LE_DARWIN_DYLIB_ENTRY_CRC32 0x013c1200 +#define STUB_POWERPC64LE_DARWIN_DYLIB_ENTRY_ADLER32 0x132bc217 +#define STUB_POWERPC64LE_DARWIN_DYLIB_ENTRY_CRC32 0xac3bff82 unsigned char stub_powerpc64le_darwin_dylib_entry[11083] = { /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -521,8 +521,8 @@ unsigned char stub_powerpc64le_darwin_dylib_entry[11083] = { /* 0x1e20 */ 104, 0,130, 65, 20, 26,123,127,120, 27,119,124, 4, 0,122, 56, /* 0x1e30 */ 29, 1, 0, 72, 20, 26, 90,127,120, 27,118,124, 12, 0, 90, 59, /* 0x1e40 */ 249,255,225,250,166, 3,232,127, 12, 0,120, 56,120,179,196,126, -/* 0x1e50 */ 120,203, 37,127,120, 11, 38,124, 8, 0,248,136,208,255, 33, 56, -/* 0x1e60 */ 33, 0,128, 78, 56, 0, 33, 56, 9, 0,216,136, 0, 0, 6, 40, +/* 0x1e50 */ 120,203, 37,127,120, 11, 38,124, 8, 0,248,136,145,255, 33,248, +/* 0x1e60 */ 33, 0,128, 78,120, 0, 33, 56, 9, 0,216,136, 0, 0, 6, 40, /* 0x1e70 */ 160,255,130, 65, 10, 0,184,136, 0, 0,152,232,120,203, 35,127, /* 0x1e80 */ 241, 0, 0, 72,140,255,255, 75,145, 0, 0, 72, 2, 0, 0, 68, /* 0x1e90 */ 255,255, 96, 56, 0, 0, 65,232, 8, 0, 97,232, 16, 0,129,232, diff --git a/src/stub/powerpc64le-darwin.macho-entry.h b/src/stub/powerpc64le-darwin.macho-entry.h index 8baaf51f..687360f7 100644 --- a/src/stub/powerpc64le-darwin.macho-entry.h +++ b/src/stub/powerpc64le-darwin.macho-entry.h @@ -32,8 +32,8 @@ #define STUB_POWERPC64LE_DARWIN_MACHO_ENTRY_SIZE 10419 -#define STUB_POWERPC64LE_DARWIN_MACHO_ENTRY_ADLER32 0x7d02b0f9 -#define STUB_POWERPC64LE_DARWIN_MACHO_ENTRY_CRC32 0x99f59cfa +#define STUB_POWERPC64LE_DARWIN_MACHO_ENTRY_ADLER32 0x4a23b17a +#define STUB_POWERPC64LE_DARWIN_MACHO_ENTRY_CRC32 0x6b1877da unsigned char stub_powerpc64le_darwin_macho_entry[10419] = { /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -502,7 +502,7 @@ unsigned char stub_powerpc64le_darwin_macho_entry[10419] = { /* 0x1cf0 */ 8, 0,130,128,166, 3,137,124, 4, 0,194,128, 12, 0,226,136, /* 0x1d00 */ 20, 18,164,124, 16, 0,165, 56, 20, 18,102,124,192, 0, 99, 56, /* 0x1d10 */ 255,255, 5,140,255,255, 3,156,248,255, 32, 67,166, 3,233,127, -/* 0x1d20 */ 128, 0,162, 56,248,255,193,248,248,255,193, 56,208,255, 33, 56, +/* 0x1d20 */ 128, 0,162, 56,248,255,193,248,248,255,193, 56,145,255, 33,248, /* 0x1d30 */ 32, 4,128, 78,166, 2,232,127,181,255,255, 75,128, 0, 0, 72, /* 0x1d40 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 54, /* 0x1d50 */ 52, 45,112,111,119,101,114,112, 99,108,101, 10, 10, 83,101, 99, diff --git a/src/stub/powerpc64le-darwin.macho-fold.h b/src/stub/powerpc64le-darwin.macho-fold.h index 898a2575..ba344288 100644 --- a/src/stub/powerpc64le-darwin.macho-fold.h +++ b/src/stub/powerpc64le-darwin.macho-fold.h @@ -1,5 +1,5 @@ /* powerpc64le-darwin.macho-fold.h - created from powerpc64le-darwin.macho-fold.bin, 6504 (0x1968) bytes + created from powerpc64le-darwin.macho-fold.bin, 6512 (0x1970) bytes This file is part of the UPX executable compressor. @@ -31,158 +31,158 @@ */ -#define STUB_POWERPC64LE_DARWIN_MACHO_FOLD_SIZE 6504 -#define STUB_POWERPC64LE_DARWIN_MACHO_FOLD_ADLER32 0x5a4ec4ac -#define STUB_POWERPC64LE_DARWIN_MACHO_FOLD_CRC32 0x2bc0f08d +#define STUB_POWERPC64LE_DARWIN_MACHO_FOLD_SIZE 6512 +#define STUB_POWERPC64LE_DARWIN_MACHO_FOLD_ADLER32 0xf7b3c681 +#define STUB_POWERPC64LE_DARWIN_MACHO_FOLD_CRC32 0xeef454bf -unsigned char stub_powerpc64le_darwin_macho_fold[6504] = { -/* 0x0000 */ 105, 0, 0, 72,208, 0, 6, 40, 32, 0,194, 76,191,240,132, 84, -/* 0x0010 */ 32, 0,194, 77, 16, 0, 0, 60, 64, 0, 4,124, 8, 0,128, 65, -/* 0x0020 */ 120, 3, 4,124, 32, 1,165, 56,120, 27,103,124,252,255, 99, 56, -/* 0x0030 */ 166, 3,137,124, 28, 0, 0, 72,186, 2, 75, 84, 80, 88, 99,125, -/* 0x0040 */ 20, 58,107,125,186, 1, 98, 81, 0, 0, 67,144, 32, 0, 64, 79, -/* 0x0050 */ 4, 0, 67,132,190, 85, 75, 84, 64, 40, 11,124,220,255,194, 65, -/* 0x0060 */ 240,255, 32, 67, 32, 0,128, 78, 24, 0, 33, 56, 0, 0, 32, 57, -/* 0x0070 */ 252,255, 33,149,120, 11, 41,124,166, 2, 8,125,248,255,159,128, -/* 0x0080 */ 80,248,100,124, 24, 0,195,128, 0, 8, 6, 40, 8, 0,129, 65, -/* 0x0090 */ 0, 8,192, 56,120, 11, 61,124, 80, 8, 38,124,120, 11, 37,124, -/* 0x00a0 */ 232,255, 33, 56,120,251,231,127,105, 6, 0, 72,120,235,161,127, -/* 0x00b0 */ 0, 0, 67,128,166, 3, 73,124,136, 0, 67,128, 32,241, 79,124, -/* 0x00c0 */ 140, 0, 67,128,166, 3, 65,124,144, 0, 67,128,166, 3, 72,124, -/* 0x00d0 */ 24, 0,131,184, 8, 0, 3,128, 16, 0, 67,128, 20, 0, 99,128, -/* 0x00e0 */ 32, 4,128, 78,120, 51,199,124, 0, 0,192, 56,153, 0, 0, 56, -/* 0x00f0 */ 16, 0, 0, 72,120, 67, 9,125, 0, 0, 0, 57,197, 0, 0, 56, -/* 0x0100 */ 2, 0, 0, 68,255,255, 96, 56, 32, 0,128, 78, 1, 0, 0, 56, -/* 0x0110 */ 240,255,255, 75, 3, 0, 0, 56,232,255,255, 75, 5, 0, 0, 56, -/* 0x0120 */ 224,255,255, 75, 6, 0, 0, 56,216,255,255, 75, 74, 0, 0, 56, -/* 0x0130 */ 208,255,255, 75,112,255,193,249,120,255,225,249,128,255, 1,250, -/* 0x0140 */ 136,255, 33,250,144,255, 65,250,152,255, 97,250,160,255,129,250, -/* 0x0150 */ 168,255,161,250,176,255,193,250,184,255,225,250,192,255, 1,251, -/* 0x0160 */ 200,255, 33,251,208,255, 65,251,216,255, 97,251,224,255,129,251, -/* 0x0170 */ 232,255,161,251,240,255,193,251,248,255,225,251, 16, 0, 1,248, -/* 0x0180 */ 32, 0,128, 78,112,255,193,233,120,255,225,233,128,255, 1,234, -/* 0x0190 */ 136,255, 33,234,144,255, 65,234,152,255, 97,234,160,255,129,234, -/* 0x01a0 */ 168,255,161,234,176,255,193,234,184,255,225,234,192,255, 1,235, -/* 0x01b0 */ 200,255, 33,235,208,255, 65,235,216,255, 97,235,224,255,129,235, -/* 0x01c0 */ 16, 0, 1,232,232,255,161,235,166, 3, 8,124,240,255,193,235, -/* 0x01d0 */ 248,255,225,235, 32, 0,128, 78, 8, 0, 3,233, 0, 0, 67,233, -/* 0x01e0 */ 64, 40,170,127, 40, 0,220, 65,255,255, 37, 57,255,255, 72, 57, -/* 0x01f0 */ 255,255,132, 56, 20, 74, 40,125, 80, 72, 42,125,166, 3, 41,125, -/* 0x0200 */ 0, 0,165, 47, 32, 0,158, 64, 40, 0, 0, 72,166, 2, 8,124, -/* 0x0210 */ 16, 0, 1,248,145,255, 33,248,127, 0, 96, 56,241,254,255, 75, -/* 0x0220 */ 0, 0, 0, 96, 1, 0, 42,141, 1, 0, 36,157,248,255, 0, 66, -/* 0x0230 */ 8, 0, 35,233, 20, 42, 41,125, 8, 0, 35,249, 0, 0, 35,233, -/* 0x0240 */ 80, 72,165,124, 0, 0,163,248, 32, 0,128, 78, 0, 0, 0, 0, -/* 0x0250 */ 0, 0, 0, 1,128, 0, 0, 0,166, 2, 8,124, 16, 0, 1,248, -/* 0x0260 */ 38, 0,128,125,224,255,129,251,232,255,161,251,240,255,193,251, -/* 0x0270 */ 248,255,225,251, 8, 0,129,145, 97,255, 33,248, 0, 0, 36,233, -/* 0x0280 */ 0, 0,169, 47, 92, 1,158, 65,120, 51,220,124,120, 43,189,124, -/* 0x0290 */ 120, 35,159,124,120, 27,126,124, 0, 0, 38, 46,120,243,195,127, -/* 0x02a0 */ 112, 0,129, 56, 12, 0,160, 56, 49,255,255, 75,112, 0, 33,129, -/* 0x02b0 */ 0, 0,169, 47, 40, 0,158, 64,116, 0, 33,129, 88, 33, 64, 61, -/* 0x02c0 */ 85, 80, 74, 97, 0, 80,137,127, 32, 0,222, 64, 0, 0, 62,233, -/* 0x02d0 */ 0, 0,169, 47, 12, 1,254, 65, 16, 0, 0, 72,116, 0,161,128, -/* 0x02e0 */ 0, 0,165, 47, 16, 0,254, 64,127, 0, 96, 56, 33,254,255, 75, -/* 0x02f0 */ 0, 0, 0, 96, 64, 40,137,127,240,255,220, 65, 0, 0, 95,233, -/* 0x0300 */ 64, 80,169,127,228,255,221, 65, 64, 40,137,127,164, 0,157, 64, -/* 0x0310 */ 124, 0, 33,145, 8, 0,126,232,120, 43,164,124, 8, 0,191,232, -/* 0x0320 */ 124, 0,193, 56,120, 0,225,136, 40, 0, 65,248, 0, 0, 61,233, -/* 0x0330 */ 16, 0,125,233,166, 3, 41,125, 8, 0, 93,232, 33, 4,128, 78, -/* 0x0340 */ 40, 0, 65,232, 0, 0,163, 47,160,255,222, 64,112, 0,129,128, -/* 0x0350 */ 124, 0, 33,129, 0, 32,137,127,144,255,222, 64,121, 0,193,136, -/* 0x0360 */ 0, 0,166, 47, 44, 0,158, 65, 40, 0,146, 65, 8, 0,127,232, -/* 0x0370 */ 122, 0,161,136, 40, 0, 65,248, 0, 0, 60,233, 16, 0,124,233, -/* 0x0380 */ 166, 3, 41,125, 8, 0, 92,232, 33, 4,128, 78, 40, 0, 65,232, -/* 0x0390 */ 116, 0, 1,129, 8, 0, 94,233, 20, 66, 74,125, 8, 0, 94,249, -/* 0x03a0 */ 0, 0, 62,233, 80, 72, 40,125, 0, 0, 62,249, 16, 0, 0, 72, -/* 0x03b0 */ 120,243,195,127, 8, 0,159,232, 33,254,255, 75,112, 0, 1,129, -/* 0x03c0 */ 8, 0, 95,233, 20, 66, 74,125, 8, 0, 95,249, 0, 0, 63,233, -/* 0x03d0 */ 80, 72, 40,125, 0, 0, 63,249, 0, 0,169, 47,192,254,158, 64, -/* 0x03e0 */ 160, 0, 33, 56, 16, 0, 1,232, 8, 0,129,129,166, 3, 8,124, -/* 0x03f0 */ 224,255,129,235,232,255,161,235,240,255,193,235,248,255,225,235, -/* 0x0400 */ 32,129,144,125, 32, 0,128, 78, 0, 0, 0, 0, 0, 0, 0, 3, -/* 0x0410 */ 128, 4, 0, 0,166, 2, 8,124, 16, 0, 1,248, 38, 0,128,125, -/* 0x0420 */ 120,255,225,249,128,255, 1,250,136,255, 33,250,144,255, 65,250, -/* 0x0430 */ 152,255, 97,250,160,255,129,250,168,255,161,250,176,255,193,250, -/* 0x0440 */ 184,255,225,250,192,255, 1,251,200,255, 33,251,208,255, 65,251, -/* 0x0450 */ 216,255, 97,251,224,255,129,251,232,255,161,251,240,255,193,251, -/* 0x0460 */ 248,255,225,251, 8, 0,129,145,241,254, 33,248,120, 27,123,124, -/* 0x0470 */ 120, 75, 53,125, 28, 0,227, 59, 16, 0, 35,129, 0, 0,137, 47, -/* 0x0480 */ 140, 1,158, 65,120, 35,153,124,120, 43,184,124,120, 51,215,124, -/* 0x0490 */ 120, 59,244,124,120, 67, 22,125, 0, 0,160, 59, 0, 0, 96, 58, -/* 0x04a0 */ 0, 0, 37, 46, 0, 0, 64, 59, 0, 0,128, 59, 18, 0, 64, 58, -/* 0x04b0 */ 0, 0, 95,129, 1, 0,138, 43, 12, 1,158, 64, 36, 0, 63,129, -/* 0x04c0 */ 112, 0, 33,249, 24, 0, 63,130,120, 0, 33,250, 28, 0, 31,130, -/* 0x04d0 */ 20,130, 17,126,228, 4, 47,122, 32, 5, 49,122, 21, 74, 49,126, -/* 0x04e0 */ 52, 1,130, 65, 16, 0,146, 64, 0, 0,169, 47, 64, 1,158, 65, -/* 0x04f0 */ 48, 1, 0, 72,120,187,231,126, 0, 0,169, 47,100, 1,158, 64, -/* 0x0500 */ 255,255,224, 56, 92, 1, 0, 72, 36, 0, 63,129, 0, 0,137, 47, -/* 0x0510 */ 40, 0,158, 65, 32, 0, 63,129, 0, 0,137, 47, 8, 0,158, 64, -/* 0x0520 */ 0, 0,244,249,120,195, 3,127,112, 0,129, 56,120,179,197,126, -/* 0x0530 */ 120,171,166,126, 37,253,255, 75,208, 0,209,127, 33, 5,222,123, -/* 0x0540 */ 24, 0,130, 65, 20,138, 47,125,255,255, 41, 57,166, 3,201,127, -/* 0x0550 */ 1, 0,137,159,252,255, 0, 66, 0, 0,177, 47, 44, 0,158, 65, -/* 0x0560 */ 120,123,227,125,120,139, 36,126, 46, 0,191,232,193,251,255, 75, -/* 0x0570 */ 0, 0, 0, 96, 0, 0,163, 47, 16, 0,254, 65,127, 0, 96, 56, -/* 0x0580 */ 141,251,255, 75, 0, 0, 0, 96, 20,138,222,127, 20,242,239,125, -/* 0x0590 */ 64,120,176,127, 88, 0,157, 64,120,123,227,125, 80,128,143,124, -/* 0x05a0 */ 44, 0,191,128, 18, 16,192, 56,255,255,224, 56,120,211, 72,127, -/* 0x05b0 */ 69,251,255, 75, 0, 0, 0, 96, 0, 24,175,127, 48, 0,254, 65, -/* 0x05c0 */ 188,255,255, 75,252,255, 74, 57, 1, 0,138, 43, 32, 0,157, 65, -/* 0x05d0 */ 8, 0, 63,129, 1, 0,137, 47, 20, 0,158, 64, 12, 0, 63,129, -/* 0x05e0 */ 40, 0,137, 47, 8, 0,158, 64, 16, 0,127, 58, 1, 0, 93, 57, -/* 0x05f0 */ 32, 0, 93,121, 4, 0, 63,129, 20, 74,255,127, 16, 0, 59,129, -/* 0x0600 */ 64, 80,137,127,172,254,157, 65,156, 0, 0, 72, 0, 0, 96, 58, -/* 0x0610 */ 148, 0, 0, 72,124, 0,146, 64,120,211, 94,127,108,255,255, 75, -/* 0x0620 */ 120,187,231,126,120,147, 70,126, 12, 0, 0, 72, 18, 16,192, 56, -/* 0x0630 */ 255,255,224, 56, 32, 0, 31,129, 20,202, 8,125,120,123,227,125, -/* 0x0640 */ 120,139, 36,126, 3, 0,160, 56, 32, 0, 8,121,169,250,255, 75, -/* 0x0650 */ 0, 0, 0, 96, 0, 24,175,127,224,254,254, 65, 32,255,255, 75, -/* 0x0660 */ 32, 0, 31,129, 20,202, 8,125,120,123,227,125,120,139, 36,126, -/* 0x0670 */ 3, 0,160, 56, 18, 16,192, 56, 32, 0, 8,121,121,250,255, 75, -/* 0x0680 */ 0, 0, 0, 96, 0, 24,175,127,128,254,254, 65,240,254,255, 75, -/* 0x0690 */ 36, 0, 63,129,120,211, 94,127, 0, 0,137, 47,188,254,158, 65, -/* 0x06a0 */ 116,254,255, 75,120,155, 99,126, 16, 1, 33, 56, 16, 0, 1,232, -/* 0x06b0 */ 8, 0,129,129,166, 3, 8,124,120,255,225,233,128,255, 1,234, -/* 0x06c0 */ 136,255, 33,234,144,255, 65,234,152,255, 97,234,160,255,129,234, -/* 0x06d0 */ 168,255,161,234,176,255,193,234,184,255,225,234,192,255, 1,235, -/* 0x06e0 */ 200,255, 33,235,208,255, 65,235,216,255, 97,235,224,255,129,235, -/* 0x06f0 */ 232,255,161,235,240,255,193,235,248,255,225,235, 32,129,144,125, -/* 0x0700 */ 32, 0,128, 78, 0, 0, 0, 0, 0, 0, 0, 3,128, 17, 0, 0, -/* 0x0710 */ 166, 2, 8,124, 16, 0, 1,248,216,255, 97,251,224,255,129,251, -/* 0x0720 */ 232,255,161,251,240,255,193,251,248,255,225,251, 49,255, 33,248, -/* 0x0730 */ 8, 1,129,248,120, 43,191,124,120, 51,222,124,120, 59,253,124, -/* 0x0740 */ 120, 67, 28,125,120, 75, 59,125, 24, 0,195, 56,120, 0,193,248, -/* 0x0750 */ 8, 1, 65,233,232,255, 74, 57,112, 0, 65,249,136, 0,161,248, -/* 0x0760 */ 24, 0, 35,129,128, 0, 33,249,144, 0, 65,249,152, 0,193,248, -/* 0x0770 */ 112, 0, 97, 56,128, 0,129, 56,120, 59,229,124, 0, 0,192, 56, -/* 0x0780 */ 217,250,255, 75,120,251,227,127, 0, 0,128, 56,144, 0,161, 56, -/* 0x0790 */ 255,255,192, 56,120,219,103,127,120,235,168,127,120,227,137,127, -/* 0x07a0 */ 117,252,255, 75,120, 27,124,124, 28, 0, 63, 57, 16, 0, 31,129, -/* 0x07b0 */ 0, 0,168, 47, 64, 1,158, 65, 28, 0, 95,129, 14, 0,138, 47, -/* 0x07c0 */ 40, 0,158, 65, 0, 0, 64, 57,255,255, 8, 57, 32, 0, 8,121, -/* 0x07d0 */ 1, 0, 8, 57,166, 3, 9,125, 8, 1, 0, 72, 0, 0, 9,129, -/* 0x07e0 */ 14, 0,136, 47,252, 0,158, 64, 8, 0,105,232, 20, 26,105,124, -/* 0x07f0 */ 0, 0,128, 56, 0, 0,160, 56, 37,249,255, 75, 0, 0, 0, 96, -/* 0x0800 */ 120, 27,125,124, 0, 0,131, 47, 48, 0,220, 65, 0, 0,128, 59, -/* 0x0810 */ 254,202, 96, 63,190,186,123, 99,120,235,163,127,120,251,228,127, -/* 0x0820 */ 120,243,197,127,120,227,134,127,189,248,255, 75, 0, 0, 0, 96, -/* 0x0830 */ 0, 24,190,127, 16, 0,254, 65,127, 0, 96, 56,209,248,255, 75, -/* 0x0840 */ 0, 0, 0, 96, 0, 0, 63,129, 0,216,137,127, 96, 0,158, 64, -/* 0x0850 */ 8, 0, 63, 57, 4, 0, 95,129, 0, 0,170, 47, 80, 0,158, 65, -/* 0x0860 */ 8, 0, 31,129, 18, 0,136, 47, 28, 0,158, 64, 16, 0, 0, 72, -/* 0x0870 */ 0, 0, 73,129, 18, 0,138, 47, 40, 0,158, 64, 8, 0,137,131, -/* 0x0880 */ 152,255,255, 75,255,255, 74, 57, 32, 0, 74,121,100, 23, 72,121, -/* 0x0890 */ 228, 38, 74,121, 20, 82, 8,125, 28, 0, 8, 57, 20, 66, 31,125, -/* 0x08a0 */ 20, 0, 41, 57, 64, 64,169,127,200,255,158, 64,120,251,227,127, -/* 0x08b0 */ 120,227,132,127, 0, 0,160, 56,120,235,166,127, 0, 0,224, 56, -/* 0x08c0 */ 0, 0, 0, 57, 0, 0, 32, 57, 77,251,255, 75,120, 27,124,124, -/* 0x08d0 */ 120,235,163,127, 81,248,255, 75, 0, 0, 0, 96, 24, 0, 0, 72, -/* 0x08e0 */ 1, 0, 74, 57, 32, 0, 74,121, 4, 0, 9,129, 20, 66, 41,125, -/* 0x08f0 */ 236,254, 0, 66,120,227,131,127,208, 0, 33, 56, 16, 0, 1,232, -/* 0x0900 */ 166, 3, 8,124,216,255, 97,235,224,255,129,235,232,255,161,235, -/* 0x0910 */ 240,255,193,235,248,255,225,235, 32, 0,128, 78, 0, 0, 0, 0, -/* 0x0920 */ 0, 0, 0, 1,128, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +unsigned char stub_powerpc64le_darwin_macho_fold[6512] = { +/* 0x0000 */ 8, 0,128,124,105, 0, 0, 72,208, 0, 6, 40, 32, 0,194, 76, +/* 0x0010 */ 191,240,132, 84, 32, 0,194, 77, 16, 0, 0, 60, 64, 0, 4,124, +/* 0x0020 */ 8, 0,128, 65,120, 3, 4,124, 32, 1,165, 56,120, 27,103,124, +/* 0x0030 */ 252,255, 99, 56,166, 3,137,124, 28, 0, 0, 72,186, 2, 75, 84, +/* 0x0040 */ 80, 88, 99,125, 20, 58,107,125,186, 1, 98, 81, 0, 0, 67,144, +/* 0x0050 */ 32, 0, 64, 79, 4, 0, 67,132,190, 85, 75, 84, 64, 40, 11,124, +/* 0x0060 */ 220,255,194, 65,240,255, 32, 67, 32, 0,128, 78,112, 0, 33, 56, +/* 0x0070 */ 0, 0, 32, 57,252,255, 33,149,120, 11, 41,124,166, 2, 8,125, +/* 0x0080 */ 248,255,159,128, 80,248,100,124, 24, 0,195,128, 0, 8, 6, 40, +/* 0x0090 */ 8, 0,129, 65, 0, 8,192, 56,120, 11, 61,124, 80, 8, 38,124, +/* 0x00a0 */ 120, 11, 37,124,145,255, 33,248,120,251,231,127,105, 6, 0, 72, +/* 0x00b0 */ 120,235,161,127, 0, 0, 67,128,166, 3, 73,124,136, 0, 67,128, +/* 0x00c0 */ 32,241, 79,124,140, 0, 67,128,166, 3, 65,124,144, 0, 67,128, +/* 0x00d0 */ 166, 3, 72,124, 24, 0,131,184, 8, 0, 3,128, 16, 0, 67,128, +/* 0x00e0 */ 20, 0, 99,128, 32, 4,128, 78,120, 51,199,124, 0, 0,192, 56, +/* 0x00f0 */ 153, 0, 0, 56, 16, 0, 0, 72,120, 67, 9,125, 0, 0, 0, 57, +/* 0x0100 */ 197, 0, 0, 56, 2, 0, 0, 68,255,255, 96, 56, 32, 0,128, 78, +/* 0x0110 */ 1, 0, 0, 56,240,255,255, 75, 3, 0, 0, 56,232,255,255, 75, +/* 0x0120 */ 5, 0, 0, 56,224,255,255, 75, 6, 0, 0, 56,216,255,255, 75, +/* 0x0130 */ 74, 0, 0, 56,208,255,255, 75,112,255,193,249,120,255,225,249, +/* 0x0140 */ 128,255, 1,250,136,255, 33,250,144,255, 65,250,152,255, 97,250, +/* 0x0150 */ 160,255,129,250,168,255,161,250,176,255,193,250,184,255,225,250, +/* 0x0160 */ 192,255, 1,251,200,255, 33,251,208,255, 65,251,216,255, 97,251, +/* 0x0170 */ 224,255,129,251,232,255,161,251,240,255,193,251,248,255,225,251, +/* 0x0180 */ 16, 0, 1,248, 32, 0,128, 78,112,255,193,233,120,255,225,233, +/* 0x0190 */ 128,255, 1,234,136,255, 33,234,144,255, 65,234,152,255, 97,234, +/* 0x01a0 */ 160,255,129,234,168,255,161,234,176,255,193,234,184,255,225,234, +/* 0x01b0 */ 192,255, 1,235,200,255, 33,235,208,255, 65,235,216,255, 97,235, +/* 0x01c0 */ 224,255,129,235, 16, 0, 1,232,232,255,161,235,166, 3, 8,124, +/* 0x01d0 */ 240,255,193,235,248,255,225,235, 32, 0,128, 78, 8, 0, 3,233, +/* 0x01e0 */ 0, 0, 67,233, 64, 40,170,127, 40, 0,220, 65,255,255, 37, 57, +/* 0x01f0 */ 255,255, 72, 57,255,255,132, 56, 20, 74, 40,125, 80, 72, 42,125, +/* 0x0200 */ 166, 3, 41,125, 0, 0,165, 47, 32, 0,158, 64, 40, 0, 0, 72, +/* 0x0210 */ 166, 2, 8,124, 16, 0, 1,248,145,255, 33,248,127, 0, 96, 56, +/* 0x0220 */ 241,254,255, 75, 0, 0, 0, 96, 1, 0, 42,141, 1, 0, 36,157, +/* 0x0230 */ 248,255, 0, 66, 8, 0, 35,233, 20, 42, 41,125, 8, 0, 35,249, +/* 0x0240 */ 0, 0, 35,233, 80, 72,165,124, 0, 0,163,248, 32, 0,128, 78, +/* 0x0250 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 0, 0, 0,166, 2, 8,124, +/* 0x0260 */ 16, 0, 1,248, 38, 0,128,125,224,255,129,251,232,255,161,251, +/* 0x0270 */ 240,255,193,251,248,255,225,251, 8, 0,129,145, 97,255, 33,248, +/* 0x0280 */ 0, 0, 36,233, 0, 0,169, 47, 92, 1,158, 65,120, 51,220,124, +/* 0x0290 */ 120, 43,189,124,120, 35,159,124,120, 27,126,124, 0, 0, 38, 46, +/* 0x02a0 */ 120,243,195,127,112, 0,129, 56, 12, 0,160, 56, 49,255,255, 75, +/* 0x02b0 */ 112, 0, 33,129, 0, 0,169, 47, 40, 0,158, 64,116, 0, 33,129, +/* 0x02c0 */ 88, 33, 64, 61, 85, 80, 74, 97, 0, 80,137,127, 32, 0,222, 64, +/* 0x02d0 */ 0, 0, 62,233, 0, 0,169, 47, 12, 1,254, 65, 16, 0, 0, 72, +/* 0x02e0 */ 116, 0,161,128, 0, 0,165, 47, 16, 0,254, 64,127, 0, 96, 56, +/* 0x02f0 */ 33,254,255, 75, 0, 0, 0, 96, 64, 40,137,127,240,255,220, 65, +/* 0x0300 */ 0, 0, 95,233, 64, 80,169,127,228,255,221, 65, 64, 40,137,127, +/* 0x0310 */ 164, 0,157, 64,124, 0, 33,145, 8, 0,126,232,120, 43,164,124, +/* 0x0320 */ 8, 0,191,232,124, 0,193, 56,120, 0,225,136, 40, 0, 65,248, +/* 0x0330 */ 0, 0, 61,233, 16, 0,125,233,166, 3, 41,125, 8, 0, 93,232, +/* 0x0340 */ 33, 4,128, 78, 40, 0, 65,232, 0, 0,163, 47,160,255,222, 64, +/* 0x0350 */ 112, 0,129,128,124, 0, 33,129, 0, 32,137,127,144,255,222, 64, +/* 0x0360 */ 121, 0,193,136, 0, 0,166, 47, 44, 0,158, 65, 40, 0,146, 65, +/* 0x0370 */ 8, 0,127,232,122, 0,161,136, 40, 0, 65,248, 0, 0, 60,233, +/* 0x0380 */ 16, 0,124,233,166, 3, 41,125, 8, 0, 92,232, 33, 4,128, 78, +/* 0x0390 */ 40, 0, 65,232,116, 0, 1,129, 8, 0, 94,233, 20, 66, 74,125, +/* 0x03a0 */ 8, 0, 94,249, 0, 0, 62,233, 80, 72, 40,125, 0, 0, 62,249, +/* 0x03b0 */ 16, 0, 0, 72,120,243,195,127, 8, 0,159,232, 33,254,255, 75, +/* 0x03c0 */ 112, 0, 1,129, 8, 0, 95,233, 20, 66, 74,125, 8, 0, 95,249, +/* 0x03d0 */ 0, 0, 63,233, 80, 72, 40,125, 0, 0, 63,249, 0, 0,169, 47, +/* 0x03e0 */ 192,254,158, 64,160, 0, 33, 56, 16, 0, 1,232, 8, 0,129,129, +/* 0x03f0 */ 166, 3, 8,124,224,255,129,235,232,255,161,235,240,255,193,235, +/* 0x0400 */ 248,255,225,235, 32,129,144,125, 32, 0,128, 78, 0, 0, 0, 0, +/* 0x0410 */ 0, 0, 0, 3,128, 4, 0, 0,166, 2, 8,124, 16, 0, 1,248, +/* 0x0420 */ 38, 0,128,125,120,255,225,249,128,255, 1,250,136,255, 33,250, +/* 0x0430 */ 144,255, 65,250,152,255, 97,250,160,255,129,250,168,255,161,250, +/* 0x0440 */ 176,255,193,250,184,255,225,250,192,255, 1,251,200,255, 33,251, +/* 0x0450 */ 208,255, 65,251,216,255, 97,251,224,255,129,251,232,255,161,251, +/* 0x0460 */ 240,255,193,251,248,255,225,251, 8, 0,129,145,241,254, 33,248, +/* 0x0470 */ 120, 27,123,124,120, 75, 53,125, 28, 0,227, 59, 16, 0, 35,129, +/* 0x0480 */ 0, 0,137, 47,140, 1,158, 65,120, 35,153,124,120, 43,184,124, +/* 0x0490 */ 120, 51,215,124,120, 59,244,124,120, 67, 22,125, 0, 0,160, 59, +/* 0x04a0 */ 0, 0, 96, 58, 0, 0, 37, 46, 0, 0, 64, 59, 0, 0,128, 59, +/* 0x04b0 */ 18, 0, 64, 58, 0, 0, 95,129, 1, 0,138, 43, 12, 1,158, 64, +/* 0x04c0 */ 36, 0, 63,129,112, 0, 33,249, 24, 0, 63,130,120, 0, 33,250, +/* 0x04d0 */ 28, 0, 31,130, 20,130, 17,126,228, 4, 47,122, 32, 5, 49,122, +/* 0x04e0 */ 21, 74, 49,126, 52, 1,130, 65, 16, 0,146, 64, 0, 0,169, 47, +/* 0x04f0 */ 64, 1,158, 65, 48, 1, 0, 72,120,187,231,126, 0, 0,169, 47, +/* 0x0500 */ 100, 1,158, 64,255,255,224, 56, 92, 1, 0, 72, 36, 0, 63,129, +/* 0x0510 */ 0, 0,137, 47, 40, 0,158, 65, 32, 0, 63,129, 0, 0,137, 47, +/* 0x0520 */ 8, 0,158, 64, 0, 0,244,249,120,195, 3,127,112, 0,129, 56, +/* 0x0530 */ 120,179,197,126,120,171,166,126, 37,253,255, 75,208, 0,209,127, +/* 0x0540 */ 33, 5,222,123, 24, 0,130, 65, 20,138, 47,125,255,255, 41, 57, +/* 0x0550 */ 166, 3,201,127, 1, 0,137,159,252,255, 0, 66, 0, 0,177, 47, +/* 0x0560 */ 44, 0,158, 65,120,123,227,125,120,139, 36,126, 46, 0,191,232, +/* 0x0570 */ 193,251,255, 75, 0, 0, 0, 96, 0, 0,163, 47, 16, 0,254, 65, +/* 0x0580 */ 127, 0, 96, 56,141,251,255, 75, 0, 0, 0, 96, 20,138,222,127, +/* 0x0590 */ 20,242,239,125, 64,120,176,127, 88, 0,157, 64,120,123,227,125, +/* 0x05a0 */ 80,128,143,124, 44, 0,191,128, 18, 16,192, 56,255,255,224, 56, +/* 0x05b0 */ 120,211, 72,127, 69,251,255, 75, 0, 0, 0, 96, 0, 24,175,127, +/* 0x05c0 */ 48, 0,254, 65,188,255,255, 75,252,255, 74, 57, 1, 0,138, 43, +/* 0x05d0 */ 32, 0,157, 65, 8, 0, 63,129, 1, 0,137, 47, 20, 0,158, 64, +/* 0x05e0 */ 12, 0, 63,129, 40, 0,137, 47, 8, 0,158, 64, 16, 0,127, 58, +/* 0x05f0 */ 1, 0, 93, 57, 32, 0, 93,121, 4, 0, 63,129, 20, 74,255,127, +/* 0x0600 */ 16, 0, 59,129, 64, 80,137,127,172,254,157, 65,156, 0, 0, 72, +/* 0x0610 */ 0, 0, 96, 58,148, 0, 0, 72,124, 0,146, 64,120,211, 94,127, +/* 0x0620 */ 108,255,255, 75,120,187,231,126,120,147, 70,126, 12, 0, 0, 72, +/* 0x0630 */ 18, 16,192, 56,255,255,224, 56, 32, 0, 31,129, 20,202, 8,125, +/* 0x0640 */ 120,123,227,125,120,139, 36,126, 3, 0,160, 56, 32, 0, 8,121, +/* 0x0650 */ 169,250,255, 75, 0, 0, 0, 96, 0, 24,175,127,224,254,254, 65, +/* 0x0660 */ 32,255,255, 75, 32, 0, 31,129, 20,202, 8,125,120,123,227,125, +/* 0x0670 */ 120,139, 36,126, 3, 0,160, 56, 18, 16,192, 56, 32, 0, 8,121, +/* 0x0680 */ 121,250,255, 75, 0, 0, 0, 96, 0, 24,175,127,128,254,254, 65, +/* 0x0690 */ 240,254,255, 75, 36, 0, 63,129,120,211, 94,127, 0, 0,137, 47, +/* 0x06a0 */ 188,254,158, 65,116,254,255, 75,120,155, 99,126, 16, 1, 33, 56, +/* 0x06b0 */ 16, 0, 1,232, 8, 0,129,129,166, 3, 8,124,120,255,225,233, +/* 0x06c0 */ 128,255, 1,234,136,255, 33,234,144,255, 65,234,152,255, 97,234, +/* 0x06d0 */ 160,255,129,234,168,255,161,234,176,255,193,234,184,255,225,234, +/* 0x06e0 */ 192,255, 1,235,200,255, 33,235,208,255, 65,235,216,255, 97,235, +/* 0x06f0 */ 224,255,129,235,232,255,161,235,240,255,193,235,248,255,225,235, +/* 0x0700 */ 32,129,144,125, 32, 0,128, 78, 0, 0, 0, 0, 0, 0, 0, 3, +/* 0x0710 */ 128, 17, 0, 0,166, 2, 8,124, 16, 0, 1,248,216,255, 97,251, +/* 0x0720 */ 224,255,129,251,232,255,161,251,240,255,193,251,248,255,225,251, +/* 0x0730 */ 49,255, 33,248, 8, 1,129,248,120, 43,191,124,120, 51,222,124, +/* 0x0740 */ 120, 59,253,124,120, 67, 28,125,120, 75, 59,125, 24, 0,195, 56, +/* 0x0750 */ 120, 0,193,248, 8, 1, 65,233,232,255, 74, 57,112, 0, 65,249, +/* 0x0760 */ 136, 0,161,248, 24, 0, 35,129,128, 0, 33,249,144, 0, 65,249, +/* 0x0770 */ 152, 0,193,248,112, 0, 97, 56,128, 0,129, 56,120, 59,229,124, +/* 0x0780 */ 0, 0,192, 56,217,250,255, 75,120,251,227,127, 0, 0,128, 56, +/* 0x0790 */ 144, 0,161, 56,255,255,192, 56,120,219,103,127,120,235,168,127, +/* 0x07a0 */ 120,227,137,127,117,252,255, 75,120, 27,124,124, 28, 0, 63, 57, +/* 0x07b0 */ 16, 0, 31,129, 0, 0,168, 47, 64, 1,158, 65, 28, 0, 95,129, +/* 0x07c0 */ 14, 0,138, 47, 40, 0,158, 65, 0, 0, 64, 57,255,255, 8, 57, +/* 0x07d0 */ 32, 0, 8,121, 1, 0, 8, 57,166, 3, 9,125, 8, 1, 0, 72, +/* 0x07e0 */ 0, 0, 9,129, 14, 0,136, 47,252, 0,158, 64, 8, 0,105,232, +/* 0x07f0 */ 20, 26,105,124, 0, 0,128, 56, 0, 0,160, 56, 37,249,255, 75, +/* 0x0800 */ 0, 0, 0, 96,120, 27,125,124, 0, 0,131, 47, 48, 0,220, 65, +/* 0x0810 */ 0, 0,128, 59,254,202, 96, 63,190,186,123, 99,120,235,163,127, +/* 0x0820 */ 120,251,228,127,120,243,197,127,120,227,134,127,189,248,255, 75, +/* 0x0830 */ 0, 0, 0, 96, 0, 24,190,127, 16, 0,254, 65,127, 0, 96, 56, +/* 0x0840 */ 209,248,255, 75, 0, 0, 0, 96, 0, 0, 63,129, 0,216,137,127, +/* 0x0850 */ 96, 0,158, 64, 8, 0, 63, 57, 4, 0, 95,129, 0, 0,170, 47, +/* 0x0860 */ 80, 0,158, 65, 8, 0, 31,129, 18, 0,136, 47, 28, 0,158, 64, +/* 0x0870 */ 16, 0, 0, 72, 0, 0, 73,129, 18, 0,138, 47, 40, 0,158, 64, +/* 0x0880 */ 8, 0,137,131,152,255,255, 75,255,255, 74, 57, 32, 0, 74,121, +/* 0x0890 */ 100, 23, 72,121,228, 38, 74,121, 20, 82, 8,125, 28, 0, 8, 57, +/* 0x08a0 */ 20, 66, 31,125, 20, 0, 41, 57, 64, 64,169,127,200,255,158, 64, +/* 0x08b0 */ 120,251,227,127,120,227,132,127, 0, 0,160, 56,120,235,166,127, +/* 0x08c0 */ 0, 0,224, 56, 0, 0, 0, 57, 0, 0, 32, 57, 77,251,255, 75, +/* 0x08d0 */ 120, 27,124,124,120,235,163,127, 81,248,255, 75, 0, 0, 0, 96, +/* 0x08e0 */ 24, 0, 0, 72, 1, 0, 74, 57, 32, 0, 74,121, 4, 0, 9,129, +/* 0x08f0 */ 20, 66, 41,125,236,254, 0, 66,120,227,131,127,208, 0, 33, 56, +/* 0x0900 */ 16, 0, 1,232,166, 3, 8,124,216,255, 97,235,224,255,129,235, +/* 0x0910 */ 232,255,161,235,240,255,193,235,248,255,225,235, 32, 0,128, 78, +/* 0x0920 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 5, 0, 0, 0, 0, 0, 0, /* 0x0930 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0940 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0950 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -438,9 +438,9 @@ unsigned char stub_powerpc64le_darwin_macho_fold[6504] = { /* 0x18f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1900 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1910 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x1920 */ 0, 0, 0, 0, 0, 0, 0, 0,216,129, 4, 8, 0, 0, 0, 0, -/* 0x1930 */ 0, 25, 5, 8, 0, 0, 0, 0, 88,130, 4, 8, 0, 0, 0, 0, -/* 0x1940 */ 0, 25, 5, 8, 0, 0, 0, 0, 20,132, 4, 8, 0, 0, 0, 0, -/* 0x1950 */ 0, 25, 5, 8, 0, 0, 0, 0, 16,135, 4, 8, 0, 0, 0, 0, -/* 0x1960 */ 0, 25, 5, 8, 0, 0, 0, 0 +/* 0x1920 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x1930 */ 220,129, 4, 8, 0, 0, 0, 0, 0, 25, 5, 8, 0, 0, 0, 0, +/* 0x1940 */ 92,130, 4, 8, 0, 0, 0, 0, 0, 25, 5, 8, 0, 0, 0, 0, +/* 0x1950 */ 24,132, 4, 8, 0, 0, 0, 0, 0, 25, 5, 8, 0, 0, 0, 0, +/* 0x1960 */ 20,135, 4, 8, 0, 0, 0, 0, 0, 25, 5, 8, 0, 0, 0, 0 }; diff --git a/src/stub/powerpc64le-linux.elf-entry.h b/src/stub/powerpc64le-linux.elf-entry.h index 61c8313c..ed92ef5e 100644 --- a/src/stub/powerpc64le-linux.elf-entry.h +++ b/src/stub/powerpc64le-linux.elf-entry.h @@ -32,8 +32,8 @@ #define STUB_POWERPC64LE_LINUX_ELF_ENTRY_SIZE 10907 -#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_ADLER32 0x4378349b -#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_CRC32 0x18bd7948 +#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_ADLER32 0xce11351c +#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_CRC32 0x02d43381 unsigned char stub_powerpc64le_linux_elf_entry[10907] = { /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -509,7 +509,7 @@ unsigned char stub_powerpc64le_linux_elf_entry[10907] = { /* 0x1d60 */ 90, 0, 0, 56, 11, 0, 99, 56, 20, 34, 99,124, 30, 0, 99, 84, /* 0x1d70 */ 2, 0, 0, 68, 0, 0,195, 65,166, 3,233,127, 0, 0, 30,128, /* 0x1d80 */ 8, 0,254,136,248, 0,193, 56,248, 0, 1,248,120, 27,101,124, -/* 0x1d90 */ 166, 3,104,124, 4, 0,158,128, 12, 0,126, 56,208,255, 33, 56, +/* 0x1d90 */ 166, 3,104,124, 4, 0,158,128, 12, 0,126, 56,145,255, 33,248, /* 0x1da0 */ 32, 4,128, 78, 1,255, 33,248, 8, 0, 65,248, 16, 0, 97,248, /* 0x1db0 */ 24, 0,129,248, 32, 0,161,248, 40, 0,193,248, 48, 0,225,248, /* 0x1dc0 */ 56, 0, 1,249, 64, 0, 33,249, 72, 0, 65,249, 80, 0, 97,249, diff --git a/src/stub/powerpc64le-linux.elf-fold.h b/src/stub/powerpc64le-linux.elf-fold.h index d4938f92..2537a1fb 100644 --- a/src/stub/powerpc64le-linux.elf-fold.h +++ b/src/stub/powerpc64le-linux.elf-fold.h @@ -32,8 +32,8 @@ #define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 2507 -#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0x672f8a9f -#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0x063cc76e +#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0x6a408a67 +#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0xc4e7756e unsigned char stub_powerpc64le_linux_elf_fold[2507] = { /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -55,21 +55,21 @@ unsigned char stub_powerpc64le_linux_elf_fold[2507] = { /* 0x0100 */ 186, 1, 98, 81, 0, 0, 67,144, 32, 0, 64, 79, 4, 0, 67,132, /* 0x0110 */ 190, 85, 75, 84, 64, 40, 11,124,220,255,194, 65,240,255, 32, 67, /* 0x0120 */ 32, 0,128, 78, 0, 0, 73,232, 8, 0, 41, 57, 0, 0,162, 43, -/* 0x0130 */ 244,255,254, 64, 32, 0,128, 78, 48, 0, 33, 56,166, 2, 8,125, +/* 0x0130 */ 244,255,254, 64, 32, 0,128, 78,112, 0, 33, 56,166, 2, 8,125, /* 0x0140 */ 0, 0, 33,233,225,255,255, 75,221,255,255, 75,248,255,159,128, /* 0x0150 */ 38, 0, 30, 85,120,243,202,127,120,251,231,127, 80,248,164,127, /* 0x0160 */ 0,248,161, 56,248,255,189, 59, 56, 0,221,160, 56, 0,198, 28, -/* 0x0170 */ 64, 0,198, 56, 80, 32,134,124, 20, 50,125,124,208,247, 33, 56, +/* 0x0170 */ 64, 0,198, 56, 80, 32,134,124, 20, 50,125,124,144,247, 33, 56, /* 0x0180 */ 24, 0,195,128,205, 5, 0, 72,120, 27,127,124,120,235,163,127, -/* 0x0190 */ 80,240,157,124,201, 0, 0, 72,166, 3,232,127, 56, 8, 65,232, -/* 0x01a0 */ 64, 8, 97,232, 72, 8,129,232, 80, 8,161,232, 88, 8,193,232, -/* 0x01b0 */ 96, 8,225,232,104, 8, 1,233,112, 8, 33,233,120, 8, 65,233, -/* 0x01c0 */ 128, 8, 97,233,136, 8,129,233,144, 8,161,233,152, 8,193,233, -/* 0x01d0 */ 160, 8,225,233,168, 8, 1,234,176, 8, 33,234,184, 8, 65,234, -/* 0x01e0 */ 192, 8, 97,234,200, 8,129,234,208, 8,161,234,216, 8,193,234, -/* 0x01f0 */ 224, 8,225,234,232, 8, 1,235,240, 8, 33,235,248, 8, 65,235, -/* 0x0200 */ 0, 9, 97,235, 8, 9,129,235, 16, 9,161,235, 24, 9,193,235, -/* 0x0210 */ 32, 9,225,235, 48, 8, 33,232,166, 2,136,125, 32, 0,128, 78, +/* 0x0190 */ 80,240,157,124,201, 0, 0, 72,166, 3,232,127,120, 8, 65,232, +/* 0x01a0 */ 128, 8, 97,232,136, 8,129,232,144, 8,161,232,152, 8,193,232, +/* 0x01b0 */ 160, 8,225,232,168, 8, 1,233,176, 8, 33,233,184, 8, 65,233, +/* 0x01c0 */ 192, 8, 97,233,200, 8,129,233,208, 8,161,233,216, 8,193,233, +/* 0x01d0 */ 224, 8,225,233,232, 8, 1,234,240, 8, 33,234,248, 8, 65,234, +/* 0x01e0 */ 0, 9, 97,234, 8, 9,129,234, 16, 9,161,234, 24, 9,193,234, +/* 0x01f0 */ 32, 9,225,234, 40, 9, 1,235, 48, 9, 33,235, 56, 9, 65,235, +/* 0x0200 */ 64, 9, 97,235, 72, 9,129,235, 80, 9,161,235, 88, 9,193,235, +/* 0x0210 */ 96, 9,225,235,112, 8, 33,232,166, 2,136,125, 32, 0,128, 78, /* 0x0220 */ 90, 0, 0, 56, 2, 0, 0, 68, 8, 0,227, 64,255,255, 96, 56, /* 0x0230 */ 32, 0,128, 78, 1, 0, 0, 56,236,255,255, 75, 3, 0, 0, 56, /* 0x0240 */ 228,255,255, 75, 5, 0, 0, 56,220,255,255, 75, 6, 0, 0, 56, diff --git a/src/stub/src/arch/powerpc/32/ppc_regs.h b/src/stub/src/arch/powerpc/32/ppc_regs.h index bd6a021f..5bd0618e 100644 --- a/src/stub/src/arch/powerpc/32/ppc_regs.h +++ b/src/stub/src/arch/powerpc/32/ppc_regs.h @@ -13,6 +13,7 @@ /* Stack pointer */ #define sp 1 +SZ_FRAME= 6*4 // (sp,cr,lr, xx,yy,zz) save area per calling convention /* Subroutine arguments; not saved by callee */ #define a0 3 diff --git a/src/stub/src/arch/powerpc/64le/ppc_regs.h b/src/stub/src/arch/powerpc/64le/ppc_regs.h index 2b99e85d..dfab15a5 100644 --- a/src/stub/src/arch/powerpc/64le/ppc_regs.h +++ b/src/stub/src/arch/powerpc/64le/ppc_regs.h @@ -36,6 +36,7 @@ /* Stack pointer */ #define sp 1 +SZ_FRAME= 6*8 + 8*8 // (sp,cr,lr, xx,yy,zz) + spill area for a0-a7 /* Subroutine arguments; not saved by callee */ #define a0 3 diff --git a/src/stub/src/powerpc-darwin.dylib-entry.S b/src/stub/src/powerpc-darwin.dylib-entry.S index b0923d1e..17e50afa 100644 --- a/src/stub/src/powerpc-darwin.dylib-entry.S +++ b/src/stub/src/powerpc-darwin.dylib-entry.S @@ -137,8 +137,6 @@ sz_b_info= 12 #define l_cpr 22 #define t_h 21 /* temporary */ -LINKAREA= 6*4 // (sp,pc,cr, xx,yy.zz) save area per calling convention - PROT_NONE =0x00 PROT_READ =0x01 PROT_WRITE =0x02 @@ -225,9 +223,9 @@ dy_uncpr: mr a2,s_unc # dst mr a3,sp # &l_dst lbz a4,b_method(s_cpr) - la sp,-LINKAREA(sp) + stwu sp,-SZ_FRAME(sp) blrl # uncompress - la sp,8+LINKAREA(sp) + la sp,8+SZ_FRAME(sp) // FIXME: check status lbz a3,b_ftid(s_cpr); cmpli cr0,a3,0; beq dy_uncpr diff --git a/src/stub/src/powerpc-darwin.macho-entry.S b/src/stub/src/powerpc-darwin.macho-entry.S index fe934c4a..fb03183e 100644 --- a/src/stub/src/powerpc-darwin.macho-entry.S +++ b/src/stub/src/powerpc-darwin.macho-entry.S @@ -130,7 +130,7 @@ movup: # descending copy moves folded_loader to higher address addi dst,t0,GAP # &unfolded result stw ldst,-4(sp) # LZMA needs for EOF la ldst,-4(sp) # &sz_result - la sp,-6*4(sp) // (sp,cr,pc, xx,yy,zz) save area per calling convention + stwu sp,-SZ_FRAME(sp) // (sp,cr,pc, xx,yy,zz) save area per calling convention bctr # call decompress: branch to counter register, return to link register main: diff --git a/src/stub/src/powerpc-darwin.macho-fold.S b/src/stub/src/powerpc-darwin.macho-fold.S index 01af1db9..b3124ca7 100644 --- a/src/stub/src/powerpc-darwin.macho-fold.S +++ b/src/stub/src/powerpc-darwin.macho-fold.S @@ -62,7 +62,7 @@ fold_begin: #include "arch/powerpc/32/bxx.S" L90: - la sp,6*4(sp) // trim save area used by decompressor + la sp,SZ_FRAME(sp) // trim save area used by decompressor li a6,0 stwu a6,-4(sp) # _push_ default value for dyld movr a6,sp # &mhdrp @@ -76,7 +76,7 @@ L100: movr r29,sp # remember for restoring later subf sp,a3,sp # alloca movr a2,sp # &temp char[sz_mach_headers] - addi sp,sp,-4*6 # linkage area assumed by C code (sp,cr,lr, xx,yy,zz) + stwu sp,-SZ_FRAME(sp) # ABI movr a4,r31 # f_decompress call upx_main # Out: a0= &Mach_ppc_thread_state of dyld diff --git a/src/stub/src/powerpc-linux.elf-fold.S b/src/stub/src/powerpc-linux.elf-fold.S index cb779eb7..9613909a 100644 --- a/src/stub/src/powerpc-linux.elf-fold.S +++ b/src/stub/src/powerpc-linux.elf-fold.S @@ -44,7 +44,6 @@ sz_l_info= 12 sz_p_info= 12 OVERHEAD= 2048 -LINKAREA= 6*4 // (sp,pc,cr, xx,yy.zz) save area per calling convention /* In: r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31) r28= &Elf32_auxv_t @@ -69,7 +68,7 @@ L90: sub a1,a1,a3 add a0,r29,a3 // &{l_info; p_info; b_info} mr a7,r27 // pagesize - addi sp,sp,-(LINKAREA+OVERHEAD) + stwu sp,-(SZ_FRAME+OVERHEAD)(sp) lwz a3,sz_unc+sz_p_info+sz_l_info(a0) // sz_elf_headers call upx_main // Out: a0= entry /* entry= upx_main(l_info *a0, total_size a1, Elf32_Ehdr *a2, sz_ehdr a3, @@ -82,8 +81,8 @@ 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 - lwz r1, LINKAREA+OVERHEAD(sp) // restore r1; deallocate space + lmw r2,4+SZ_FRAME+OVERHEAD(sp) // restore registers r2 thru r31 + lwz r1, SZ_FRAME+OVERHEAD(sp) // restore r1; deallocate space ret // enter /lib/ld.so.1 SYS_exit= 1 diff --git a/src/stub/src/powerpc64le-darwin.dylib-entry.S b/src/stub/src/powerpc64le-darwin.dylib-entry.S index 566c9a6b..9ad6dae7 100644 --- a/src/stub/src/powerpc64le-darwin.dylib-entry.S +++ b/src/stub/src/powerpc64le-darwin.dylib-entry.S @@ -137,8 +137,6 @@ sz_b_info= 12 #define l_cpr 22 #define t_h 21 /* temporary */ -LINKAREA= 6*8 // (sp,pc,cr, xx,yy.zz) save area per calling convention - PROT_NONE =0x00 PROT_READ =0x01 PROT_WRITE =0x02 @@ -259,9 +257,9 @@ dy_uncpr: mr a2,s_unc # dst mr a3,sp # &l_dst lbz a4,b_method(s_cpr) - la sp,-LINKAREA(sp) + stdu sp,-SZ_FRAME(sp) blrl # uncompress - la sp,8+LINKAREA(sp) + la sp,8+SZ_FRAME(sp) // FIXME: check status lbz a3,b_ftid(s_cpr) diff --git a/src/stub/src/powerpc64le-darwin.macho-entry.S b/src/stub/src/powerpc64le-darwin.macho-entry.S index 5d5f8cea..33b7f930 100644 --- a/src/stub/src/powerpc64le-darwin.macho-entry.S +++ b/src/stub/src/powerpc64le-darwin.macho-entry.S @@ -127,7 +127,7 @@ movup: # descending copy moves folded_loader to higher address addi dst,t0,GAP # &unfolded result std ldst,-8(sp) # LZMA needs for EOF la ldst,-8(sp) # &sz_result - la sp,-6*8(sp) // (sp,cr,pc, xx,yy,zz) save area per calling convention + stdu sp,-SZ_FRAME(sp) // ABI convention (for lzma compiled by gcc) bctr # call decompress: branch to counter register, return to link register main: diff --git a/src/stub/src/powerpc64le-darwin.macho-fold.S b/src/stub/src/powerpc64le-darwin.macho-fold.S index ee8d2dac..91d2d906 100644 --- a/src/stub/src/powerpc64le-darwin.macho-fold.S +++ b/src/stub/src/powerpc64le-darwin.macho-fold.S @@ -31,7 +31,7 @@ #include "arch/powerpc/64le/macros.S" #include "arch/powerpc/64le/ppc_regs.h" -retaddr = 2*4 // (sp,cr,pc, xx,yy,zz) save area per calling convention +retaddr = 2*8 sz_b_info= 12 sz_unc= 0 @@ -58,11 +58,12 @@ _start: .globl _start # ignored, but silence "cannot find entry symbol _start" r31= &decompress; also 8+ (char *)&(offset to {l_info; p_info; b_info}) */ fold_begin: + teq r0,r0 // this code has not been converted to 64-bit!! call L90 #include "arch/powerpc/32/bxx.S" L90: - la sp,6*4(sp) // trim save area used by decompressor + la sp,SZ_FRAME(sp) // trim save area used by decompressor li a6,0 stwu a6,-4(sp) # _push_ default value for dyld movr a6,sp # &mhdrp @@ -76,7 +77,7 @@ L100: movr r29,sp # remember for restoring later subf sp,a3,sp # alloca movr a2,sp # &temp char[sz_mach_headers] - addi sp,sp,-4*6 # linkage area assumed by C code (sp,cr,lr, xx,yy,zz) + stdu sp,-SZ_FRAME(sp) # ABI convention movr a4,r31 # f_decompress call upx_main # Out: a0= &Mach_ppc_thread_state of dyld diff --git a/src/stub/src/powerpc64le-linux.elf-entry.S b/src/stub/src/powerpc64le-linux.elf-entry.S index 75c4df3a..1a8dc425 100644 --- a/src/stub/src/powerpc64le-linux.elf-entry.S +++ b/src/stub/src/powerpc64le-linux.elf-entry.S @@ -171,8 +171,8 @@ unfold: mtlr a0 // &continuation lwz lsrc,sz_cpr(r30) // size of compressed addi src,r30,sz_b_info - la sp,-6*8(sp) // (sp,pc,cr, xx,yy,zz) save area per calling convention - bctr // goto decomrpess; return to link register (mmap'ed page) + stdu sp,-SZ_FRAME(sp) // ABI calling convention (for lzma compiled by gcc) + bctr // goto decompress; return to link register (mmap'ed page) // Example code at entrypoint of C-language subroutine: // mflr r0 # r0= return address diff --git a/src/stub/src/powerpc64le-linux.elf-fold.S b/src/stub/src/powerpc64le-linux.elf-fold.S index d85759ab..4a11f17e 100644 --- a/src/stub/src/powerpc64le-linux.elf-fold.S +++ b/src/stub/src/powerpc64le-linux.elf-fold.S @@ -44,7 +44,6 @@ sz_l_info= 12 sz_p_info= 12 OVERHEAD= 2048 -LINKAREA= 6*8 // (sp,pc,cr, xx,yy.zz) save area per calling convention /* In: r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31) */ @@ -69,7 +68,7 @@ zfind: cmpldi cr7,t0,0; bne+ cr7,zfind ret L90: - la sp,LINKAREA(sp) // trim save area used by decompressor + la sp,SZ_FRAME(sp) // trim save area used by decompressor mflr a5 // &ppcbxx: f_unfilter ld a6,0(sp) // sp at execve call zfind // a6= &env @@ -86,7 +85,7 @@ L90: addi a3,a3,szElf64_Ehdr sub a1,a1,a3 add a0,r29,a3 // &{l_info; p_info; b_info} - addi sp,sp,-(LINKAREA+OVERHEAD) + addi sp,sp,-(SZ_FRAME+OVERHEAD) lwz a3,sz_unc+sz_p_info+sz_l_info(a0) // sz_elf_headers call upx_main // Out: a0= entry /* entry= upx_main(l_info *a0, total_size a1, Elf64_Ehdr *a2, sz_ehdr a3, @@ -100,41 +99,41 @@ L90: mtlr r31 // entry address -// lmw r2,4+LINKAREA+OVERHEAD(sp) // restore registers r2 thru r31 32bits load +// lmw r2,4+SZ_FRAME+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) - ld 5,5*8-8+LINKAREA+OVERHEAD(sp) - ld 6,6*8-8+LINKAREA+OVERHEAD(sp) - ld 7,7*8-8+LINKAREA+OVERHEAD(sp) - ld 8,8*8-8+LINKAREA+OVERHEAD(sp) - ld 9,9*8-8+LINKAREA+OVERHEAD(sp) - ld 10,10*8-8+LINKAREA+OVERHEAD(sp) - ld 11,11*8-8+LINKAREA+OVERHEAD(sp) - ld 12,12*8-8+LINKAREA+OVERHEAD(sp) - ld 13,13*8-8+LINKAREA+OVERHEAD(sp) - ld 14,14*8-8+LINKAREA+OVERHEAD(sp) - ld 15,15*8-8+LINKAREA+OVERHEAD(sp) - ld 16,16*8-8+LINKAREA+OVERHEAD(sp) - ld 17,17*8-8+LINKAREA+OVERHEAD(sp) - ld 18,18*8-8+LINKAREA+OVERHEAD(sp) - ld 19,19*8-8+LINKAREA+OVERHEAD(sp) - ld 20,20*8-8+LINKAREA+OVERHEAD(sp) - ld 21,21*8-8+LINKAREA+OVERHEAD(sp) - ld 22,22*8-8+LINKAREA+OVERHEAD(sp) - ld 23,23*8-8+LINKAREA+OVERHEAD(sp) - ld 24,24*8-8+LINKAREA+OVERHEAD(sp) - ld 25,25*8-8+LINKAREA+OVERHEAD(sp) - ld 26,26*8-8+LINKAREA+OVERHEAD(sp) - ld 27,27*8-8+LINKAREA+OVERHEAD(sp) - ld 28,28*8-8+LINKAREA+OVERHEAD(sp) - ld 29,29*8-8+LINKAREA+OVERHEAD(sp) - ld 30,30*8-8+LINKAREA+OVERHEAD(sp) - ld 31,31*8-8+LINKAREA+OVERHEAD(sp) + ld 2,2*8-8+SZ_FRAME+OVERHEAD(sp) + ld 3,3*8-8+SZ_FRAME+OVERHEAD(sp) + ld 4,4*8-8+SZ_FRAME+OVERHEAD(sp) + ld 5,5*8-8+SZ_FRAME+OVERHEAD(sp) + ld 6,6*8-8+SZ_FRAME+OVERHEAD(sp) + ld 7,7*8-8+SZ_FRAME+OVERHEAD(sp) + ld 8,8*8-8+SZ_FRAME+OVERHEAD(sp) + ld 9,9*8-8+SZ_FRAME+OVERHEAD(sp) + ld 10,10*8-8+SZ_FRAME+OVERHEAD(sp) + ld 11,11*8-8+SZ_FRAME+OVERHEAD(sp) + ld 12,12*8-8+SZ_FRAME+OVERHEAD(sp) + ld 13,13*8-8+SZ_FRAME+OVERHEAD(sp) + ld 14,14*8-8+SZ_FRAME+OVERHEAD(sp) + ld 15,15*8-8+SZ_FRAME+OVERHEAD(sp) + ld 16,16*8-8+SZ_FRAME+OVERHEAD(sp) + ld 17,17*8-8+SZ_FRAME+OVERHEAD(sp) + ld 18,18*8-8+SZ_FRAME+OVERHEAD(sp) + ld 19,19*8-8+SZ_FRAME+OVERHEAD(sp) + ld 20,20*8-8+SZ_FRAME+OVERHEAD(sp) + ld 21,21*8-8+SZ_FRAME+OVERHEAD(sp) + ld 22,22*8-8+SZ_FRAME+OVERHEAD(sp) + ld 23,23*8-8+SZ_FRAME+OVERHEAD(sp) + ld 24,24*8-8+SZ_FRAME+OVERHEAD(sp) + ld 25,25*8-8+SZ_FRAME+OVERHEAD(sp) + ld 26,26*8-8+SZ_FRAME+OVERHEAD(sp) + ld 27,27*8-8+SZ_FRAME+OVERHEAD(sp) + ld 28,28*8-8+SZ_FRAME+OVERHEAD(sp) + ld 29,29*8-8+SZ_FRAME+OVERHEAD(sp) + ld 30,30*8-8+SZ_FRAME+OVERHEAD(sp) + ld 31,31*8-8+SZ_FRAME+OVERHEAD(sp) - ld r1,LINKAREA+OVERHEAD(sp) // restore r1; deallocate space + ld r1,SZ_FRAME+OVERHEAD(sp) // restore r1; deallocate space mflr 12 // load ld.so.2 address ret // enter /lib/ld.so.1 diff --git a/src/stub/tmp/powerpc64le-darwin.macho-fold.map b/src/stub/tmp/powerpc64le-darwin.macho-fold.map index a3b753ce..9ee41531 100644 --- a/src/stub/tmp/powerpc64le-darwin.macho-fold.map +++ b/src/stub/tmp/powerpc64le-darwin.macho-fold.map @@ -70,54 +70,54 @@ LOAD tmp/powerpc64le-darwin.macho-main.o .plt.got *(.plt.got) -.text 0x0000000008048000 0x928 +.text 0x0000000008048000 0x92c *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) - .text 0x0000000008048000 0x1d8 tmp/powerpc64le-darwin.macho-fold.o + .text 0x0000000008048000 0x1dc tmp/powerpc64le-darwin.macho-fold.o 0x0000000008048000 _start - 0x00000000080480e4 pread - 0x00000000080480f4 mmap - 0x000000000804810c exit - 0x0000000008048114 read - 0x000000000804811c open - 0x0000000008048124 close - 0x000000000804812c mprotect - 0x0000000008048134 _savegpr0_14 - 0x0000000008048138 _savegpr0_15 - 0x000000000804813c _savegpr0_16 - 0x0000000008048140 _savegpr0_17 - 0x0000000008048144 _savegpr0_18 - 0x0000000008048148 _savegpr0_19 - 0x000000000804814c _savegpr0_20 - 0x0000000008048150 _savegpr0_21 - 0x0000000008048154 _savegpr0_22 - 0x0000000008048158 _savegpr0_23 - 0x000000000804815c _savegpr0_24 - 0x0000000008048160 _savegpr0_25 - 0x0000000008048164 _savegpr0_26 - 0x0000000008048168 _savegpr0_27 - 0x000000000804816c _savegpr0_28 - 0x0000000008048170 _savegpr0_29 - 0x0000000008048184 _restgpr0_14 - 0x0000000008048188 _restgpr0_15 - 0x000000000804818c _restgpr0_16 - 0x0000000008048190 _restgpr0_17 - 0x0000000008048194 _restgpr0_18 - 0x0000000008048198 _restgpr0_19 - 0x000000000804819c _restgpr0_20 - 0x00000000080481a0 _restgpr0_21 - 0x00000000080481a4 _restgpr0_22 - 0x00000000080481a8 _restgpr0_23 - 0x00000000080481ac _restgpr0_24 - 0x00000000080481b0 _restgpr0_25 - 0x00000000080481b4 _restgpr0_26 - 0x00000000080481b8 _restgpr0_27 - 0x00000000080481bc _restgpr0_28 - 0x00000000080481c0 _restgpr0_29 - .text 0x00000000080481d8 0x750 tmp/powerpc64le-darwin.macho-main.o + 0x00000000080480e8 pread + 0x00000000080480f8 mmap + 0x0000000008048110 exit + 0x0000000008048118 read + 0x0000000008048120 open + 0x0000000008048128 close + 0x0000000008048130 mprotect + 0x0000000008048138 _savegpr0_14 + 0x000000000804813c _savegpr0_15 + 0x0000000008048140 _savegpr0_16 + 0x0000000008048144 _savegpr0_17 + 0x0000000008048148 _savegpr0_18 + 0x000000000804814c _savegpr0_19 + 0x0000000008048150 _savegpr0_20 + 0x0000000008048154 _savegpr0_21 + 0x0000000008048158 _savegpr0_22 + 0x000000000804815c _savegpr0_23 + 0x0000000008048160 _savegpr0_24 + 0x0000000008048164 _savegpr0_25 + 0x0000000008048168 _savegpr0_26 + 0x000000000804816c _savegpr0_27 + 0x0000000008048170 _savegpr0_28 + 0x0000000008048174 _savegpr0_29 + 0x0000000008048188 _restgpr0_14 + 0x000000000804818c _restgpr0_15 + 0x0000000008048190 _restgpr0_16 + 0x0000000008048194 _restgpr0_17 + 0x0000000008048198 _restgpr0_18 + 0x000000000804819c _restgpr0_19 + 0x00000000080481a0 _restgpr0_20 + 0x00000000080481a4 _restgpr0_21 + 0x00000000080481a8 _restgpr0_22 + 0x00000000080481ac _restgpr0_23 + 0x00000000080481b0 _restgpr0_24 + 0x00000000080481b4 _restgpr0_25 + 0x00000000080481b8 _restgpr0_26 + 0x00000000080481bc _restgpr0_27 + 0x00000000080481c0 _restgpr0_28 + 0x00000000080481c4 _restgpr0_29 + .text 0x00000000080481dc 0x750 tmp/powerpc64le-darwin.macho-main.o *(.gnu.warning) .fini @@ -148,7 +148,7 @@ LOAD tmp/powerpc64le-darwin.macho-main.o .exception_ranges *(.exception_ranges .exception_ranges*) - 0x0000000008049928 . = DATA_SEGMENT_ALIGN (0x1000, 0x1000) + 0x000000000804992c . = DATA_SEGMENT_ALIGN (0x1000, 0x1000) .eh_frame *(.eh_frame) @@ -170,18 +170,18 @@ LOAD tmp/powerpc64le-darwin.macho-main.o *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) -.preinit_array 0x0000000008049928 0x0 +.preinit_array 0x000000000804992c 0x0 [!provide] PROVIDE (__preinit_array_start, .) *(.preinit_array) [!provide] PROVIDE (__preinit_array_end, .) -.init_array 0x0000000008049928 0x0 +.init_array 0x000000000804992c 0x0 [!provide] PROVIDE (__init_array_start, .) *(SORT(.init_array.*) SORT(.ctors.*)) *(.init_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .ctors) [!provide] PROVIDE (__init_array_end, .) -.fini_array 0x0000000008049928 0x0 +.fini_array 0x000000000804992c 0x0 [!provide] PROVIDE (__fini_array_start, .) *(SORT(.fini_array.*) SORT(.dtors.*)) *(.fini_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .dtors) @@ -214,44 +214,44 @@ LOAD tmp/powerpc64le-darwin.macho-main.o .got *(.got) *(.igot) - 0x0000000008049928 . = DATA_SEGMENT_RELRO_END (., (SIZEOF (.got.plt) >= 0xc)?0xc:0x0) + 0x000000000804992c . = DATA_SEGMENT_RELRO_END (., (SIZEOF (.got.plt) >= 0xc)?0xc:0x0) -.got.plt 0x0000000008049928 0x0 +.got.plt 0x000000000804992c 0x0 *(.got.plt) *(.igot.plt) -.data 0x0000000008049928 0x0 +.data 0x000000000804992c 0x0 *(.data .data.* .gnu.linkonce.d.*) - .data 0x0000000008049928 0x0 tmp/powerpc64le-darwin.macho-fold.o - .data 0x0000000008049928 0x0 tmp/powerpc64le-darwin.macho-main.o + .data 0x000000000804992c 0x0 tmp/powerpc64le-darwin.macho-fold.o + .data 0x000000000804992c 0x0 tmp/powerpc64le-darwin.macho-main.o -.toc 0x0000000008049928 0x0 - .toc 0x0000000008049928 0x0 tmp/powerpc64le-darwin.macho-main.o +.toc 0x000000000804992c 0x0 + .toc 0x000000000804992c 0x0 tmp/powerpc64le-darwin.macho-main.o -.opd 0x0000000008049928 0x40 - .opd 0x0000000008049928 0x40 tmp/powerpc64le-darwin.macho-main.o - 0x0000000008049958 upx_main +.opd 0x0000000008049930 0x40 + .opd 0x0000000008049930 0x40 tmp/powerpc64le-darwin.macho-main.o + 0x0000000008049960 upx_main .data1 *(.data1) - 0x0000000008049968 _edata = . + 0x0000000008049970 _edata = . [!provide] PROVIDE (edata, .) - 0x0000000008049968 . = . - 0x0000000008049968 __bss_start = . + 0x0000000008049970 . = . + 0x0000000008049970 __bss_start = . -.bss 0x0000000008049968 0x0 +.bss 0x0000000008049970 0x0 *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x0000000008049968 0x0 tmp/powerpc64le-darwin.macho-fold.o - .bss 0x0000000008049968 0x0 tmp/powerpc64le-darwin.macho-main.o + .bss 0x0000000008049970 0x0 tmp/powerpc64le-darwin.macho-fold.o + .bss 0x0000000008049970 0x0 tmp/powerpc64le-darwin.macho-main.o *(COMMON) - 0x0000000008049968 . = ALIGN ((. != 0x0)?0x4:0x1) - 0x0000000008049968 . = ALIGN (0x4) - 0x0000000008049968 . = SEGMENT_START ("ldata-segment", .) - 0x0000000008049968 . = ALIGN (0x4) - 0x0000000008049968 _end = . + 0x0000000008049970 . = ALIGN ((. != 0x0)?0x4:0x1) + 0x0000000008049970 . = ALIGN (0x4) + 0x0000000008049970 . = SEGMENT_START ("ldata-segment", .) + 0x0000000008049970 . = ALIGN (0x4) + 0x0000000008049970 _end = . [!provide] PROVIDE (end, .) - 0x0000000008049968 . = DATA_SEGMENT_END (.) + 0x0000000008049970 . = DATA_SEGMENT_END (.) .stab *(.stab)