Add bccPrepareSharedObject

Unlike bccPrepareExecuteable, bccPrepareSharedObject does not
resolve external symbols; therefore it only generate cache file
not execuable.

Change-Id: I3ef093015a4f54011fbf298123cac2464230b408
diff --git a/lib/ExecutionEngine/MCCacheReader.cpp b/lib/ExecutionEngine/MCCacheReader.cpp
index 82b7cdc..39e567f 100644
--- a/lib/ExecutionEngine/MCCacheReader.cpp
+++ b/lib/ExecutionEngine/MCCacheReader.cpp
@@ -54,9 +54,24 @@
 ScriptCached *MCCacheReader::readCacheFile(FileHandle *objFile,
                                            FileHandle *infoFile,
                                            Script *S) {
+  bool result = checkCacheFile(objFile, infoFile, S)
+             && readPragmaList()
+             && readObjectSlotList()
+             && readObjFile()
+             && readVarNameList()
+             && readFuncNameList()
+             //&& relocate()
+             ;
+
+  return result ? mpResult.take() : NULL;
+}
+
+bool MCCacheReader::checkCacheFile(FileHandle *objFile,
+                                            FileHandle *infoFile,
+                                            Script *S) {
   // Check file handle
   if (!objFile || objFile->getFD() < 0 || !infoFile || infoFile->getFD() < 0) {
-    return NULL;
+    return false;
   }
 
   mObjFile = objFile;
@@ -67,7 +82,7 @@
 
   if (!mpResult) {
     LOGE("Unable to allocate ScriptCached object.\n");
-    return NULL;
+    return false;
   }
 
   bool result = checkFileSize()
@@ -79,15 +94,9 @@
              && checkStringPool()
              && readDependencyTable()
              && checkDependency()
-             && readPragmaList()
-             && readObjectSlotList()
-             && readObjFile()
-             && readVarNameList()
-             && readFuncNameList()
-             //&& relocate()
              ;
 
-  return result ? mpResult.take() : NULL;
+  return result;
 }