From e06722d12175c03900c55cbbf44f7e6062aa8118 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 25 Mar 2004 06:06:16 +0000 Subject: [PATCH] Finally fixed long-standing reloc bug. committer: mfx 1080194776 +0000 --- src/p_w32pe.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_w32pe.cpp b/src/p_w32pe.cpp index 2abb544b..eb0e4f6a 100644 --- a/src/p_w32pe.cpp +++ b/src/p_w32pe.cpp @@ -1779,7 +1779,7 @@ void PackW32Pe::pack(OutputFile *fo) patch_le32(loader,codesize + 4,"JMPO",ih.entry - upxsection - jmp_pos - 4); } if (big_relocs & 6) - patch_le32(loader,codesize,"DELT", rvamin - ih.imagebase); + patch_le32(loader,codesize,"DELT", 0u - (unsigned) ih.imagebase - rvamin); if (sorelocs && (soimport == 0 || soimport + cimports != crelocs)) patch_le32(loader,codesize,"BREL",crelocs); if (soimport) @@ -1819,7 +1819,7 @@ void PackW32Pe::pack(OutputFile *fo) } const unsigned esi0 = s1addr + ic; - patch_le32(loader,codesize,"EDI0", rvamin - esi0); + patch_le32(loader,codesize,"EDI0", 0u - esi0 + rvamin); patch_le32(loader,codesize,"ESI0", esi0 + ih.imagebase); ic = getLoaderSection("PEMAIN01") + 2 + upxsection;