Fix annoying iOS linker warnings (#8208)
authorAustin Seipp <aseipp@pobox.com>
Wed, 4 Sep 2013 22:35:53 +0000 (17:35 -0500)
committerAustin Seipp <aseipp@pobox.com>
Wed, 4 Sep 2013 22:35:55 +0000 (17:35 -0500)
Authored-by: Luke Iannini <lukexi@me.com>
Signed-off-by: Austin Seipp <aseipp@pobox.com>
compiler/main/DriverPipeline.hs
compiler/main/SysTools.lhs

index 8fc44ed..7c5bc90 100644 (file)
@@ -1917,11 +1917,22 @@ linkBinary' staticLink dflags o_files dep_packages = do
                       -- on x86.
                       ++ (if sLdSupportsCompactUnwind mySettings &&
                              not staticLink &&
-                             platformOS   platform == OSDarwin &&
-                             platformArch platform `elem` [ArchX86, ArchX86_64]
+                             (platformOS platform == OSDarwin || platformOS platform == OSiOS) &&
+                             case platformArch platform of
+                               ArchX86 -> True
+                               ArchX86_64 -> True
+                               ArchARM {} -> True
+                               _ -> False
                           then ["-Wl,-no_compact_unwind"]
                           else [])
 
+                      -- '-no_pie'
+                      -- iOS uses 'dynamic-no-pic', so we must pass this to ld to suppress a warning; see #7722
+                      ++ (if platformOS platform == OSiOS &&
+                             not staticLink
+                          then ["-Wl,-no_pie"]
+                          else [])
+
                       -- '-Wl,-read_only_relocs,suppress'
                       -- ld gives loads of warnings like:
                       --     ld: warning: text reloc in _base_GHCziArr_unsafeArray_info to _base_GHCziArr_unsafeArray_closure
index 6fe29a9..78255b7 100644 (file)
@@ -681,6 +681,9 @@ getLinkerInfo' dflags = do
                  -- that doesn't support --version. We can just assume that's
                  -- what we're using.
                  return $ DarwinLD []
+               OSiOS -> 
+                 -- Ditto for iOS
+                 return $ DarwinLD []
                OSMinGW32 ->
                  -- GHC doesn't support anything but GNU ld on Windows anyway.
                  -- Process creation is also fairly expensive on win32, so