_GNU_SOURCE needs to be defined before any standard header.
[openssl.git] / crypto / dso / dso_dlfcn.c
index 67a0f3291c492511c338333cfe0bc0b91b445fbd..56756cf54119fcc7e361838fc90b45e4c6759bd5 100644 (file)
  *
  */
 
+/* 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 <stdio.h>
 #include "cryptlib.h"
 #include <openssl/dso.h>
@@ -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 <dlfcn.h>
 #endif