
#9524: GHC uses wrong linker when cross compiling -------------------------------------+------------------------------------- Reporter: Kritzefitz | Owner: rwbarton Type: bug | Status: new Priority: normal | Milestone: Component: Build System | Version: 7.8.4 Resolution: | Keywords: Cross Operating System: Linux | compiling Type of failure: Building GHC | Architecture: x86 failed | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by rwbarton): Oh, I was going to batch this with some other hsc2hs fixes, and then I got sidetracked. I think the fix of simply removing the `#include "../../includes/ghcconfig.h"` is better though. #including that file in a Haskell program is risky business, since the `foo_HOST_OS` CPP symbol it defines is in the same namespace as the `bar_HOST_OS` CPP symbol that is automatically defined by any run of GHC. For example, in the case under discussion here, both `linux_HOST_OS` and `mingw_HOST_OS` are defined since hsc2hs is being built with the bootstrap compiler. There should be no need for hsc2hs to know about the eventual target machine type, only the machine type that it is being built to run on. Or in other words, it is sensible to build hsc2hs independently of the GHC build process. So, let's just remove that #include to ensure that we only get the right versions of the `foo_HOST_OS` symbols, the ones that come from whatever GHC is building hsc2hs, and which are correct for the machine hsc2hs is to run on. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9524#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler