summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/androhelpers/Makefile.am3
-rw-r--r--plugins/arm/Makefile.am4
-rw-r--r--plugins/arm/core.c5
-rw-r--r--plugins/bootimg/Makefile.am4
-rw-r--r--plugins/bootimg/core.c5
-rw-r--r--plugins/dalvik/core.c5
-rw-r--r--plugins/devdbg/Makefile.am3
-rw-r--r--plugins/devdbg/speed.c24
-rw-r--r--plugins/devdbg/speed.h4
-rw-r--r--plugins/dex/Makefile.am4
-rw-r--r--plugins/dex/core.c9
-rw-r--r--plugins/dexbnf/core.c5
-rw-r--r--plugins/dwarf/checks.c5
-rw-r--r--plugins/dwarf/core.c65
-rw-r--r--plugins/dwarf/core.h6
-rw-r--r--plugins/elf/core.c5
-rw-r--r--plugins/fmtp/Makefile.am3
-rw-r--r--plugins/gdbrsp/Makefile.am5
-rw-r--r--plugins/itanium/Makefile.am4
-rw-r--r--plugins/itanium/core.c5
-rw-r--r--plugins/javadesc/Makefile.am4
-rw-r--r--plugins/javadesc/core.c5
-rw-r--r--plugins/libcsem/Makefile.am3
-rw-r--r--plugins/libcsem/semantic.c7
-rw-r--r--plugins/libcsem/semantic.h2
-rw-r--r--plugins/lnxsyscalls/core.c17
-rw-r--r--plugins/lnxsyscalls/core.h2
-rw-r--r--plugins/lnxsyscalls/db.c51
-rw-r--r--plugins/lnxsyscalls/db.h6
-rw-r--r--plugins/lnxsyscalls/hunter.c13
-rw-r--r--plugins/lnxsyscalls/hunter.h4
-rw-r--r--plugins/mobicore/Makefile.am3
-rw-r--r--plugins/mobicore/core.c7
-rw-r--r--plugins/pychrysalide/Makefile.am5
-rw-r--r--plugins/pychrysalide/core/logs.c3
-rw-r--r--plugins/pychrysalide/plugin.c6
-rw-r--r--plugins/pychrysalide/pychrysa.c43
-rw-r--r--plugins/pychrysalide/pychrysa.h3
-rw-r--r--plugins/readdex/reader.c7
-rw-r--r--plugins/readdex/reader.h2
-rw-r--r--plugins/readelf/reader.c7
-rw-r--r--plugins/readelf/reader.h2
-rw-r--r--plugins/readmc/reader.c7
-rw-r--r--plugins/readmc/reader.h2
-rw-r--r--plugins/ropgadgets/plugin.c5
-rw-r--r--plugins/stackvars/Makefile.am3
-rw-r--r--plugins/yaml/Makefile.am4
-rw-r--r--plugins/yaml/core.c5
-rw-r--r--src/plugins/Makefile.am3
-rw-r--r--src/plugins/plugin-def.h61
-rw-r--r--src/plugins/plugin-int.h12
-rw-r--r--src/plugins/plugin.c23
-rw-r--r--src/plugins/plugin.h7
-rw-r--r--src/plugins/self.h128
54 files changed, 320 insertions, 315 deletions
diff --git a/plugins/androhelpers/Makefile.am b/plugins/androhelpers/Makefile.am
index c0c423f..4df2b45 100644
--- a/plugins/androhelpers/Makefile.am
+++ b/plugins/androhelpers/Makefile.am
@@ -10,7 +10,8 @@ libandrohelpers_la_SOURCES = \
try_n_catch.h try_n_catch.c \
switch.h switch.c
-libandrohelpers_la_LDFLAGS = -L$(top_srcdir)/src/.libs -lchrysacore
+libandrohelpers_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore
devdir = $(includedir)/chrysalide-$(subdir)
diff --git a/plugins/arm/Makefile.am b/plugins/arm/Makefile.am
index eb217d7..8a15e46 100644
--- a/plugins/arm/Makefile.am
+++ b/plugins/arm/Makefile.am
@@ -42,8 +42,8 @@ libarm_la_LIBADD = \
$(PYTHON3_LIBADD) \
v7/libarmv7.la
-libarm_la_LDFLAGS = \
- -L$(top_srcdir)/src/.libs -lchrysacore \
+libarm_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore \
$(PYTHON3_LDFLAGS)
diff --git a/plugins/arm/core.c b/plugins/arm/core.c
index f009078..c270c85 100644
--- a/plugins/arm/core.c
+++ b/plugins/arm/core.c
@@ -25,7 +25,7 @@
#include <config.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#ifdef HAVE_PYTHON3_BINDINGS
@@ -42,7 +42,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GArmPlugin", "arm", "Add support for the ARM architecture", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("Arm", "ARM architecture support",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/architectures"),
PG_REQ, AL(PGA_PLUGIN_INIT, PGA_PLUGIN_EXIT));
diff --git a/plugins/bootimg/Makefile.am b/plugins/bootimg/Makefile.am
index 8329665..e37a6ab 100644
--- a/plugins/bootimg/Makefile.am
+++ b/plugins/bootimg/Makefile.am
@@ -34,8 +34,8 @@ libbootimg_la_SOURCES = \
libbootimg_la_LIBADD = \
$(PYTHON3_LIBADD)
-libbootimg_la_LDFLAGS = \
- -L$(top_srcdir)/src/.libs -lchrysacore \
+libbootimg_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore \
$(PYTHON3_LDFLAGS)
diff --git a/plugins/bootimg/core.c b/plugins/bootimg/core.c
index fdf1c95..9c4bc45 100644
--- a/plugins/bootimg/core.c
+++ b/plugins/bootimg/core.c
@@ -26,7 +26,7 @@
#include <config.h>
#include <core/global.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "format.h"
@@ -43,7 +43,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GBootImgPlugin", "bootimg", "Add support for the BOOT.img format", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("BootImg", "Support for the BOOT.img format",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/formats"),
PG_REQ, AL(PGA_PLUGIN_INIT, PGA_CONTENT_EXPLORER));
diff --git a/plugins/dalvik/core.c b/plugins/dalvik/core.c
index 09fefd5..2294ed4 100644
--- a/plugins/dalvik/core.c
+++ b/plugins/dalvik/core.c
@@ -25,7 +25,7 @@
#include <config.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "register.h"
@@ -46,7 +46,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GDalvikPlugin", "dalvik", "Add support for the Dalvik architecture", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("Dalvik", "Dalvik architecture support",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/architectures"),
PG_REQ, AL(PGA_PLUGIN_INIT, PGA_PLUGIN_EXIT));
diff --git a/plugins/devdbg/Makefile.am b/plugins/devdbg/Makefile.am
index 90553c8..2877411 100644
--- a/plugins/devdbg/Makefile.am
+++ b/plugins/devdbg/Makefile.am
@@ -7,7 +7,8 @@ libdir = $(pluginslibdir)
libspeed_la_SOURCES = \
speed.h speed.c
-libspeed_la_LDFLAGS = -L$(top_srcdir)/src/.libs -lchrysacore
+libspeed_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore
devdir = $(includedir)/chrysalide-$(subdir)
diff --git a/plugins/devdbg/speed.c b/plugins/devdbg/speed.c
index 6b9cc6b..1378c66 100644
--- a/plugins/devdbg/speed.c
+++ b/plugins/devdbg/speed.c
@@ -34,11 +34,12 @@
#include <common/extstr.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
-DEFINE_CHRYSALIDE_PLUGIN("GSpeedPlugin", "Speed Measure", "Tracks to time spent for disassembling code", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("SpeedMeasure", "Tracker of time spent for disassembling code",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE(""),
NO_REQ, AL(PGA_FORMAT_ANALYSIS_STARTED,PGA_FORMAT_ANALYSIS_ENDED,
PGA_FORMAT_POST_ANALYSIS_STARTED, PGA_FORMAT_POST_ANALYSIS_ENDED,
PGA_DISASSEMBLY_STARTED, PGA_DISASSEMBLY_ENDED));
@@ -53,14 +54,13 @@ typedef struct _speed_measure
/* Affiche une mesure de temps écoulé. */
-static void show_elapsed_time(const GPluginModule *, const char *, const speed_measure *);
+static void show_elapsed_time(const char *, const speed_measure *);
/******************************************************************************
* *
-* Paramètres : plugin = greffon à manipuler. *
-* title = désignation humaine de la mesure menée. *
+* Paramètres : title = désignation humaine de la mesure menée. *
* measure = mesure de temps écoulé. *
* *
* Description : Affiche une mesure de temps écoulé. *
@@ -71,7 +71,7 @@ static void show_elapsed_time(const GPluginModule *, const char *, const speed_m
* *
******************************************************************************/
-static void show_elapsed_time(const GPluginModule *plugin, const char *title, const speed_measure *measure)
+static void show_elapsed_time(const char *title, const speed_measure *measure)
{
char *tmp; /* Construction temporaire */
double seconds; /* Secondes écoulées */
@@ -132,7 +132,7 @@ static void show_elapsed_time(const GPluginModule *plugin, const char *title, co
}
if (tmp != NULL)
- g_plugin_module_log_simple_message(plugin, LMT_INFO, msg);
+ log_plugin_simple_message(LMT_INFO, msg);
free(msg);
@@ -155,7 +155,7 @@ static void show_elapsed_time(const GPluginModule *plugin, const char *title, co
* *
******************************************************************************/
-G_MODULE_EXPORT bool handle_binary_format_analysis(const GPluginModule *plugin, PluginAction action, GBinFormat *format, wgroup_id_t gid, GtkStatusStack *status)
+G_MODULE_EXPORT bool chrysalide_plugin_handle_binary_format_analysis(const GPluginModule *plugin, PluginAction action, GBinFormat *format, wgroup_id_t gid, GtkStatusStack *status)
{
speed_measure *measure; /* Suivi des progressions */
struct timeval point; /* Point de mesure courant */
@@ -182,9 +182,9 @@ G_MODULE_EXPORT bool handle_binary_format_analysis(const GPluginModule *plugin,
measure->usages[1] = point.tv_sec * 1000000 + point.tv_usec;
if (action == PGA_FORMAT_ANALYSIS_ENDED)
- show_elapsed_time(plugin, _("Whole elapsed time for format analysis:"), measure);
+ show_elapsed_time(_("Whole elapsed time for format analysis:"), measure);
else
- show_elapsed_time(plugin, _("Whole elapsed time for format post-analysis:"), measure);
+ show_elapsed_time(_("Whole elapsed time for format post-analysis:"), measure);
g_object_set_data(G_OBJECT(format), "speed_measure", NULL);
free(measure);
@@ -218,7 +218,7 @@ G_MODULE_EXPORT bool handle_binary_format_analysis(const GPluginModule *plugin,
* *
******************************************************************************/
-G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *plugin, PluginAction action, GLoadedBinary *binary, GtkStatusStack *status, GProcContext *context)
+G_MODULE_EXPORT void chrysalide_plugin_process_binary_disassembly(const GPluginModule *plugin, PluginAction action, GLoadedBinary *binary, GtkStatusStack *status, GProcContext *context)
{
speed_measure *measure; /* Suivi des progressions */
struct timeval point; /* Point de mesure courant */
@@ -242,7 +242,7 @@ G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *plugin, Plu
gettimeofday(&point, NULL);
measure->usages[1] = point.tv_sec * 1000000 + point.tv_usec;
- show_elapsed_time(plugin, _("Whole elapsed time for disassembly:"), measure);
+ show_elapsed_time(_("Whole elapsed time for disassembly:"), measure);
g_object_set_data(G_OBJECT(binary), "speed_measure", NULL);
free(measure);
diff --git a/plugins/devdbg/speed.h b/plugins/devdbg/speed.h
index dff6a93..7d591fb 100644
--- a/plugins/devdbg/speed.h
+++ b/plugins/devdbg/speed.h
@@ -31,10 +31,10 @@
/* Procède à une opération liée à l'analyse d'un format. */
-G_MODULE_EXPORT bool handle_binary_format_analysis(const GPluginModule *, PluginAction, GBinFormat *, wgroup_id_t, GtkStatusStack *);
+G_MODULE_EXPORT bool chrysalide_plugin_handle_binary_format_analysis(const GPluginModule *, PluginAction, GBinFormat *, wgroup_id_t, GtkStatusStack *);
/* Exécute une action pendant un désassemblage de binaire. */
-G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *, PluginAction , GLoadedBinary *, GtkStatusStack *, GProcContext *);
+G_MODULE_EXPORT void chrysalide_plugin_process_binary_disassembly(const GPluginModule *, PluginAction , GLoadedBinary *, GtkStatusStack *, GProcContext *);
diff --git a/plugins/dex/Makefile.am b/plugins/dex/Makefile.am
index 8a092d5..49a2687 100644
--- a/plugins/dex/Makefile.am
+++ b/plugins/dex/Makefile.am
@@ -40,8 +40,8 @@ libdex_la_SOURCES = \
libdex_la_LIBADD = \
$(PYTHON3_LIBADD)
-libdex_la_LDFLAGS = \
- -L$(top_srcdir)/src/.libs -lchrysacore \
+libdex_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore \
$(PYTHON3_LDFLAGS)
diff --git a/plugins/dex/core.c b/plugins/dex/core.c
index f13d521..22ebfff 100644
--- a/plugins/dex/core.c
+++ b/plugins/dex/core.c
@@ -26,7 +26,7 @@
#include <config.h>
#include <core/global.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "format.h"
@@ -36,14 +36,15 @@
#ifdef HAVE_PYTHON3_BINDINGS
-# define PG_REQ RL("PyChrysalide", "dexbnf")
+# define PG_REQ RL("PyChrysalide")
#else
-# define PG_REQ RL("dexbnf")
+# define PG_REQ NO_REQ
#endif
-DEFINE_CHRYSALIDE_PLUGIN("GDexPlugin", "dex", "Add support for the DEX format", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("Dex", "DEX format support",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/formats"),
PG_REQ, AL(PGA_PLUGIN_INIT, PGA_CONTENT_RESOLVER));
diff --git a/plugins/dexbnf/core.c b/plugins/dexbnf/core.c
index 4cdf26b..2b9408a 100644
--- a/plugins/dexbnf/core.c
+++ b/plugins/dexbnf/core.c
@@ -26,7 +26,7 @@
#include <config.h>
#include <core/demanglers.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "demangler.h"
@@ -43,7 +43,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GDexBnfPlugin", "dexbnf", "Symbol demangler for Dex", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("DexBnf", "Dex symbol demangling",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/mangling"),
PG_REQ, AL(PGA_PLUGIN_INIT));
diff --git a/plugins/dwarf/checks.c b/plugins/dwarf/checks.c
index 7dc8a7c..ee16b9a 100644
--- a/plugins/dwarf/checks.c
+++ b/plugins/dwarf/checks.c
@@ -31,6 +31,7 @@
#include <i18n.h>
#include <common/cpp.h>
#include <format/format.h>
+#include <plugins/self.h>
#include "core.h"
@@ -142,7 +143,7 @@ bool check_dwarf_abbrev_decl(GDwarfFormat *format, const dw_abbrev_decl *decl, u
{
vmpa2_phys_to_string(pos, MDS_UNDEFINED, loc, NULL);
- log_dwarf_variadic_message(LMT_BAD_BINARY, _("Invalid abbreviation declaration at %s"), loc);
+ log_plugin_variadic_message(LMT_BAD_BINARY, _("Invalid abbreviation declaration at %s"), loc);
}
@@ -215,7 +216,7 @@ bool check_dwarf_abbrev_attrib(GDwarfFormat *format, const dw_abbrev_raw_attr *a
{
vmpa2_phys_to_string(pos, MDS_UNDEFINED, loc, NULL);
- log_dwarf_variadic_message(LMT_BAD_BINARY, _("Invalid abbreviation attribute at %s"), loc);
+ log_plugin_variadic_message(LMT_BAD_BINARY, _("Invalid abbreviation attribute at %s"), loc);
}
diff --git a/plugins/dwarf/core.c b/plugins/dwarf/core.c
index 2d95626..bf1e812 100644
--- a/plugins/dwarf/core.c
+++ b/plugins/dwarf/core.c
@@ -25,7 +25,7 @@
#include <config.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "format.h"
@@ -39,16 +39,12 @@
-DEFINE_CHRYSALIDE_PLUGIN("GDwarfPlugin", "dwarf", "Add support for the DWARF format", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("Dwarf", "DWARF format support",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/formats"),
PG_REQ, AL(PGA_PLUGIN_INIT, PGA_FORMAT_ATTACH_DEBUG));
-/* Conservation d'une référence au greffon pour les messages */
-static GPluginModule *_this = NULL;
-
-
-
/******************************************************************************
* *
* Paramètres : plugin = greffon à manipuler. *
@@ -65,8 +61,6 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin)
{
bool result; /* Bilan à retourner */
- _this = plugin;
-
result = true;
return result;
@@ -98,56 +92,3 @@ G_MODULE_EXPORT void chrysalide_plugin_attach_debug(const GPluginModule *plugin,
g_exe_format_add_debug_info(format, info);
}
-
-
-/******************************************************************************
-* *
-* Paramètres : msg = message à faire apparaître à l'écran. *
-* *
-* Description : Présente dans le journal un message simple. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void log_dwarf_simple_message(LogMessageType type, const char *msg)
-{
- g_plugin_module_log_simple_message(_this, type, msg);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : type = espèce du message à ajouter. *
-* fmt = format du message à faire apparaître à l'écran. *
-* ... = éventuels arguments venant compléter le message. *
-* *
-* Description : Présente dans le journal un message complexe. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void log_dwarf_variadic_message(LogMessageType type, const char *fmt, ...)
-{
- va_list ap; /* Liste d'arguments variable */
- char *buffer; /* Tampon du msg reconstitué */
-
- va_start(ap, fmt);
- buffer = build_variadic_message(fmt, ap);
- va_end(ap);
-
- if (buffer != NULL)
- {
- g_plugin_module_log_simple_message(_this, type, buffer);
-
- free(buffer);
-
- }
-
-}
diff --git a/plugins/dwarf/core.h b/plugins/dwarf/core.h
index 7e2c367..8f4fe9c 100644
--- a/plugins/dwarf/core.h
+++ b/plugins/dwarf/core.h
@@ -36,12 +36,6 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *);
/* Procède au rattachement d'éventuelles infos de débogage. */
G_MODULE_EXPORT void chrysalide_plugin_attach_debug(const GPluginModule *, PluginAction, GExeFormat *);
-/* Présente dans le journal un message simple. */
-void log_dwarf_simple_message(LogMessageType, const char *);
-
-/* Présente dans le journal un message complexe. */
-void log_dwarf_variadic_message(LogMessageType, const char *, ...);
-
#endif /* _PLUGINS_DWARF_CORE_H */
diff --git a/plugins/elf/core.c b/plugins/elf/core.c
index 777c554..1e98aba 100644
--- a/plugins/elf/core.c
+++ b/plugins/elf/core.c
@@ -26,7 +26,7 @@
#include <config.h>
#include <core/global.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "format.h"
@@ -43,7 +43,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GElfPlugin", "elf", "Add support for the ELF format", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("Elf", "ELF format support",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/formats"),
PG_REQ, AL(PGA_PLUGIN_INIT, PGA_CONTENT_RESOLVER));
diff --git a/plugins/fmtp/Makefile.am b/plugins/fmtp/Makefile.am
index de7fdbe..ea9e1dc 100644
--- a/plugins/fmtp/Makefile.am
+++ b/plugins/fmtp/Makefile.am
@@ -8,7 +8,8 @@ libfmtp_la_SOURCES = \
def.h \
parser.h parser.c
-libfmtp_la_LDFLAGS = -L$(top_srcdir)/src/.libs -lchrysacore
+libfmtp_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore
devdir = $(includedir)/chrysalide-$(subdir)
diff --git a/plugins/gdbrsp/Makefile.am b/plugins/gdbrsp/Makefile.am
index 5ee8df6..0a3ea13 100644
--- a/plugins/gdbrsp/Makefile.am
+++ b/plugins/gdbrsp/Makefile.am
@@ -16,7 +16,10 @@ libdebuggdbrsp_la_SOURCES = \
tcp.h tcp.c \
utils.h utils.c
-libdebuggdbrsp_la_CFLAGS = $(AM_CFLAGS)
+libdebuggdbrsp_la_LIBADD =
+
+libdebuggdbrsp_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore
devdir = $(includedir)/chrysalide/$(subdir:src/%=%)
diff --git a/plugins/itanium/Makefile.am b/plugins/itanium/Makefile.am
index 3d87d41..b34e379 100644
--- a/plugins/itanium/Makefile.am
+++ b/plugins/itanium/Makefile.am
@@ -36,8 +36,8 @@ libitanium_la_SOURCES = \
libitanium_la_LIBADD = \
$(PYTHON3_LIBADD)
-libitanium_la_LDFLAGS = \
- -L$(top_srcdir)/src/.libs -lchrysacore \
+libitanium_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore \
$(PYTHON3_LDFLAGS)
diff --git a/plugins/itanium/core.c b/plugins/itanium/core.c
index 1f00cba..6bf67c1 100644
--- a/plugins/itanium/core.c
+++ b/plugins/itanium/core.c
@@ -26,7 +26,7 @@
#include <config.h>
#include <core/demanglers.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "demangler.h"
@@ -43,7 +43,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GItaniumPlugin", "itanium", "Symbol demangler for Itanium", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("Itanium", "Itanium demangling",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/mangling"),
PG_REQ, AL(PGA_PLUGIN_INIT));
diff --git a/plugins/javadesc/Makefile.am b/plugins/javadesc/Makefile.am
index c2ad3e7..5b7d285 100644
--- a/plugins/javadesc/Makefile.am
+++ b/plugins/javadesc/Makefile.am
@@ -35,8 +35,8 @@ libjavadesc_la_SOURCES = \
libjavadesc_la_LIBADD = \
$(PYTHON3_LIBADD)
-libjavadesc_la_LDFLAGS = \
- -L$(top_srcdir)/src/.libs -lchrysacore \
+libjavadesc_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore \
$(PYTHON3_LDFLAGS)
diff --git a/plugins/javadesc/core.c b/plugins/javadesc/core.c
index 4c0d620..bda0f56 100644
--- a/plugins/javadesc/core.c
+++ b/plugins/javadesc/core.c
@@ -26,7 +26,7 @@
#include <config.h>
#include <core/demanglers.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "demangler.h"
@@ -43,7 +43,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GJavaDescPlugin", "javadesc", "Symbol demangler for Java", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("JavaDesc", "Java symbol demangling",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/mangling"),
PG_REQ, AL(PGA_PLUGIN_INIT));
diff --git a/plugins/libcsem/Makefile.am b/plugins/libcsem/Makefile.am
index 077a5b5..00ad075 100644
--- a/plugins/libcsem/Makefile.am
+++ b/plugins/libcsem/Makefile.am
@@ -8,7 +8,8 @@ liblibcsem_la_SOURCES = \
exit.h exit.c \
semantic.h semantic.c
-liblibcsem_la_LDFLAGS = -L$(top_srcdir)/src/.libs -lchrysacore
+liblibcsem_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore
devdir = $(includedir)/chrysalide-$(subdir)
diff --git a/plugins/libcsem/semantic.c b/plugins/libcsem/semantic.c
index b5e2a1a..00e174f 100644
--- a/plugins/libcsem/semantic.c
+++ b/plugins/libcsem/semantic.c
@@ -25,14 +25,15 @@
#include <plugins/elf/format.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "exit.h"
-DEFINE_CHRYSALIDE_PLUGIN("GCSemPlugin", "LibC semantics", "Register semantic information relative to the libc", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("CSem", "Semantic information relative to the libc",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE(""),
NO_REQ, AL(PGA_DISASSEMBLY_HOOKED_POST));
@@ -53,7 +54,7 @@ DEFINE_CHRYSALIDE_PLUGIN("GCSemPlugin", "LibC semantics", "Register semantic inf
* *
******************************************************************************/
-G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *plugin, PluginAction action, GLoadedBinary *binary, GtkStatusStack *status, GProcContext *context)
+G_MODULE_EXPORT void chrysalide_plugin_process_binary_disassembly(const GPluginModule *plugin, PluginAction action, GLoadedBinary *binary, GtkStatusStack *status, GProcContext *context)
{
if (action == PGA_DISASSEMBLY_HOOKED_POST)
{
diff --git a/plugins/libcsem/semantic.h b/plugins/libcsem/semantic.h
index fddbc58..58c14ef 100644
--- a/plugins/libcsem/semantic.h
+++ b/plugins/libcsem/semantic.h
@@ -31,7 +31,7 @@
/* Exécute une action pendant un désassemblage de binaire. */
-G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *, PluginAction, GLoadedBinary *, GtkStatusStack *, GProcContext *);
+G_MODULE_EXPORT void chrysalide_plugin_process_binary_disassembly(const GPluginModule *, PluginAction, GLoadedBinary *, GtkStatusStack *, GProcContext *);
diff --git a/plugins/lnxsyscalls/core.c b/plugins/lnxsyscalls/core.c
index fffb72f..02e109d 100644
--- a/plugins/lnxsyscalls/core.c
+++ b/plugins/lnxsyscalls/core.c
@@ -29,6 +29,7 @@
#include <core/global.h>
#include <core/nproc.h>
+#include <plugins/self.h>
#include "db.h"
@@ -37,8 +38,9 @@
-DEFINE_CHRYSALIDE_PLUGIN("GLnxSyscallsPlugin", "Linux System Calls", "Describes each Linux system call with its arguments", \
- "0.1.0", EMPTY_PG_LIST(.required), AL(PGA_PLUGIN_INIT, PGA_DISASSEMBLY_ENDED));
+DEFINE_CHRYSALIDE_PLUGIN("LinuxSyscalls", "Describes each Linux system call with its arguments",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE(""),
+ NO_REQ, AL(PGA_PLUGIN_INIT, PGA_DISASSEMBLY_ENDED));
@@ -59,11 +61,11 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin)
bool result; /* Bilan à retourner */
sqlite3 *db; /* Base de données présente */
- db = open_syscalls_database(plugin);
+ db = open_syscalls_database();
if (db != NULL)
{
- introduce_syscalls_database(db, plugin);
+ introduce_syscalls_database(db);
close_syscalls_database(db);
@@ -94,7 +96,7 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin)
* *
******************************************************************************/
-G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *plugin, PluginAction action, GLoadedBinary *binary, GtkStatusStack *status, GProcContext *context)
+G_MODULE_EXPORT void chrysalide_plugin_process_binary_disassembly(const GPluginModule *plugin, PluginAction action, GLoadedBinary *binary, GtkStatusStack *status, GProcContext *context)
{
GBinFormat *format; /* Format du binaire chargé */
const char *arch; /* Architecture d'exécution */
@@ -121,8 +123,7 @@ G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *plugin, Plu
else
{
- g_plugin_module_log_variadic_message(plugin, LMT_WARNING,
- _("No suitable backend to track syscalls!"));
+ log_plugin_simple_message(LMT_WARNING, _("No suitable backend to track syscalls!"));
goto pbd_exit;
}
@@ -147,7 +148,7 @@ G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *plugin, Plu
else
end = begin + run_size;
- hunter = g_gate_hunter_new(plugin, binary, context, begin, end, id, hops);
+ hunter = g_gate_hunter_new(binary, context, begin, end, id, hops);
g_work_queue_schedule_work(queue, G_DELAYED_WORK(hunter), gid);
diff --git a/plugins/lnxsyscalls/core.h b/plugins/lnxsyscalls/core.h
index a8e987e..dcf5c11 100644
--- a/plugins/lnxsyscalls/core.h
+++ b/plugins/lnxsyscalls/core.h
@@ -34,7 +34,7 @@
G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *);
/* Exécute une action pendant un désassemblage de binaire. */
-G_MODULE_EXPORT void process_binary_disassembly(const GPluginModule *, PluginAction , GLoadedBinary *, GtkStatusStack *, GProcContext *);
+G_MODULE_EXPORT void chrysalide_plugin_process_binary_disassembly(const GPluginModule *, PluginAction , GLoadedBinary *, GtkStatusStack *, GProcContext *);
diff --git a/plugins/lnxsyscalls/db.c b/plugins/lnxsyscalls/db.c
index 1c28981..33dd727 100644
--- a/plugins/lnxsyscalls/db.c
+++ b/plugins/lnxsyscalls/db.c
@@ -32,13 +32,13 @@
#include <core/paths.h>
-#include <plugins/plugin-int.h>
+#include <plugins/self.h>
/******************************************************************************
* *
-* Paramètres : plugin = greffon à manipuler. *
+* Paramètres : - *
* *
* Description : Ouvre la base de connaissances quant aux appels système. *
* *
@@ -48,7 +48,7 @@
* *
******************************************************************************/
-sqlite3 *open_syscalls_database(const GPluginModule *plugin)
+sqlite3 *open_syscalls_database(void)
{
sqlite3 *result; /* Base de données à renvoyer */
char *filename; /* Chemin vers la base */
@@ -58,7 +58,7 @@ sqlite3 *open_syscalls_database(const GPluginModule *plugin)
if (filename == NULL)
{
- g_plugin_module_log_simple_message(plugin, LMT_ERROR, _("Unable to find the syscalls database"));
+ log_plugin_simple_message(LMT_ERROR, _("Unable to find the syscalls database"));
result = NULL;
}
@@ -68,7 +68,7 @@ sqlite3 *open_syscalls_database(const GPluginModule *plugin)
if (ret != SQLITE_OK)
{
- g_plugin_module_log_simple_message(plugin, LMT_ERROR, _("Unable to load the syscalls database"));
+ log_plugin_simple_message(LMT_ERROR, _("Unable to load the syscalls database"));
result = NULL;
}
@@ -115,8 +115,7 @@ void close_syscalls_database(sqlite3 *db)
/******************************************************************************
* *
-* Paramètres : db = base de données SQLite à consulter. *
-* plugin = greffon à manipuler. *
+* Paramètres : db = base de données SQLite à consulter. *
* *
* Description : Présente le contenu de la base des appels système. *
* *
@@ -126,7 +125,7 @@ void close_syscalls_database(sqlite3 *db)
* *
******************************************************************************/
-void introduce_syscalls_database(sqlite3 *db, const GPluginModule *plugin)
+void introduce_syscalls_database(sqlite3 *db)
{
const char *sql; /* Requête SQL à construire */
sqlite3_stmt *stmt; /* Déclaration mise en place */
@@ -137,18 +136,16 @@ void introduce_syscalls_database(sqlite3 *db, const GPluginModule *plugin)
ret = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (ret != SQLITE_OK)
{
- g_plugin_module_log_variadic_message(plugin, LMT_ERROR,
- _("Can't prepare statment '%s' (ret=%d): %s"),
- sql, ret, sqlite3_errmsg(db));
+ log_plugin_variadic_message(LMT_ERROR, _("Can't prepare statment '%s' (ret=%d): %s"),
+ sql, ret, sqlite3_errmsg(db));
goto isd_exit;
}
for (ret = sqlite3_step(stmt); ret == SQLITE_ROW; ret = sqlite3_step(stmt))
{
- g_plugin_module_log_variadic_message(plugin, LMT_INFO,
- _("The database contains %d syscalls for the '%s' architecture"),
- sqlite3_column_int(stmt, 1),
- (char *)sqlite3_column_text(stmt, 0));
+ log_plugin_variadic_message(LMT_INFO, _("The database contains %d syscalls for the '%s' architecture"),
+ sqlite3_column_int(stmt, 1),
+ (char *)sqlite3_column_text(stmt, 0));
}
sqlite3_finalize(stmt);
@@ -162,10 +159,9 @@ void introduce_syscalls_database(sqlite3 *db, const GPluginModule *plugin)
/******************************************************************************
* *
-* Paramètres : db = base de données SQLite à consulter. *
-* plugin = greffon à manipuler. *
-* arch = architecture visée par la procédure. *
-* : nr = indice de l'appel système à décrire. *
+* Paramètres : db = base de données SQLite à consulter. *
+* arch = architecture visée par la procédure. *
+* nr = indice de l'appel système à décrire. *
* *
* Description : Construit l'identité d'un appel système pour un indice donné.*
* *
@@ -175,7 +171,7 @@ void introduce_syscalls_database(sqlite3 *db, const GPluginModule *plugin)
* *
******************************************************************************/
-syscall_info_t *extract_from_syscalls_database(sqlite3 *db, const GPluginModule *plugin, const char *arch, unsigned int nr)
+syscall_info_t *extract_from_syscalls_database(sqlite3 *db, const char *arch, unsigned int nr)
{
syscall_info_t *result; /* Description à retourner */
const char *sql; /* Requête SQL à construire */
@@ -193,27 +189,24 @@ syscall_info_t *extract_from_syscalls_database(sqlite3 *db, const GPluginModule
ret = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (ret != SQLITE_OK)
{
- g_plugin_module_log_variadic_message(plugin, LMT_ERROR,
- _("Can't prepare statment '%s' (ret=%d): %s"),
- sql, ret, sqlite3_errmsg(db));
+ log_plugin_variadic_message(LMT_ERROR, _("Can't prepare statment '%s' (ret=%d): %s"),
+ sql, ret, sqlite3_errmsg(db));
goto efsd_exit;
}
ret = sqlite3_bind_text(stmt, 1, arch, -1, NULL);
if (ret != SQLITE_OK)
{
- g_plugin_module_log_variadic_message(plugin, LMT_ERROR,
- _("Can't bind value for parameter nb 0 in '%s' (ret=%d): %s"),
- sql, ret, sqlite3_errmsg(db));
+ log_plugin_variadic_message(LMT_ERROR, _("Can't bind value for parameter nb 0 in '%s' (ret=%d): %s"),
+ sql, ret, sqlite3_errmsg(db));
goto efsd_clean_exit;
}
ret = sqlite3_bind_int(stmt, 2, nr);
if (ret != SQLITE_OK)
{
- g_plugin_module_log_variadic_message(plugin, LMT_ERROR,
- _("Can't bind value for parameter nb 1 in '%s' (ret=%d): %s"),
- sql, ret, sqlite3_errmsg(db));
+ log_plugin_variadic_message(LMT_ERROR, _("Can't bind value for parameter nb 1 in '%s' (ret=%d): %s"),
+ sql, ret, sqlite3_errmsg(db));
goto efsd_clean_exit;
}
diff --git a/plugins/lnxsyscalls/db.h b/plugins/lnxsyscalls/db.h
index 7eae005..d0efe8b 100644
--- a/plugins/lnxsyscalls/db.h
+++ b/plugins/lnxsyscalls/db.h
@@ -36,16 +36,16 @@
/* Ouvre la base de connaissances quant aux appels système. */
-sqlite3 *open_syscalls_database(const GPluginModule *);
+sqlite3 *open_syscalls_database(void);
/* Ferme la base de connaissances quant aux appels système. */
void close_syscalls_database(sqlite3 *);
/* Présente le contenu de la base des appels système. */
-void introduce_syscalls_database(sqlite3 *, const GPluginModule *);
+void introduce_syscalls_database(sqlite3 *);
/* Construit l'identité d'un appel système pour un indice donné. */
-syscall_info_t *extract_from_syscalls_database(sqlite3 *, const GPluginModule *, const char *, unsigned int);
+syscall_info_t *extract_from_syscalls_database(sqlite3 *, const char *, unsigned int);
diff --git a/plugins/lnxsyscalls/hunter.c b/plugins/lnxsyscalls/hunter.c
index 30329fd..afe73fb 100644
--- a/plugins/lnxsyscalls/hunter.c
+++ b/plugins/lnxsyscalls/hunter.c
@@ -37,8 +37,6 @@ struct _GGateHunter
{
GDelayedWork parent; /* A laisser en premier */
- const GPluginModule *plugin; /* Liens pour les messages */
-
GLoadedBinary *binary; /* Binaire chargé et concerné */
GBinFormat *format; /* Format de fichier manipulé */
GProcContext *context; /* Contexte de désassemblage */
@@ -179,8 +177,7 @@ static void g_gate_hunter_finalize(GGateHunter *hunter)
/******************************************************************************
* *
-* Paramètres : plugin = greffon à manipuler. *
-* binary = binaire dont la définition est à compléter. *
+* Paramètres : binary = binaire dont la définition est à compléter. *
* context = contexte de désassemblage. *
* begin = point de départ du parcours de liste. *
* end = point d'arrivée exclu du parcours. *
@@ -195,14 +192,12 @@ static void g_gate_hunter_finalize(GGateHunter *hunter)
* *
******************************************************************************/
-GGateHunter *g_gate_hunter_new(const GPluginModule *plugin, GLoadedBinary *binary, GProcContext *context, size_t begin, size_t end, activity_id_t id, const hunting_ops *hops)
+GGateHunter *g_gate_hunter_new(GLoadedBinary *binary, GProcContext *context, size_t begin, size_t end, activity_id_t id, const hunting_ops *hops)
{
GGateHunter *result; /* Tâche à retourner */
result = g_object_new(G_TYPE_GATE_HUNTER, NULL);
- result->plugin = plugin;
-
result->binary = binary;
g_object_ref(G_OBJECT(binary));
@@ -220,7 +215,7 @@ GGateHunter *g_gate_hunter_new(const GPluginModule *plugin, GLoadedBinary *binar
result->hops = hops;
- result->db = open_syscalls_database(plugin);
+ result->db = open_syscalls_database();
if (result->db == NULL) goto gghn_db_error;
return result;
@@ -291,7 +286,7 @@ static void g_gate_hunter_process(GGateHunter *hunter, GtkStatusStack *status)
ret = hunter->hops->resolve_nr(exec, proc, hunter->hops, &nr);
if (!ret) goto unknown_syscall;
- info = extract_from_syscalls_database(hunter->db, hunter->plugin, hunter->hops->arch, nr);
+ info = extract_from_syscalls_database(hunter->db, hunter->hops->arch, nr);
if (info == NULL) goto unknown_syscall;
loop = count_register_tracker_stacks(exec);
diff --git a/plugins/lnxsyscalls/hunter.h b/plugins/lnxsyscalls/hunter.h
index ba244e2..ed191f4 100644
--- a/plugins/lnxsyscalls/hunter.h
+++ b/plugins/lnxsyscalls/hunter.h
@@ -26,7 +26,7 @@
#include <analysis/binary.h>
-#include <plugins/plugin.h>
+#include <gtkext/gtkstatusstack.h>
#include "hops.h"
@@ -52,7 +52,7 @@ typedef struct _GGateHunterClass GGateHunterClass;
GType g_gate_hunter_get_type(void);
/* Crée une tâche d'étude de routines différée. */
-GGateHunter *g_gate_hunter_new(const GPluginModule *, GLoadedBinary *, GProcContext *, size_t, size_t, activity_id_t, const hunting_ops *);
+GGateHunter *g_gate_hunter_new(GLoadedBinary *, GProcContext *, size_t, size_t, activity_id_t, const hunting_ops *);
diff --git a/plugins/mobicore/Makefile.am b/plugins/mobicore/Makefile.am
index 0790200..4647ceb 100644
--- a/plugins/mobicore/Makefile.am
+++ b/plugins/mobicore/Makefile.am
@@ -11,7 +11,8 @@ libmobicore_la_SOURCES = \
mclf.h mclf.c \
symbols.h symbols.c
-libmobicore_la_LDFLAGS = -L$(top_srcdir)/src/.libs -lchrysacore
+libmobicore_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore
devdir = $(includedir)/chrysalide-$(subdir)
diff --git a/plugins/mobicore/core.c b/plugins/mobicore/core.c
index 2634b63..555e652 100644
--- a/plugins/mobicore/core.c
+++ b/plugins/mobicore/core.c
@@ -25,15 +25,16 @@
#include <core/global.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "mclf.h"
-DEFINE_CHRYSALIDE_PLUGIN("GMobicorePlugin", "mobicore", "Support MobiCore file format for Trusted Applications", "0.1.0",
- EMPTY_PG_LIST(.required), AL(PGA_CONTENT_RESOLVER));
+DEFINE_CHRYSALIDE_PLUGIN("Mobicore", "MobiCore file format support for Trusted Applications",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("doc/formats"),
+ NO_REQ, AL(PGA_CONTENT_RESOLVER));
diff --git a/plugins/pychrysalide/Makefile.am b/plugins/pychrysalide/Makefile.am
index 25c3e40..b85f417 100644
--- a/plugins/pychrysalide/Makefile.am
+++ b/plugins/pychrysalide/Makefile.am
@@ -26,8 +26,9 @@ pychrysalide_la_LIBADD = \
gui/libpychrysagui.la \
mangling/libpychrysamangling.la
-pychrysalide_la_LDFLAGS = -module -avoid-version \
- $(LIBPYTHON_LIBS) $(LIBPYGOBJECT_LIBS) \
+pychrysalide_la_LDFLAGS = \
+ -module -avoid-version \
+ $(LIBPYTHON_LIBS) $(LIBPYGOBJECT_LIBS) \
-L$(top_srcdir)/src/.libs -lchrysacore
diff --git a/plugins/pychrysalide/core/logs.c b/plugins/pychrysalide/core/logs.c
index 0136b50..0965b4b 100644
--- a/plugins/pychrysalide/core/logs.c
+++ b/plugins/pychrysalide/core/logs.c
@@ -29,6 +29,7 @@
#include <core/logs.h>
+#include <plugins/self.h>
#include "constants.h"
@@ -169,7 +170,7 @@ static PyObject *py_logs_log_message(PyObject *self, PyObject *args)
case LMT_BAD_BINARY:
case LMT_ERROR:
case LMT_EXT_ERROR:
- log_pychrysalide_simple_message(type, msg);
+ log_plugin_simple_message(type, msg);
result = Py_None;
Py_INCREF(result);
break;
diff --git a/plugins/pychrysalide/plugin.c b/plugins/pychrysalide/plugin.c
index 07b9224..1736826 100644
--- a/plugins/pychrysalide/plugin.c
+++ b/plugins/pychrysalide/plugin.c
@@ -33,7 +33,7 @@
#include <common/extstr.h>
#include <plugins/dt.h>
-#include <plugins/plugin-int.h>
+#include <plugins/self.h>
#include "access.h"
@@ -1021,8 +1021,8 @@ GPluginModule *g_python_plugin_new(const char *modname, const char *filename)
no_class:
if (class == NULL)
- log_pychrysalide_simple_message(LMT_ERROR,
- _("An error occured when looking for the 'AutoLoad': item not found!"));
+ log_plugin_simple_message(LMT_ERROR,
+ _("An error occured when looking for the 'AutoLoad': item not found!"));
no_import:
diff --git a/plugins/pychrysalide/pychrysa.c b/plugins/pychrysalide/pychrysa.c
index 8e37b09..683e41e 100644
--- a/plugins/pychrysalide/pychrysa.c
+++ b/plugins/pychrysalide/pychrysa.c
@@ -43,8 +43,7 @@
#include <common/extstr.h>
#include <core/core.h>
#include <plugins/pglist.h>
-#include <plugins/plugin-def.h>
-#include <plugins/plugin-int.h>
+#include <plugins/self.h>
#include "access.h"
@@ -66,15 +65,13 @@
-DEFINE_CHRYSALIDE_CONTAINER_PLUGIN("GPyChrysalidePlugin", "PyChrysalide", "Provides bindings to Python", "0.1.0",
- EMPTY_PG_LIST(.required), AL(PGA_PLUGIN_INIT, PGA_PLUGIN_EXIT, PGA_NATIVE_LOADED));
+DEFINE_CHRYSALIDE_CONTAINER_PLUGIN("PyChrysalide", "Chrysalide bindings to Python",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE("api/python/pychrysalide"),
+ NO_REQ, AL(PGA_PLUGIN_INIT, PGA_PLUGIN_EXIT, PGA_NATIVE_LOADED));
-/* Conservation d'une référence au greffon pour les messages */
-static GPluginModule *_this = NULL;
-
/* Note la nature du chargement */
-#define _standalone (_this == NULL)
+static bool _standalone = true;
/* Réceptacle pour le chargement forcé */
static PyObject *_chrysalide_module = NULL;
@@ -777,7 +774,7 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin)
bool result; /* Bilan à retourner */
int ret; /* Bilan de préparatifs */
- _this = plugin;
+ _standalone = false;
/* Chargement du module pour Python */
@@ -785,8 +782,7 @@ G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin)
if (ret == -1)
{
- g_plugin_module_log_variadic_message(plugin, LMT_ERROR,
- _("Can not extend the existing table of Python built-in modules."));
+ log_plugin_simple_message(LMT_ERROR, _("Can not extend the existing table of Python built-in modules."));
result = false;
goto cpi_done;
}
@@ -900,29 +896,6 @@ PyThreadState *get_pychrysalide_main_tstate(void)
/******************************************************************************
* *
-* Paramètres : msg = message à faire apparaître à l'écran. *
-* *
-* Description : Présente dans le journal un message simple. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void log_pychrysalide_simple_message(LogMessageType type, const char *msg)
-{
- if (_this != NULL)
- g_plugin_module_log_simple_message(_this, type, msg);
-
- else
- log_simple_message(type, msg);
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : prefix = message d'introduction à faire apparaître à l'écran.*
* *
* Description : Présente dans le journal une exception survenue. *
@@ -976,7 +949,7 @@ void log_pychrysalide_exception(const char *prefix, ...)
Py_XDECREF(err_traceback);
Py_XDECREF(err_type);
- log_pychrysalide_simple_message(LMT_ERROR, msg);
+ log_plugin_simple_message(LMT_ERROR, msg);
free(msg);
diff --git a/plugins/pychrysalide/pychrysa.h b/plugins/pychrysalide/pychrysa.h
index 8eba5b7..a6d4bb1 100644
--- a/plugins/pychrysalide/pychrysa.h
+++ b/plugins/pychrysalide/pychrysa.h
@@ -55,9 +55,6 @@ G_MODULE_EXPORT void chrysalide_plugin_on_native_loaded(GPluginModule *, PluginA
/* Fournit les informations du thread principal. */
PyThreadState *get_pychrysalide_main_tstate(void);
-/* Présente dans le journal un message simple. */
-void log_pychrysalide_simple_message(LogMessageType, const char *);
-
/* Présente dans le journal une exception survenue. */
void log_pychrysalide_exception(const char *, ...);
diff --git a/plugins/readdex/reader.c b/plugins/readdex/reader.c
index 8ef20b3..b63769e 100644
--- a/plugins/readdex/reader.c
+++ b/plugins/readdex/reader.c
@@ -25,7 +25,7 @@
#include <plugins/dex/format.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "class.h"
@@ -34,7 +34,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GDexReaderPlugin", "readdex", "Displays information about DEX files", "0.2.0",
+DEFINE_CHRYSALIDE_PLUGIN("DexReader", "Information about DEX files",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE(""),
NO_REQ, AL(PGA_FORMAT_PRELOAD));
@@ -54,7 +55,7 @@ DEFINE_CHRYSALIDE_PLUGIN("GDexReaderPlugin", "readdex", "Displays information ab
* *
******************************************************************************/
-G_MODULE_EXPORT bool preload_binary_format(const GPluginModule *plugin, PluginAction action, GBinFormat *format, GPreloadInfo *info, GtkStatusStack *status)
+G_MODULE_EXPORT bool chrysalide_plugin_preload_binary_format(const GPluginModule *plugin, PluginAction action, GBinFormat *format, GPreloadInfo *info, GtkStatusStack *status)
{
bool result; /* Bilan à retourner */
GDexFormat *dex_fmt; /* Version DEX */
diff --git a/plugins/readdex/reader.h b/plugins/readdex/reader.h
index 5982a81..24d4bcc 100644
--- a/plugins/readdex/reader.h
+++ b/plugins/readdex/reader.h
@@ -31,7 +31,7 @@
/* Etablit des symboles complémentaires dans un format DEX. */
-G_MODULE_EXPORT bool preload_binary_format(const GPluginModule *, PluginAction, GBinFormat *, GPreloadInfo *, GtkStatusStack *);
+G_MODULE_EXPORT bool chrysalide_plugin_preload_binary_format(const GPluginModule *, PluginAction, GBinFormat *, GPreloadInfo *, GtkStatusStack *);
diff --git a/plugins/readelf/reader.c b/plugins/readelf/reader.c
index 53463e9..0c87660 100644
--- a/plugins/readelf/reader.c
+++ b/plugins/readelf/reader.c
@@ -25,7 +25,7 @@
#include <plugins/elf/format.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "header.h"
@@ -35,7 +35,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GElfReaderPlugin", "readelf", "Displays information about ELF files", "0.2.0",
+DEFINE_CHRYSALIDE_PLUGIN("ElfReader", "Information about ELF files",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE(""),
NO_REQ, AL(PGA_FORMAT_PRELOAD));
@@ -55,7 +56,7 @@ DEFINE_CHRYSALIDE_PLUGIN("GElfReaderPlugin", "readelf", "Displays information ab
* *
******************************************************************************/
-G_MODULE_EXPORT bool preload_binary_format(const GPluginModule *plugin, PluginAction action, GBinFormat *format, GPreloadInfo *info, GtkStatusStack *status)
+G_MODULE_EXPORT bool chrysalide_plugin_preload_binary_format(const GPluginModule *plugin, PluginAction action, GBinFormat *format, GPreloadInfo *info, GtkStatusStack *status)
{
bool result; /* Bilan à retourner */
GElfFormat *elf_fmt; /* Version ELF */
diff --git a/plugins/readelf/reader.h b/plugins/readelf/reader.h
index 440df67..8c280a4 100644
--- a/plugins/readelf/reader.h
+++ b/plugins/readelf/reader.h
@@ -31,7 +31,7 @@
/* Etablit des symboles complémentaires dans un format ELF. */
-G_MODULE_EXPORT bool preload_binary_format(const GPluginModule *, PluginAction, GBinFormat *, GPreloadInfo *, GtkStatusStack *);
+G_MODULE_EXPORT bool chrysalide_plugin_preload_binary_format(const GPluginModule *, PluginAction, GBinFormat *, GPreloadInfo *, GtkStatusStack *);
diff --git a/plugins/readmc/reader.c b/plugins/readmc/reader.c
index aa601f5..7239960 100644
--- a/plugins/readmc/reader.c
+++ b/plugins/readmc/reader.c
@@ -25,7 +25,7 @@
#include <plugins/mobicore/mclf.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "header.h"
@@ -36,7 +36,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GMCReaderPlugin", "readmc", "Displays information about Mobicore files", "0.2.0",
+DEFINE_CHRYSALIDE_PLUGIN("MCReader", "Information about Mobicore files",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE(""),
NO_REQ, AL(PGA_FORMAT_PRELOAD));
@@ -56,7 +57,7 @@ DEFINE_CHRYSALIDE_PLUGIN("GMCReaderPlugin", "readmc", "Displays information abou
* *
******************************************************************************/
-G_MODULE_EXPORT bool preload_binary_format(const GPluginModule *plugin, PluginAction action, GBinFormat *format, GPreloadInfo *info, GtkStatusStack *status)
+G_MODULE_EXPORT bool chrysalide_plugin_preload_binary_format(const GPluginModule *plugin, PluginAction action, GBinFormat *format, GPreloadInfo *info, GtkStatusStack *status)
{
bool result; /* Bilan à retourner */
vmpa2t pos; /* Tête de lecture des symboles*/
diff --git a/plugins/readmc/reader.h b/plugins/readmc/reader.h
index 0eed6e2..e9aae1e 100644
--- a/plugins/readmc/reader.h
+++ b/plugins/readmc/reader.h
@@ -31,7 +31,7 @@
/* Etablit des symboles complémentaires dans un format Mobicore. */
-G_MODULE_EXPORT bool preload_binary_format(const GPluginModule *, PluginAction, GBinFormat *, GPreloadInfo *, GtkStatusStack *);
+G_MODULE_EXPORT bool chrysalide_plugin_preload_binary_format(const GPluginModule *, PluginAction, GBinFormat *, GPreloadInfo *, GtkStatusStack *);
diff --git a/plugins/ropgadgets/plugin.c b/plugins/ropgadgets/plugin.c
index 0bfde84..c4c33dc 100644
--- a/plugins/ropgadgets/plugin.c
+++ b/plugins/ropgadgets/plugin.c
@@ -30,7 +30,7 @@
#include <gui/core/global.h>
#include <gtkext/easygtk.h>
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#include "select.h"
@@ -44,7 +44,8 @@
-DEFINE_CHRYSALIDE_PLUGIN("GROPPlugin", "ROP gadgets", "Find available gadgets for a ROP chain", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("RopGadgets", "Gadgets finder for a ROP chain",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE(""),
PG_REQ, AL(PGA_PLUGIN_INIT));
diff --git a/plugins/stackvars/Makefile.am b/plugins/stackvars/Makefile.am
index d4a7714..46d5639 100644
--- a/plugins/stackvars/Makefile.am
+++ b/plugins/stackvars/Makefile.am
@@ -10,7 +10,8 @@ libstackvars_la_SOURCES = \
libstackvars_la_CFLAGS = $(AM_CFLAGS)
-libstackvars_la_LDFLAGS = -L$(top_srcdir)/src/.libs -lchrysacore
+libstackvars_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore
devdir = $(includedir)/chrysalide-$(subdir)
diff --git a/plugins/yaml/Makefile.am b/plugins/yaml/Makefile.am
index 5432c9d..21d6192 100644
--- a/plugins/yaml/Makefile.am
+++ b/plugins/yaml/Makefile.am
@@ -40,8 +40,8 @@ libyaml_la_SOURCES = \
libyaml_la_LIBADD = \
$(PYTHON3_LIBADD)
-libyaml_la_LDFLAGS = \
- -L$(top_srcdir)/src/.libs -lchrysacore \
+libyaml_la_LDFLAGS = \
+ -L$(top_srcdir)/src/.libs -lchrysacore \
$(PYTHON3_LDFLAGS)
diff --git a/plugins/yaml/core.c b/plugins/yaml/core.c
index 8bcea05..ffc7edd 100644
--- a/plugins/yaml/core.c
+++ b/plugins/yaml/core.c
@@ -24,7 +24,7 @@
#include "core.h"
-#include <plugins/plugin-def.h>
+#include <plugins/self.h>
#ifdef HAVE_PYTHON3_BINDINGS
@@ -39,7 +39,8 @@
#endif
-DEFINE_CHRYSALIDE_PLUGIN("GYamlPlugin", "yaml", "Reader for Yaml contents", "0.1.0",
+DEFINE_CHRYSALIDE_PLUGIN("Yaml", "Yaml content reader",
+ PACKAGE_VERSION, CHRYSALIDE_WEBSITE(""),
PG_REQ, AL(PGA_PLUGIN_INIT));
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index 4059e0b..be459e3 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -8,7 +8,8 @@ libplugins_la_SOURCES = \
pglist.h pglist.c \
plugin-def.h \
plugin-int.h \
- plugin.h plugin.c
+ plugin.h plugin.c \
+ self.h
libplugins_la_CFLAGS = $(AM_CFLAGS)
diff --git a/src/plugins/plugin-def.h b/src/plugins/plugin-def.h
index bb5641b..7895eeb 100644
--- a/src/plugins/plugin-def.h
+++ b/src/plugins/plugin-def.h
@@ -45,9 +45,7 @@ typedef uint32_t plugin_abi_version_t;
#define GET_ABI_MIN_VERSION(vs) ((vs >> 16) & 0xff)
#define GET_ABI_REV_VERSION(vs) (vs & 0xffff)
-#define CURRENT_ABI_VERSION DEFINE_PLUGIN_ABI_VERSION(0, 2, 0)
-
-//#define HARD_CODE_CURRENT_ABI_VERSION const plugin_abi_version_t abi_version = CURRENT_ABI_VERSION
+#define CURRENT_ABI_VERSION DEFINE_PLUGIN_ABI_VERSION(0, 3, 0)
@@ -235,6 +233,7 @@ typedef struct _plugin_interface
char *name; /* Désignation humaine courte */
char *desc; /* Description plus loquace */
char *version; /* Version du greffon */
+ char *url; /* Site Web associé */
bool container; /* Mise en place de greffons ? */
@@ -247,61 +246,5 @@ typedef struct _plugin_interface
} plugin_interface;
-/* Facilitations de déclarations */
-
-#define EMPTY_PG_LIST(name) \
- name = NULL, \
- name ## _count = 0 \
-
-#define BUILD_PG_LIST(name, lst) \
- name = lst, \
- name ## _count = sizeof(lst) / sizeof(lst[0]) \
-
-#define AL(...) BUILD_PG_LIST(.actions, ((plugin_action_t []){ __VA_ARGS__ }))
-
-#define RL(...) BUILD_PG_LIST(.required, ((char *[]){ __VA_ARGS__ }))
-
-#define NO_REQ EMPTY_PG_LIST(.required)
-
-
-#define DEFINE_CHRYSALIDE_PLUGIN(t, n, d, v, r, a) \
-G_MODULE_EXPORT const plugin_interface _chrysalide_plugin = { \
- \
- .magic = CHRYSALIDE_PLUGIN_MAGIC, \
- .abi_version = CURRENT_ABI_VERSION, \
- \
- .gtp_name = t, \
- .name = n, \
- .desc = d, \
- .version = v, \
- \
- .container = false, \
- \
- r, \
- \
- a, \
- \
-}
-
-#define DEFINE_CHRYSALIDE_CONTAINER_PLUGIN(t, n, d, v, r, a) \
-G_MODULE_EXPORT const plugin_interface _chrysalide_plugin = { \
- \
- .magic = CHRYSALIDE_PLUGIN_MAGIC, \
- .abi_version = CURRENT_ABI_VERSION, \
- \
- .gtp_name = t, \
- .name = n, \
- .desc = d, \
- .version = v, \
- \
- .container = true, \
- \
- r, \
- \
- a, \
- \
-}
-
-
#endif /* _PLUGINS_PLUGIN_DEF_H */
diff --git a/src/plugins/plugin-int.h b/src/plugins/plugin-int.h
index 62517d0..4f245b1 100644
--- a/src/plugins/plugin-int.h
+++ b/src/plugins/plugin-int.h
@@ -30,14 +30,15 @@
#include "plugin.h"
-#include "plugin-def.h"
#include "../analysis/content.h"
#include "../analysis/loaded.h"
#include "../common/bits.h"
-#include "../core/logs.h"
+/* Transfert de la conscience de soi. */
+typedef void (* pg_set_self_fc) (GPluginModule *);
+
/* Prend acte du [dé]chargement du greffon. */
typedef bool (* pg_management_fc) (GPluginModule *);
@@ -112,12 +113,5 @@ struct _GPluginModuleClass
};
-/* Présente dans le journal un message simple. */
-void g_plugin_module_log_simple_message(const GPluginModule *, LogMessageType, const char *);
-
-/* Présente dans le journal un message complexe. */
-void g_plugin_module_log_variadic_message(const GPluginModule *, LogMessageType, const char *, ...);
-
-
#endif /* _PLUGINS_PLUGIN_INT_H */
diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c
index a6dadb9..674b1a8 100644
--- a/src/plugins/plugin.c
+++ b/src/plugins/plugin.c
@@ -207,6 +207,7 @@ GPluginModule *g_plugin_module_new(const gchar *filename)
{
GPluginModule *result; /* Structure à retourner */
GModule *module; /* Abstration de manipulation */
+ pg_set_self_fc set_self; /* Copie du greffon */
const plugin_interface *interface; /* Déclaration d'interfaçage */
plugin_abi_version_t current; /* Version de l'ABI actuelle */
bool valid; /* Statut de validité */
@@ -243,6 +244,9 @@ GPluginModule *g_plugin_module_new(const gchar *filename)
/* Récupération de la version d'ABI */
+ if (!load_plugin_symbol(module, "chrysalide_plugin_set_self", &set_self))
+ goto no_self_setter;
+
if (!load_plugin_symbol(module, "_chrysalide_plugin", &interface))
goto no_interface;
@@ -398,11 +402,11 @@ GPluginModule *g_plugin_module_new(const gchar *filename)
case PGA_FORMAT_ANALYSIS_ENDED:
case PGA_FORMAT_POST_ANALYSIS_STARTED:
case PGA_FORMAT_POST_ANALYSIS_ENDED:
- valid = check_plugin_symbol(module, "handle_binary_format_analysis");
+ valid = check_plugin_symbol(module, "chrysalide_plugin_handle_binary_format_analysis");
break;
case PGA_FORMAT_PRELOAD:
- valid = check_plugin_symbol(module, "preload_binary_format");
+ valid = check_plugin_symbol(module, "chrysalide_plugin_preload_binary_format");
break;
case PGA_FORMAT_ATTACH_DEBUG:
@@ -420,7 +424,7 @@ GPluginModule *g_plugin_module_new(const gchar *filename)
break;
case DPS_DISASSEMBLY:
- valid = check_plugin_symbol(module, "process_binary_disassembly");
+ valid = check_plugin_symbol(module, "chrysalide_plugin_process_binary_disassembly");
break;
case DPS_DETECTION:
@@ -461,8 +465,15 @@ GPluginModule *g_plugin_module_new(const gchar *filename)
result->interface = interface;
+ set_self(result);
+
return result;
+ no_self_setter:
+
+ log_variadic_message(LMT_ERROR, _("Self pointer setter is missing for plugin '%s'"), filename);
+ goto bad_plugin;
+
no_interface:
log_variadic_message(LMT_ERROR, _("Main interface is missing for plugin '%s'"), filename);
@@ -652,12 +663,12 @@ static void g_plugin_module_init_gclass(GPluginModuleClass *class, GModule *modu
case PGA_FORMAT_ANALYSIS_ENDED:
case PGA_FORMAT_POST_ANALYSIS_STARTED:
case PGA_FORMAT_POST_ANALYSIS_ENDED:
- load_plugin_symbol(module, "handle_binary_format_analysis",
+ load_plugin_symbol(module, "chrysalide_plugin_handle_binary_format_analysis",
&class->handle_fmt_analysis);
break;
case PGA_FORMAT_PRELOAD:
- load_plugin_symbol(module, "preload_binary_format", &class->preload_format);
+ load_plugin_symbol(module, "chrysalide_plugin_preload_binary_format", &class->preload_format);
break;
case PGA_FORMAT_ATTACH_DEBUG:
@@ -673,7 +684,7 @@ static void g_plugin_module_init_gclass(GPluginModuleClass *class, GModule *modu
break;
case DPS_DISASSEMBLY:
- load_plugin_symbol(module, "process_binary_disassembly", &class->process_disass);
+ load_plugin_symbol(module, "chrysalide_plugin_process_binary_disassembly", &class->process_disass);
break;
case DPS_DETECTION:
diff --git a/src/plugins/plugin.h b/src/plugins/plugin.h
index c7ecff2..3a55041 100644
--- a/src/plugins/plugin.h
+++ b/src/plugins/plugin.h
@@ -31,6 +31,7 @@
#include "plugin-def.h"
#include "../analysis/binary.h"
+#include "../core/logs.h"
#include "../format/format.h"
#include "../format/known.h"
#include "../format/preload.h"
@@ -92,6 +93,12 @@ bool g_plugin_module_resolve_dependencies(GPluginModule *, GPluginModule **, siz
/* Termine le chargement du greffon préparé. */
bool g_plugin_module_load(GPluginModule *, GPluginModule **, size_t);
+/* Présente dans le journal un message simple. */
+void g_plugin_module_log_simple_message(const GPluginModule *, LogMessageType, const char *);
+
+/* Présente dans le journal un message complexe. */
+void g_plugin_module_log_variadic_message(const GPluginModule *, LogMessageType, const char *, ...);
+
/* Accompagne la fin du chargement des modules natifs. */
void g_plugin_module_notify_native_loaded(GPluginModule *, PluginAction, void *);
diff --git a/src/plugins/self.h b/src/plugins/self.h
new file mode 100644
index 0000000..6a2e12d
--- /dev/null
+++ b/src/plugins/self.h
@@ -0,0 +1,128 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * self.h - définitions pour inclusion dans les différents greffons
+ *
+ * Copyright (C) 2020 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * Chrysalide is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Chrysalide is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifndef _PLUGINS_SELF_H
+#define _PLUGINS_SELF_H
+
+
+#include <config.h>
+
+
+#ifndef _PLUGINS_PLUGIN_H
+# include "plugin.h"
+#endif
+
+
+
+/* Facilitations de déclarations */
+
+#define CHRYSALIDE_WEBSITE(p) "https://www.chrysalide.re/" p
+
+#define EMPTY_PG_LIST(name) \
+ name = NULL, \
+ name ## _count = 0 \
+
+#define BUILD_PG_LIST(name, lst) \
+ name = lst, \
+ name ## _count = sizeof(lst) / sizeof(lst[0]) \
+
+#define AL(...) BUILD_PG_LIST(.actions, ((plugin_action_t []){ __VA_ARGS__ }))
+
+#define RL(...) BUILD_PG_LIST(.required, ((char *[]){ __VA_ARGS__ }))
+
+#define NO_REQ EMPTY_PG_LIST(.required)
+
+
+/* Composants d'interface */
+
+#define __private __attribute__((visibility("hidden")))
+
+#define PLUGIN_CORE_SELF \
+static GPluginModule *_this_plugin = NULL; \
+G_MODULE_EXPORT void chrysalide_plugin_set_self(GPluginModule *p); \
+G_MODULE_EXPORT void chrysalide_plugin_set_self(GPluginModule *p) { _this_plugin = p; }; \
+__private GPluginModule *_chrysalide_plugin_get_self(void); \
+__private GPluginModule *_chrysalide_plugin_get_self(void) { return _this_plugin; };
+
+#define PLUGIN_CORE_PROPS(n, d, v, u, c) \
+ \
+ .magic = CHRYSALIDE_PLUGIN_MAGIC, \
+ .abi_version = CURRENT_ABI_VERSION, \
+ \
+ .gtp_name = "G" n "Plugin", \
+ .name = n, \
+ .desc = d, \
+ .version = v, \
+ .url = u, \
+ \
+ .container = c
+
+#define DEFINE_CHRYSALIDE_PLUGIN(n, d, v, u, r, a) \
+PLUGIN_CORE_SELF \
+G_MODULE_EXPORT const plugin_interface _chrysalide_plugin = { \
+ PLUGIN_CORE_PROPS(n, d, v, u, false), \
+ r, \
+ a, \
+}
+
+#define DEFINE_CHRYSALIDE_CONTAINER_PLUGIN(n, d, v, u, r, a) \
+PLUGIN_CORE_SELF \
+G_MODULE_EXPORT const plugin_interface _chrysalide_plugin = { \
+ PLUGIN_CORE_PROPS(n, d, v, u, true), \
+ r, \
+ a, \
+}
+
+
+/* Manipulations accélérées */
+
+__private GPluginModule *_chrysalide_plugin_get_self(void);
+
+#define log_plugin_simple_message(type, msg) \
+ do \
+ { \
+ GPluginModule *__this; \
+ __this = _chrysalide_plugin_get_self(); \
+ if (__this != NULL) \
+ g_plugin_module_log_simple_message(__this, type, msg); \
+ else \
+ log_simple_message(type, msg); \
+ } \
+ while (0)
+
+#define log_plugin_variadic_message(type, msg, ...) \
+ do \
+ { \
+ GPluginModule *__this; \
+ __this = _chrysalide_plugin_get_self(); \
+ if (__this != NULL) \
+ g_plugin_module_log_variadic_message(__this, type, msg, __VA_ARGS__); \
+ else \
+ log_variadic_message(type, msg, __VA_ARGS__); \
+ } \
+ while (0)
+
+
+
+#endif /* _PLUGINS_SELF_H */