Revert "Fix the libbcc SHA1 checksum dependency"
This reverts commit 89175b9e4c07df1302374421096d6e1355954ace.
diff --git a/lib/ExecutionEngine/CacheReader.cpp b/lib/ExecutionEngine/CacheReader.cpp
index 136cccd..408b1f7 100644
--- a/lib/ExecutionEngine/CacheReader.cpp
+++ b/lib/ExecutionEngine/CacheReader.cpp
@@ -148,6 +148,14 @@
OBCC_VERSION, mpHeader->version);
return false;
}
+
+ if (memcmp(mpHeader->libbcc_build_checksum, libbcc_build_checksum, 41) != 0) {
+ mpHeader->libbcc_build_checksum[41 - 1] = '\0'; // ensure terminated
+ LOGW("Build checksum mismatch: lib %s cached %s\n", libbcc_build_checksum,
+ mpHeader->libbcc_build_checksum);
+ return false;
+ }
+
return true;
}
diff --git a/lib/ExecutionEngine/CacheWriter.cpp b/lib/ExecutionEngine/CacheWriter.cpp
index 86775a7..ab8dd03 100644
--- a/lib/ExecutionEngine/CacheWriter.cpp
+++ b/lib/ExecutionEngine/CacheWriter.cpp
@@ -93,6 +93,7 @@
// Magic word and version
memcpy(header->magic, OBCC_MAGIC, 4);
memcpy(header->version, OBCC_VERSION, 4);
+ memcpy(header->libbcc_build_checksum, libbcc_build_checksum, 41);
// Machine Integer Type
uint32_t number = 0x00000001;
diff --git a/lib/ExecutionEngine/Compiler.cpp b/lib/ExecutionEngine/Compiler.cpp
index bccf571..78dbb47 100644
--- a/lib/ExecutionEngine/Compiler.cpp
+++ b/lib/ExecutionEngine/Compiler.cpp
@@ -152,6 +152,9 @@
void Compiler::GlobalInitialization() {
if (GlobalInitialized)
return;
+
+ LOGI("LIBBCC BUILD CHECKSUM: %s\n", libbcc_build_checksum);
+
// if (!llvm::llvm_is_multithreaded())
// llvm::llvm_start_multithreaded();
@@ -250,7 +253,10 @@
#if USE_CACHE
// Calculate the SHA1 checksum of libbcc and libRS.
- calcFileSHA1(sha1LibBCC_SHA1, pathLibBCC_SHA1);
+#if USE_LIBBCC_SHA1SUM
+ calcFileSHA1(sha1LibBCC, pathLibBCC);
+#endif
+ calcFileSHA1(sha1LibRS, pathLibRS);
#endif
GlobalInitialized = true;
diff --git a/lib/ExecutionEngine/MCCacheReader.cpp b/lib/ExecutionEngine/MCCacheReader.cpp
index ba1f7fc..2034317 100644
--- a/lib/ExecutionEngine/MCCacheReader.cpp
+++ b/lib/ExecutionEngine/MCCacheReader.cpp
@@ -148,6 +148,14 @@
OBCC_VERSION, mpHeader->version);
return false;
}
+
+ if (memcmp(mpHeader->libbcc_build_checksum, libbcc_build_checksum, 41) != 0) {
+ mpHeader->libbcc_build_checksum[41 - 1] = '\0'; // ensure terminated
+ LOGW("Build checksum mismatch: lib %s cached %s\n", libbcc_build_checksum,
+ mpHeader->libbcc_build_checksum);
+ return false;
+ }
+
return true;
}
diff --git a/lib/ExecutionEngine/MCCacheWriter.cpp b/lib/ExecutionEngine/MCCacheWriter.cpp
index 1250ab7..c2d0d04 100644
--- a/lib/ExecutionEngine/MCCacheWriter.cpp
+++ b/lib/ExecutionEngine/MCCacheWriter.cpp
@@ -90,6 +90,7 @@
// Magic word and version
memcpy(header->magic, OBCC_MAGIC, 4);
memcpy(header->version, OBCC_VERSION, 4);
+ memcpy(header->libbcc_build_checksum, libbcc_build_checksum, 41);
// Machine Integer Type
uint32_t number = 0x00000001;
diff --git a/lib/ExecutionEngine/Script.cpp b/lib/ExecutionEngine/Script.cpp
index 7aa3748..67e59f6 100644
--- a/lib/ExecutionEngine/Script.cpp
+++ b/lib/ExecutionEngine/Script.cpp
@@ -272,7 +272,11 @@
#endif
// Dependencies
- reader.addDependency(BCC_FILE_RESOURCE, pathLibBCC_SHA1, sha1LibBCC_SHA1);
+#if USE_LIBBCC_SHA1SUM
+ reader.addDependency(BCC_FILE_RESOURCE, pathLibBCC, sha1LibBCC);
+#endif
+
+ reader.addDependency(BCC_FILE_RESOURCE, pathLibRS, sha1LibRS);
for (size_t i = 0; i < 2; ++i) {
if (mSourceList[i]) {
@@ -406,10 +410,11 @@
CacheWriter writer;
#endif
-#ifdef TARGET_BUILD
// Dependencies
- writer.addDependency(BCC_FILE_RESOURCE, pathLibBCC_SHA1, sha1LibBCC_SHA1);
+#if USE_LIBBCC_SHA1SUM
+ writer.addDependency(BCC_FILE_RESOURCE, pathLibBCC, sha1LibBCC);
#endif
+ writer.addDependency(BCC_FILE_RESOURCE, pathLibRS, sha1LibRS);
for (size_t i = 0; i < 2; ++i) {
if (mSourceList[i]) {
diff --git a/lib/ExecutionEngine/Sha1Helper.cpp b/lib/ExecutionEngine/Sha1Helper.cpp
index e7e7932..f4589c9 100644
--- a/lib/ExecutionEngine/Sha1Helper.cpp
+++ b/lib/ExecutionEngine/Sha1Helper.cpp
@@ -29,8 +29,14 @@
namespace bcc {
-unsigned char sha1LibBCC_SHA1[20];
-char const *pathLibBCC_SHA1 = "/system/lib/libbcc_sha1.so";
+#if USE_LIBBCC_SHA1SUM
+unsigned char sha1LibBCC[20];
+char const *pathLibBCC = "/system/lib/libbcc.so";
+#endif
+
+unsigned char sha1LibRS[20];
+char const *pathLibRS = "/system/lib/libRS.so";
+
void calcSHA1(unsigned char *result, char const *data, size_t size) {
SHA1_CTX hashContext;
diff --git a/lib/ExecutionEngine/Sha1Helper.h b/lib/ExecutionEngine/Sha1Helper.h
index f53c0ce..5e98036 100644
--- a/lib/ExecutionEngine/Sha1Helper.h
+++ b/lib/ExecutionEngine/Sha1Helper.h
@@ -22,8 +22,13 @@
#include <stddef.h>
namespace bcc {
- extern unsigned char sha1LibBCC_SHA1[20];
- extern char const *pathLibBCC_SHA1;
+#if USE_LIBBCC_SHA1SUM
+ extern unsigned char sha1LibBCC[20];
+ extern char const *pathLibBCC;
+#endif
+
+ extern unsigned char sha1LibRS[20];
+ extern char const *pathLibRS;
void calcSHA1(unsigned char *result, char const *data, size_t size);