* [PATCH kvm-unit-tests] x86: fix build (macro R interpreted as raw string)
@ 2015-03-13 16:48 Radim Krčmář
2015-03-18 22:53 ` Marcelo Tosatti
0 siblings, 1 reply; 2+ messages in thread
From: Radim Krčmář @ 2015-03-13 16:48 UTC (permalink / raw)
To: kvm; +Cc: Paolo Bonzini, Marcelo Tosatti
GCC 5.0.0 enables raw strings by default and they have higher priority
than macros, thus R"[...]" is interpreted incorrectly:
lib/x86/isr.c:112:30: error: invalid character ')' in raw string delimiter
lib/x86/isr.c:112:8: error: stray ‘R’ in program
lib/x86/isr.c:112:26: error: expected ‘:’ or ‘)’ before string constant
"orl $0x200, (%%"R"sp)\n\t"
Fix it by putting a space between macro R and a string literal.
(We already do that somewhere.)
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
I think it would be better to replace
"[...]"R "ax [...]"
with
"[...]" ASM_AX "[...]"
lib/x86/desc.c | 16 ++++++++--------
lib/x86/isr.c | 2 +-
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/lib/x86/desc.c b/lib/x86/desc.c
index 7fbe77455430..32377780c86b 100644
--- a/lib/x86/desc.c
+++ b/lib/x86/desc.c
@@ -114,22 +114,22 @@ asm (".pushsection .text \n\t"
"push %r15; push %r14; push %r13; push %r12 \n\t"
"push %r11; push %r10; push %r9; push %r8 \n\t"
#endif
- "push %"R"di; push %"R"si; push %"R"bp; sub $"S", %"R"sp \n\t"
- "push %"R"bx; push %"R"dx; push %"R"cx; push %"R"ax \n\t"
+ "push %"R "di; push %"R "si; push %"R "bp; sub $"S", %"R "sp \n\t"
+ "push %"R "bx; push %"R "dx; push %"R "cx; push %"R "ax \n\t"
#ifdef __x86_64__
- "mov %"R"sp, %"R"di \n\t"
+ "mov %"R "sp, %"R "di \n\t"
#else
- "mov %"R"sp, %"R"ax \n\t"
+ "mov %"R "sp, %"R "ax \n\t"
#endif
"call do_handle_exception \n\t"
- "pop %"R"ax; pop %"R"cx; pop %"R"dx; pop %"R"bx \n\t"
- "add $"S", %"R"sp; pop %"R"bp; pop %"R"si; pop %"R"di \n\t"
+ "pop %"R "ax; pop %"R "cx; pop %"R "dx; pop %"R "bx \n\t"
+ "add $"S", %"R "sp; pop %"R "bp; pop %"R "si; pop %"R "di \n\t"
#ifdef __x86_64__
"pop %r8; pop %r9; pop %r10; pop %r11 \n\t"
"pop %r12; pop %r13; pop %r14; pop %r15 \n\t"
#endif
- "add $"S", %"R"sp \n\t"
- "add $"S", %"R"sp \n\t"
+ "add $"S", %"R "sp \n\t"
+ "add $"S", %"R "sp \n\t"
"iret"W" \n\t"
".popsection");
diff --git a/lib/x86/isr.c b/lib/x86/isr.c
index 833564ad5862..9b1d5054801e 100644
--- a/lib/x86/isr.c
+++ b/lib/x86/isr.c
@@ -109,7 +109,7 @@ void handle_external_interrupt(int vector)
"push %[sp]\n\t"
#endif
"pushf\n\t"
- "orl $0x200, (%%"R"sp)\n\t"
+ "orl $0x200, (%%"R "sp)\n\t"
"push $%c[cs]\n\t"
"call *%[entry]\n\t"
:
--
2.3.2
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH kvm-unit-tests] x86: fix build (macro R interpreted as raw string)
2015-03-13 16:48 [PATCH kvm-unit-tests] x86: fix build (macro R interpreted as raw string) Radim Krčmář
@ 2015-03-18 22:53 ` Marcelo Tosatti
0 siblings, 0 replies; 2+ messages in thread
From: Marcelo Tosatti @ 2015-03-18 22:53 UTC (permalink / raw)
To: Radim Krčmář; +Cc: kvm, Paolo Bonzini
On Fri, Mar 13, 2015 at 05:48:04PM +0100, Radim Krčmář wrote:
> GCC 5.0.0 enables raw strings by default and they have higher priority
> than macros, thus R"[...]" is interpreted incorrectly:
>
> lib/x86/isr.c:112:30: error: invalid character ')' in raw string delimiter
> lib/x86/isr.c:112:8: error: stray ‘R’ in program
> lib/x86/isr.c:112:26: error: expected ‘:’ or ‘)’ before string constant
> "orl $0x200, (%%"R"sp)\n\t"
>
> Fix it by putting a space between macro R and a string literal.
> (We already do that somewhere.)
>
> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Applied, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-03-18 22:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-13 16:48 [PATCH kvm-unit-tests] x86: fix build (macro R interpreted as raw string) Radim Krčmář
2015-03-18 22:53 ` Marcelo Tosatti
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox