RE: problem using ffi with profiling

I'm having difficulty compiling something with profiling which uses ffi. It compiles fine without profiling, but not with: ... Any idea why there would be a difference?
Not sure. Could you send the output with -v? Cheers, Simon

Sure. The relevant files look like: CMU_LM.hs: ... import CTypes import IOExts ... foreign import ccall "lm_bridge.h queryLanguageModel2" c__queryLanguageModel2 :: CUShort -> CUShort -> CUShort -> IO Double ... lm_bridge.h: ... #include "pc_libs/pc_general.h" #include "rr_libs/general.h" #include "ngram.h" #include "toolkit.h" double queryLanguageModel2(id__t word, id__t c1, id__t c2); ... When we compile without profiling, we get (package info snipped) % ghc -ffi -cpp -c -fglasgow-exts -package data CMU_LM.hs Glasgow Haskell Compiler, Version 5.04.2, for Haskell 98, compiled by GHC version 5.04.2 Using package config file: /nfs/isd/hdaume/lib/ghc-5.04.2/package.conf Hsc static flags: -static -fignore-interface-pragmas -fomit-interface-pragmas -fdo-lambda-eta-expansion -flet-no-escape *** C pre-processor gcc -E -undef -traditional -v -I . -I /nfs/isd/hdaume/lib/ghc-5.04.2/include -D__HASKELL1__=5 -D__GLASGOW_HASKELL__=504 -D__HASKELL98__ -D__CONCURRENT_HASKELL__ -x c CMU_LM.hs -o /tmp/ghc8127.hscpp Reading specs from /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/specs gcc version 2.95.2 19991024 (release) /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/cpp -lang-c -v -I . -I /nfs/isd/hdaume/lib/ghc-5.04.2/include -D__GNUC__=2 -D__GNUC_MINOR__=95 -traditional -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) -D__HASKELL1__=5 -D__GLASGOW_HASKELL__=504 -D__HASKELL98__ -D__CONCURRENT_HASKELL__ CMU_LM.hs -o /tmp/ghc8127.hscpp GNU CPP version 2.95.2 19991024 (release) (sparc) #include "..." search starts here: #include <...> search starts here: . /nfs/isd/hdaume/lib/ghc-5.04.2/include /opt/sfw/include /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../sparc-sun-solaris2.8/include /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/include /usr/include End of search list. The following default directories have been omitted from the search path: /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../include/g++-3 End of omitted list. *** Checking old interface for hs = Just "CMU_LM.hs", hspp = Just "/tmp/ghc8127.hscpp": *** Parser: *** Renamer: *** Typechecker: *** Desugar: *** Simplify: *** Tidy Core: *** CorePrep: *** Stg2Stg: *** CodeGen: *** CodeOutput: *** Assembler gcc -I. -I. -c /tmp/ghc8127.s -o CMU_LM.o *** Deleting temp files Deleting: /tmp/ghc8127.s /tmp/ghc8127.hspp /tmp/ghc8127.hscpp Warning: deleting non-existent /tmp/ghc8127.hspp then, we remove CMU_LM.o and .hi and redo with -prof and get: Glasgow Haskell Compiler, Version 5.04.2, for Haskell 98, compiled by GHC version 5.04.2 Using package config file: /nfs/isd/hdaume/lib/ghc-5.04.2/package.conf Hsc static flags: -static -fscc-profiling -fignore-interface-pragmas -fomit-interface-pragmas -fdo-lambda-eta-expansion -flet-no-escape *** C pre-processor gcc -E -undef -traditional -v -I . -I /nfs/isd/hdaume/lib/ghc-5.04.2/include -D__HASKELL1__=5 -D__GLASGOW_HASKELL__=504 -D__HASKELL98__ -D__CONCURRENT_HASKELL__ -D'PROFILING' -x c CMU_LM.hs -o /tmp/ghc8140.hscpp Reading specs from /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/specs gcc version 2.95.2 19991024 (release) /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/cpp -lang-c -v -I . -I /nfs/isd/hdaume/lib/ghc-5.04.2/include -D__GNUC__=2 -D__GNUC_MINOR__=95 -traditional -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) -D__HASKELL1__=5 -D__GLASGOW_HASKELL__=504 -D__HASKELL98__ -D__CONCURRENT_HASKELL__ -DPROFILING CMU_LM.hs -o /tmp/ghc8140.hscpp GNU CPP version 2.95.2 19991024 (release) (sparc) #include "..." search starts here: #include <...> search starts here: . /nfs/isd/hdaume/lib/ghc-5.04.2/include /opt/sfw/include /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../sparc-sun-solaris2.8/include /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/include /usr/include End of search list. The following default directories have been omitted from the search path: /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../include/g++-3 End of omitted list. *** Checking old interface for hs = Just "CMU_LM.hs", hspp = Just "/tmp/ghc8140.hscpp": *** Parser: *** Renamer: *** Typechecker: *** Desugar: *** Simplify: *** Tidy Core: *** CorePrep: *** Stg2Stg: *** CodeGen: *** CodeOutput: *** C Compiler gcc -x c /tmp/ghc8140.hc -o /tmp/ghc8140.raw_s -w -v -S -Wimplicit -O -D__GLASGOW_HASKELL__=504 -DPROFILING -ffloat-store -I . -I . -I /nfs/isd/hdaume/lib/ghc-5.04.2/include Reading specs from /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/specs gcc version 2.95.2 19991024 (release) /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/cpp -lang-c -v -I . -I . -I /nfs/isd/hdaume/lib/ghc-5.04.2/include -D__GNUC__=2 -D__GNUC_MINOR__=95 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__OPTIMIZE__ -Wimplicit -w -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) -D__GLASGOW_HASKELL__=504 -DPROFILING /tmp/ghc8140.hc /var/tmp/cc7MwnHS.i GNU CPP version 2.95.2 19991024 (release) (sparc) #include "..." search starts here: #include <...> search starts here: . /nfs/isd/hdaume/lib/ghc-5.04.2/include /opt/sfw/include /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../sparc-sun-solaris2.8/include /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/include /usr/include End of search list. The following default directories have been omitted from the search path: /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../include/g++-3 End of omitted list. In file included from /tmp/ghc8140.hc:6: lm_bridge.h:4: pc_libs/pc_general.h: No such file or directory lm_bridge.h:5: rr_libs/general.h: No such file or directory lm_bridge.h:6: ngram.h: No such file or directory lm_bridge.h:7: toolkit.h: No such file or directory Failed: gcc -x c /tmp/ghc8140.hc -o /tmp/ghc8140.raw_s -w -v -S -Wimplicit -O -D__GLASGOW_HASKELL__=504 -DPROFILING -ffloat-store -I . -I . -I /nfs/isd/hdaume/lib/ghc-5.04.2/include *** Deleting temp files Deleting: /tmp/ghc8140.raw_s /tmp/ghc8140.hc /tmp/ghc8140.hspp /tmp/ghc8140.hscpp Warning: deleting non-existent /tmp/ghc8140.raw_s Warning: deleting non-existent /tmp/ghc8140.hspp I can probably trim down a smaller example and send if off if that would help. It doesn't happen with a very simple example. I think it probably depends crucially on the fact that the .h file #includes another .h file. - Hal -- Hal Daume III "Computer science is no more about computers | hdaume@isi.edu than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume On Mon, 27 Jan 2003, Simon Marlow wrote:
I'm having difficulty compiling something with profiling which uses ffi. It compiles fine without profiling, but not with: ... Any idea why there would be a difference?
Not sure. Could you send the output with -v?
Cheers, Simon _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
participants (2)
-
Hal Daume III
-
Simon Marlow