Can't compile GHC 6.8.2
Simon Marlow
marlowsd at gmail.com
Tue Nov 25 04:01:57 EST 2008
Barney Stratford wrote:
> There's good news and bad news. The good news is that the compilation of
> my shiny almost-new GHC is complete. The bad news is, it won't link.
> It's grumbling about
>
> ld:
> /System/Fink/src/fink.build/ghc-6.8.2-1/ghc-6.8.2/rts/libHSrts.a(PrimOps.o)
> has external relocation entries in non-writable section (__TEXT,__text)
> for symbols:
> ___gmpn_cmp
> ___gmpn_gcd_1
> ___gmpz_fdiv_qr
> ___gmpz_init
> ___gmpz_tdiv_qr
> ___gmpz_com
> ___gmpz_xor
> ___gmpz_ior
> ___gmpz_and
> ___gmpz_divexact
> ___gmpz_tdiv_r
> ___gmpz_tdiv_q
> ___gmpz_gcd
> ___gmpz_mul
> ___gmpz_sub
> ___gmpz_add
>
> Looking through the archives, it seems like this is an old favourite bug
> rearing its ugly head again. The suggested remedy of commenting out the
> line reading "SRC_HC_OPTS += -fvia-C" in the Makefile won't work, as
> that line isn't there anyway. The manpage for ld has an option
> "-read_only_relocs warning" that looks like it might suppress this
> problem, but I don't fully understand what it's doing.
>
> What would you suggest?
The workaround is almost certainly to build the RTS with -fasm. However,
I'd be really pleased if someone could get to the bottom of this, so that
we can fix the root cause. You can get a look at the .s file generated for
PrimOps by saying
$ cd rts
$ make PrimOps.s
(make sure you're still compiling via-C). Have a look at the references to
those symbols, do they look suspicious at all? Try compiling the same
module with -fasm, and compare the .s file with the via-C version. Also
you could try poking around in the .o file with objdump, and see what
relocation entries are being generated in both cases.
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list