summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2020-02-03 21:43:15 +0000
committerSadie Powell <sadie@witchery.services>2020-02-04 11:56:00 +0000
commit0c5b85df8c5ae969831551ddefb8e07cb6da5f08 (patch)
tree96e40a1bfa3c3e9f44a67d9e79b9371618e0054f
parent60d4b6a3a7ffd1d6e5ac9c1c214d2f14acf0e8dd (diff)
Include the ABI version with the incompatible module error message.
-rw-r--r--include/moduledefs.h4
-rw-r--r--src/dynamic.cpp8
2 files changed, 6 insertions, 6 deletions
diff --git a/include/moduledefs.h b/include/moduledefs.h
index a2bac63cb..4b917bf26 100644
--- a/include/moduledefs.h
+++ b/include/moduledefs.h
@@ -22,7 +22,7 @@
class Module;
/** The version of the InspIRCd ABI which is presently in use. */
-#define MODULE_ABI 3010
+#define MODULE_ABI 3010UL
/** Stringifies the value of a symbol. */
#define MODULE_STRINGIFY_SYM1(DEF) MODULE_STRINGIFY_SYM2(DEF)
@@ -42,6 +42,6 @@ class Module;
/** Defines the interface that a shared library must expose in order to be a module. */
#define MODULE_INIT(klass) \
- extern "C" DllExport const uint32_t MODULE_SYM_ABI = MODULE_ABI; \
+ extern "C" DllExport const unsigned long MODULE_SYM_ABI = MODULE_ABI; \
extern "C" DllExport const char MODULE_SYM_VERSION[] = INSPIRCD_VERSION; \
extern "C" DllExport Module* MODULE_SYM_INIT() { return new klass; }
diff --git a/src/dynamic.cpp b/src/dynamic.cpp
index a3ba43ff2..e0d7f6d80 100644
--- a/src/dynamic.cpp
+++ b/src/dynamic.cpp
@@ -68,7 +68,7 @@ DLLManager::~DLLManager()
Module* DLLManager::CallInit()
{
- const uint32_t* abi = GetSymbol<const uint32_t>(MODULE_STR_ABI);
+ const unsigned long* abi = GetSymbol<const unsigned long>(MODULE_STR_ABI);
if (!abi)
{
err.assign(libname + " is not a module (no ABI symbol)");
@@ -77,9 +77,9 @@ Module* DLLManager::CallInit()
else if (*abi != MODULE_ABI)
{
const char* version = GetVersion();
- err.assign(InspIRCd::Format("%s was built against %s which is too %s to use with %s",
- libname.c_str(), version ? version : "an unknown version",
- *abi < MODULE_ABI ? "old" : "new", INSPIRCD_VERSION));
+ err.assign(InspIRCd::Format("%s was built against %s (%lu) which is too %s to use with %s (%lu).",
+ libname.c_str(), version ? version : "an unknown version", *abi,
+ *abi < MODULE_ABI ? "old" : "new", INSPIRCD_VERSION, MODULE_ABI));
return NULL;
}