Error building ghc on raspberry pi.
roconnor at theorem.ca
roconnor at theorem.ca
Sun Jan 27 19:52:37 CET 2013
On Mon, 21 Jan 2013, roconnor at theorem.ca wrote:
> On Mon, 21 Jan 2013, Karel Gardas wrote:
>
>> On 01/21/13 12:49 AM, roconnor at theorem.ca wrote:
>>> On Sun, 20 Jan 2013, Karel Gardas wrote:
>>>
>>>>> Okay, I patched the settings filed generted by ./configure in the
>>>>> binary-dist and rank make install which completed. However,
>>>>>
>>>>> pi at raspberrypi /tmp/bindist $ bin/ghc --make Main.hs
>>>>> [1 of 1] Compiling Main ( Main.hs, Main.o )
>>>>> Linking Main ...
>>>>> pi at raspberrypi /tmp/bindist $ ./Main
>>>>> Segmentation fault
>>>>> pi at raspberrypi /tmp/bindist $ cat Main.hs
>>>>> main = putStrLn "Hello World."
>>>>>
>>>>> Damn it. So close. I don't know how make install succeded without
>>>>> segfaulting.
>>>>
>>>> Sigh! Go back to your build tree and try the same thing with
>>>> inplace/bin/ghc-stage2 and let us know if this works or not. BTW:
>>>> What's in Main.hs?
>>>
>>> pi at raspberrypi /tmp $ ghc-7.6.1c/inplace/bin/ghc-stage2 Main.hs
>>> [1 of 1] Compiling Main ( Main.hs, Main.o )
>>> Linking Main ...
>>> pi at raspberrypi /tmp $ ./Main
>>> Hello World.
>>>
>>> The stage2 compiler works fine inplace.
>>
>> OK, so binary-dist not only corrupted your settings file, but also somehow
>> your compiler. Nice to see you are able to get working compiler on your RPi
>> board. Congratulations! :-)
>
> Thanks. :)
>
> So the binary-dist has a settings.in file. It is the configure step in the
> binary-dist that generates the corrupt settings file.
>
> I'll try to poke around to see where and why the stage2 compiler and the
> binary-dist compiler differ.
I replaced the lib/ghc-7.6.1/settings built from the binary-dist which
read:
[("GCC extra via C opts", " -fwrapv"),
("C compiler command", "/usr/bin/gcc"),
("C compiler flags", " -fno-stack-protector "),
("ar command", "/usr/bin/ar"),
("ar flags", "q"),
("ar supports at file", "@ArSupportsAtFile@"),
("touch command", "touch"),
("dllwrap command", "/bin/false"),
("windres command", "/bin/false"),
("perl command", "/usr/bin/perl"),
("target os", "OSLinux"),
("target arch", "ArchARM {armISA = ARMv6, armISAExt = [VFPv2], armABI = HARD}"),
("target word size", "4"),
("target has GNU nonexec stack", "False"),
("target has .ident directive", "True"),
("target has subsections via symbols", "False"),
("LLVM llc command", "llc"),
("LLVM opt command", "opt")
]
With the settings file from the build:
[("GCC extra via C opts", " -fwrapv"),
("C compiler command", "/usr/bin/gcc"),
("C compiler flags", " -fno-stack-protector -Wl,--hash-size=31 -Wl,--reduce-memory-overheads"),
("ar command", "/usr/bin/ar"),
("ar flags", "q"),
("ar supports at file", "YES"),
("touch command", "touch"),
("dllwrap command", "/bin/false"),
("windres command", "/bin/false"),
("perl command", "/usr/bin/perl"),
("target os", "OSLinux"),
("target arch", "ArchARM {armISA = ARMv6, armISAExt = [VFPv2], armABI = HARD}"),
("target word size", "4"),
("target has GNU nonexec stack", "False"),
("target has .ident directive", "True"),
("target has subsections via symbols", "False"),
("LLVM llc command", "/usr/bin/llc-3.0"),
("LLVM opt command", "/usr/bin/opt-3.0")
]
and now ghc builds executables that do not segfault!
It seem that the configure program in the binary-dist needs some patching.
--
Russell O'Connor <http://r6.ca/>
``All talk about `theft,''' the general counsel of the American Graphophone
Company wrote, ``is the merest claptrap, for there exists no property in
ideas musical, literary or artistic, except as defined by statute.''
More information about the Glasgow-haskell-users
mailing list