Add Solaris linker support to SysTools
authorKarel Gardas <karel.gardas@centrum.cz>
Mon, 13 Jan 2014 22:59:47 +0000 (16:59 -0600)
committerAustin Seipp <austin@well-typed.com>
Tue, 14 Jan 2014 09:46:07 +0000 (03:46 -0600)
Signed-off-by: Austin Seipp <austin@well-typed.com>
compiler/main/DynFlags.hs
compiler/main/SysTools.lhs

index 193303e..20b61c1 100644 (file)
@@ -3728,6 +3728,7 @@ data LinkerInfo
   = GnuLD    [Option]
   | GnuGold  [Option]
   | DarwinLD [Option]
+  | SolarisLD [Option]
   | UnknownLD
   deriving Eq
 
index d0545fd..510475e 100644 (file)
@@ -638,6 +638,7 @@ neededLinkArgs :: LinkerInfo -> [Option]
 neededLinkArgs (GnuLD o)     = o
 neededLinkArgs (GnuGold o)   = o
 neededLinkArgs (DarwinLD o)  = o
+neededLinkArgs (SolarisLD o) = o
 neededLinkArgs UnknownLD     = []
 
 -- Grab linker info and cache it in DynFlags.
@@ -676,6 +677,14 @@ getLinkerInfo' dflags = do
   -- Process the executable call
   info <- catchIO (do
              case os of
+               OSSolaris2 ->
+                 -- Solaris uses its own Solaris linker. Even all
+                 -- GNU C are receommended to configure with Solaris
+                 -- linker instead of using GNU binutils linker. Also
+                 -- all GCC distributed with Solaris follows this rule
+                 -- precisely so we assume here, the Solaris linker is
+                 -- used.
+                 return $ SolarisLD []
                OSDarwin ->
                  -- Darwin has neither GNU Gold or GNU LD, but a strange linker
                  -- that doesn't support --version. We can just assume that's