Rewrite the internal code of get functions.
getExportVars -> getExportVarCount , getExportVarList
getExportFuncs -> getExportFuncCount , getExportFuncList
getPragmas -> getPragmaCount , getPragmaList
getFunctions -> getFuncCount, getFuncNameList
getFunctionBinary -> getFuncBinary
diff --git a/lib/bcc/bcc.cpp b/lib/bcc/bcc.cpp
index 9efa020..a52c8f9 100644
--- a/lib/bcc/bcc.cpp
+++ b/lib/bcc/bcc.cpp
@@ -104,7 +104,7 @@
android::StopWatch compileTimer("bcc: PrepareExecutable time");
#endif
- int result = script->compile();
+ int result = script->prepareExecutable();
if (result)
script->setError(BCC_INVALID_OPERATION);
@@ -116,19 +116,7 @@
BCCsizei *length,
BCCchar *infoLog) {
BCC_FUNC_LOGGER();
- char const *message = script->getCompilerErrorMessage();
- int messageLength = strlen(message) + 1;
- if (length)
- *length = messageLength;
-
- if (infoLog && maxLength > 0) {
- int trimmedLength = maxLength < messageLength ? maxLength : messageLength;
- memcpy(infoLog, message, trimmedLength);
- infoLog[trimmedLength] = 0;
-#if defined(USE_DISASSEMBLER_FILE)
- LOGI("[GetScriptInfoLog] %s", infoLog);
-#endif
- }
+ LOGE("%s is deprecated. *********************************\n", __func__);
}
extern "C" void bccGetScriptLabel(BCCscript *script,
@@ -147,73 +135,133 @@
}
extern "C" void bccGetExportVars(BCCscript *script,
- BCCsizei *actualVarCount,
- BCCsizei maxVarCount,
- BCCvoid **vars) {
+ BCCsizei *actualCount,
+ BCCsizei varListSize,
+ BCCvoid **varList) {
BCC_FUNC_LOGGER();
- script->getExportVars(actualVarCount, maxVarCount, vars);
+
+ if (actualCount) {
+ *actualCount = static_cast<BCCsizei>(script->getExportVarCount());
+ }
+
+ if (varList) {
+ script->getExportVarList(static_cast<size_t>(varListSize), varList);
#if defined(USE_DISASSEMBLER_FILE)
- int i;
- if (actualVarCount) {
- LOGI("[ExportVars] #=%d:", *actualVarCount);
- } else {
- for (i = 0; i < maxVarCount; i++) {
- LOGI("[ExportVars] #%d=0x%x", i, vars[i]);
+ size_t count = script->getExportVarCount();
+ LOGD("ExportVarCount = %lu\n", (unsigned long)count);
+
+ if (count > varListSize) {
+ count = varListSize;
}
- }
+
+ for (size_t i = 0; i < count; ++i) {
+ LOGD("ExportVarList[%lu] = 0x%p\n", (unsigned long)i, varList[i]);
+ }
#endif
+ }
}
extern "C" void bccGetExportFuncs(BCCscript *script,
- BCCsizei *actualFuncCount,
- BCCsizei maxFuncCount,
- BCCvoid **funcs) {
+ BCCsizei *actualCount,
+ BCCsizei funcListSize,
+ BCCvoid **funcList) {
BCC_FUNC_LOGGER();
- script->getExportFuncs(actualFuncCount, maxFuncCount, funcs);
+
+ if (actualCount) {
+ *actualCount = static_cast<BCCsizei>(script->getExportFuncCount());
+ }
+
+ if (funcList) {
+ script->getExportFuncList(static_cast<size_t>(funcListSize), funcList);
#if defined(USE_DISASSEMBLER_FILE)
- int i;
- if (actualFuncCount) {
- LOGI("[ExportFunc] #=%d:", *actualFuncCount);
- } else {
- for (i = 0; i < maxFuncCount; i++) {
- LOGI("[ExportFunc] #%d=0x%x", i, funcs[i]);
+ size_t count = script->getExportFuncCount();
+ LOGD("ExportFuncCount = %lu\n", (unsigned long)count);
+
+ if (count > funcListSize) {
+ count = funcListSize;
}
- }
+
+ for (size_t i = 0; i < count; ++i) {
+ LOGD("ExportFuncList[%lu] = 0x%p\n", (unsigned long)i, funcList[i]);
+ }
#endif
+ }
}
extern "C" void bccGetPragmas(BCCscript *script,
- BCCsizei *actualStringCount,
- BCCsizei maxStringCount,
- BCCchar **strings) {
+ BCCsizei *actualCount,
+ BCCsizei stringListSize,
+ BCCchar **stringList) {
BCC_FUNC_LOGGER();
- script->getPragmas(actualStringCount, maxStringCount, strings);
+
+ if (actualCount) {
+ *actualCount = static_cast<BCCsizei>(script->getPragmaCount() * 2);
+ }
+
+ if (stringList) {
+ size_t pragmaListSize = static_cast<size_t>(stringListSize) / 2;
+
+ char const **buf = new (nothrow) char const *[pragmaListSize * 2];
+ if (!buf) {
+ return;
+ }
+
+ char const **keyList = buf;
+ char const **valueList = buf + pragmaListSize;
+
+ script->getPragmaList(pragmaListSize, keyList, valueList);
+
+ for (size_t i = 0; i < pragmaListSize; ++i) {
+ *stringList++ = const_cast<BCCchar *>(keyList[i]);
+ *stringList++ = const_cast<BCCchar *>(valueList[i]);
+ }
+
+ delete [] buf;
#if defined(USE_DISASSEMBLER_FILE)
- int i;
- LOGI("[Pragma] #=%d:", *actualStringCount);
- for (i = 0; i < *actualStringCount; i++) {
- LOGI(" %s", strings[i]);
- }
+ size_t count = script->getPragmaCount();
+ LOGD("PragmaCount = %lu\n", count);
+
+ if (count > pragmaListSize) {
+ count = pragmaListSize;
+ }
+
+ for (size_t i = 0; i < count; ++i) {
+ LOGD("Pragma[%lu] = (%s , %s)\n",
+ (unsigned long)i, stringList[2 * i], stringList[2 * i + 1]);
+ }
#endif
+ }
}
extern "C" void bccGetFunctions(BCCscript *script,
- BCCsizei *actualFunctionCount,
- BCCsizei maxFunctionCount,
- BCCchar **functions) {
+ BCCsizei *actualCount,
+ BCCsizei funcNameListSize,
+ BCCchar **funcNameList) {
BCC_FUNC_LOGGER();
- script->getFunctions(actualFunctionCount,
- maxFunctionCount,
- functions);
+
+ if (actualCount) {
+ *actualCount = static_cast<BCCsizei>(script->getFuncCount());
+ }
+
+ if (funcNameList) {
+ script->getFuncNameList(static_cast<size_t>(funcNameListSize),
+ const_cast<char const **>(funcNameList));
+ }
}
extern "C" void bccGetFunctionBinary(BCCscript *script,
- BCCchar *function,
+ BCCchar *funcname,
BCCvoid **base,
BCCsizei *length) {
BCC_FUNC_LOGGER();
- script->getFunctionBinary(function, base, length);
+
+ size_t funcLength = 0;
+ script->getFuncBinary(funcname, base, &funcLength);
+
+ if (length) {
+ *length = static_cast<BCCsizei>(funcLength);
+ }
}