diff --git a/crypto/dso/dso_dlfcn.c b/crypto/dso/dso_dlfcn.c index 67a0f3291c492511c338333cfe0bc0b91b445fbd..56756cf54119fcc7e361838fc90b45e4c6759bd5 100644 --- a/crypto/dso/dso_dlfcn.c +++ b/crypto/dso/dso_dlfcn.c @@ -56,6 +56,16 @@ * */ +/* We need to do this early, because stdio.h includes the header files + that handle _GNU_SOURCE and other similar macros. Defining it later + is simply too late, because those headers are protected from re- + inclusion. */ +#ifdef __linux +# ifndef _GNU_SOURCE +# define _GNU_SOURCE /* make sure dladdr is declared */ +# endif +#endif + #include #include "cryptlib.h" #include @@ -69,11 +79,6 @@ DSO_METHOD *DSO_METHOD_dlfcn(void) #ifdef HAVE_DLFCN_H -#ifdef __linux -# ifndef _GNU_SOURCE -# define _GNU_SOURCE /* make sure dladdr is declared */ -# endif -#endif #include #endif