From a503a542407a6d5aa8085b2e5966319fbf75db02 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Wed, 16 May 2007 15:37:22 -0700 Subject: [PATCH] mipsel remember /proc/self/exe in environment --- src/stub/mipsel.r3000-linux.elf-fold.h | 309 +++++++++++---------- src/stub/src/mipsel.r3000-linux.elf-fold.S | 76 +++-- 2 files changed, 212 insertions(+), 173 deletions(-) diff --git a/src/stub/mipsel.r3000-linux.elf-fold.h b/src/stub/mipsel.r3000-linux.elf-fold.h index 1b2ee58e..5070f90a 100644 --- a/src/stub/mipsel.r3000-linux.elf-fold.h +++ b/src/stub/mipsel.r3000-linux.elf-fold.h @@ -1,5 +1,5 @@ /* mipsel.r3000-linux.elf-fold.h - created from mipsel.r3000-linux.elf-fold.bin, 2416 (0x970) bytes + created from mipsel.r3000-linux.elf-fold.bin, 2560 (0xa00) bytes This file is part of the UPX executable compressor. @@ -28,160 +28,169 @@ */ -#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2416 -#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x3f2f1761 -#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0x040f752e +#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2560 +#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x47892e4c +#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xf8bf56d3 -unsigned char stub_mipsel_r3000_linux_elf_fold[2416] = { +unsigned char stub_mipsel_r3000_linux_elf_fold[2560] = { 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 2, 0, 8, 0, 1, 0, 0, 0,128, 0, 16, 0, 52, 0, 0, 0, /* 0x 10 */ 0, 0, 0, 0, 1, 48, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, /* 0x 30 */ - 0, 0, 16, 0,112, 9, 0, 0,112, 9, 0, 0, 5, 0, 0, 0, /* 0x 40 */ - 0, 16, 0, 0, 1, 0, 0, 0,112, 9, 0, 0, 0, 0, 0, 0, /* 0x 50 */ + 0, 0, 16, 0, 0, 10, 0, 0, 0, 10, 0, 0, 5, 0, 0, 0, /* 0x 40 */ + 0, 16, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, /* 0x 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ - 36, 0,167, 39, 0, 0,225,140, 4, 0,231, 36,253,255, 32, 20, /* 0x 80 */ - 33, 72, 0, 0, 0, 0,225,140, 4, 0,231, 36,253,255, 32, 20, /* 0x 90 */ - 33, 64,224, 2, 32,254,189, 39, 33, 48,160, 3,116,255,165, 38, /* 0x a0 */ - 33, 32, 32, 2, 1, 0, 16, 4,188, 0, 2, 36, 35, 16,226, 3, /* 0x b0 */ -196, 7, 66, 36, 9,248, 64, 0, 33,176,224, 0, 0, 2,189, 39, /* 0x c0 */ - 0, 0,193,142, 8, 0,214, 38,253,255, 32, 20, 33,200, 64, 0, /* 0x d0 */ -252,255,193,142, 33, 40, 64, 2, 3, 0, 32, 16, 33, 32, 96, 2, /* 0x e0 */ - 8, 0, 32, 0,251, 15, 2, 36, 8, 0,224, 3, 0, 0, 0, 0, /* 0x f0 */ -250, 15, 2, 36,224,255,189, 39, 16, 0,168,175, 20, 0,169,175, /* 0x 100 */ - 12, 0, 0, 0, 2, 0, 0, 16, 32, 0,189, 39, 12, 0, 0, 0, /* 0x 110 */ - 3, 0,224, 20, 0, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0, /* 0x 120 */ - 8, 0,224, 3,255,255, 2, 36, 8, 0,224, 3, 0, 0, 0, 0, /* 0x 130 */ - 0, 0,130,140, 4, 0,135,140, 43, 16, 70, 0, 3, 0, 64, 20, /* 0x 140 */ -161, 15, 2, 36, 10, 0, 0, 16, 33, 24,192, 0,127, 0, 4, 36, /* 0x 150 */ -238,255, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, /* 0x 160 */ - 0, 0,226,144, 1, 0,231, 36, 0, 0,162,160, 1, 0,165, 36, /* 0x 170 */ -255,255, 99, 36,255,255, 2, 36,249,255, 98, 20, 0, 0, 0, 0, /* 0x 180 */ - 4, 0,131,140, 0, 0,130,140, 33, 24,102, 0, 35, 16, 70, 0, /* 0x 190 */ - 0, 0,130,172, 8, 0,224, 3, 4, 0,131,172,216,255,189, 39, /* 0x 1a0 */ - 28, 0,179,175, 24, 0,178,175, 20, 0,177,175, 16, 0,176,175, /* 0x 1b0 */ - 33,136,128, 0, 33,128,160, 0, 33,152,192, 0, 33,144,224, 0, /* 0x 1c0 */ - 82, 0, 0, 16, 32, 0,191,175, 33, 32, 32, 2,216,255, 17, 4, /* 0x 1d0 */ - 4, 0,165, 39, 4, 0,163,143, 8, 0,166,143, 10, 0, 96, 20, /* 0x 1e0 */ - 88, 33, 2, 60, 85, 80, 66, 52, 10, 0,194, 20,127, 0, 4, 36, /* 0x 1f0 */ - 0, 0, 34,142, 0, 0, 0, 0, 7, 0, 64, 20,161, 15, 2, 36, /* 0x 200 */ - 70, 0, 0, 16, 0, 0, 0, 0, 7, 0,192, 20, 43, 16,102, 0, /* 0x 210 */ -127, 0, 4, 36,161, 15, 2, 36,188,255, 17, 4, 0, 0, 0, 0, /* 0x 220 */ -255,255, 0, 16, 0, 0, 0, 0,250,255, 64, 20,127, 0, 4, 36, /* 0x 230 */ - 0, 0, 2,142, 0, 0, 0, 0, 43, 16, 67, 0,245,255, 64, 20, /* 0x 240 */ - 43, 16,195, 0, 4, 0, 7,142, 39, 0, 64, 16, 33, 40,224, 0, /* 0x 250 */ - 4, 0, 36,142, 12, 0,168,143, 33, 40,192, 0, 0, 0,163,175, /* 0x 260 */ - 33, 48,224, 0, 9,248, 96, 2, 33, 56,160, 3,233,255, 64, 20, /* 0x 270 */ -127, 0, 4, 36, 0, 0,165,143, 4, 0,162,143, 0, 0, 0, 0, /* 0x 280 */ -228,255,162, 20, 0, 0, 0, 0, 13, 0,167,147, 0, 0, 0, 0, /* 0x 290 */ - 13, 0,224, 16, 0, 0, 0, 0, 11, 0, 64, 18, 1, 2,162, 44, /* 0x 2a0 */ - 5, 0, 64, 16, 0, 0, 0, 0, 0, 0, 2,142, 0, 0, 0, 0, /* 0x 2b0 */ - 5, 0, 69, 20, 0, 0, 0, 0, 4, 0, 4,142, 14, 0,166,147, /* 0x 2c0 */ - 9,248, 64, 2, 0, 0, 0, 0, 8, 0,162,143, 4, 0, 35,142, /* 0x 2d0 */ - 0, 0, 36,142, 33, 24, 98, 0, 35, 32,130, 0, 4, 0, 35,174, /* 0x 2e0 */ - 3, 0, 0, 16, 0, 0, 36,174,145,255, 17, 4, 33, 32, 32, 2, /* 0x 2f0 */ - 4, 0,162,143, 4, 0, 3,142, 0, 0, 4,142, 33, 24, 98, 0, /* 0x 300 */ - 35, 32,130, 0, 4, 0, 3,174, 0, 0, 4,174, 0, 0, 2,142, /* 0x 310 */ - 0, 0, 0, 0,172,255, 64, 20, 12, 0, 6, 36, 32, 0,191,143, /* 0x 320 */ - 28, 0,179,143, 24, 0,178,143, 20, 0,177,143, 16, 0,176,143, /* 0x 330 */ - 8, 0,224, 3, 40, 0,189, 39, 14, 0,128, 16, 33, 16,128, 0, /* 0x 340 */ - 1, 0, 4, 36, 0, 0, 67,140, 0, 0, 0, 0, 5, 0,101, 16, /* 0x 350 */ - 0, 0, 0, 0, 5, 0,100, 20, 0, 0, 0, 0, 3, 0,160, 16, /* 0x 360 */ - 0, 0, 0, 0, 8, 0,224, 3, 0, 0, 69,172,245,255, 0, 16, /* 0x 370 */ - 8, 0, 66, 36, 8, 0,224, 3, 0, 0, 0, 0,248,255,189, 39, /* 0x 380 */ - 0, 0,176,175, 4, 0,191,175,235,255, 17, 4, 33,128,192, 0, /* 0x 390 */ - 2, 0, 64, 16, 0, 0, 0, 0, 4, 0, 80,172, 4, 0,191,143, /* 0x 3a0 */ - 0, 0,176,143, 8, 0,224, 3, 8, 0,189, 39,168,255,189, 39, /* 0x 3b0 */ - 80, 0,190,175, 68, 0,181,175, 52, 0,177,175, 84, 0,191,175, /* 0x 3c0 */ - 76, 0,183,175, 72, 0,182,175, 64, 0,180,175, 60, 0,179,175, /* 0x 3d0 */ - 56, 0,178,175, 48, 0,176,175, 28, 0,162,140, 33,168,160, 0, /* 0x 3e0 */ - 28, 0,164,175, 6, 0, 5, 36, 33, 32,224, 0, 32, 0,167,175, /* 0x 3f0 */ - 33,240,192, 0, 36, 0,168,175, 40, 0,169,175,206,255, 17, 4, /* 0x 400 */ - 33,136,162, 2, 3, 0, 64, 20, 0, 0, 0, 0, 4, 0, 0, 16, /* 0x 410 */ -255,255, 2, 52, 4, 0, 66,140, 0, 0, 0, 0,255,255, 66, 36, /* 0x 420 */ - 20, 0,162,175, 16, 0,162,150, 20, 0,164,143, 2, 0, 66, 56, /* 0x 430 */ - 44, 0,163,150, 1, 0, 66, 44, 0, 17, 2, 0, 39, 40, 4, 0, /* 0x 440 */ - 2, 8, 71, 36,255,255, 99, 36, 33, 64, 32, 2,255,255, 4, 36, /* 0x 450 */ - 33, 72, 0, 0, 19, 0, 0, 16, 1, 0, 10, 36, 0, 0, 2,141, /* 0x 460 */ - 0, 0, 0, 0, 14, 0, 74, 20,255,255, 99, 36, 8, 0, 6,141, /* 0x 470 */ - 0, 0, 0, 0, 43, 16,196, 0, 2, 0, 64, 16, 0, 0, 0, 0, /* 0x 480 */ - 33, 32,192, 0, 20, 0, 2,141, 0, 0, 0, 0, 33, 48,194, 0, /* 0x 490 */ - 43, 16, 38, 1, 2, 0, 64, 16, 0, 0, 0, 0, 33, 72,192, 0, /* 0x 4a0 */ - 32, 0, 8, 37,237,255, 97, 4, 36,128,164, 0, 35, 16, 48, 1, /* 0x 4b0 */ - 35, 16, 69, 0,255,255, 66, 36, 36, 40,162, 0, 16, 0,227, 48, /* 0x 4c0 */ - 3, 0, 96, 16, 8, 0,165,175, 8, 0, 0, 16, 12, 0,176,175, /* 0x 4d0 */ - 8, 0,165,143, 33, 32, 0, 2, 33, 48, 0, 0,255,255, 8, 36, /* 0x 4e0 */ - 3,255, 17, 4, 33, 72, 0, 0, 12, 0,162,175, 12, 0,165,143, /* 0x 4f0 */ - 16, 0,160,175,133, 0, 0, 16, 35,184,176, 0, 12, 0,192, 19, /* 0x 500 */ - 6, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, 10, 0, 98, 20, /* 0x 510 */ - 1, 0, 2, 36, 8, 0, 38,142, 32, 0,164,143, 33, 48,230, 2, /* 0x 520 */ -150,255, 17, 4, 3, 0, 5, 36,116, 0, 0, 16, 0, 0, 0, 0, /* 0x 530 */ - 0, 0, 35,142, 1, 0, 2, 36,112, 0, 98, 20, 0, 0, 0, 0, /* 0x 540 */ - 8, 0, 34,142, 24, 0, 35,142, 33,176,226, 2, 81,115, 2, 60, /* 0x 550 */ -128, 24, 3, 0, 64, 98, 66, 52, 6, 16, 98, 0, 20, 0,165,143, /* 0x 560 */ - 16, 0, 36,142, 7, 0, 82, 48, 20, 0, 34,142, 36, 24,197, 2, /* 0x 570 */ - 0, 0,164,175, 4, 0,182,175, 33,160,131, 0, 24, 0,162,175, /* 0x 580 */ -122, 0,192, 19, 35,152,195, 2, 2, 0, 70, 54,255,255, 8, 36, /* 0x 590 */ - 18, 8, 7, 36, 4, 0, 41,142, 33, 32, 96, 2, 35, 72, 35, 1, /* 0x 5a0 */ -211,254, 17, 4, 33, 40,128, 2, 64, 0, 98, 22,127, 0, 4, 36, /* 0x 5b0 */ - 11, 0,192, 19, 4, 0, 66, 50, 4, 0, 64, 16, 0, 0, 0, 0, /* 0x 5c0 */ - 40, 0,167,143, 2, 0, 0, 16, 0, 0, 0, 0, 33, 56, 0, 0, /* 0x 5d0 */ - 28, 0,166,143, 33, 32,192, 3,240,254, 17, 4, 33, 40,160, 3, /* 0x 5e0 */ - 20, 0,164,143, 35, 16, 20, 0, 2, 0, 67, 50, 8, 0, 96, 16, /* 0x 5f0 */ - 36,128, 68, 0, 6, 0, 0, 18, 33, 24,116, 2, 33, 16, 0, 2, /* 0x 600 */ -255,255, 66, 36, 0, 0, 96,160,253,255, 64, 20, 1, 0, 99, 36, /* 0x 610 */ - 43, 0,192, 19, 1, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, /* 0x 620 */ - 28, 0, 98, 20, 33, 32, 96, 2, 24, 0, 34,142, 0, 0, 0, 0, /* 0x 630 */ - 1, 0, 66, 48, 24, 0, 64, 16, 33, 40,128, 2, 20, 0, 36,142, /* 0x 640 */ - 16, 0, 34,142, 8, 0, 35,142, 17, 0,130, 20, 33, 16,131, 0, /* 0x 650 */ - 33, 48, 87, 0, 20, 0,165,143, 35, 16, 6, 0, 36, 16,162, 0, /* 0x 660 */ - 12, 0, 66, 44, 11, 0, 64, 20, 33, 32, 96, 2, 12, 0, 2, 36, /* 0x 670 */ - 0, 0,194,172, 32, 3, 2, 60, 8, 0, 66, 52, 32, 0,164,143, /* 0x 680 */ - 4, 0,194,172, 8, 0,192,172, 60,255, 17, 4, 33, 40, 0, 0, /* 0x 690 */ - 33, 32, 96, 2, 33, 40,128, 2, 33, 48, 64, 2,155,254, 17, 4, /* 0x 6a0 */ - 29, 16, 2, 36, 6, 0, 64, 16,127, 0, 4, 36,161, 15, 2, 36, /* 0x 6b0 */ -150,254, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, /* 0x 6c0 */ - 24, 0,163,143, 33, 16,144, 2, 33, 40,195, 2, 33,128, 98, 2, /* 0x 6d0 */ - 43, 16, 5, 2, 9, 0, 64, 16, 35, 40,176, 0, 33, 48, 64, 2, /* 0x 6e0 */ - 33, 32, 0, 2, 18, 8, 7, 36,255,255, 8, 36,128,254, 17, 4, /* 0x 6f0 */ - 33, 72, 0, 0,237,255, 2, 22,127, 0, 4, 36, 16, 0,164,143, /* 0x 700 */ - 32, 0, 49, 38, 1, 0,132, 36, 16, 0,164,175, 44, 0,162,150, /* 0x 710 */ - 16, 0,165,143, 0, 0, 0, 0, 42, 16,162, 0,119,255, 64, 20, /* 0x 720 */ - 0, 0, 0, 0, 11, 0,192, 19, 3, 0, 2, 36, 16, 0,163,150, /* 0x 730 */ - 0, 0, 0, 0, 7, 0, 98, 16, 0, 0, 0, 0, 12, 0,162,143, /* 0x 740 */ - 8, 0,163,143, 0, 0, 0, 0, 33, 32, 67, 0,111,254, 17, 4, /* 0x 750 */ -205, 15, 2, 36, 36, 0,164,143, 0, 0, 0, 0, 7, 0,128, 16, /* 0x 760 */ - 0, 0, 0, 0, 5, 0, 0, 16, 0, 0,151,172, 28, 0,168,143, /* 0x 770 */ - 33, 48, 64, 2,135,255, 0, 16, 18, 0, 7, 36, 24, 0,162,142, /* 0x 780 */ - 84, 0,191,143, 33, 16,226, 2, 80, 0,190,143, 76, 0,183,143, /* 0x 790 */ - 72, 0,182,143, 68, 0,181,143, 64, 0,180,143, 60, 0,179,143, /* 0x 7a0 */ - 56, 0,178,143, 52, 0,177,143, 48, 0,176,143, 8, 0,224, 3, /* 0x 7b0 */ - 88, 0,189, 39,200,255,189, 39, 52, 0,191,175, 48, 0,180,175, /* 0x 7c0 */ - 44, 0,179,175, 40, 0,178,175, 36, 0,177,175, 32, 0,176,175, /* 0x 7d0 */ - 33,128, 0, 1, 0, 0,136,140, 33, 24,160, 0, 33, 16,128, 0, /* 0x 7e0 */ - 33,144,192, 0, 33,160,224, 0, 4, 0,165, 39, 33, 56, 0, 0, /* 0x 7f0 */ - 33, 48, 0, 2, 20, 0,164, 39, 20, 0,163,175, 33,136, 32, 1, /* 0x 800 */ - 12, 0,163,175, 4, 0,168,175, 24, 0,162,175, 16, 0,162,175, /* 0x 810 */ - 98,254, 17, 4, 8, 0,178,175, 44, 0, 70,150, 33, 32,128, 2, /* 0x 820 */ -214,254, 17, 4, 5, 0, 5, 36, 42, 0, 70,150, 33, 32,128, 2, /* 0x 830 */ - 4, 0, 5, 36,209,254, 17, 4, 52, 0, 83, 38, 8, 0,102,142, /* 0x 840 */ - 33, 32,128, 2, 52, 0,198, 36,204,254, 17, 4, 3, 0, 5, 36, /* 0x 850 */ - 33, 72, 32, 2, 33, 32, 0, 2, 33, 40, 64, 2, 12, 0,166, 39, /* 0x 860 */ - 33, 56,128, 2,209,254, 17, 4, 33, 64,160, 3, 33, 48, 64, 0, /* 0x 870 */ - 33, 32,128, 2, 9, 0, 5, 36,192,254, 17, 4, 33,136, 64, 0, /* 0x 880 */ - 44, 0, 69,150, 42, 0, 0, 16, 33, 32, 0, 0, 0, 0, 99,142, /* 0x 890 */ - 3, 0, 2, 36, 38, 0, 98, 20, 32, 0,115, 38,224,255,115, 38, /* 0x 8a0 */ - 8, 0, 98,142, 0, 0,164,143, 33, 40, 0, 0, 33, 32, 68, 0, /* 0x 8b0 */ - 33, 48, 0, 0, 21,254, 17, 4,165, 15, 2, 36, 9, 0, 64, 4, /* 0x 8c0 */ - 33,128, 64, 0, 33, 32, 64, 0, 33, 40, 64, 2, 0, 2, 6, 36, /* 0x 8d0 */ - 14,254, 17, 4,163, 15, 2, 36, 0, 2, 3, 36, 6, 0, 67, 16, /* 0x 8e0 */ - 33, 56,128, 2,127, 0, 4, 36, 8,254, 17, 4,161, 15, 2, 36, /* 0x 8f0 */ -255,255, 0, 16, 0, 0, 0, 0, 33, 64,160, 3, 33, 72, 0, 0, /* 0x 900 */ -170,254, 17, 4, 33, 48, 0, 0, 0, 0,166,143, 33, 32,128, 2, /* 0x 910 */ - 7, 0, 5, 36,153,254, 17, 4, 33,136, 64, 0, 33, 32, 0, 2, /* 0x 920 */ -250,253, 17, 4,166, 15, 2, 36, 5, 0, 0, 16, 33, 16, 32, 2, /* 0x 930 */ - 42, 16,133, 0,213,255, 64, 20, 1, 0,132, 36, 33, 16, 32, 2, /* 0x 940 */ - 52, 0,191,143, 48, 0,180,143, 44, 0,179,143, 40, 0,178,143, /* 0x 950 */ - 36, 0,177,143, 32, 0,176,143, 8, 0,224, 3, 56, 0,189, 39 /* 0x 960 */ + 32, 0,162, 39, 24,240,189, 39, 33, 24,160, 3, 0, 0, 65,140, /* 0x 80 */ + 4, 0, 66, 36, 0, 0, 97,172, 4, 0, 99, 36,251,255, 32, 20, /* 0x 90 */ + 33,128, 96, 0, 4, 0, 99, 36, 0, 0, 65,140, 4, 0, 66, 36, /* 0x a0 */ + 0, 0, 97,172, 4, 0, 99, 36,251,255, 32, 20, 33,160, 96, 0, /* 0x b0 */ + 0, 0, 65,140, 4, 0, 72,140, 8, 0, 66, 36, 0, 0, 97,172, /* 0x c0 */ + 4, 0,104,172, 8, 0, 99, 36,249,255, 32, 20, 33,176, 96, 0, /* 0x d0 */ + 0, 0, 3,174, 32, 0, 1, 36, 0, 0, 97,160, 1, 0, 97,160, /* 0x e0 */ + 2, 0, 97,160, 61, 0, 1, 36, 3, 0, 97,160,255, 15, 6, 36, /* 0x f0 */ + 4, 0,101, 36, 5, 0, 17, 4, 33, 32,224, 3, 47,112,114,111, /* 0x 100 */ + 99, 47,115,101,108,102, 47,101,120,101, 0, 0,245, 15, 2, 36, /* 0x 110 */ + 12, 0, 0, 0, 2, 0,224, 4, 33, 8,130, 0, 0, 0, 32,160, /* 0x 120 */ + 0,254,189, 39, 33, 72, 0, 0, 33, 64,224, 2, 33, 56,128, 2, /* 0x 130 */ + 33, 48,160, 3,116,255,165, 38, 1, 0, 16, 4, 80, 1, 2, 36, /* 0x 140 */ + 35, 16,226, 3, 84, 8, 66, 36, 9,248, 64, 0, 33, 32, 32, 2, /* 0x 150 */ + 33,200, 64, 0, 0, 2,189, 39,252,255,193,142, 33, 40, 64, 2, /* 0x 160 */ + 3, 0, 32, 16, 33, 32, 96, 2, 8, 0, 32, 0,251, 15, 2, 36, /* 0x 170 */ + 8, 0, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 180 */ +250, 15, 2, 36,224,255,189, 39, 16, 0,168,175, 20, 0,169,175, /* 0x 190 */ + 12, 0, 0, 0, 2, 0, 0, 16, 32, 0,189, 39, 12, 0, 0, 0, /* 0x 1a0 */ + 3, 0,224, 20, 0, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0, /* 0x 1b0 */ + 8, 0,224, 3,255,255, 2, 36, 8, 0,224, 3, 0, 0, 0, 0, /* 0x 1c0 */ + 0, 0,130,140, 4, 0,135,140, 43, 16, 70, 0, 3, 0, 64, 20, /* 0x 1d0 */ +161, 15, 2, 36, 10, 0, 0, 16, 33, 24,192, 0,127, 0, 4, 36, /* 0x 1e0 */ +238,255, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, /* 0x 1f0 */ + 0, 0,226,144, 1, 0,231, 36, 0, 0,162,160, 1, 0,165, 36, /* 0x 200 */ +255,255, 99, 36,255,255, 2, 36,249,255, 98, 20, 0, 0, 0, 0, /* 0x 210 */ + 4, 0,131,140, 0, 0,130,140, 33, 24,102, 0, 35, 16, 70, 0, /* 0x 220 */ + 0, 0,130,172, 8, 0,224, 3, 4, 0,131,172,216,255,189, 39, /* 0x 230 */ + 28, 0,179,175, 24, 0,178,175, 20, 0,177,175, 16, 0,176,175, /* 0x 240 */ + 33,136,128, 0, 33,128,160, 0, 33,152,192, 0, 33,144,224, 0, /* 0x 250 */ + 82, 0, 0, 16, 32, 0,191,175, 33, 32, 32, 2,216,255, 17, 4, /* 0x 260 */ + 4, 0,165, 39, 4, 0,163,143, 8, 0,166,143, 10, 0, 96, 20, /* 0x 270 */ + 88, 33, 2, 60, 85, 80, 66, 52, 10, 0,194, 20,127, 0, 4, 36, /* 0x 280 */ + 0, 0, 34,142, 0, 0, 0, 0, 7, 0, 64, 20,161, 15, 2, 36, /* 0x 290 */ + 70, 0, 0, 16, 0, 0, 0, 0, 7, 0,192, 20, 43, 16,102, 0, /* 0x 2a0 */ +127, 0, 4, 36,161, 15, 2, 36,188,255, 17, 4, 0, 0, 0, 0, /* 0x 2b0 */ +255,255, 0, 16, 0, 0, 0, 0,250,255, 64, 20,127, 0, 4, 36, /* 0x 2c0 */ + 0, 0, 2,142, 0, 0, 0, 0, 43, 16, 67, 0,245,255, 64, 20, /* 0x 2d0 */ + 43, 16,195, 0, 4, 0, 7,142, 39, 0, 64, 16, 33, 40,224, 0, /* 0x 2e0 */ + 4, 0, 36,142, 12, 0,168,143, 33, 40,192, 0, 0, 0,163,175, /* 0x 2f0 */ + 33, 48,224, 0, 9,248, 96, 2, 33, 56,160, 3,233,255, 64, 20, /* 0x 300 */ +127, 0, 4, 36, 0, 0,165,143, 4, 0,162,143, 0, 0, 0, 0, /* 0x 310 */ +228,255,162, 20, 0, 0, 0, 0, 13, 0,167,147, 0, 0, 0, 0, /* 0x 320 */ + 13, 0,224, 16, 0, 0, 0, 0, 11, 0, 64, 18, 1, 2,162, 44, /* 0x 330 */ + 5, 0, 64, 16, 0, 0, 0, 0, 0, 0, 2,142, 0, 0, 0, 0, /* 0x 340 */ + 5, 0, 69, 20, 0, 0, 0, 0, 4, 0, 4,142, 14, 0,166,147, /* 0x 350 */ + 9,248, 64, 2, 0, 0, 0, 0, 8, 0,162,143, 4, 0, 35,142, /* 0x 360 */ + 0, 0, 36,142, 33, 24, 98, 0, 35, 32,130, 0, 4, 0, 35,174, /* 0x 370 */ + 3, 0, 0, 16, 0, 0, 36,174,145,255, 17, 4, 33, 32, 32, 2, /* 0x 380 */ + 4, 0,162,143, 4, 0, 3,142, 0, 0, 4,142, 33, 24, 98, 0, /* 0x 390 */ + 35, 32,130, 0, 4, 0, 3,174, 0, 0, 4,174, 0, 0, 2,142, /* 0x 3a0 */ + 0, 0, 0, 0,172,255, 64, 20, 12, 0, 6, 36, 32, 0,191,143, /* 0x 3b0 */ + 28, 0,179,143, 24, 0,178,143, 20, 0,177,143, 16, 0,176,143, /* 0x 3c0 */ + 8, 0,224, 3, 40, 0,189, 39, 14, 0,128, 16, 33, 16,128, 0, /* 0x 3d0 */ + 1, 0, 4, 36, 0, 0, 67,140, 0, 0, 0, 0, 5, 0,101, 16, /* 0x 3e0 */ + 0, 0, 0, 0, 5, 0,100, 20, 0, 0, 0, 0, 3, 0,160, 16, /* 0x 3f0 */ + 0, 0, 0, 0, 8, 0,224, 3, 0, 0, 69,172,245,255, 0, 16, /* 0x 400 */ + 8, 0, 66, 36, 8, 0,224, 3, 0, 0, 0, 0,248,255,189, 39, /* 0x 410 */ + 0, 0,176,175, 4, 0,191,175,235,255, 17, 4, 33,128,192, 0, /* 0x 420 */ + 2, 0, 64, 16, 0, 0, 0, 0, 4, 0, 80,172, 4, 0,191,143, /* 0x 430 */ + 0, 0,176,143, 8, 0,224, 3, 8, 0,189, 39,168,255,189, 39, /* 0x 440 */ + 80, 0,190,175, 68, 0,181,175, 52, 0,177,175, 84, 0,191,175, /* 0x 450 */ + 76, 0,183,175, 72, 0,182,175, 64, 0,180,175, 60, 0,179,175, /* 0x 460 */ + 56, 0,178,175, 48, 0,176,175, 28, 0,162,140, 33,168,160, 0, /* 0x 470 */ + 28, 0,164,175, 6, 0, 5, 36, 33, 32,224, 0, 32, 0,167,175, /* 0x 480 */ + 33,240,192, 0, 36, 0,168,175, 40, 0,169,175,206,255, 17, 4, /* 0x 490 */ + 33,136,162, 2, 3, 0, 64, 20, 0, 0, 0, 0, 4, 0, 0, 16, /* 0x 4a0 */ +255,255, 2, 52, 4, 0, 66,140, 0, 0, 0, 0,255,255, 66, 36, /* 0x 4b0 */ + 20, 0,162,175, 16, 0,162,150, 20, 0,164,143, 2, 0, 66, 56, /* 0x 4c0 */ + 44, 0,163,150, 1, 0, 66, 44, 0, 17, 2, 0, 39, 40, 4, 0, /* 0x 4d0 */ + 2, 8, 71, 36,255,255, 99, 36, 33, 64, 32, 2,255,255, 4, 36, /* 0x 4e0 */ + 33, 72, 0, 0, 19, 0, 0, 16, 1, 0, 10, 36, 0, 0, 2,141, /* 0x 4f0 */ + 0, 0, 0, 0, 14, 0, 74, 20,255,255, 99, 36, 8, 0, 6,141, /* 0x 500 */ + 0, 0, 0, 0, 43, 16,196, 0, 2, 0, 64, 16, 0, 0, 0, 0, /* 0x 510 */ + 33, 32,192, 0, 20, 0, 2,141, 0, 0, 0, 0, 33, 48,194, 0, /* 0x 520 */ + 43, 16, 38, 1, 2, 0, 64, 16, 0, 0, 0, 0, 33, 72,192, 0, /* 0x 530 */ + 32, 0, 8, 37,237,255, 97, 4, 36,128,164, 0, 35, 16, 48, 1, /* 0x 540 */ + 35, 16, 69, 0,255,255, 66, 36, 36, 40,162, 0, 16, 0,227, 48, /* 0x 550 */ + 3, 0, 96, 16, 8, 0,165,175, 8, 0, 0, 16, 12, 0,176,175, /* 0x 560 */ + 8, 0,165,143, 33, 32, 0, 2, 33, 48, 0, 0,255,255, 8, 36, /* 0x 570 */ + 3,255, 17, 4, 33, 72, 0, 0, 12, 0,162,175, 12, 0,165,143, /* 0x 580 */ + 16, 0,160,175,133, 0, 0, 16, 35,184,176, 0, 12, 0,192, 19, /* 0x 590 */ + 6, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, 10, 0, 98, 20, /* 0x 5a0 */ + 1, 0, 2, 36, 8, 0, 38,142, 32, 0,164,143, 33, 48,230, 2, /* 0x 5b0 */ +150,255, 17, 4, 3, 0, 5, 36,116, 0, 0, 16, 0, 0, 0, 0, /* 0x 5c0 */ + 0, 0, 35,142, 1, 0, 2, 36,112, 0, 98, 20, 0, 0, 0, 0, /* 0x 5d0 */ + 8, 0, 34,142, 24, 0, 35,142, 33,176,226, 2, 81,115, 2, 60, /* 0x 5e0 */ +128, 24, 3, 0, 64, 98, 66, 52, 6, 16, 98, 0, 20, 0,165,143, /* 0x 5f0 */ + 16, 0, 36,142, 7, 0, 82, 48, 20, 0, 34,142, 36, 24,197, 2, /* 0x 600 */ + 0, 0,164,175, 4, 0,182,175, 33,160,131, 0, 24, 0,162,175, /* 0x 610 */ +122, 0,192, 19, 35,152,195, 2, 2, 0, 70, 54,255,255, 8, 36, /* 0x 620 */ + 18, 8, 7, 36, 4, 0, 41,142, 33, 32, 96, 2, 35, 72, 35, 1, /* 0x 630 */ +211,254, 17, 4, 33, 40,128, 2, 64, 0, 98, 22,127, 0, 4, 36, /* 0x 640 */ + 11, 0,192, 19, 4, 0, 66, 50, 4, 0, 64, 16, 0, 0, 0, 0, /* 0x 650 */ + 40, 0,167,143, 2, 0, 0, 16, 0, 0, 0, 0, 33, 56, 0, 0, /* 0x 660 */ + 28, 0,166,143, 33, 32,192, 3,240,254, 17, 4, 33, 40,160, 3, /* 0x 670 */ + 20, 0,164,143, 35, 16, 20, 0, 2, 0, 67, 50, 8, 0, 96, 16, /* 0x 680 */ + 36,128, 68, 0, 6, 0, 0, 18, 33, 24,116, 2, 33, 16, 0, 2, /* 0x 690 */ +255,255, 66, 36, 0, 0, 96,160,253,255, 64, 20, 1, 0, 99, 36, /* 0x 6a0 */ + 43, 0,192, 19, 1, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, /* 0x 6b0 */ + 28, 0, 98, 20, 33, 32, 96, 2, 24, 0, 34,142, 0, 0, 0, 0, /* 0x 6c0 */ + 1, 0, 66, 48, 24, 0, 64, 16, 33, 40,128, 2, 20, 0, 36,142, /* 0x 6d0 */ + 16, 0, 34,142, 8, 0, 35,142, 17, 0,130, 20, 33, 16,131, 0, /* 0x 6e0 */ + 33, 48, 87, 0, 20, 0,165,143, 35, 16, 6, 0, 36, 16,162, 0, /* 0x 6f0 */ + 12, 0, 66, 44, 11, 0, 64, 20, 33, 32, 96, 2, 12, 0, 2, 36, /* 0x 700 */ + 0, 0,194,172, 32, 3, 2, 60, 8, 0, 66, 52, 32, 0,164,143, /* 0x 710 */ + 4, 0,194,172, 8, 0,192,172, 60,255, 17, 4, 33, 40, 0, 0, /* 0x 720 */ + 33, 32, 96, 2, 33, 40,128, 2, 33, 48, 64, 2,155,254, 17, 4, /* 0x 730 */ + 29, 16, 2, 36, 6, 0, 64, 16,127, 0, 4, 36,161, 15, 2, 36, /* 0x 740 */ +150,254, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, /* 0x 750 */ + 24, 0,163,143, 33, 16,144, 2, 33, 40,195, 2, 33,128, 98, 2, /* 0x 760 */ + 43, 16, 5, 2, 9, 0, 64, 16, 35, 40,176, 0, 33, 48, 64, 2, /* 0x 770 */ + 33, 32, 0, 2, 18, 8, 7, 36,255,255, 8, 36,128,254, 17, 4, /* 0x 780 */ + 33, 72, 0, 0,237,255, 2, 22,127, 0, 4, 36, 16, 0,164,143, /* 0x 790 */ + 32, 0, 49, 38, 1, 0,132, 36, 16, 0,164,175, 44, 0,162,150, /* 0x 7a0 */ + 16, 0,165,143, 0, 0, 0, 0, 42, 16,162, 0,119,255, 64, 20, /* 0x 7b0 */ + 0, 0, 0, 0, 11, 0,192, 19, 3, 0, 2, 36, 16, 0,163,150, /* 0x 7c0 */ + 0, 0, 0, 0, 7, 0, 98, 16, 0, 0, 0, 0, 12, 0,162,143, /* 0x 7d0 */ + 8, 0,163,143, 0, 0, 0, 0, 33, 32, 67, 0,111,254, 17, 4, /* 0x 7e0 */ +205, 15, 2, 36, 36, 0,164,143, 0, 0, 0, 0, 7, 0,128, 16, /* 0x 7f0 */ + 0, 0, 0, 0, 5, 0, 0, 16, 0, 0,151,172, 28, 0,168,143, /* 0x 800 */ + 33, 48, 64, 2,135,255, 0, 16, 18, 0, 7, 36, 24, 0,162,142, /* 0x 810 */ + 84, 0,191,143, 33, 16,226, 2, 80, 0,190,143, 76, 0,183,143, /* 0x 820 */ + 72, 0,182,143, 68, 0,181,143, 64, 0,180,143, 60, 0,179,143, /* 0x 830 */ + 56, 0,178,143, 52, 0,177,143, 48, 0,176,143, 8, 0,224, 3, /* 0x 840 */ + 88, 0,189, 39,200,255,189, 39, 52, 0,191,175, 48, 0,180,175, /* 0x 850 */ + 44, 0,179,175, 40, 0,178,175, 36, 0,177,175, 32, 0,176,175, /* 0x 860 */ + 33,128, 0, 1, 0, 0,136,140, 33, 24,160, 0, 33, 16,128, 0, /* 0x 870 */ + 33,144,192, 0, 33,160,224, 0, 4, 0,165, 39, 33, 56, 0, 0, /* 0x 880 */ + 33, 48, 0, 2, 20, 0,164, 39, 20, 0,163,175, 33,136, 32, 1, /* 0x 890 */ + 12, 0,163,175, 4, 0,168,175, 24, 0,162,175, 16, 0,162,175, /* 0x 8a0 */ + 98,254, 17, 4, 8, 0,178,175, 44, 0, 70,150, 33, 32,128, 2, /* 0x 8b0 */ +214,254, 17, 4, 5, 0, 5, 36, 42, 0, 70,150, 33, 32,128, 2, /* 0x 8c0 */ + 4, 0, 5, 36,209,254, 17, 4, 52, 0, 83, 38, 8, 0,102,142, /* 0x 8d0 */ + 33, 32,128, 2, 52, 0,198, 36,204,254, 17, 4, 3, 0, 5, 36, /* 0x 8e0 */ + 33, 72, 32, 2, 33, 32, 0, 2, 33, 40, 64, 2, 12, 0,166, 39, /* 0x 8f0 */ + 33, 56,128, 2,209,254, 17, 4, 33, 64,160, 3, 33, 48, 64, 0, /* 0x 900 */ + 33, 32,128, 2, 9, 0, 5, 36,192,254, 17, 4, 33,136, 64, 0, /* 0x 910 */ + 44, 0, 69,150, 42, 0, 0, 16, 33, 32, 0, 0, 0, 0, 99,142, /* 0x 920 */ + 3, 0, 2, 36, 38, 0, 98, 20, 32, 0,115, 38,224,255,115, 38, /* 0x 930 */ + 8, 0, 98,142, 0, 0,164,143, 33, 40, 0, 0, 33, 32, 68, 0, /* 0x 940 */ + 33, 48, 0, 0, 21,254, 17, 4,165, 15, 2, 36, 9, 0, 64, 4, /* 0x 950 */ + 33,128, 64, 0, 33, 32, 64, 0, 33, 40, 64, 2, 0, 2, 6, 36, /* 0x 960 */ + 14,254, 17, 4,163, 15, 2, 36, 0, 2, 3, 36, 6, 0, 67, 16, /* 0x 970 */ + 33, 56,128, 2,127, 0, 4, 36, 8,254, 17, 4,161, 15, 2, 36, /* 0x 980 */ +255,255, 0, 16, 0, 0, 0, 0, 33, 64,160, 3, 33, 72, 0, 0, /* 0x 990 */ +170,254, 17, 4, 33, 48, 0, 0, 0, 0,166,143, 33, 32,128, 2, /* 0x 9a0 */ + 7, 0, 5, 36,153,254, 17, 4, 33,136, 64, 0, 33, 32, 0, 2, /* 0x 9b0 */ +250,253, 17, 4,166, 15, 2, 36, 5, 0, 0, 16, 33, 16, 32, 2, /* 0x 9c0 */ + 42, 16,133, 0,213,255, 64, 20, 1, 0,132, 36, 33, 16, 32, 2, /* 0x 9d0 */ + 52, 0,191,143, 48, 0,180,143, 44, 0,179,143, 40, 0,178,143, /* 0x 9e0 */ + 36, 0,177,143, 32, 0,176,143, 8, 0,224, 3, 56, 0,189, 39 /* 0x 9f0 */ }; diff --git a/src/stub/src/mipsel.r3000-linux.elf-fold.S b/src/stub/src/mipsel.r3000-linux.elf-fold.S index 9f75f267..46099125 100644 --- a/src/stub/src/mipsel.r3000-linux.elf-fold.S +++ b/src/stub/src/mipsel.r3000-linux.elf-fold.S @@ -48,6 +48,7 @@ sz_b_info= 12 sz_l_info= 12 sz_p_info= 12 +sz_auxv= 8 a_type = 0 # Elf32_auxv_t a_val = 4 @@ -60,7 +61,9 @@ __NR_mprotect = 125+ __NR_Linux __NR_munmap = 91+ __NR_Linux __NR_open = 5+ __NR_Linux __NR_read = 3+ __NR_Linux +__NR_readlink = 85+ __NR_Linux +PATHSIZE=4096 OVERHEAD=2048 MAX_ELF_HDR=512 @@ -76,25 +79,56 @@ BAL=0x04110000 s2= LENU s1= ADRX - sp= -sp_frame + &{argc,argv...,0,env...,0,auxv...,0...,strings} + sp= -sp_frame + &{argc,argv...,0,env...,0,auxv...,0,0,strings} */ fold_begin: - addiu a3,sp,4+ sp_frame # &argv[0] -L10: - lw tmp,0(a3) - addiu a3,a3,4 - bne tmp,zero,L10 # stop when a3= &env[0] - move t1,zero # &f_unfilter -L20: - lw tmp,0(a3) - addiu a3,a3,4 - bne tmp,zero,L20 # stop when a3= &auxv[0] - move t0,s7 # &f_decompress + addiu v0,sp,sp_frame # &argc + addiu sp,-(4+ 4+ PATHSIZE - sp_frame) # alloca: new envp[0], " =", buffer + move v1,sp +L10: # copy argc,argv + lw tmp,0(v0); addiu v0,4 + sw tmp,0(v1); addiu v1,4 + bnez tmp,L10 # stop when v0= &env[0] + move s0,v1 # new &env[0] + addiu v1,4 # leave space for new env[0] +L20: # copy env + lw tmp,0(v0); addiu v0,4 + sw tmp,0(v1); addiu v1,4 + bnez tmp,L20 # stop when v0= &auxv[0] + move s4,v1 # new &auxv[0] +L30: # copy auxv + lw tmp,0(v0); lw t0,4(v0); addiu v0,sz_auxv + sw tmp,0(v1); sw t0,4(v1); addiu v1,sz_auxv + bnez tmp,L30 # stop when v0= &auxv[N] + move s6,v1 # new &auxv[N] - addiu sp,sp,sp_frame - MAX_ELF_HDR # alloca + sw v1,0(s0) # new env[0] + li tmp,' ' + sb tmp,0(v1) # endian neutral! + sb tmp,1(v1) + sb tmp,2(v1) + li tmp,'=' + sb tmp,3(v1) + + li a2,PATHSIZE-1 + addiu a1,v1,4 # &buf[0] + bal 9f + move a0,ra + .asciz "/proc/self/exe" + .balign 4 +9: + li v0,__NR_readlink + syscall + bltz a3,0f + addu tmp,a0,v0 + sb $0,(tmp) # null terminate the path +0: + addiu sp,-MAX_ELF_HDR # alloca + move t1,zero # &f_unfilter + move t0,s7 # &f_decompress + move a3,s4 # new &auxv[0] move a2,sp # &Elf32_Ehdr tmp space addiu a1,s5,-(sz_Ehdr + 2*sz_Phdr + sz_l_info + sz_p_info) - move a0,s1 /* We need a position-independent call of upx_main, which is external. "bal upx_main" cannot be assembled by mipsel-elf-as-20060406. @@ -110,24 +144,20 @@ L20: subu v0,ra,v0 addiu v0,v0,%lo(upx_main) jalr v0 - move s6,a3 # save av + move a0,s1 /* entry= upx_main(b_info *a0, total_size a1, Elf32_Ehdr *a2, Elf32_Auxv_t *a3, f_decompr t0, f_unfilter t1 ) */ - addiu sp,sp, MAX_ELF_HDR # un-alloca -L30: # find end of av - lw tmp,a_type(s6) - addiu s6,s6,8 - bnez tmp,L30 # stop when s6= &auxv_t[NULL] - move jp,v0 # &entry - lw tmp,-8+ a_val(s6) + move jp,v0 # &entry + addiu sp, MAX_ELF_HDR # un-alloca + lw tmp,-sz_auxv+ a_val(s6) move a1,s2 # LENU beqz tmp,L40 # could not make escape hatch move a0,s3 # ADRU jr tmp # goto munmap escape hatch: [syscall; jr jp; nop] li v0,__NR_munmap L40: - jr ra # omit munmap + jr jp # omit munmap nop #if 0 /*{ replaced by macros in include/linux.h because of 'bal' vs gcc */