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;
}