Unexpected behaviour of import ccall "header.h function"
When I write
foreign import ccall "myheader.h myfunction" function :: IO ...
Is GHC supposed to check the existence of the header file, or do anything with it?
Because I can still write "myheaderBLA.h myfunction" and it doesn't care about the first word (no error, ever, not even in linking, executable builds all fine).
Relatedly, I can write
foreign import ccall "some.rubbish" f :: IO ...
and as long as "some.rubbish" contains a dot, nothin in the system will ever complain.
carter suggested that maybe names with a dot inside are ignored by a linker.
This leads me to the question: In my example above, is myheaderBLA.h actually understood as some kind of file and ignored by e.g. GHC, or is it a garbled symbol name? In that case, why does http://www.haskell.org/onlinereport/haskell2010/haskellch8.html suggest ccall "string.h strlen"? In the other case, why would it suggest this if the "string.h" part is ignored?
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.6.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | mail@nh2.me |
| Operating system | |
| Architecture |