Stefan's last point is the key one. GHC compiles into code that doesn't use call/return instructions. Instead, it pushes explicit return addresses, and returns by doing an indirect jump. I bet this isn't what your tool expects. Simon | -----Original Message----- | From: haskell-bounces@haskell.org [mailto:haskell-bounces@haskell.org] On | Behalf Of Stefan O'Rear | Sent: 04 October 2007 01:15 | To: Ganesh Narayan | Cc: haskell@haskell.org | Subject: Re: [Haskell] Haskell Applications - reg | | On Thu, Oct 04, 2007 at 05:32:31AM +0530, Ganesh Narayan wrote: | > [1] Am presently constructing the call graphs from disassembled application | > binaries; resultant graph includes ghc runtime library calls. | | Not necessary a good idea - Haskell's purity gives the compilers great | license to reorder and rearrange code, and the laziness causes the | dynamic call graph to differ wildly from the static call graph even | without without optimizations. GHC's use of a private stack with very | weird return conventions probably isn't helping either! | | Stefan