When running rebase on multiple DLLs for x86, downwards rollover is now going back to the top of the 64-bit address space, which isn't right for x86 images. This patch should restore the previous behaviour of rolling over (under?) to the top of the 32-bit space instead. I didn't attempt to deal with upwards rollover due to the following comment.

Yaakov
Index: rebase.c
===================================================================
RCS file: /cvs/cygwin-apps/rebase/rebase.c,v
retrieving revision 1.20
diff -u -p -r1.20 rebase.c
--- rebase.c    1 Dec 2013 12:19:07 -0000       1.20
+++ rebase.c    10 Feb 2014 19:04:01 -0000
@@ -1063,6 +1063,12 @@ retry:
       return FALSE;
     }
 
+  /* handle 32-bit rollover */
+  if (down_flag
+      && machine == IMAGE_FILE_MACHINE_I386
+      && *new_image_base > 0xffffffff)
+    *new_image_base = 0x100000000L - new_image_size;
+
 #if defined(__CYGWIN__) || defined(__MSYS__)
   /* Avoid the case that a DLL is rebased into the address space taken
      by the Cygwin DLL.  Only test in down_flag == TRUE case, otherwise

Reply via email to