Enable debugging of RS code under GDB
- Add/integrate GDBJITRegistrar support class for interfacing with GDB
-- Once the GDBJITRegistrar is merged into LLVM trunk (and AOSP upgrades LLVM)
all files GDB* should be removed, and replaced with appropriate includes
- Basic [host|target]-side integration tests
-- host-tests: use bcc driver and clang to verify gdb output
-- target-tests: run skeleton apk on target and verify gdb output
- Add support for optimization_level metadata in bcinfo, libbcc
-- Disabled some LTO passes when optimization_level = 0
-- move register allocator registration after metadata inspection
- Initial version of android-commands.py GDB plugin (for test infrastructure)
-- relevant commands: load-android-app, run-android-app, start-android-app
-- tested versions: gdb (7.2, 7.3), python (2.6, 2.7)
- build 'bcc' driver tool by default in eng builds
Change-Id: I99e0c11c8591c6d911632c1dcc82dd8fbe1244a8
diff --git a/lib/ExecutionEngine/MCCacheReader.cpp b/lib/ExecutionEngine/MCCacheReader.cpp
index 39e567f..a88d4d4 100644
--- a/lib/ExecutionEngine/MCCacheReader.cpp
+++ b/lib/ExecutionEngine/MCCacheReader.cpp
@@ -424,21 +424,25 @@
}
bool MCCacheReader::readObjFile() {
- llvm::SmallVector<char, 1024> mEmittedELFExecutable;
+ if (mpResult->mCachedELFExecutable.size() != 0) {
+ LOGE("Attempted to read cached object into a non-empty script");
+ return false;
+ }
char readBuffer[1024];
int readSize;
while ((readSize = mObjFile->read(readBuffer, 1024)) > 0) {
- mEmittedELFExecutable.append(readBuffer, readBuffer + readSize);
+ mpResult->mCachedELFExecutable.append(readBuffer, readBuffer + readSize);
}
if (readSize != 0) {
LOGE("Read file Error");
return false;
}
- LOGD("Read object file size %d", (int)mEmittedELFExecutable.size());
+ LOGD("Read object file size %d", (int)mpResult->mCachedELFExecutable.size());
mpResult->mRSExecutable =
- rsloaderCreateExec((unsigned char *)&*mEmittedELFExecutable.begin(),
- mEmittedELFExecutable.size(),
+ rsloaderCreateExec((unsigned char *)&*(mpResult->mCachedELFExecutable.begin()),
+ mpResult->mCachedELFExecutable.size(),
&resolveSymbolAdapter, this);
+
return true;
}