Enable Opt_PIC for the dyn way regardless of OSes
|Reported by:||PHO||Owned by:|
|Type of failure:||Building GHC failed||Difficulty:||Unknown|
|Test Case:||Blocked By:|
When I build GHC head on FreeBSD, I got the following error. Is newSpark missing on FreeBSD? "inplace/bin/ghc-stage1" -fPIC -dynamic -H32m -O -package-name ghc-prim-0.3.1.0 -hide-all-packages -i -ilibraries/ghc-prim/. -ilibraries/ghc-prim/dist-install/build -ilibraries/ghc-prim/dist-install/build/autogen -Ilibraries/ghc-prim/dist-install/build -Ilibraries/ghc-prim/dist-install/build/autogen -Ilibraries/ghc-prim/. -optP-include -optPlibraries/ghc-prim/dist-install/build/autogen/cabal_macros.h -package rts-1.0 -package-name ghc-prim -XHaskell98 -XCPP -XMagicHash -XForeignFunctionInterface -XUnliftedFFITypes -XUnboxedTuples -XEmptyDataDecls -XNoImplicitPrelude -O2 -no-user-package-db -rtsopts -odir libraries/ghc-prim/dist-install/build -hidir libraries/ghc-prim/dist-install/build -stubdir libraries/ghc-prim/dist-install/build -hisuf dyn_hi -osuf dyn_o -hcsuf dyn_hc libraries/ghc-prim/dist-install/build/GHC/Classes.dyn_o libraries/ghc-prim/dist-install/build/GHC/CString.dyn_o libraries/ghc-prim/dist-install/build/GHC/Debug.dyn_o libraries/ghc-prim/dist-install/build/GHC/Magic.dyn_o libraries/ghc-prim/dist-install/build/GHC/PrimopWrappers.dyn_o libraries/ghc-prim/dist-install/build/GHC/IntWord64.dyn_o libraries/ghc-prim/dist-install/build/GHC/Tuple.dyn_o libraries/ghc-prim/dist-install/build/GHC/Types.dyn_o libraries/ghc-prim/dist-install/build/cbits/debug.dyn_o libraries/ghc-prim/dist-install/build/cbits/longlong.dyn_o libraries/ghc-prim/dist-install/build/cbits/popcnt.dyn_o libraries/ghc-prim/dist-install/build/cbits/word2float.dyn_o -shared -dynamic -dynload deploy -no-auto-link-packages -o libraries/ghc-prim/dist-install/build/libHSghc-prim-0.3.1.0-ghc7.7.20130312.so Warning: -rtsopts and -with-rtsopts have no effect with -shared. Call hs_init_ghc() from your main() function to set these options. /usr/local/bin/ld: libraries/ghc-prim/dist-install/build/GHC/PrimopWrappers.dyn_o: relocation R_X86_64_PC32 against undefined symbol `newSpark' can not be used when making a shared object; recompile with -fPIC /usr/local/bin/ld: final link failed: Bad value collect2: error: ld returned 1 exit status gmake: *** [libraries/ghc-prim/dist-install/build/libHSghc-prim-0.3.1.0-ghc7.7.20130312.so] Error 1 gmake: *** [all] Error 2
The same error occurs on NetBSD/amd64. PrimopWrappers.dyn_o has a direct reference to newSpark but since it resides in the rts, not ghc-prim, such references must be redirected through PLT. The problem is that every *.dyn_o, not only PrimopWrappers.dyn_o, is compiled without -fPIC for OSes other than Windows, Darwin and Linux. I have no idea why -fPIC isn't enabled for all OSes in the first place, but the attached patch works at least for me.
Thanks. This patch also solves the problem in my environment. Would you create a ticket and attach your patch? > PHO
Change History (5)
Changed 12 months ago by PHO
comment:1 Changed 12 months ago by PHO
- Component changed from Driver to Compiler
- Status changed from new to patch
Note: See TracTickets for help on using tickets.