Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : ghc-7.2

http://hackage.haskell.org/trac/ghc/changeset/28c0075b6fd6df688487b19119ea6e40fa8b794b

>---------------------------------------------------------------

commit 28c0075b6fd6df688487b19119ea6e40fa8b794b
Author: Sergei Trofimovich <[email protected]>
Date:   Fri Jul 15 16:46:37 2011 +0100

    An example of failure:
    "inplace/bin/ghc-stage1"   -H32m -O    -package-name base-4.4.0.0 
-hide-all-packages -i -ilibraries/base/. -ilibraries/base/dist-install/build 
-ilibraries/base/dist-install/build/autogen -Ilibraries/base/dist-install/build 
-Ilibraries/base/dist-install/build/autogen -Ilibraries/base/include   
-optP-DOPTIMISE_INTEGER_GCD_LCM -optP-include 
-optPlibraries/base/dist-install/build/autogen/cabal_macros.h -package 
ghc-prim-0.2.0.0 -package integer-gmp-0.3.0.0 -package rts-1.0 -split-objs 
-package-name base -XHaskell98 -XCPP -O2 -no-user-package-conf -rtsopts     
-odir libraries/base/dist-install/build -hidir 
libraries/base/dist-install/build -stubdir libraries/base/dist-install/build 
-hisuf hi -osuf  o -hcsuf hc -c libraries/base/./GHC/Int.hs -o 
libraries/base/dist-install/build/GHC/Int.o
    
/usr/lib/gcc/sparc-unknown-linux-gnu/4.5.2/../../../../sparc-unknown-linux-gnu/bin/ld:
 --relax and -r may not be used together
    collect2: ld returned 1 exit status
    make[1]: *** [libraries/base/dist-install/build/GHC/Int.o] Error 1
    
    Or with '-v' param:
    /usr/bin/gcc -fno-stack-protector -nostdlib -nodefaultlibs -Wl,-r 
-Wl,--build-id=none -Wl,-x -o libraries/base/dist-install/build/GHC/Int.o 
/tmp/ghc45126_0/ghc45126_0.ldscript
    
/usr/lib/gcc/sparc-unknown-linux-gnu/4.5.2/../../../../sparc-unknown-linux-gnu/bin/ld:
 --relax and -r may not be used together
    
    On SPARC gcc-4.5.2 has -mrelax in it's default specs, so we explicitly pass 
--no-relax
    for ld to make sure gcc's default does not affect us.
    
    Signed-off-by: Sergei Trofimovich <[email protected]>

>---------------------------------------------------------------

 compiler/main/DriverPipeline.hs |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index 3991ac4..18eba25 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -1980,7 +1980,15 @@ joinObjectFiles dflags o_files output_fn = do
   let ld_r args = SysTools.runLink dflags ([
                             SysTools.Option "-nostdlib",
                             SysTools.Option "-nodefaultlibs",
-                            SysTools.Option "-Wl,-r",
+                            SysTools.Option "-Wl,-r"
+                            ]
+                            -- gcc on sparc sets -Wl,--relax implicitly, but
+                            -- -r and --relax are incompatible for ld, so
+                            -- disable --relax explicitly.
+                         ++ (if platformArch (targetPlatform dflags) == 
ArchSPARC
+                                then [SysTools.Option "-Wl,-no-relax"]
+                                else [])
+                         ++ [
                             SysTools.Option ld_build_id,
                             SysTools.Option ld_x_flag,
                             SysTools.Option "-o",



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to