On Fri, Feb 15, 2013 at 10:05 AM, Nicolas Frisby <span dir="ltr">&lt;<a href="mailto:nicolas.frisby@gmail.com" target="_blank">nicolas.frisby@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div>I&#39;m way below my depth here, but I&#39;d like to use the perf tool to see where a program is spending its time.</div><div> </div><div>Unfortunately, the recipe here</div><div> </div><div><a href="http://hackage.haskell.org/trac/ghc/wiki/Debugging/LowLevelProfiling/Perf" target="_blank">http://hackage.haskell.org/trac/ghc/wiki/Debugging/LowLevelProfiling/Perf</a></div>



<div> </div><div>isn&#39;t working for me. I get output like this instead</div><div> </div><div>90.20%  drbg_test  drbg_test          [.] 0x2515ef<br>  5.71%  drbg_test  [kernel.kallsyms]  [k] 0xffffffff8103e0ca<br>  1.53%  drbg_test  <a href="http://libc-2.15.so" target="_blank">libc-2.15.so</a>       [.] bsearch<br>



  1.02%  drbg_test  <a href="http://libc-2.15.so" target="_blank">libc-2.15.so</a>       [.] 0x9194c<br>  0.43%  drbg_test  libgmp.so.10.0.2   [.] __gmpz_mul_2exp<br>  0.27%  drbg_test  libgmp.so.10.0.2   [.] __gmpz_add<br>

  0.16%  drbg_test  [vdso]             [.] 0x7fffd3d25983<br>

  0.16%  drbg_test  libgmp.so.10.0.2   [.] __gmpn_lshift<br>  0.10%  drbg_test  libgmp.so.10.0.2   [.] 0x13565<br>  0.05%  drbg_test  libgmp.so.10.0.2   [.] __gmpz_init<br>  0.05%  drbg_test  <a href="http://libc-2.15.so" target="_blank">libc-2.15.so</a>       [.] __select<br>



  0.05%  drbg_test  libgmp.so.10.0.2   [.] __gmpn_modexact_1_odd<br>  0.05%  drbg_test  libgmp.so.10.0.2   [.] __gmpz_realloc<br>  0.05%  drbg_test  <a href="http://libc-2.15.so" target="_blank">libc-2.15.so</a>       [.] __errno_location<br>



  0.05%  drbg_test  drbg_test          [.] <a href="mailto:__gmpz_init@plt" target="_blank">__gmpz_init@plt</a><br>  0.05%  drbg_test  <a href="http://librt-2.15.so" target="_blank">librt-2.15.so</a>      [.] clock_gettime<br>

  0.05%  drbg_test  libgmp.so.10.0.2   [.] __gmpn_add_n</div>

<div> </div><div>Again --- below my depth here --- but I don&#39;t know how to investigate what 0x2515ef indicates. Does anyone have any pointers?</div><div> </div><div>I was hoping that the address would be a nice RTS-ish symbol, like in the Wiki&#39;s examples.</div>

</div></blockquote><div><br></div><div>I thought I fixed this issue (at least in the native backend). What was missing before was .size assembler directives that would let tools like perf know where a function started and ended. See this commit <a href="https://github.com/ghc/ghc/commit/32f24ddfd9549010dd345733c6f46f67196cacf6">https://github.com/ghc/ghc/commit/32f24ddfd9549010dd345733c6f46f67196cacf6</a></div>

<div><br></div><div>Perhaps it broke at some point? Are you using the x86 backend?</div></div>