FILTER_ID was wrong for arm64-linux.shlib and arm64-darwin.macho.

https://github.com/upx/upx/issues/100  (partial)
	modified:   stub/src/arm64-darwin.macho-fold.S
	modified:   stub/src/arm64-linux.shlib-init.S
	modified:   p_mach.cpp

	modified:   stub/arm64-darwin.macho-fold.h
	modified:   stub/arm64-linux.shlib-init.h
This commit is contained in:
John Reiser 2017-08-25 12:51:33 -07:00
parent f4947cc2ae
commit 96433b4e39
5 changed files with 10 additions and 10 deletions

View File

@ -223,7 +223,7 @@ int const *PackMachARMEL::getFilters() const
int const *PackMachARM64EL::getFilters() const
{
static const int filters[] = { 0x51, FT_END };
static const int filters[] = { 0x52, FT_END };
return filters;
}

View File

@ -32,8 +32,8 @@
#define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 1920
#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0x2900c991
#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0xcc0bdf2e
#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0x6158c999
#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0x39554d8d
unsigned char stub_arm64_darwin_macho_fold[1920] = {
/* 0x0000 */ 97, 1, 64,249,231, 3, 4,145, 96, 65, 33,203, 3, 24, 64,185,
@ -43,7 +43,7 @@ unsigned char stub_arm64_darwin_macho_fold[1920] = {
/* 0x0040 */ 244, 87, 74,169,242, 79, 73,169,240, 71, 72,169,238, 63, 71,169,
/* 0x0050 */ 236, 55, 70,169,234, 47, 69,169,232, 39, 68,169,230, 31, 67,169,
/* 0x0060 */ 228, 23, 66,169,226, 15, 65,169,224, 7,207,168,192, 3, 31,214,
/* 0x0070 */ 99, 28, 0, 18,127, 64, 1,113, 1, 2, 0, 84, 33,124, 2, 83,
/* 0x0070 */ 99, 28, 0, 18,127, 72, 1,113, 1, 2, 0, 84, 33,124, 2, 83,
/* 0x0080 */ 192, 1, 0,180,161, 1, 0, 52, 33, 4, 0, 81, 2, 88, 97,184,
/* 0x0090 */ 67,124, 26, 83,127,148, 0,113,193, 0, 0, 84, 67, 20, 6, 18,
/* 0x00a0 */ 66, 0, 1, 75, 66,100, 0, 18, 66, 0, 3, 42, 2, 88, 33,184,

View File

@ -32,8 +32,8 @@
#define STUB_ARM64_LINUX_SHLIB_INIT_SIZE 8113
#define STUB_ARM64_LINUX_SHLIB_INIT_ADLER32 0x54c80b7d
#define STUB_ARM64_LINUX_SHLIB_INIT_CRC32 0xf51cd9f5
#define STUB_ARM64_LINUX_SHLIB_INIT_ADLER32 0xb9f80b85
#define STUB_ARM64_LINUX_SHLIB_INIT_CRC32 0x70c58bbc
unsigned char stub_arm64_linux_shlib_init[8113] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -340,7 +340,7 @@ unsigned char stub_arm64_linux_shlib_init[8113] = {
/* 0x12d0 */ 0,145,255, 67, 0,209, 36, 4, 64,185, 33, 48, 0,145, 33, 0,
/* 0x12e0 */ 4,139, 36, 68, 64,184, 5, 44, 12, 83,165,124, 22, 83,132, 8,
/* 0x12f0 */ 5, 11, 0, 8, 5,203,224, 19,191,169,132, 8, 5, 75, 0, 8,
/* 0x1300 */ 5,139, 16, 0, 0,148, 99, 28, 0, 18,127, 64, 1,113,129, 1,
/* 0x1300 */ 5,139, 16, 0, 0,148, 99, 28, 0, 18,127, 72, 1,113,129, 1,
/* 0x1310 */ 0, 84, 33,252, 66,211, 65, 1, 0,180, 33, 4, 0,209, 2,120,
/* 0x1320 */ 97,184, 67,120, 26, 83,127, 20, 0,113,129, 0, 0, 84, 66, 0,
/* 0x1330 */ 1, 75, 98, 20, 26, 83, 2,120, 33,184, 1,255,255,181,192, 3,

View File

@ -99,11 +99,11 @@ f_unfilter: // (char *ptr, uint len, uint cto, uint fid)
t2 .req w3
#ifndef FILTER_ID /*{*/
#define FILTER_ID 0x50 /* little-endian */
#define FILTER_ID 0x52 /* little-endian */
#endif /*}*/
and fid,fid,#0xff
cmp fid,#FILTER_ID // last use of fid
bne unf_ret // no-op if not filter 0x50
bne unf_ret // no-op if not filter 0x52
lsr len,len,#2 // word count
cbz ptr,unf_ret // no-op if ptr is NULL

View File

@ -201,7 +201,7 @@ f_unfilter: // (char *ptr, uint len, uint cto, uint fid)
fid .req w3
#ifndef FILTER_ID /*{*/
#define FILTER_ID 0x50 /* little-endian */
#define FILTER_ID 0x52 /* little-endian */
#endif /*}*/
and fid,fid,#0xff
cmp fid,#FILTER_ID // last use of fid