Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1736793

Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang

From Ingo Molnar <mingo@kernel.org>
Newsgroups linux.kernel
Subject Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang
Date 2017-09-21 17:40 +0200
Message-ID <usbK3-2QA-37@gated-at.bofh.it> (permalink)
References <urvKO-xs-19@gated-at.bofh.it> <urvKO-xs-17@gated-at.bofh.it> <urR8C-67N-11@gated-at.bofh.it> <urRrY-6fs-25@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


* Josh Poimboeuf <jpoimboe@redhat.com> wrote:

> On Wed, Sep 20, 2017 at 10:32:43AM -0700, H. Peter Anvin wrote:
> > On 09/19/17 11:45, Josh Poimboeuf wrote:
> > > For inline asm statements which have a CALL instruction, we list the
> > > stack pointer as a constraint to convince GCC to ensure the frame
> > > pointer is set up first:
> > > 
> > >   static inline void foo()
> > >   {
> > >   	register void *__sp asm(_ASM_SP);
> > >   	asm("call bar" : "+r" (__sp))
> > >   }
> > > 
> > > Unfortunately, that pattern causes clang to corrupt the stack pointer.
> > > 
> > > There's actually an easier way to achieve the same goal in GCC, without
> > > causing trouble for clang.  If we declare the stack pointer register
> > > variable as a global variable, and remove the constraint altogether,
> > > that convinces GCC to always set up the frame pointer before inserting
> > > *any* inline asm.
> > > 
> > > It basically acts as if *every* inline asm statement has a CALL
> > > instruction.  It's a bit overkill, but the performance impact should be
> > > negligible.
> > > 
> > 
> > Again, probably negligible, but why do we need a frame pointer just
> > because we have a call assembly instruction?
> 
> It's frame pointer convention.  Without it, if dumping the stack from
> the called function, a function will get skipped in the stack trace.

BTW., could we perhaps relax this and simply phase out the frame pointer on x86, 
and simplify all our assembly in a cycle or two? ORC unwinder is working out very 
well so far. Live kernel patching can use ORC data just fine, and nothing else 
actually relies on frame pointers, right?

That would give one more register to assembly code.

I realize that we just rewrote a whole bunch of assembly code... but that was the 
price for ORC, in a way.

Thanks,

	Ingo

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-19 20:50 +0200
  Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Alexander Potapenko <glider@google.com> - 2017-09-20 00:00 +0200
    Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Alexander Potapenko <glider@google.com> - 2017-09-20 00:30 +0200
      Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 03:50 +0200
  Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 03:20 +0200
    Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 20:00 +0200
  Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Dmitry Vyukov <dvyukov@google.com> - 2017-09-20 19:40 +0200
    Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang "H. Peter Anvin" <hpa@zytor.com> - 2017-09-20 20:00 +0200
      Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Dmitry Vyukov <dvyukov@google.com> - 2017-09-20 20:10 +0200
        Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 23:10 +0200
          Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Andy Lutomirski <luto@amacapital.net> - 2017-09-20 23:20 +0200
            Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Dmitry Vyukov <dvyukov@google.com> - 2017-09-21 10:20 +0200
              Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Brian Gerst <brgerst@gmail.com> - 2017-09-21 14:00 +0200
                Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Dmitry Vyukov <dvyukov@google.com> - 2017-09-21 14:20 +0200
  Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang "H. Peter Anvin" <hpa@zytor.com> - 2017-09-20 19:50 +0200
    Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-20 20:00 +0200
      Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Ingo Molnar <mingo@kernel.org> - 2017-09-21 17:40 +0200
        Re: [PATCH 2/2] x86/asm: Fix inline asm call constraints for clang Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-21 18:20 +0200

csiph-web