From: Ingo Molnar <mingo@elte.hu>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Dave Airlie <airlied@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
Sam Ravnborg <sam@ravnborg.org>,
linuxppc-dev@ozlabs.org
Subject: Re: ftrace scripts and make V=1
Date: Thu, 6 Aug 2009 05:43:25 +0200 [thread overview]
Message-ID: <20090806034325.GA8861@elte.hu> (raw)
In-Reply-To: <alpine.DEB.2.00.0908052011590.5010@gandalf.stny.rr.com>
* Steven Rostedt <rostedt@goodmis.org> wrote:
> Well we tracked it down and it is powerpc64 specific.
>
> Seems that in drivers/hwmon/lm93.c there's a function called:
>
> LM93_IN_FROM_REG()
>
> But PPC64 has function descriptors and the real function names (the ones
> you see in objdump) start with a '.'. Thus this in objdump you have:
>
> Disassembly of section .text:
>
> 0000000000000000 <.LM93_IN_FROM_REG>:
> 0: 7c 08 02 a6 mflr r0
> 4: fb 81 ff e0 std r28,-32(r1)
>
>
> The function name used is .LM93_IN_FROM_REG. But gcc considers
> symbols that start with ".L" as a special symbol that is used
> inside the assembly stage.
>
> The nm passed into recordmcount uses the --synthetic option which
> shows the ".L" symbols (my runs outside of the build did not
> include the --synthetic option, so my older patch worked). We see
> the function as a local.
>
> Now to capture all the locations that use "mcount" we need to have
> a reference to link into the object file a list of mcount callers.
> We need a reference that will not disappear. We try to use a
> global function and if that does not work, we use a local function
> as a reference. But to relink the section back into the object, we
> need to make it global. In this case, we run objcopy using
> --globalize-symbol and --localize-symbol to convert the symbol
> into a global symbol, link the mcount list, then convert it back
> to a local symbol.
>
> This works great except for this case. .L* symbols can not be
> converted into a global symbol, and the mcount section referencing
> it will remain unresolved.
>
> Try this patch and see if it fixes your issue.
>
> Thanks!
>
> -- Steve
>
> diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
> index d29baa2..4889c44 100755
> --- a/scripts/recordmcount.pl
> +++ b/scripts/recordmcount.pl
> @@ -414,7 +414,10 @@ while (<IN>) {
> $offset = hex $1;
> } else {
> # if we already have a function, and this is weak, skip it
> - if (!defined($ref_func) && !defined($weak{$text})) {
> + if (!defined($ref_func) && !defined($weak{$text}) &&
> + # PPC64 can have symbols that start with .L and
> + # gcc considers these special. Don't use them!
> + $text !~ /^\.L/) {
> $ref_func = $text;
> $offset = hex $1;
> }
Ah, indeed. I'm wondering whether also emitting a build warning
would be useful - just in the (admittedly unlikely) case of someone
wondering about why LM93_IN_FROM_REG does not show up in function
traces.
Ingo
next prev parent reply other threads:[~2009-08-06 3:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <21d7e9970908050023j2807ef3bi1321ac2a1fd9a743@mail.gmail.com>
[not found] ` <20090805072952.GC19322@elte.hu>
2009-08-06 2:00 ` ftrace scripts and make V=1 Steven Rostedt
2009-08-06 3:43 ` Ingo Molnar [this message]
2009-08-06 15:02 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090806034325.GA8861@elte.hu \
--to=mingo@elte.hu \
--cc=airlied@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=rostedt@goodmis.org \
--cc=sam@ravnborg.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).