arm64 --nrv2d instruction confusion
https://github.com/upx/upx/issues/806 ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile Section C6.2.47, page C6-595 (note the 'invert'!) CINC <Wd>, <Wn>, <cond> is equivalent to CSINC <Wd>, <Wn>, <Wn>, invert(<cond>) modified: src/stub/src/arch/arm64/v8/nrv2d_d32.S modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh modified: src/stub/arm64-darwin.macho-entry.h modified: src/stub/arm64-linux.elf-entry.h modified: src/stub/arm64-linux.elf-so_fold.h modified: src/stub/arm64-linux.shlib-init.h modified: src/stub/arm64-win64.pe.h
This commit is contained in:
Generated
+3
-3
@@ -33,8 +33,8 @@
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_ARM64_DARWIN_MACHO_ENTRY_SIZE 7365
|
||||
#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0xb6c76f2b
|
||||
#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0x34c5965d
|
||||
#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0x1bf86f1b
|
||||
#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0xb61e8421
|
||||
|
||||
unsigned char stub_arm64_darwin_macho_entry[7365] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@@ -86,7 +86,7 @@ unsigned char stub_arm64_darwin_macho_entry[7365] = {
|
||||
/* 0x02e0 */ 2, 0, 0, 20,226,255,255,151, 33, 0, 1, 58,224,255,255,151,
|
||||
/* 0x02f0 */ 33, 0, 1, 58,225, 0, 0, 84, 33, 0,128, 82,220,255,255,151,
|
||||
/* 0x0300 */ 33, 0, 1, 58,218,255,255,151,163,255,255, 84, 33, 8, 0, 17,
|
||||
/* 0x0310 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 52,129, 26, 67, 0, 64, 57,
|
||||
/* 0x0310 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 36,129, 26, 67, 0, 64, 57,
|
||||
/* 0x0320 */ 67,200,101, 56, 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,
|
||||
/* 0x0330 */ 215,255,255, 23, 1, 64, 33,139,225, 11,190,169,227,123, 1,169,
|
||||
/* 0x0340 */ 5, 0,128, 18, 4, 0,176, 82, 52, 0, 0, 20,228,123, 65,169,
|
||||
|
||||
Generated
+3
-3
@@ -33,8 +33,8 @@
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 7437
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0x90057585
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x2ca610ba
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0xf1277575
|
||||
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x3732046d
|
||||
|
||||
unsigned char stub_arm64_linux_elf_entry[7437] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@@ -87,7 +87,7 @@ unsigned char stub_arm64_linux_elf_entry[7437] = {
|
||||
/* 0x02f0 */ 33, 0, 1, 58,224,255,255,151, 33, 0, 1, 58,225, 0, 0, 84,
|
||||
/* 0x0300 */ 33, 0,128, 82,220,255,255,151, 33, 0, 1, 58,218,255,255,151,
|
||||
/* 0x0310 */ 163,255,255, 84, 33, 8, 0, 17, 33, 4, 0, 17,191, 0, 20, 49,
|
||||
/* 0x0320 */ 33, 52,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56,
|
||||
/* 0x0320 */ 33, 36,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56,
|
||||
/* 0x0330 */ 33, 4, 0,113,161,255,255, 84,215,255,255, 23, 1, 64, 33,139,
|
||||
/* 0x0340 */ 225, 11,190,169,227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82,
|
||||
/* 0x0350 */ 52, 0, 0, 20,228,123, 65,169,225, 15,194,168, 0, 0, 1,203,
|
||||
|
||||
Generated
+3
-3
@@ -33,8 +33,8 @@
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_SIZE 16470
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_ADLER32 0xa5255ed2
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_CRC32 0x6f40b8e7
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_ADLER32 0x7b285ec2
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_CRC32 0x0dde2064
|
||||
|
||||
unsigned char stub_arm64_linux_elf_so_fold[16470] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@@ -256,7 +256,7 @@ unsigned char stub_arm64_linux_elf_so_fold[16470] = {
|
||||
/* 0x0d80 */ 2, 0, 0, 20,226,255,255,151, 33, 0, 1, 58,224,255,255,151,
|
||||
/* 0x0d90 */ 33, 0, 1, 58,225, 0, 0, 84, 33, 0,128, 82,220,255,255,151,
|
||||
/* 0x0da0 */ 33, 0, 1, 58,218,255,255,151,163,255,255, 84, 33, 8, 0, 17,
|
||||
/* 0x0db0 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 52,129, 26, 67, 0, 64, 57,
|
||||
/* 0x0db0 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 36,129, 26, 67, 0, 64, 57,
|
||||
/* 0x0dc0 */ 67,200,101, 56, 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,
|
||||
/* 0x0dd0 */ 215,255,255, 23, 1, 64, 33,139,225, 11,190,169,227,123, 1,169,
|
||||
/* 0x0de0 */ 5, 0,128, 18, 4, 0,176, 82, 52, 0, 0, 20,228,123, 65,169,
|
||||
|
||||
Generated
+3
-3
@@ -33,8 +33,8 @@
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_ARM64_LINUX_SHLIB_INIT_SIZE 7923
|
||||
#define STUB_ARM64_LINUX_SHLIB_INIT_ADLER32 0x70502fb3
|
||||
#define STUB_ARM64_LINUX_SHLIB_INIT_CRC32 0x41670c6c
|
||||
#define STUB_ARM64_LINUX_SHLIB_INIT_ADLER32 0xb3122fa3
|
||||
#define STUB_ARM64_LINUX_SHLIB_INIT_CRC32 0xb5f30aee
|
||||
|
||||
unsigned char stub_arm64_linux_shlib_init[7923] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@@ -87,7 +87,7 @@ unsigned char stub_arm64_linux_shlib_init[7923] = {
|
||||
/* 0x02f0 */ 33, 0, 1, 58,224,255,255,151, 33, 0, 1, 58,225, 0, 0, 84,
|
||||
/* 0x0300 */ 33, 0,128, 82,220,255,255,151, 33, 0, 1, 58,218,255,255,151,
|
||||
/* 0x0310 */ 163,255,255, 84, 33, 8, 0, 17, 33, 4, 0, 17,191, 0, 20, 49,
|
||||
/* 0x0320 */ 33, 52,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56,
|
||||
/* 0x0320 */ 33, 36,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56,
|
||||
/* 0x0330 */ 33, 4, 0,113,161,255,255, 84,215,255,255, 23, 1, 64, 33,139,
|
||||
/* 0x0340 */ 225, 11,190,169,227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82,
|
||||
/* 0x0350 */ 52, 0, 0, 20,228,123, 65,169,225, 15,194,168, 0, 0, 1,203,
|
||||
|
||||
Generated
+3
-3
@@ -33,8 +33,8 @@
|
||||
/* clang-format off */
|
||||
|
||||
#define STUB_ARM64_WIN64_PE_SIZE 6445
|
||||
#define STUB_ARM64_WIN64_PE_ADLER32 0x85ff67f0
|
||||
#define STUB_ARM64_WIN64_PE_CRC32 0xea750c60
|
||||
#define STUB_ARM64_WIN64_PE_ADLER32 0x20b067e0
|
||||
#define STUB_ARM64_WIN64_PE_CRC32 0x6272f953
|
||||
|
||||
unsigned char stub_arm64_win64_pe[6445] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@@ -82,7 +82,7 @@ unsigned char stub_arm64_win64_pe[6445] = {
|
||||
/* 0x02a0 */ 2, 0, 0, 20,226,255,255,151, 33, 0, 1, 58,224,255,255,151,
|
||||
/* 0x02b0 */ 33, 0, 1, 58,225, 0, 0, 84, 33, 0,128, 82,220,255,255,151,
|
||||
/* 0x02c0 */ 33, 0, 1, 58,218,255,255,151,163,255,255, 84, 33, 8, 0, 17,
|
||||
/* 0x02d0 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 52,129, 26, 67, 0, 64, 57,
|
||||
/* 0x02d0 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 36,129, 26, 67, 0, 64, 57,
|
||||
/* 0x02e0 */ 67,200,101, 56, 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,
|
||||
/* 0x02f0 */ 215,255,255, 23,254, 15, 31,248,226, 15,191,169, 7, 64, 33,139,
|
||||
/* 0x0300 */ 5, 0,128, 18, 4, 0,176, 82, 45, 0, 0, 20,227, 19,193,168,
|
||||
|
||||
@@ -172,7 +172,7 @@ lenmore_n2d:
|
||||
gotlen_n2d: // 'cmn': add the inputs, set condition codes, discard the sum
|
||||
ADD2(len,#1) // 1..3 ==> 2..4; 4.. ==> 5..
|
||||
cmn off,#5<<8 // displ<=M2_MAX_OFFSET ==> no increment
|
||||
csinc len,len,len,cc // too far away, so minimum match length is 3
|
||||
cinc len,len,cc // too far away, so minimum match length is 3
|
||||
#if 1==SAFE /*{*/
|
||||
ldr tmp,[sp,#sp_DST0]
|
||||
SUB2( tmp,dst)
|
||||
|
||||
Reference in New Issue
Block a user