-fvia-c doesn't work

Simon Marlow simonmar at microsoft.com
Thu Sep 30 06:34:37 EDT 2004


On 29 September 2004 16:49, Malcolm Wallace wrote:

>>>     $ ghc-6.2.1 -c -fvia-c /tmp/ghcbug.hs
>>>     In file included from /usr/include/stdlib.h:414,               
>>>                      from
>>>                     
>>>     /usr/malcolm/local/lib/ghc-6.2.1/include/Stg.h:200, from
>>>     /tmp/ghc1723.hc:3: /usr/include/sys/types.h:190: conflicting
>>> types for `int8_t' stdint.h:33: previous declaration of `int8_t' 
>> 
>> Weirdly, -fvia-c works just fine today, with all versions of ghc
>> installed locally.  It must have been something in my local machine
>> config, even though I haven't changed anything since!
> 
> OK, after a couple more strange experiences, whereby -fvia-c sometimes
> worked and sometimes did not, depending on what directory I was in,
> I finally determined that the failure happened only when I had a file
> called "stdint.h" in the current directory.
> 
> So apparently, since a straight call of gcc does not display the same
> problem, the search path given to gcc by ghc somehow has . before
> the standard location of /usr/include?

Thanks for tracking this down.  For a workaround, you can say 

   ghc -I- ...

this causes ghc to pass '-I-' to gcc, which causes gcc to interpret all
the include paths as applying only to includes of the form #include
"...".  Includes of the form #include <...> will be searched for in the
system directories only.  Put the -I- after any other -I options on the
ghc command line.

I've made this change in GHC, but I probably won't merge it into 6.2.2
because it's only of those changes that could easily cause something
else to break, so we need plenty of testing.

Cheers,
	Simon



More information about the Glasgow-haskell-bugs mailing list