[project @ 2004-01-09 12:36:54 by simonmar]
[ghc-hetmet.git] / ghc / rts / Linker.c
index 85d5809..c20d23b 100644 (file)
@@ -1,4 +1,5 @@
 /* -----------------------------------------------------------------------------
+ * $Id: Linker.c,v 1.144 2004/01/05 17:32:35 simonmar Exp $
  *
  * (c) The GHC Team, 2000-2003
  *
@@ -9,6 +10,12 @@
 #if 0
 #include "PosixSource.h"
 #endif
+
+//  Linux needs _GNU_SOURCE to get RTLD_DEFAULT from <dlfcn.h>.
+#ifdef __linux__
+#define _GNU_SOURCE
+#endif
+
 #include "Rts.h"
 #include "RtsFlags.h"
 #include "HsFFI.h"
@@ -409,6 +416,7 @@ typedef struct _RtsSymbolVal {
       SymX(newPinnedByteArrayzh_fast)          \
       SymX(orIntegerzh_fast)                   \
       SymX(performGC)                          \
+      SymX(performMajorGC)                     \
       SymX(plusIntegerzh_fast)                 \
       SymX(prog_argc)                          \
       SymX(prog_argv)                          \
@@ -554,13 +562,6 @@ typedef struct _RtsSymbolVal {
 #define RTS_LONG_LONG_SYMS /* nothing */
 #endif
 
-#ifdef HAVE_TERMIOS_H
-#define RTS_TERMIOS_SYMS                        \
-      Sym(saved_termios)
-#else
-#define RTS_TERMIOS_SYMS /* nothing */
-#endif
-
 // 64-bit support functions in libgcc.a
 #if defined(__GNUC__) && SIZEOF_VOID_P <= 4
 #define RTS_LIBGCC_SYMBOLS                     \
@@ -602,7 +603,6 @@ RTS_LONG_LONG_SYMS
 RTS_POSIX_ONLY_SYMBOLS
 RTS_MINGW_ONLY_SYMBOLS
 RTS_CYGWIN_ONLY_SYMBOLS
-RTS_TERMIOS_SYMS
 RTS_LIBGCC_SYMBOLS
 #undef Sym
 #undef SymX
@@ -703,7 +703,11 @@ initLinker( void )
 #   endif
 
 #   if defined(OBJFORMAT_ELF) || defined(OBJFORMAT_MACHO)
+#   if defined(RTLD_DEFAULT)    
+    dl_prog_handle = RTLD_DEFAULT;
+#   else
     dl_prog_handle = dlopen(NULL, RTLD_LAZY);
+#   endif // RTLD_DEFAULT
 #   endif
 }