X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FLinker.c;h=d8f1e435a5585d74dfdc1ab69124d446bf2cc61b;hb=067e49d16fc85ff490d26baa7e17affcce4daf40;hp=5058294c358ca99ebfae7be05cdb04a12c86c28b;hpb=004ecb3959530fcdc01fe9102dc3aeb9e1adb1f1;p=ghc-hetmet.git diff --git a/ghc/rts/Linker.c b/ghc/rts/Linker.c index 5058294..d8f1e43 100644 --- a/ghc/rts/Linker.c +++ b/ghc/rts/Linker.c @@ -296,6 +296,7 @@ typedef struct _RtsSymbolVal { SymX(log) \ SymX(sqrt) \ SymX(memcpy) \ + SymX(stg_InstallConsoleEvent) \ Sym(mktime) \ Sym(_imp___timezone) \ Sym(_imp___tzname) \ @@ -388,9 +389,12 @@ typedef struct _RtsSymbolVal { SymX(__int_encodeDouble) \ SymX(__int_encodeFloat) \ SymX(andIntegerzh_fast) \ + SymX(atomicallyzh_fast) \ SymX(barf) \ SymX(blockAsyncExceptionszh_fast) \ SymX(catchzh_fast) \ + SymX(catchRetryzh_fast) \ + SymX(catchSTMzh_fast) \ SymX(closure_flags) \ SymX(cmp_thread) \ SymX(cmpIntegerzh_fast) \ @@ -445,6 +449,7 @@ typedef struct _RtsSymbolVal { SymX_redirect(newCAF, newDynCAF) \ SymX(newMVarzh_fast) \ SymX(newMutVarzh_fast) \ + SymX(newTVarzh_fast) \ SymX(atomicModifyMutVarzh_fast) \ SymX(newPinnedByteArrayzh_fast) \ SymX(orIntegerzh_fast) \ @@ -458,10 +463,12 @@ typedef struct _RtsSymbolVal { SymX(quotRemIntegerzh_fast) \ SymX(raisezh_fast) \ SymX(raiseIOzh_fast) \ + SymX(readTVarzh_fast) \ SymX(remIntegerzh_fast) \ SymX(resetNonBlockingFd) \ SymX(resumeThread) \ SymX(resolveObjs) \ + SymX(retryzh_fast) \ SymX(rts_apply) \ SymX(rts_checkSchedStatus) \ SymX(rts_eval) \ @@ -571,6 +578,7 @@ typedef struct _RtsSymbolVal { SymX(waitReadzh_fast) \ SymX(waitWritezh_fast) \ SymX(word2Integerzh_fast) \ + SymX(writeTVarzh_fast) \ SymX(xorIntegerzh_fast) \ SymX(yieldzh_fast) @@ -3814,14 +3822,24 @@ static int ocResolve_MachO(ObjectCode* oc) static void machoInitSymbolsWithoutUnderscore() { - void *p; + extern void* symbolsWithoutUnderscore[]; + void **p = symbolsWithoutUnderscore; + __asm__ volatile(".data\n_symbolsWithoutUnderscore:"); #undef Sym -#define Sym(x) \ - __asm__ ("lis %0,hi16(" #x ")\n\tori %0,%0,lo16(" #x ")" : "=r" (p)); \ - ghciInsertStrHashTable("(GHCi built-in symbols)", symhash, #x, p); +#define Sym(x) \ + __asm__ volatile(".long " # x); RTS_MACHO_NOUNDERLINE_SYMBOLS + __asm__ volatile(".text"); + +#undef Sym +#define Sym(x) \ + ghciInsertStrHashTable("(GHCi built-in symbols)", symhash, #x, *p++); + + RTS_MACHO_NOUNDERLINE_SYMBOLS + +#undef Sym } #endif