projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Build haskell98 and haskell2010 with stage2
[ghc-hetmet.git]
/
rts
/
Linker.c
diff --git
a/rts/Linker.c
b/rts/Linker.c
index
df91b65
..
81e3f3c
100644
(file)
--- a/
rts/Linker.c
+++ b/
rts/Linker.c
@@
-354,15
+354,6
@@
typedef struct _RtsSymbolVal {
#define RTS_POSIX_ONLY_SYMBOLS /**/
#define RTS_CYGWIN_ONLY_SYMBOLS /**/
#define RTS_POSIX_ONLY_SYMBOLS /**/
#define RTS_CYGWIN_ONLY_SYMBOLS /**/
-/* Extra syms gen'ed by mingw-2's gcc-3.2: */
-#if __GNUC__>=3
-#define RTS_MINGW_EXTRA_SYMS \
- SymI_NeedsProto(_imp____mb_cur_max) \
- SymI_NeedsProto(_imp___pctype)
-#else
-#define RTS_MINGW_EXTRA_SYMS
-#endif
-
#if HAVE_GETTIMEOFDAY
#define RTS_MINGW_GETTIMEOFDAY_SYM SymI_NeedsProto(gettimeofday)
#else
#if HAVE_GETTIMEOFDAY
#define RTS_MINGW_GETTIMEOFDAY_SYM SymI_NeedsProto(gettimeofday)
#else
@@
-463,11
+454,14
@@
typedef struct _RtsSymbolVal {
SymI_NeedsProto(opendir) \
SymI_NeedsProto(readdir) \
SymI_NeedsProto(rewinddir) \
SymI_NeedsProto(opendir) \
SymI_NeedsProto(readdir) \
SymI_NeedsProto(rewinddir) \
- RTS_MINGW_EXTRA_SYMS \
+ SymI_NeedsProto(_imp____mb_cur_max) \
+ SymI_NeedsProto(_imp___pctype) \
+ SymI_NeedsProto(__chkstk) \
RTS_MINGW_GETTIMEOFDAY_SYM \
SymI_NeedsProto(closedir)
#endif
RTS_MINGW_GETTIMEOFDAY_SYM \
SymI_NeedsProto(closedir)
#endif
+
#if defined(darwin_HOST_OS) && HAVE_PRINTF_LDBLSTUB
#define RTS_DARWIN_ONLY_SYMBOLS \
SymI_NeedsProto(asprintf$LDBLStub) \
#if defined(darwin_HOST_OS) && HAVE_PRINTF_LDBLSTUB
#define RTS_DARWIN_ONLY_SYMBOLS \
SymI_NeedsProto(asprintf$LDBLStub) \
@@
-1669,6
+1663,8
@@
loadArchive( char *path )
int isObject;
char tmp[12];
int isObject;
char tmp[12];
+ IF_DEBUG(linker, debugBelch("loadArchive `%s'\n", path));
+
fileSize = 32;
file = stgMallocBytes(fileSize, "loadArchive(file)");
fileSize = 32;
file = stgMallocBytes(fileSize, "loadArchive(file)");
@@
-1736,7
+1732,7
@@
loadArchive( char *path )
isObject = 0;
for (n = 0; n < (int)fileNameSize - 1; n++) {
isObject = 0;
for (n = 0; n < (int)fileNameSize - 1; n++) {
- if ((file[n] == '.') && (file[n] == 'o')) {
+ if ((file[n] == '.') && (file[n + 1] == 'o')) {
isObject = 1;
break;
}
isObject = 1;
break;
}
@@
-1918,6
+1914,8
@@
static HsInt
loadOc( ObjectCode* oc ) {
int r;
loadOc( ObjectCode* oc ) {
int r;
+ IF_DEBUG(linker, debugBelch("loadOc\n"));
+
# if defined(OBJFORMAT_MACHO) && (defined(powerpc_HOST_ARCH) || defined(x86_64_HOST_ARCH))
r = ocAllocateSymbolExtras_MachO ( oc );
if (!r) {
# if defined(OBJFORMAT_MACHO) && (defined(powerpc_HOST_ARCH) || defined(x86_64_HOST_ARCH))
r = ocAllocateSymbolExtras_MachO ( oc );
if (!r) {
@@
-4859,6
+4857,8
@@
static int ocGetNames_MachO(ObjectCode* oc)
char *commonStorage = NULL;
unsigned long commonCounter;
char *commonStorage = NULL;
unsigned long commonCounter;
+ IF_DEBUG(linker,debugBelch("ocGetNames_MachO\n"));
+
for(i=0;i<header->ncmds;i++)
{
if(lc->cmd == LC_SEGMENT || lc->cmd == LC_SEGMENT_64)
for(i=0;i<header->ncmds;i++)
{
if(lc->cmd == LC_SEGMENT || lc->cmd == LC_SEGMENT_64)
@@
-4948,6
+4948,7
@@
static int ocGetNames_MachO(ObjectCode* oc)
; // weak definition, and we already have a definition
else
{
; // weak definition, and we already have a definition
else
{
+ IF_DEBUG(linker,debugBelch("Adding symbol 1 %s\n", nm));
ghciInsertStrHashTable(oc->fileName, symhash, nm,
image
+ sections[nlist[i].n_sect-1].offset
ghciInsertStrHashTable(oc->fileName, symhash, nm,
image
+ sections[nlist[i].n_sect-1].offset
@@
-4974,6
+4975,7
@@
static int ocGetNames_MachO(ObjectCode* oc)
nlist[i].n_value = commonCounter;
nlist[i].n_value = commonCounter;
+ IF_DEBUG(linker,debugBelch("Adding symbol 2 %s\n", nm));
ghciInsertStrHashTable(oc->fileName, symhash, nm,
(void*)commonCounter);
oc->symbols[curSymbol++] = nm;
ghciInsertStrHashTable(oc->fileName, symhash, nm,
(void*)commonCounter);
oc->symbols[curSymbol++] = nm;