aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA. Cody Schuffelen <schuffelen@google.com>2020-03-17 20:46:09 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-03-17 20:46:09 +0000
commit7fb129ff2f198def1a8aa08f18cfc0a2e459af59 (patch)
treece4eb92cce3f69b9e832f7f03df10eaa12fc271b
parent73e0a0d095bb1be9abe308dac7349835b01db456 (diff)
parent1365217e0129aa876e3d55789a3776183d478fbf (diff)
downloadtpm2-tss-7fb129ff2f198def1a8aa08f18cfc0a2e459af59.tar.gz
ANDROID: hook tpm2-tss into the android logging system am: 1365217e01
Change-Id: Ib16725fd1fb6acecae2790443a8029f4bc9cf4e2
-rw-r--r--Android.bp4
-rw-r--r--src/util/log.cpp (renamed from src/util/log.c)48
-rw-r--r--src/util/log.h8
3 files changed, 54 insertions, 6 deletions
diff --git a/Android.bp b/Android.bp
index 26c2e116..5332aa1a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -92,12 +92,16 @@ cc_library {
defaults: [ "tpm2-tss-defaults" ],
srcs: [
"src/util/*.c",
+ "src/util/*.cpp",
],
local_include_dirs: [
"include/tss2",
"src",
"src/util",
],
+ shared_libs: [
+ "libbase",
+ ],
}
cc_library {
diff --git a/src/util/log.c b/src/util/log.cpp
index c28bc695..8ab9405d 100644
--- a/src/util/log.c
+++ b/src/util/log.cpp
@@ -11,6 +11,8 @@
#define LOGMODULE log
#include "log.h"
+#include <android-base/logging.h>
+
#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
@@ -20,6 +22,8 @@
#define unlikely(x) (x)
#endif
+extern "C" {
+
/**
* Compares two strings byte by byte and ignores the
* character's case. Stops at the n-th byte of both
@@ -159,25 +163,55 @@ doLog(log_level loglevel, const char *module, log_level logdefault,
if (loglevel > *status)
return;
- int size = snprintf(NULL, 0, "%s:%s:%s:%d:%s() %s \n",
+ int size = snprintf(NULL, 0, "%s:%s:%s:%d:%s() %s ",
log_strings[loglevel], module, file, line, func, msg);
char fmt[size+1];
- snprintf(fmt, sizeof(fmt), "%s:%s:%s:%d:%s() %s \n",
+ snprintf(fmt, sizeof(fmt), "%s:%s:%s:%d:%s() %s ",
log_strings[loglevel], module, file, line, func, msg);
va_list vaargs;
va_start(vaargs, msg);
- vfprintf (stderr, fmt,
- /* log_strings[loglevel], module, file, func, line, */
- vaargs);
+ int complete_size = vsnprintf(NULL, 0, fmt, vaargs);
+ va_end(vaargs);
+
+ va_start(vaargs, msg);
+ char complete[complete_size+1];
+ vsnprintf(complete, sizeof(complete), fmt, vaargs);
va_end(vaargs);
+
+ fprintf(stderr, "%s\n", complete);
+
+ switch (loglevel) {
+ case LOGLEVEL_NONE:
+ LOG(ERROR) << complete;
+ break;
+ case LOGLEVEL_ERROR:
+ LOG(ERROR) << complete;
+ break;
+ case LOGLEVEL_WARNING:
+ LOG(WARNING) << complete;
+ break;
+ case LOGLEVEL_INFO:
+ LOG(INFO) << complete;
+ break;
+ case LOGLEVEL_DEBUG:
+ LOG(DEBUG) << complete;
+ break;
+ case LOGLEVEL_TRACE:
+ LOG(VERBOSE) << complete;
+ break;
+ case LOGLEVEL_UNDEFINED:
+ default:
+ LOG(WARNING) << complete;
+ break;
+ }
}
static log_level
log_stringlevel(const char *n)
{
log_level i;
- for(i = 0; i < sizeof(log_strings)/sizeof(log_strings[0]); i++) {
+ for(i = (log_level) 0; i < sizeof(log_strings)/sizeof(log_strings[0]); i = (log_level) ((int) i + 1)) {
if (case_insensitive_strncmp(log_strings[i], n, strlen(log_strings[i])) == 0) {
return i;
}
@@ -206,3 +240,5 @@ getLogLevel(const char *module, log_level logdefault)
}
return loglevel;
}
+
+} // extern "C"
diff --git a/src/util/log.h b/src/util/log.h
index 01010a60..09b6d5ae 100644
--- a/src/util/log.h
+++ b/src/util/log.h
@@ -151,6 +151,10 @@ static log_level LOGMODULE_status COMPILER_ATTR(unused) = LOGLEVEL_UNDEFINED;
#define LOGBLOB_TRACE(FORMAT, ...) {}
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void
doLog(log_level loglevel, const char *module, log_level logdefault,
log_level *status,
@@ -165,4 +169,8 @@ doLogBlob(log_level loglevel, const char *module, log_level logdefault,
const uint8_t *buffer, size_t size, const char *msg, ...)
COMPILER_ATTR(unused, format (printf, 10, 11));
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
#endif /* LOG_H */