The GNU linker expects read-only sections to be relocation
free. Presumably because the dynamic linker maps all read-only
sections as read-only mmaps and hence can't do relocations.
If we want text-relocation-free shared libraries we have to put all
relocations into writable sections, hence .data. See
http://www.mail-archive.com/cvs-all@haskell.org/msg15119.html