Patchwork qemu-barrier: Fix compiler version check for future gcc versions

login
register
mail settings
Submitter Stefan Weil
Date Oct. 3, 2012, 9:11 p.m.
Message ID <1349298662-16666-1-git-send-email-sw@weilnetz.de>
Download mbox | patch
Permalink /patch/188930/
State Accepted
Headers show

Comments

Stefan Weil - Oct. 3, 2012, 9:11 p.m.
The current check will give a wrong result for gcc-5.x with x < 4.
Using QEMU_GNUC_PREREQ is simpler and fixes that issue.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---

With current gcc versions (gcc-4.x) there is no problem.
Nevertheless, I suggest to fix this in stable versions, too.

Regards

Stefan Weil

 qemu-barrier.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Stefan Hajnoczi - Oct. 5, 2012, 1:48 p.m.
On Wed, Oct 03, 2012 at 11:11:02PM +0200, Stefan Weil wrote:
> The current check will give a wrong result for gcc-5.x with x < 4.
> Using QEMU_GNUC_PREREQ is simpler and fixes that issue.
> 
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
> 
> With current gcc versions (gcc-4.x) there is no problem.
> Nevertheless, I suggest to fix this in stable versions, too.
> 
> Regards
> 
> Stefan Weil
> 
>  qemu-barrier.h |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Thanks, applied to the trivial patches tree:
https://github.com/stefanha/qemu/commits/trivial-patches

Stefan
Michael S. Tsirkin - Oct. 8, 2012, 8:01 p.m.
On Wed, Oct 03, 2012 at 11:11:02PM +0200, Stefan Weil wrote:
> The current check will give a wrong result for gcc-5.x with x < 4.
> Using QEMU_GNUC_PREREQ is simpler and fixes that issue.
> 
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
> 
> With current gcc versions (gcc-4.x) there is no problem.
> Nevertheless, I suggest to fix this in stable versions, too.
> 
> Regards
> 
> Stefan Weil

ACK for stable tree.

>  qemu-barrier.h |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/qemu-barrier.h b/qemu-barrier.h
> index 7e11197..16f0942 100644
> --- a/qemu-barrier.h
> +++ b/qemu-barrier.h
> @@ -19,7 +19,7 @@
>   * mfence on 32 bit as well, e.g. if built with -march=pentium-m.
>   * However, on i386, there seem to be known bugs as recently as 4.3.
>   * */
> -#if defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 4
> +#if QEMU_GNUC_PREREQ(4, 4)
>  #define smp_mb() __sync_synchronize()
>  #else
>  #define smp_mb() asm volatile("lock; addl $0,0(%%esp) " ::: "memory")
> -- 
> 1.7.10
Stefan Weil - Oct. 8, 2012, 8:57 p.m.
Am 08.10.2012 22:01, schrieb Michael S. Tsirkin:
> On Wed, Oct 03, 2012 at 11:11:02PM +0200, Stefan Weil wrote:
>> The current check will give a wrong result for gcc-5.x with x < 4.
>> Using QEMU_GNUC_PREREQ is simpler and fixes that issue.
>>
>> Signed-off-by: Stefan Weil <sw@weilnetz.de>
>> ---
>>
>> With current gcc versions (gcc-4.x) there is no problem.
>> Nevertheless, I suggest to fix this in stable versions, too.
>>
>> Regards
>>
>> Stefan Weil
> ACK for stable tree.
>
>>   qemu-barrier.h |    2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/qemu-barrier.h b/qemu-barrier.h
>> index 7e11197..16f0942 100644
>> --- a/qemu-barrier.h
>> +++ b/qemu-barrier.h
>> @@ -19,7 +19,7 @@
>>    * mfence on 32 bit as well, e.g. if built with -march=pentium-m.
>>    * However, on i386, there seem to be known bugs as recently as 4.3.
>>    * */
>> -#if defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 4
>> +#if QEMU_GNUC_PREREQ(4, 4)
>>   #define smp_mb() __sync_synchronize()
>>   #else
>>   #define smp_mb() asm volatile("lock; addl $0,0(%%esp) " ::: "memory")
>> -- 
>> 1.7.10

My patch was incomplete: an include statement for compiler.h
is needed (see the patches which were applied to the same file in
git master.

Regards

Stefan Weil

Patch

diff --git a/qemu-barrier.h b/qemu-barrier.h
index 7e11197..16f0942 100644
--- a/qemu-barrier.h
+++ b/qemu-barrier.h
@@ -19,7 +19,7 @@ 
  * mfence on 32 bit as well, e.g. if built with -march=pentium-m.
  * However, on i386, there seem to be known bugs as recently as 4.3.
  * */
-#if defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 4
+#if QEMU_GNUC_PREREQ(4, 4)
 #define smp_mb() __sync_synchronize()
 #else
 #define smp_mb() asm volatile("lock; addl $0,0(%%esp) " ::: "memory")