Try invoking ghc with -optl-g?

 

Geoff

 

From: ghc-devs-bounces@haskell.org [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Nicolas Frisby
Sent: Friday, February 15, 2013 7:41 PM
To: Johan Tibell
Cc: ghc-devs@haskell.org
Subject: Re: low-level profiling

 

Ah, looks like the symbol information exists in the .o files, but not in my actual executable. Could I invoke ld manually with some incantation to preserve the function symbols?

 

 

 

On Fri, Feb 15, 2013 at 7:18 PM, Nicolas Frisby <nicolas.frisby@gmail.com> wrote:

No, nothing fancy. It's just a nofib program.

 

I am seeing the .size directives in the .s files. And objdump -S gives output like this:

 

0000000000000368 <c2hw_info>:
 368: 48 83 e3 07           and    $0x7,%rbx
 36c: 48 83 fb 02           cmp    $0x2,%rbx
 370: 0f 83 96 00 00 00     jae    40c <c2hA_info+0x5c>
 376: 48 8b 45 08           mov    0x8(%rbp),%rax

...

 

so it's just perf that's going awry?

 

... investigating perf ...

 

This might be my issue:

 

http://us.generation-nt.com/answer/tip-perf-urgent-perf-symbols-handle-proc-sys-kernel-kptr-restrict-help-203499422.html

 

Now I just have to decode all of that!

 

On Fri, Feb 15, 2013 at 6:48 PM, Johan Tibell <johan.tibell@gmail.com> wrote:

On Fri, Feb 15, 2013 at 10:24 AM, Nicolas Frisby <nicolas.frisby@gmail.com> wrote:

I'm not passing any flags related to code generation, I don't think.

 

$HC -H64m -O -Rghc-timing -package array -H32m -hisuf hi -O1 -rtsopts -c Main.hs -o Main.o

 

So that'd just be the native code generator, right?.

 

$ uname -a
Linux cam-05-unx 3.2.0-35-generic #55-Ubuntu SMP Wed Dec 5 17:42:16 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

 

Is there a objdump-ish way to directly look for these .size directives?

 

Thanks Johan.

 

If you tell GHC to keep all temporary file you could look in the .S files for the .size directive. It could be that I missed some place where we ought to put a .size directive. Are you doing dynamic linking?