From 481be4487912fa9c98ecb13d157d3cc689f6a8bc Mon Sep 17 00:00:00 2001 From: John Reiser Date: Tue, 15 Aug 2006 14:00:35 -0700 Subject: [PATCH] Work around assembler bug: double-indexing by symbolic stride fails. --- src/stub/i386-linux.elf.shell-fold.h | 8 ++++---- src/stub/src/i386-linux.elf.shell-fold.asm | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/stub/i386-linux.elf.shell-fold.h b/src/stub/i386-linux.elf.shell-fold.h index 98c9de7b..21cb8054 100644 --- a/src/stub/i386-linux.elf.shell-fold.h +++ b/src/stub/i386-linux.elf.shell-fold.h @@ -28,8 +28,8 @@ #define LINUX_I386SH_FOLD_SIZE 1194 -#define LINUX_I386SH_FOLD_ADLER32 0xbb9cf7de -#define LINUX_I386SH_FOLD_CRC32 0xd5a101a8 +#define LINUX_I386SH_FOLD_ADLER32 0x63b3f90a +#define LINUX_I386SH_FOLD_CRC32 0xe2bc019d unsigned char linux_i386sh_fold[1194] = { 127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */ @@ -42,8 +42,8 @@ unsigned char linux_i386sh_fold[1194] = { 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 137,230,129,236, 80, 1, 0, 0,137,231,173,171,133,192,117,250, /* 0x 80 */ 173,171,133,192,117,250, 87, 64,106, 82, 89,243,171, 72,171,171, /* 0x 90 */ - 95,173,133,192,145,173,116, 15,131,249, 42,115,244,137, 76, 57, /* 0x a0 */ -248,137, 68, 57,252,235,234,129,236, 0, 10, 0, 0,147,139, 10, /* 0x b0 */ + 95,173,133,192,145,173,116, 15,131,249, 42,115,244,137, 76,207, /* 0x a0 */ +248,137, 68,207,252,235,234,129,236, 0, 10, 0, 0,147,139, 10, /* 0x b0 */ 139, 90, 4,137,198, 96,232,123, 2, 0, 0, 89, 80, 97,129,196, /* 0x c0 */ 0, 10, 0, 0, 89, 90, 82, 65, 86,131,238, 3,102,199, 6, 45, /* 0x d0 */ 99, 65, 86, 65, 82, 81, 87,141,188, 36, 0,245,255,255, 96,137, /* 0x e0 */ diff --git a/src/stub/src/i386-linux.elf.shell-fold.asm b/src/stub/src/i386-linux.elf.shell-fold.asm index d7a24de3..b83f628c 100644 --- a/src/stub/src/i386-linux.elf.shell-fold.asm +++ b/src/stub/src/i386-linux.elf.shell-fold.asm @@ -98,8 +98,8 @@ L30: // distribute existing Elf32_auxv into new table je L40 cmp ecx, AT_NUMBER jae L30 - mov [a_type + sz_auxv*(ecx -1) + edi], ecx - mov [a_val + sz_auxv*(ecx -1) + edi], eax + mov [a_type - sz_auxv + edi + 8*ecx], ecx + mov [a_val - sz_auxv + edi + 8*ecx], eax jmp L30 L40: