BFD linker issue with GHCi
On my project, GHCi seems to hang waiting for the BFD linker to complete the link of libghc_1.so
. The hanging command has the form: /usr/bin/ld @/tmp/ccHQ8Uzc
Using gdb, it seems the BFD linker ld
is looping (infinitely?) into bfd_elf_link_add_symbols
.
I have tried to use the GOLD linker ld.gold
instead on the ccHQ8Uzc
file (removing the unsupported parameters --hash-size=31
and --reduce-memory-overhead
) and it links instantly.
Could it be that GHC 8.0.1 generates too many symbols for the BFD linker or something like this? The BFD linker worked with GHC 7.10.3.
I build the project with stack, the hanging happens with stack repl
(GHCi's prompt never shows):
@(Stack/Exec.hs:76:10)
2016-10-21 12:57:53.747332: [debug] Creating process: /usr/bin/ghc --interactive -i -odir=/home/hsyl20/travail/code/ViperVM/.stack-work/odir -hidir=/home/hsyl20/travail/code/ViperVM/.stack-work/odir -hide-all-packages -i/home/hsyl20/travail/code/ViperVM/src/lib -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build -stubdir=/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build /home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/src/lib/ViperVM/Arch/X86_64/Linux/syscall.o /home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/src/lib/ViperVM/Arch/X86_64/cpuid.o -package-id=base-4.9.0.0 -package-id=containers-0.5.7.1 -package-id=list-t-1-z6InD0gw7C2QDNkG2mqUf -package-id=stm-2.4.4.1-9HlGYelGmT69YkepeDjuRg -package-id=stm-containers-0.2.15-JTVESCf1d8uCXyJbMCLfQJ -package-id=stm-linkedlist-0.1.0.0-GCpyrfjLFyWFZy8qotX7VW -package-id=hashable-1.2.4.0-GnltDttmBjG9qGzcjuPOH4 -package-id=cereal-0.5.3.0-JHJQkHEuvBGFx8XwIB7eX0 -package-id=bytestring-0.10.8.1 -package-id=system-fileio-0.3.16.3-EDef2a4Ximk1z04PLLp95q -package-id=system-filepath-0.4.13.4-24DUGoIUqZu3MxGDhYLfCN -package-id=pureMD5-2.1.3-HBUMOqRjfoe6ZpLefZBT34 -package-id=text-1.2.2.1-FgcR4Xf0VlEHD9HLxzq9WJ -package-id=filepath-1.4.1.0 -package-id=either-4.4.1.1-H4kagIugHGeIf0psi4Z0to -package-id=vector-0.11.0.0-BEDZb5o2QOhGbIm6ky7rl6 -package-id=directory-1.2.6.2 -package-id=megaparsec-5.0.1-25EMPYC0AB61WKE0MffPOR -package-id=transformers-0.5.2.0 -package-id=unix-2.7.2.0 -package-id=criterion-1.1.1.0-Hq6Gg6oBMXcJvBdkiC2CBq -package-id=c-storable-deriving-0.1.3-DIL5UpBe3Em7XwOYU01lXH -package-id=pqueue-1.3.1.1-A3EjwMk8dUf7l1Swzqrred -package-id=mtl-2.2.1-6qsR1PHUy5lL47Hpoa4jCM -package-id=template-haskell-2.11.0.0 -package-id=text-format-0.3.1.1-IMczxQgUdKA8it9OEumLMx -package-id=diagrams-1.3.0.1-9gEbAUMmu7DEIEOtgBTN65 -package-id=diagrams-lib-1.3.1.4-EWFz1jRqz29KScpInBNJM4 -package-id=diagrams-core-1.3.0.8-GGXo5v7JBpPFzOrVLJC9nc -package-id=diagrams-rasterific-1.3.1.8-2NQiYfE0qFP7UFNV120Viv -package-id=JuicyPixels-3.2.8-GcqBxM3ZIJ83rYx9ygJ0bm -package-id=loop-0.3.0-98VH1UqsOHy2KxBxA55ICY -package-id=Rasterific-0.6.1.1-3xSOfexAru5AQFIj4yXZ8f -package-id=colour-2.3.3-1clKnMqHWhQAElTFd8Ydyp -package-id=file-embed-0.0.10-IXfudWSq57y1Athysk5ifZ -i/home/hsyl20/travail/code/ViperVM/src/apps -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/Disass/Disass-tmp -i/home/hsyl20/travail/code/ViperVM/src/apps/Elf -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/ElfWeb/ElfWeb-tmp -package-id=happstack-server-7.4.6.2-8UX7Pc8fxznJjPPJjgBwca -package-id=lucid-2.9.6-FZpI2dlNE9n8QXjEeTfhJW -package-id=optparse-applicative-0.12.1.0-4FckWvtE7Gp1EYdm7OVbJw -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/MemoryTest/MemoryTest-tmp -i/home/hsyl20/travail/code/ViperVM/src/apps/PlatformWeb -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/PlatformWeb/PlatformWeb-tmp -package-id=blaze-html-0.8.1.2-2ceCZ3Fm7x67ZwaaR7uQ3C -package-id=blaze-markup-0.7.1.0-BKRb0wHFpEyDJWTsyjQqnp -package-id=network-2.6.3.1-G4Up1CPKbp7DeFsnywOnGG -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/TestSyscalls/TestSyscalls-tmp -i/home/hsyl20/travail/code/ViperVM/src/apps/X86Web -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/X86Web/X86Web-tmp -package-id=HTTP-4000.3.3-Fl4VtSZsPE4A3kSlCM2M0U -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/gunzip/gunzip-tmp -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/huffman/huffman-tmp -i/home/hsyl20/travail/code/ViperVM/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/udev/udev-tmp -i/home/hsyl20/travail/code/dynamic-linker-template -i/home/hsyl20/travail/code/dynamic-linker-template/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen -i/home/hsyl20/travail/code/dynamic-linker-template/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build -stubdir=/home/hsyl20/travail/code/dynamic-linker-template/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build -Wall -Wall -Wall -Wall -Wall -Wall -Wall -Wall -Wall -Wall -Wall -optP-include -optP/tmp/ghci13379/cabal_macros.h -ghci-script=/tmp/ghci13379/ghci-script
@(System/Process/Run.hs:103:5)
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
This is on ArchLinux, binutils-2.27, stack 1.2.0, GHC 8.0.1.
Steps to reproduce (I don't have a smaller reproducing example for now):
git clone https://github.com/hsyl20/ViperVM
cd ViperVM
stack repl
# wait... the compilation is quite long
# press enter when stack asks for the main module to load
stack build
doesn't trigger this linker issue.
Trac metadata
Trac field | Value |
---|---|
Version | 8.0.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Linking) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |