Fix Trace #1494
[ghc-hetmet.git] / compiler / nativeGen / PositionIndependentCode.hs
index 53ee563..4001078 100644 (file)
@@ -131,7 +131,7 @@ cmmMakePicReference :: CLabel -> CmmExpr
         -- everything gets relocated at runtime
 
 cmmMakePicReference lbl
-    | opt_PIC && absoluteLabel lbl = CmmMachOp (MO_Add wordRep) [
+    | (opt_PIC || not opt_Static) && absoluteLabel lbl = CmmMachOp (MO_Add wordRep) [
             CmmReg (CmmGlobal PicBaseReg),
             CmmLit $ picRelative lbl
         ]
@@ -200,7 +200,7 @@ howToAccessLabel DataReference lbl
     | otherwise = AccessDirectly
 
 
-#if x86_TARGET_ARCH || x86_64_TARGET_ARCH
+#if i386_TARGET_ARCH || x86_64_TARGET_ARCH
     -- dyld code stubs don't work for tailcalls because the
     -- stack alignment is only right for regular calls.
     -- Therefore, we have to go via a symbol pointer:
@@ -274,7 +274,7 @@ howToAccessLabel CallReference lbl
     = AccessDirectly
 #if !i386_TARGET_ARCH
     | labelDynamic lbl && opt_PIC
-    = AccessViaSymbolStub
+    = AccessViaStub
 #endif
 
 howToAccessLabel _ lbl
@@ -442,7 +442,7 @@ pprImportedSymbol importedLbl
                 ptext SLIT("1:"),
                     ptext SLIT("\tmovl L") <> pprCLabel_asm lbl
                         <> ptext SLIT("$lazy_ptr-1b(%eax),%edx"),
-                    ptext SLIT("\tjmp %edx"),
+                    ptext SLIT("\tjmp *%edx"),
                 ptext SLIT("L") <> pprCLabel_asm lbl
                     <> ptext SLIT("$stub_binder:"),
                     ptext SLIT("\tlea L") <> pprCLabel_asm lbl