[GHC] #8696: linking fails with 'relocation R_X86_64_PC32 against undefined symbol'
GHC
ghc-devs at haskell.org
Sat Feb 1 00:02:53 UTC 2014
#8696: linking fails with 'relocation R_X86_64_PC32 against undefined symbol'
-----------------------------+----------------------------------
Reporter: Kata | Owner:
Type: bug | Status: new
Priority: highest | Milestone: 7.8.1
Component: Compiler | Version: 7.8.1-rc1
Resolution: | Keywords:
Operating System: Linux | Architecture: x86_64 (amd64)
Type of failure: Other | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
-----------------------------+----------------------------------
Comment (by rwbarton):
The relevant code is in `compiler/ghci/Linker.lhs`, functions
`linkDependencies`, `getLinkDeps`, `dynLinkObjs` and `dynLoadObjs`. When
linking in a module GHC attempts to link ''all the object files that are
not already loaded into GHC'' into a single shared library and then dlopen
that library. That fails here because `T8696B.o` apparently contains a PC-
relative relocation to `T8696A.o` and therefore cannot be dynamically
linked to it.
I noticed that both `getLinkDeps` and `dynLinkObjs` seem to be guilty of
pruning modules/object files that have already been loaded into GHC from
the list of dependencies to link together. But even if they did not prune
any dependencies, would there then be problems with two copies of
`T8696A.o` being loaded into GHC? So I'm not sure what the right fix is
here.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8696#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list