Re: [PATCH] selftests: kvm: remove reassignment of non-absolute variables

Bill Wendling
2020-12-11T01:06:53Z

On Thu, Dec 10, 2020 at 4:50 PM Sean Christopherson <seanjc@google.com> wrote:
>
> On Wed, Dec 09, 2020, Bill Wendling wrote:
> > Clang's integrated assembler does not allow symbols with non-absolute
> > values to be reassigned. Modify the interrupt entry loop macro to be
> > compatible with IAS by using a label and an offset.
> >
> > Cc: Jian Cai <caij2003@gmail.com>
> > Signed-off-by: Bill Wendling <morbo@google.com>
> > References: https://lore.kernel.org/lkml/20200714233024.1789985-1-caij2003@gmail.com/
> > ---
> > tools/testing/selftests/kvm/lib/x86_64/handlers.S | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/testing/selftests/kvm/lib/x86_64/handlers.S b/tools/testing/selftests/kvm/lib/x86_64/handlers.S
> > index aaf7bc7d2ce1..3f9181e9a0a7 100644
> > --- a/tools/testing/selftests/kvm/lib/x86_64/handlers.S
> > +++ b/tools/testing/selftests/kvm/lib/x86_64/handlers.S
> > @@ -54,9 +54,9 @@ idt_handlers:
> > .align 8
> >
> > /* Fetch current address and append it to idt_handlers. */
> > - current_handler = .
> > +0 :
> > .pushsection .rodata
> > -.quad current_handler
> > + .quad 0b
>
> Bit of a silly nit: can we use a named label, or at least a non-zero shorthand?
> It's really easy to misread "0b" as zeroing out the value, at least for me.
>
I don't believe that will work. If I rename "0 :" to something more
concrete, like ".Lcurrent :", then the label's redefined because of
the ".rept". If I assign the "0b" to something, we're back with the
unmodified code, which clang issues an error for:

<instantiation>:3500:6: error: invalid reassignment of non-absolute variable 'x'
x = 0b
^
<instantiation>:2:2: note: while in macro instantiation
.rept 255 - 18 + 1
^

> > .popsection
> >
> > .if ! \has_error
> > --
> > 2.29.2.576.ga3fc446d84-goog
> >