[Cogl] [PATCH] Use GModule instead of libdl to load unit test symbols
Neil Roberts
neil at linux.intel.com
Mon Jun 10 05:25:15 PDT 2013
Previously the unit tests were using libdl without directly linking to
it. It looks like this ends up working because one of Cogl's
dependencies ends up pulling adding -ldl via libtool. However in some
configurations it looks like this wasn't happening.
To avoid this problem we can just use GModule to resolve the symbols.
g_module_open is documented to return a handle to the ‘main program’
when NULL is passed as the filename and looking at the code it seems
that this ends up using RTLD_DEFAULT so it will have the same effect.
The in-tree copy of glib already has the code for gmodule so this
shouldn't cause problems for --disable-glib.
---
tests/unit/test-unit-main.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/tests/unit/test-unit-main.c b/tests/unit/test-unit-main.c
index f78399a..92dcec7 100644
--- a/tests/unit/test-unit-main.c
+++ b/tests/unit/test-unit-main.c
@@ -1,12 +1,13 @@
#include <config.h>
-#include <dlfcn.h>
+#include <gmodule.h>
#include <test-fixtures/test-unit.h>
int
main (int argc, char **argv)
{
+ GModule *main_module;
const CoglUnitTest *unit_test;
int i;
@@ -25,8 +26,10 @@ main (int argc, char **argv)
argv[1][i] = '_';
}
- unit_test = dlsym (RTLD_DEFAULT, argv[1]);
- if (!unit_test)
+ main_module = g_module_open (NULL, /* use main module */
+ 0 /* flags */);
+
+ if (!g_module_symbol (main_module, argv[1], (void **) &unit_test))
{
g_printerr ("Unknown test name \"%s\"\n", argv[1]);
return 1;
--
1.7.11.3.g3c3efa5
More information about the Cogl
mailing list