[project @ 2002-07-21 11:46:34 by panne]
authorpanne <unknown>
Sun, 21 Jul 2002 11:46:34 +0000 (11:46 +0000)
committerpanne <unknown>
Sun, 21 Jul 2002 11:46:34 +0000 (11:46 +0000)
Long explanation for small commit:

With the recent reorganization of #includes, things get a little bit
fragile: When gcc with -O is used, glibc's <stdio.h> defines a few
inline functions (see <bits/stdio.h>), and "Stg.h" defines some global
variables which reside in registers. But the latter must happen
*before* any function definition has been seen, otherwise the
generated code could be invalid. Consequently gcc complains like:

   In file included from Stg.h:182,
                    from mkNativeHdr.c:12:
   Regs.h:293: global register variable follows a function definition
   Regs.h:302: global register variable follows a function definition

The solution is quite simple: Always #include "Stg.h" *before* any
system headers.

ghc/includes/mkNativeHdr.c

index c04d158..8bf707b 100644 (file)
@@ -1,5 +1,5 @@
 /* --------------------------------------------------------------------------
- * $Id: mkNativeHdr.c,v 1.9 2002/07/17 09:21:49 simonmar Exp $
+ * $Id: mkNativeHdr.c,v 1.10 2002/07/21 11:46:34 panne Exp $
  *
  * (c) The GHC Team, 1992-1998
  *
@@ -7,10 +7,10 @@
  *
  * ------------------------------------------------------------------------*/
 
-#include <stdio.h>
-
 #include "Stg.h"
 
+#include <stdio.h>
+
 #define OFFSET(table, x) ((StgUnion *) &(x) - (StgUnion *) (&table))
 
 #define OFFSET_R1    OFFSET(RegTable, RegTable.rR1)