Use 20-byte libbcc.so.sha1 to store checksum
Change-Id: I1e66e559918426e995b92785666beb7b6a49869d
diff --git a/lib/ExecutionEngine/Compiler.cpp b/lib/ExecutionEngine/Compiler.cpp
index 9d13039..b849505 100644
--- a/lib/ExecutionEngine/Compiler.cpp
+++ b/lib/ExecutionEngine/Compiler.cpp
@@ -246,8 +246,8 @@
llvm::createLinearScanRegisterAllocator);
#if USE_CACHE
- // Calculate the SHA1 checksum of libbcc and libRS.
- calcFileSHA1(sha1LibBCC_SHA1, pathLibBCC_SHA1);
+ // Read in SHA1 checksum of libbcc and libRS.
+ readSHA1(sha1LibBCC_SHA1, sizeof(sha1LibBCC_SHA1), pathLibBCC_SHA1);
#endif
GlobalInitialized = true;
diff --git a/lib/ExecutionEngine/Sha1Helper.cpp b/lib/ExecutionEngine/Sha1Helper.cpp
index e7e7932..4e9ee07 100644
--- a/lib/ExecutionEngine/Sha1Helper.cpp
+++ b/lib/ExecutionEngine/Sha1Helper.cpp
@@ -30,7 +30,7 @@
namespace bcc {
unsigned char sha1LibBCC_SHA1[20];
-char const *pathLibBCC_SHA1 = "/system/lib/libbcc_sha1.so";
+char const *pathLibBCC_SHA1 = "/system/lib/libbcc.so.sha1";
void calcSHA1(unsigned char *result, char const *data, size_t size) {
SHA1_CTX hashContext;
@@ -81,4 +81,14 @@
SHA1Final(result, &hashContext);
}
+void readSHA1(unsigned char *result, int result_size, char const *filename) {
+ FileHandle file;
+ if (file.open(filename, OpenMode::Read) < 0) {
+ LOGE("Unable to read binary sha1 file %s\n", filename);
+ memset(result, '\0', result_size);
+ return;
+ }
+ file.read((char *)result, result_size);
+}
+
} // namespace bcc
diff --git a/lib/ExecutionEngine/Sha1Helper.h b/lib/ExecutionEngine/Sha1Helper.h
index f53c0ce..08e0cda 100644
--- a/lib/ExecutionEngine/Sha1Helper.h
+++ b/lib/ExecutionEngine/Sha1Helper.h
@@ -28,6 +28,9 @@
void calcSHA1(unsigned char *result, char const *data, size_t size);
void calcFileSHA1(unsigned char *result, char const *filename);
+
+ // Read binary representation of sha1 from filename.
+ void readSHA1(unsigned char *result, int resultsize, char const *filename);
}
#endif // BCC_SHA1HELPER_H