X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FLinker.c;h=e86efd393a90a893e0c5805b9ee25d62630354fd;hb=8aa44328884efa12ef22999ec01ebf368bd7bca2;hp=da62d58cdc763f03285b9b48e9ea5feb844a0ef9;hpb=741ebaa9b0bb51c8450500d1e3649e8f1021f87c;p=ghc-hetmet.git diff --git a/rts/Linker.c b/rts/Linker.c index da62d58..e86efd3 100644 --- a/rts/Linker.c +++ b/rts/Linker.c @@ -646,7 +646,8 @@ typedef struct _RtsSymbolVal { SymX(stg_CAF_BLACKHOLE_info) \ SymX(awakenBlockedQueue) \ SymX(stg_CHARLIKE_closure) \ - SymX(stg_EMPTY_MVAR_info) \ + SymX(stg_MVAR_CLEAN_info) \ + SymX(stg_MVAR_DIRTY_info) \ SymX(stg_IND_STATIC_info) \ SymX(stg_INTLIKE_closure) \ SymX(stg_MUT_ARR_PTRS_DIRTY_info) \ @@ -731,6 +732,7 @@ typedef struct _RtsSymbolVal { SymX(rts_stop_next_breakpoint) \ SymX(rts_stop_on_exception) \ SymX(stopTimer) \ + SymX(n_capabilities) \ RTS_USER_SIGNALS_SYMBOLS #ifdef SUPPORT_LONG_LONGS @@ -946,13 +948,13 @@ typedef static OpenedDLL* opened_dlls = NULL; #endif -char * +const char * addDLL( char *dll_name ) { # if defined(OBJFORMAT_ELF) || defined(OBJFORMAT_MACHO) /* ------------------- ELF DLL loader ------------------- */ void *hdl; - char *errmsg; + const char *errmsg; initLinker(); @@ -2903,8 +2905,12 @@ ocVerifyImage_ELF ( ObjectCode* oc ) #ifdef EM_X86_64 case EM_X86_64: IF_DEBUG(linker,debugBelch( "x86_64" )); break; #endif +#ifdef EM_AMD64 + case EM_AMD64: IF_DEBUG(linker,debugBelch( "amd64" )); break; +#endif default: IF_DEBUG(linker,debugBelch( "unknown" )); - errorBelch("%s: unknown architecture", oc->fileName); + errorBelch("%s: unknown architecture (e_machine == %d)" + , oc->fileName, ehdr->e_machine); return 0; } @@ -4245,7 +4251,7 @@ static int relocateSection( #ifdef powerpc_HOST_ARCH // In the .o file, this should be a relative jump to NULL // and we'll change it to a relative jump to the symbol - ASSERT(-word == reloc->r_address); + ASSERT(word + reloc->r_address == 0); jumpIsland = (unsigned long) &makeSymbolExtra(oc, reloc->r_symbolnum,