low-level profiling

Nicolas Frisby nicolas.frisby at gmail.com
Fri Feb 15 21:02:07 CET 2013


Thanks for rallying everyone! I made a bit of a breakthrough while trying
to pinpoint where the linker is invoked.

Here's the situation:

  * If I use nofib's "make" command to build the text, the executable does
not have the function symbols in its .text section. The .o files do have
them.

  * If I use ghc --make instead, the symbols survive in the executable.

I'm not up to sleuthing out the details at the moment. Should I open a Trac
ticket?


On Fri, Feb 15, 2013 at 7:55 PM, Geoffrey Mainland
<gmainlan at microsoft.com>wrote:

>  Try invoking ghc with -optl-g?****
>
> ** **
>
> Geoff****
>
> ** **
>
> *From:* ghc-devs-bounces at haskell.org [mailto:ghc-devs-bounces at haskell.org]
> *On Behalf Of *Nicolas Frisby
> *Sent:* Friday, February 15, 2013 7:41 PM
> *To:* Johan Tibell
> *Cc:* ghc-devs at 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 at 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 at gmail.com>
> wrote:****
>
> On Fri, Feb 15, 2013 at 10:24 AM, Nicolas Frisby <nicolas.frisby at 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? ****
>
> ** **
>
> ** **
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20130215/7118513e/attachment.htm>


More information about the ghc-devs mailing list