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 .popsection
.if ! \has_error
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.
.popsection .if ! \has_error -- 2.29.2.576.ga3fc446d84-goog
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
On Thu, Dec 10, 2020, Bill Wendling wrote:
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
Boo. I assume 1: and 1b work? Or my KVM favorite "666:" :-) That's enough to at least make me pause and actually read the code.
^
.popsection
.if ! \has_error
-- 2.29.2.576.ga3fc446d84-goog
On Thu, Dec 10, 2020 at 5:07 PM Sean Christopherson seanjc@google.com wrote:
On Thu, Dec 10, 2020, Bill Wendling wrote:
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
Boo. I assume 1: and 1b work? Or my KVM favorite "666:" :-) That's enough to at least make me pause and actually read the code.
Ah! I missed the second part of your message (about the non-zero shorthand). That should work. Sorry about that. :-) Should I submit a new version of this patch?
-bw
On Thu, Dec 10, 2020, Bill Wendling wrote:
On Thu, Dec 10, 2020 at 5:07 PM Sean Christopherson seanjc@google.com wrote:
On Thu, Dec 10, 2020, Bill Wendling wrote:
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
Boo. I assume 1: and 1b work? Or my KVM favorite "666:" :-) That's enough to at least make me pause and actually read the code.
Ah! I missed the second part of your message (about the non-zero shorthand). That should work. Sorry about that. :-) Should I submit a new version of this patch?
That'd probably be easiest. This is trivial enought to fixup when applying, but we might as well save a few of Paolo's cycles for other things.
Thanks!
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..7629819734af 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 = . +666 : .pushsection .rodata -.quad current_handler + .quad 666b .popsection
.if ! \has_error
On Thu, Dec 10, 2020 at 7:58 PM Bill Wendling morbo@google.com 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/
Reviewed-by: Jim Mattson jmattson@google.com
On 03/05/21 20:37, Jim Mattson wrote:
On Thu, Dec 10, 2020 at 7:58 PM Bill Wendling morbo@google.com 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/
Reviewed-by: Jim Mattson jmattson@google.com
Queued, thanks.
Paolo
By non-zero, I think Sean means something like:
666: .pushsection .rodata .quad 666b
On Thu, Dec 10, 2020 at 5:34 PM Bill Wendling morbo@google.com wrote:
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
linux-kselftest-mirror@lists.linaro.org