All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Jambor <mjambor@suse.cz>
To: Miroslav Benes <mbenes@suse.cz>, Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"the arch\/x86 maintainers" <x86@kernel.org>
Subject: Re: objtool warnings for kernel/trace/trace_selftest_dynamic.o
Date: Tue, 18 Dec 2018 13:15:40 +0100	[thread overview]
Message-ID: <ri6h8fbqbdf.fsf@suse.cz> (raw)
In-Reply-To: <alpine.LSU.2.21.1812181022570.9644@pobox.suse.cz>

Hi,

On Tue, Dec 18 2018, Miroslav Benes wrote:
>> Sorry for suggesting this prematurely, my email client stopped syncing
>> and I missed your later replies to Peter about this.
>> 
>> > > Should it be reverted, or just remove the noclone, and keep the
>> > > noinline?
>> > 
>> > It should not be touched for now, until it is properly debugged.
>> > 
>> > IMHO Josh's explanation doesn't make much sense and there
>> > was a lot of handwaving 
>> > 
>> > And just fixing one case isn't good enough because there are other
>> > noclone functions in the tree.
>> > 
>> > It the problem is the plugin the plugin needs to be fixed.
>> > 
>> > If the problem is gcc we need a gcc test case and bug, with 
>> > some analysis, and then based on that select the proper workaround.
>> 
>> The plugin is only used for older versions of GCC.  Newer versions have
>> the same functionality builtin with -fsanitize-coverage=trace-pc.
>> 
>> So the problem is GCC.

That's a little bit harsh :-)

>> We're using a function attribute which at least
>> oneGCC developer doesn't recommend.  If you want to keep the LTO support
>> then '__used' seems like a much better choice.
>
> Martin added to CC.
>
> Martin, the thread starts here 
> http://lkml.kernel.org/r/CAK8P3a2K1K21ePBFbApaTKPCk+=Bqj0LyWoK1MdFb1s9ZwjfPg@mail.gmail.com
>
> Can you explain the background of noclone vs. used attributes, please? 
> We discussed it yesterday and I understood that maybe we should not rely 
> on noclone that much. However it is used in the kernel. Should we avoid 
> it in general and replace it with something else (used)?

OK, I have read through it and with the caveats that I don't quite
understand what the failure is, that also believe attribute noclone
should not affect frame pointer generation, and that I don't quite get
how LTO comes into play, my comments are the following:

I am the developer who introduced attribute noclone to GCC and also the
one who advises against using it :-) ...at least without also using the
noinline attribute, the combination means "I want only one or zero
copies of this function in the compiled assembly" which you might need
if you do fancy stuff in inline assembly, for example.

I believe that when people use noclone on its own, in 99 out 100 cases
they actually want something else.  Usually there is something that
references the function from code (such as assembly) or a tool that the
compiler does know about and then they should use the "used" attribute.
That is what I understood to be the use case here and therefore I
recommended it.  In other cases people want all inter-procedural (IPA)
analyses to stay away from a function and then they should use attribute
noipa (or in older GCCs, the combination of noinline and noclone).

The attribute was introduced because it is useful in GCC testsuite, and
although I think occasions when it is useful on its own elsewhere are
very rare and quite obscure, they can happen.  But it really only means
you want only one or zero *non-inlined* copies of the function.  For
example if you have an asm in it that must appear in the compiled
assembly only once but you are confident it will be optimized out in
inlined instances.  Or if you play games with __builtin_return_address()
and somehow have a very clear idea what the return values should be.

I'm afraid I cannot give an opinion what you should do in this case
without understanding the problem better.  If you can isolate the case
where noclone behaves weirdly into a self-contained testcase, I'd be
happy to have a look at it.

Martin

  reply	other threads:[~2018-12-18 12:15 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-16 18:33 objtool warnings for kernel/trace/trace_selftest_dynamic.o Arnd Bergmann
2018-12-17 17:39 ` Josh Poimboeuf
2018-12-17 18:04   ` Andi Kleen
2018-12-17 18:16     ` Josh Poimboeuf
2018-12-17 19:29       ` Peter Zijlstra
2018-12-17 20:55         ` Andi Kleen
2018-12-17 22:35           ` Peter Zijlstra
2018-12-17 23:59             ` Andi Kleen
2018-12-18  9:19               ` Peter Zijlstra
2018-12-18 21:22                 ` Andi Kleen
2018-12-17 21:31         ` Josh Poimboeuf
2018-12-17 22:36           ` Steven Rostedt
2018-12-18  0:06             ` Andi Kleen
2018-12-18  2:49               ` Josh Poimboeuf
2018-12-18  4:22                 ` Andi Kleen
2018-12-18  9:28                 ` Miroslav Benes
2018-12-18 12:15                   ` Martin Jambor [this message]
2018-12-18 12:31                     ` Steven Rostedt
2018-12-18 14:01                     ` Josh Poimboeuf
2018-12-18 21:20                       ` Andi Kleen
2018-12-19  3:44                         ` Sean Christopherson
2018-12-19 17:31                       ` Martin Jambor
2018-12-18 21:15                     ` Andi Kleen
2018-12-18 21:57                       ` Steven Rostedt
2018-12-18 22:13                         ` Andi Kleen
2018-12-18 22:16                           ` Steven Rostedt
2018-12-18 23:26                             ` Andi Kleen
2018-12-18 23:40                               ` Steven Rostedt
2018-12-19 17:38                       ` Martin Jambor
2018-12-18  3:05             ` Josh Poimboeuf
2018-12-17 23:54           ` Andi Kleen
2018-12-17 21:03       ` Andi Kleen

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=ri6h8fbqbdf.fsf@suse.cz \
    --to=mjambor@suse.cz \
    --cc=ak@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mbenes@suse.cz \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=x86@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.