From 6908d89e67faca87d0ee6ba43a85020fb05f8728 Mon Sep 17 00:00:00 2001 From: Patrick Gaskin Date: Wed, 22 Apr 2020 00:55:06 -0400 Subject: [PATCH] Fixed symbol resolution --- src/menu.cc | 7 ++++--- src/util.h | 8 -------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/menu.cc b/src/menu.cc index 677c086..27da11b 100644 --- a/src/menu.cc +++ b/src/menu.cc @@ -4,6 +4,7 @@ #include #include +#include #include "dlhook.h" #include "menu.h" @@ -40,9 +41,9 @@ extern "C" MenuTextItem* AbstractNickelMenuController_createMenuTextItem_hook(vo extern "C" int nmi_menu_hook(void *libnickel, nmi_menu_entry_t *entries, size_t entries_n, char **err_out) { #define NMI_ERR_RET 1 - NMI_SYM(AbstractNickelMenuController_createMenuTextItem, "_ZN28AbstractNickelMenuController18createMenuTextItemEP5QMenuRK7QStringbbS4_"); - NMI_SYM(AbstractNickelMenuController_createAction, "_ZN22AbstractMenuController12createActionEP5QMenuP7QWidgetbbb"); - NMI_SYM(ConfirmationDialogFactory_showOKDialog, "_ZN25ConfirmationDialogFactory12showOKDialogERK7QStringS2_"); + reinterpret_cast(AbstractNickelMenuController_createMenuTextItem) = dlsym(libnickel, "_ZN28AbstractNickelMenuController18createMenuTextItemEP5QMenuRK7QStringbbS4_"); + reinterpret_cast(AbstractNickelMenuController_createAction) = dlsym(libnickel, "_ZN22AbstractMenuController12createActionEP5QMenuP7QWidgetbbb"); + reinterpret_cast(ConfirmationDialogFactory_showOKDialog) = dlsym(libnickel, "_ZN25ConfirmationDialogFactory12showOKDialogERK7QStringS2_"); NMI_ASSERT(AbstractNickelMenuController_createMenuTextItem, "unsupported firmware: could not find AbstractNickelMenuController::createMenuTextItem(void* _this, QMenu*, QString, bool, bool, QString const&)"); NMI_ASSERT(AbstractNickelMenuController_createAction, "unsupported firmware: could not find AbstractNickelMenuController::createAction(void* _this, QMenu*, QWidget*, bool, bool, bool)"); diff --git a/src/util.h b/src/util.h index 29e91cb..c15d18e 100644 --- a/src/util.h +++ b/src/util.h @@ -44,13 +44,5 @@ extern "C" { #ifdef __cplusplus } -#endif -#ifdef __cplusplus - -#include - -// NMI_SYM loads a symbol from the global scope. -#define NMI_SYM(var, sym) reinterpret_cast(var) = dlsym(RTLD_DEFAULT, sym) - #endif #endif