Fix bug: Use same algorithm to generate export var list.
diff --git a/lib/ExecutionEngine/Compiler.cpp b/lib/ExecutionEngine/Compiler.cpp
index b89c0ce..9fa6d4d 100644
--- a/lib/ExecutionEngine/Compiler.cpp
+++ b/lib/ExecutionEngine/Compiler.cpp
@@ -608,19 +608,22 @@
for (int i = 0, e = ExportVarMetadata->getNumOperands(); i != e; i++) {
llvm::MDNode *ExportVar = ExportVarMetadata->getOperand(i);
- if (ExportVar == NULL || ExportVar->getNumOperands() <= 1) {
- continue;
+ if (ExportVar != NULL && ExportVar->getNumOperands() > 1) {
+ llvm::Value *ExportVarNameMDS = ExportVar->getOperand(0);
+ if (ExportVarNameMDS->getValueID() == llvm::Value::MDStringVal) {
+ llvm::StringRef ExportVarName =
+ static_cast<llvm::MDString*>(ExportVarNameMDS)->getString();
+
+ varList.push_back(
+ rsloaderGetSymbolAddress(mRSExecutable,
+ ExportVarName.str().c_str()));
+ LOGD("MC/ Exported Var: %s @ %p\n", ExportVarName.str().c_str(),
+ varList.back());
+ continue;
+ }
}
- llvm::Value *ExportVarNameMDS = ExportVar->getOperand(0);
- if (ExportVarNameMDS->getValueID() == llvm::Value::MDStringVal) {
- llvm::StringRef ExportVarName =
- static_cast<llvm::MDString*>(ExportVarNameMDS)->getString();
-
- varList.push_back(
- rsloaderGetSymbolAddress(mRSExecutable,
- ExportVarName.str().c_str()));
- }
+ varList.push_back(NULL);
}
}