Profiling with Template Haskell (continued)
Hi all, I've been thinking about the profiling problem a little bit during the night and I've come up with some ideas and queries. I wish to clarify the following. There are three forms of a standard library aren't there? a) static library without profiling (e.g. libHSbase.a) b) static library with profiling (e.g. libHSbase_p.a) c) an equivalent object file for including the library in GHCi and during splicing in Template Haskell. (e.g. HSbase.o) When a module that contains splicing is compiled it seems to me that the third type of library is linked in (if it exists), followed by a an attempt to link in in a shared library. (e.g. libHSbase.so). Say we have a file Main.hs which includes splices from Splices.hs. Say we are just about to compile Main.hs and Splices.o exists. Then the symbols from Splices.o will be linked in during the splicing process right? But this is going to fail if Splices.hs was compiled with profiling on. And why is this? Splices.o will contain the undefined symbol '_CCS' if it is compiled with '-prof'. So when we link it in during the splicing process we are going to need this symbol to be defined somewhere. Well, I've had a brief look at the standard libraries that come with GHC and none of the .o forms of the libraries (type c above) has this symbol defined in them, but the symbol _is_ defined in all the static libraries that we built with profiling on (type b above). It seems to me that we require two types of .o library - one in which profiling was included and one it which it was not. Otherwise how can we compile programs using Template Haskell using the '-prof' option? Sean
participants (1)
-
Sean Seefried