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


_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to