Include osi_module reference in module_init funcion

This prevents a crash-loop if the module is stripped by the linker.

Change-Id: I7a3f0349cb62a9e73e003707c1f48ec0a6de7f67
diff --git a/btcore/src/module.c b/btcore/src/module.c
index 03ba91f..2aa423a 100644
--- a/btcore/src/module.c
+++ b/btcore/src/module.c
@@ -68,6 +68,11 @@
 }
 
 /* TODO: remove these externs and explicit checks once dlsym is fixed */
+/* TODO:
+ *  (cont.) It looks like the dlsym bug is fixed now. However, without
+ *  the code below (i.e. the module being referenced), the linker strips
+ *  the module and thus dlsym will fail.
+ */
 extern module_t bt_utils_module;
 extern module_t btif_config_module;
 extern module_t controller_module;
@@ -77,11 +82,14 @@
 extern module_t btsnoop_module;
 extern module_t hci_module;
 extern module_t bte_logmsg_module;
+extern module_t osi_module;
 
 const module_t *get_module(const char *name) {
   module_t* module = (module_t *)dlsym(RTLD_DEFAULT, name);
   if (module) return module;
 
+  LOG_ERROR("%s dlsym() came up empty...", __func__);
+
   if (!strcmp(name, "bt_utils_module")) return &bt_utils_module;
   if (!strcmp(name, "btif_config_module")) return &btif_config_module;
   if (!strcmp(name, "controller_module")) return &controller_module;
@@ -91,6 +99,7 @@
   if (!strcmp(name, "btsnoop_module")) return &btsnoop_module;
   if (!strcmp(name, "hci_module")) return &hci_module;
   if (!strcmp(name, "bte_logmsg_module")) return &bte_logmsg_module;
+  if (!strcmp(name, "osi_module")) return &osi_module;
 
   return NULL;
 }