Re: [PATCH 02/17] x86, lto: Mark all top level asm statements as .text

From: Thomas Gleixner
Date: Wed Mar 27 2019 - 18:50:44 EST


On Wed, 27 Mar 2019, Andi Kleen wrote:

> > > I checked the code general and with the .globl in NATIVE_LABEL the
> >
> > With or without? I removed that as well.
>
> With.
>
> LTO would still need the .globls because the variable and the asm
> statement can end up in different assembler files, and resolution
> would rely on the linker.

This really sucks. As this is a constant source of trouble, we might better
bite the bullet and get rid of this fancy macro completely. It's not that
we add these patch patterns every other day.

So a good old:

/* xor %eax %ex */
static const unsigend char patch_qspinlock[] = { 0x31, 0xc0 };

and then in the patch code:

return paravirt_patch_insns(ibuf, len, patch_qspinlock,
patch_qspinlock + ARRAY_SIZE(patch_qspinlock));

might be less trouble than dealing with that clever inline assembly
forever.

Thanks,

tglx