blackbox fuzzing mechanisms

- support for HALs with nested sub-structures which have another set of
  function pointers
- support 32-bit and 64-bit libraries
- refine the protocol between agent and runner (see vts multi-device
  internals: spec part)
- camera hal (for bullhead) with instrumentation
- camera hal VTS spec files
- camera hal fuzz test case
- utils to coverage-guided whitebox fuzzing
- sample fuzz test case extension for whitebox fuzzing

Change-Id: I29fe5dd9540d380d13641189abb436e92d2d0b0c
diff --git a/sysfuzzer/common/component_loader/DllLoader.cpp b/sysfuzzer/common/component_loader/DllLoader.cpp
index 8dc3966..c4683b8 100644
--- a/sysfuzzer/common/component_loader/DllLoader.cpp
+++ b/sysfuzzer/common/component_loader/DllLoader.cpp
@@ -67,8 +67,11 @@
     cerr << __FUNCTION__ << ": handle_ is NULL" << endl;
     return NULL;
   }
-  cout << __FUNCTION__ << ":" << __LINE__ << endl;
-  struct hw_module_t *hmi = (struct hw_module_t *) dlsym(
+  if (module_name) {
+    cout << __FUNCTION__ << ":" << __LINE__
+        << " module_name" << module_name << endl;
+  }
+  struct hw_module_t* hmi = (struct hw_module_t*) dlsym(
       handle_, HAL_MODULE_INFO_SYM_AS_STR);
   if (!hmi) {
     cerr << __FUNCTION__ << ": " << HAL_MODULE_INFO_SYM_AS_STR
@@ -78,15 +81,18 @@
   cout << __FUNCTION__ << ":" << __LINE__ << endl;
   hmi->dso = handle_;
   device_ = NULL;
+  cout << __FUNCTION__ << ": version " << hmi->module_api_version << endl;
+
   int ret;
   if (!module_name || strlen(module_name) == 0) {
-    cout << __FUNCTION__ << ":" << __LINE__ << ": " << hmi->name << endl;
+    cout << __FUNCTION__ << ":" << __LINE__ << ": (default) " << hmi->name << endl;
     ret = hmi->methods->open(hmi, hmi->name,
                              (struct hw_device_t**) &device_);
   } else {
-    cout << __FUNCTION__ << ":" << __LINE__ << ": module_name |" << module_name << "|" << endl;
-    ret = hmi->methods->open(hmi, module_name,
-                             (struct hw_device_t**) &device_);
+    cout << __FUNCTION__ << ":" << __LINE__ << ": module_name |"
+        << module_name << "|" << endl;
+    ret = hmi->methods->open(
+        hmi, module_name, (struct hw_device_t**) &device_);
   }
   if (ret != 0) {
     cout << "returns " << ret << " " << strerror(errno) << endl;
@@ -109,6 +115,7 @@
   return func;
 }
 
+
 bool DllLoader::SancovResetCoverage() {
   const char* error;
   void (*func)();