[GHC] #7799: Assembly error while building GHC 7.7

GHC cvs-ghc at haskell.org
Mon Apr 8 22:56:22 CEST 2013


#7799: Assembly error while building GHC 7.7
-------------------------------+--------------------------------------------
    Reporter:  Iceland_jack    |       Owner:                     
        Type:  bug             |      Status:  new                
    Priority:  normal          |   Milestone:                     
   Component:  Compiler (FFI)  |     Version:  7.7                
    Keywords:                  |          Os:  Unknown/Multiple   
Architecture:  x86             |     Failure:  Building GHC failed
  Difficulty:  Unknown         |    Testcase:                     
   Blockedby:                  |    Blocking:                     
     Related:                  |  
-------------------------------+--------------------------------------------

Comment(by thorkilnaur):

 Replying to [comment:2 igloo]:
 > Could you test whether instead changing all 4 instances of `__i686` in
 `compiler/nativeGen/PIC.hs` to `__x86` works, please?

 I have tried that (where, by the way, {{{___i686}}} in
 {{{compiler/nativeGen/PIC.hs}}} is with three leading underscores) but,
 unfortunately, it didn't help. And, in fact, the curious fact seems to be
 that the code that {{{gcc}}}, the asssembler, complains about has been
 generated by {{{gcc}}}, the C compiler.

 In an attempt to clarify, I ran the failing compile like this:
 {{{
 $ "inplace/bin/ghc-stage1" -hisuf hi -osuf  o -hcsuf hc -static  -H32m -O
 -package-name base-4.7.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.3.1.0 -package
 integer-gmp-0.5.1.0 -package rts-1.0 -package-name base -XHaskell98 -XCPP
 -O2  -no-user-package-db -rtsopts      -odir libraries/base/dist-
 install/build -hidir libraries/base/dist-install/build -stubdir
 libraries/base/dist-install/build -split-objs -dynamic-too -c
 libraries/base/./System/Posix/Internals.hs -o libraries/base/dist-
 install/build/System/Posix/Internals.o -dyno libraries/base/dist-
 install/build/System/Posix/Internals.dyn_o -v -tmpdir T7799-tmpdir -keep-
 tmp-files > T7799-tmpdir/ghc_T7799.out 2>&1
 }}}
 I will attach {{{T7799-tmpdir.tar.gz}}}, the contents of the resulting
 {{{T7799-tmpdir}}} directory. For convenience, this contains much which is
 similar to the original report.

 {{{T7799-tmpdir/ghc_T7799.out}}} contains
 {{{
 *** C Compiler:
 '/usr/bin/gcc' '-fno-stack-protector' '-DTABLES_NEXT_TO_CODE' '-x' 'c'
 'T7799-tmpdir/ghc26404_0/ghc26404_1.c' '-o'
 'T7799-tmpdir/ghc26404_0/ghc26404_2.s' '-fPIC' '-U __PIC__' '-D__PIC__'
 '-Wimplicit' '-S' '-O2' '-D__GLASGOW_HASKELL__=707' '-I' 'libraries/base
 /dist-install/build' '-I' 'libraries/base/dist-install/build' '-I'
 'libraries/base/dist-install/build/autogen' '-I' 'libraries/base/include'
 '-I' '/home/tn/tn/GHCGitRepository/ghc/rts/dist/build' '-I'
 '/home/tn/tn/GHCGitRepository/ghc/includes' '-I'
 '/home/tn/tn/GHCGitRepository/ghc/includes/dist-derivedconstants/header'
 *** Assembler:
 '/usr/bin/gcc' '-fno-stack-protector' '-DTABLES_NEXT_TO_CODE'
 '-Ilibraries/base/dist-install/build' '-Ilibraries/base/dist-
 install/build' '-Ilibraries/base/dist-install/build/autogen'
 '-Ilibraries/base/include' '-x' 'assembler-with-cpp' '-c'
 'T7799-tmpdir/ghc26404_0/ghc26404_2.s' '-o'
 'T7799-tmpdir/ghc26404_0/ghc26404_0.dyn_o'
 ghc26404_1.c: Assembler messages:

 ghc26404_1.c:138:0:
      Error: junk `.get_pc_thunk.bx' after expression
 ...
 }}}
 Although the assembler error report mentions the file {{{ghc26404_1.c}}},
 it can be seen that the complaints actually concerns the contents of
 {{{ghc26404_2.s}}}. Confirming this
 {{{
 $ head -138 T7799-tmpdir/ghc26404_0/ghc26404_2.s | tail -1
         call    __i686.get_pc_thunk.bx
 $
 }}}
 where the complaint is caused by the replacement shown earlier of
 "{{{__i686}}}" by "{{{1 }}}".

 Best regards
 Thorkil

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7799#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the ghc-tickets mailing list