projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
move an inline function to keep older versions of gcc happy
[ghc-hetmet.git]
/
rts
/
Linker.c
diff --git
a/rts/Linker.c
b/rts/Linker.c
index
bca6026
..
7d9bc34
100644
(file)
--- a/
rts/Linker.c
+++ b/
rts/Linker.c
@@
-59,12
+59,12
@@
#include <sys/wait.h>
#endif
#include <sys/wait.h>
#endif
-#if defined(ia64_HOST_ARCH) || defined(openbsd_HOST_OS) || defined(linux_HOST_OS) || defined(freebsd_HOST_OS)
+#if defined(ia64_HOST_ARCH) || defined(linux_HOST_OS) || defined(freebsd_HOST_OS) || defined(netbsd_HOST_OS) || defined(openbsd_HOST_OS)
#define USE_MMAP
#include <fcntl.h>
#include <sys/mman.h>
#define USE_MMAP
#include <fcntl.h>
#include <sys/mman.h>
-#if defined(openbsd_HOST_OS) || defined(linux_HOST_OS) || defined(freebsd_HOST_OS)
+#if defined(linux_HOST_OS) || defined(freebsd_HOST_OS) || defined(netbsd_HOST_OS) || defined(openbsd_HOST_OS)
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@
-174,6
+174,7
@@
typedef struct _RtsSymbolVal {
#if !defined (mingw32_HOST_OS)
#define RTS_POSIX_ONLY_SYMBOLS \
#if !defined (mingw32_HOST_OS)
#define RTS_POSIX_ONLY_SYMBOLS \
+ SymX(shutdownHaskellAndSignal) \
Sym(lockFile) \
Sym(unlockFile) \
SymX(signal_handlers) \
Sym(lockFile) \
Sym(unlockFile) \
SymX(signal_handlers) \
@@
-537,13
+538,16
@@
typedef struct _RtsSymbolVal {
SymX(addDLL) \
GMP_SYMS \
SymX(__int_encodeDouble) \
SymX(addDLL) \
GMP_SYMS \
SymX(__int_encodeDouble) \
+ SymX(__word_encodeDouble) \
SymX(__2Int_encodeDouble) \
SymX(__int_encodeFloat) \
SymX(__2Int_encodeDouble) \
SymX(__int_encodeFloat) \
+ SymX(__word_encodeFloat) \
SymX(andIntegerzh_fast) \
SymX(atomicallyzh_fast) \
SymX(barf) \
SymX(debugBelch) \
SymX(errorBelch) \
SymX(andIntegerzh_fast) \
SymX(atomicallyzh_fast) \
SymX(barf) \
SymX(debugBelch) \
SymX(errorBelch) \
+ SymX(asyncExceptionsBlockedzh_fast) \
SymX(blockAsyncExceptionszh_fast) \
SymX(catchzh_fast) \
SymX(catchRetryzh_fast) \
SymX(blockAsyncExceptionszh_fast) \
SymX(catchzh_fast) \
SymX(catchRetryzh_fast) \
@@
-764,6
+768,7
@@
typedef struct _RtsSymbolVal {
SymX(stg_upd_frame_info) \
SymX(suspendThread) \
SymX(takeMVarzh_fast) \
SymX(stg_upd_frame_info) \
SymX(suspendThread) \
SymX(takeMVarzh_fast) \
+ SymX(threadStatuszh_fast) \
SymX(timesIntegerzh_fast) \
SymX(tryPutMVarzh_fast) \
SymX(tryTakeMVarzh_fast) \
SymX(timesIntegerzh_fast) \
SymX(tryPutMVarzh_fast) \
SymX(tryTakeMVarzh_fast) \
@@
-1014,7
+1019,9
@@
addDLL( char *dll_name )
initLinker();
initLinker();
- hdl= dlopen(dll_name, RTLD_NOW | RTLD_GLOBAL);
+ // omitted: RTLD_NOW
+ // see http://www.haskell.org/pipermail/cvs-ghc/2007-September/038570.html
+ hdl= dlopen(dll_name, RTLD_LAZY | RTLD_GLOBAL);
if (hdl == NULL) {
/* dlopen failed; return a ptr to the error msg. */
if (hdl == NULL) {
/* dlopen failed; return a ptr to the error msg. */
@@
-3159,7
+3166,7
@@
ocGetNames_ELF ( ObjectCode* oc )
if (ELF_ST_TYPE(stab[j].st_info) == STT_FUNC)
ad = (char *)allocateFunctionDesc((Elf_Addr)ad);
#endif
if (ELF_ST_TYPE(stab[j].st_info) == STT_FUNC)
ad = (char *)allocateFunctionDesc((Elf_Addr)ad);
#endif
- IF_DEBUG(linker,debugBelch( "addOTabName(GLOB): %10p %s %s",
+ IF_DEBUG(linker,debugBelch( "addOTabName(GLOB): %10p %s %s\n",
ad, oc->fileName, nm ));
isLocal = FALSE;
}
ad, oc->fileName, nm ));
isLocal = FALSE;
}