Code drop from //branches/cupcake/...@124589
diff --git a/tools/dexpreopt/Android.mk b/tools/dexpreopt/Android.mk
index 3988387..40aeee2 100644
--- a/tools/dexpreopt/Android.mk
+++ b/tools/dexpreopt/Android.mk
@@ -14,6 +14,7 @@
# limitations under the License.
#
ifneq ($(TARGET_SIMULATOR),true)
+ifneq ($(DISABLE_DEXPREOPT),true)
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
@@ -33,4 +34,5 @@
$(LOCAL_PATH)/afar/Android.mk
include $(subdir_makefiles)
+endif # !disable_dexpreopt
endif # !sim
diff --git a/tools/dexpreopt/Config.mk b/tools/dexpreopt/Config.mk
index be9876f..58891fa 100644
--- a/tools/dexpreopt/Config.mk
+++ b/tools/dexpreopt/Config.mk
@@ -91,7 +91,7 @@
$(hide) \
PATH=$(HOST_OUT_EXECUTABLES):$$PATH \
$(DEXPREOPT) \
- --kernel prebuilt/android-arm/kernel-qemu \
+ --kernel prebuilt/android-arm/kernel/kernel-qemu \
--ramdisk $(BUILT_DEXPREOPT_RAMDISK) \
--image $(BUILT_SYSTEMIMAGE_UNOPT) \
--system $(PRODUCT_OUT) \
diff --git a/tools/dexpreopt/dexpreopt.py b/tools/dexpreopt/dexpreopt.py
index 74523b1..8a80e06 100755
--- a/tools/dexpreopt/dexpreopt.py
+++ b/tools/dexpreopt/dexpreopt.py
@@ -520,7 +520,11 @@
buf.fromfile(ep.stdout, 4)
(adler32,) = struct.unpack('>i', buf) # adler32 wants a signed int ('i')
data_adler32 = zlib.adler32(data)
- if adler32 != data_adler32:
+ # Because of a difference in behavior of zlib.adler32 on 32-bit and 64-bit
+ # systems (one returns signed values, the other unsigned), we take the
+ # modulo 2**32 of the checksums, and compare those.
+ # See also http://bugs.python.org/issue1202
+ if (adler32 % (2**32)) != (data_adler32 % (2**32)):
Trace('adler32 does not match: calculated 0x%08x != expected 0x%08x' %
(data_adler32, adler32))
return False