Use GModule instead of libdl to load unit test symbols
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. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit b14ece116ed3e4b18d59b645e77b3449fac51137)
This commit is contained in:
parent
6d51a18e7c
commit
e6fb1fb433
@ -1,12 +1,13 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <dlfcn.h>
|
#include <gmodule.h>
|
||||||
|
|
||||||
#include <test-fixtures/test-unit.h>
|
#include <test-fixtures/test-unit.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
GModule *main_module;
|
||||||
const CoglUnitTest *unit_test;
|
const CoglUnitTest *unit_test;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -25,8 +26,10 @@ main (int argc, char **argv)
|
|||||||
argv[1][i] = '_';
|
argv[1][i] = '_';
|
||||||
}
|
}
|
||||||
|
|
||||||
unit_test = dlsym (RTLD_DEFAULT, argv[1]);
|
main_module = g_module_open (NULL, /* use main module */
|
||||||
if (!unit_test)
|
0 /* flags */);
|
||||||
|
|
||||||
|
if (!g_module_symbol (main_module, argv[1], (void **) &unit_test))
|
||||||
{
|
{
|
||||||
g_printerr ("Unknown test name \"%s\"\n", argv[1]);
|
g_printerr ("Unknown test name \"%s\"\n", argv[1]);
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user