unit-tests: Change how hashtable for testable functions is created
Because GCC does not adhere to the priorities defined for constructors when building with --enable-monolithic (not sure if it was just luck that it worked in non-monolithic mode - anyway, it's not very portable) function registration would fail because the hashtable would not be created yet.
This commit is contained in:
@@ -32,26 +32,30 @@
|
||||
#define TTY(color) tty_escape_get(2, TTY_FG_##color)
|
||||
|
||||
/**
|
||||
* Initialize the lookup table for testable functions (defined in libstrongswan)
|
||||
* Initialize the lookup table for testable functions (defined in
|
||||
* libstrongswan). We don't use the constructor attribute as the order can't
|
||||
* really be defined (clang does not support it and gcc does not adhere to it in
|
||||
* the monolithic build). The function here is a weak symbol in libstrongswan.
|
||||
*/
|
||||
static void testable_functions_create() __attribute__ ((constructor(1000)));
|
||||
static void testable_functions_create()
|
||||
void testable_functions_create()
|
||||
{
|
||||
testable_functions = hashtable_create(hashtable_hash_str,
|
||||
hashtable_equals_str, 8);
|
||||
if (!testable_functions)
|
||||
{
|
||||
testable_functions = hashtable_create(hashtable_hash_str,
|
||||
hashtable_equals_str, 8);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy the lookup table for testable functions
|
||||
*/
|
||||
static void testable_functions_destroy() __attribute__ ((destructor(1000)));
|
||||
static void testable_functions_destroy() __attribute__ ((destructor));
|
||||
static void testable_functions_destroy()
|
||||
{
|
||||
testable_functions->destroy(testable_functions);
|
||||
DESTROY_IF(testable_functions);
|
||||
/* if leak detective is enabled plugins are not actually unloaded, which
|
||||
* means their destructor is called AFTER this one when the process
|
||||
* terminates, even though the priority says differently, make sure this
|
||||
* does not crash */
|
||||
* terminates, make sure this does not crash */
|
||||
testable_functions = NULL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user