diff mbox series

[v2,7/8] qemu/bswap: Use compiler __builtin_bswap() on NetBSD

Message ID 20200928131934.739451-8-philmd@redhat.com
State New
Headers show
Series qemu/bswap: Use compiler __builtin_bswap() | expand

Commit Message

Philippe Mathieu-Daudé Sept. 28, 2020, 1:19 p.m. UTC
Since commit efc6c070aca ("configure: Add a test for the minimum
compiler version") the minimum compiler version required for GCC
is 4.8, which supports __builtin_bswap().
Remove the NetBSD specific ifdef'ry.

This reverts commit 1360677cfe3ca8f945fa1de77823df21a77e4500
("makes NetBSD use the native bswap functions").

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 configure            | 15 ---------------
 include/qemu/bswap.h |  5 -----
 2 files changed, 20 deletions(-)

Comments

Kamil Rytarowski Sept. 28, 2020, 9:51 p.m. UTC | #1
On 28.09.2020 15:19, Philippe Mathieu-Daudé wrote:
> Since commit efc6c070aca ("configure: Add a test for the minimum

> compiler version") the minimum compiler version required for GCC

> is 4.8, which supports __builtin_bswap().

> Remove the NetBSD specific ifdef'ry.

> 

> This reverts commit 1360677cfe3ca8f945fa1de77823df21a77e4500

> ("makes NetBSD use the native bswap functions").

> 


Personally, I prefer using the system headers. but if you want to use
the GCC builtins, please go for it.

> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---

>  configure            | 15 ---------------

>  include/qemu/bswap.h |  5 -----

>  2 files changed, 20 deletions(-)

> 

> diff --git a/configure b/configure

> index bff787daea7..1b0a02a0af8 100755

> --- a/configure

> +++ b/configure

> @@ -4886,18 +4886,6 @@ if test "$docs" != "no" ; then

>    fi

>  fi

>  

> -# Search for bswap32 function

> -bswap_h=no

> -cat > $TMPC << EOF

> -#include <sys/endian.h>

> -#include <sys/types.h>

> -#include <machine/bswap.h>

> -int main(void) { return bswap32(0); }

> -EOF

> -if compile_prog "" "" ; then

> -  bswap_h=yes

> -fi

> -

>  ##########################################

>  # Do we have libiscsi >= 1.9.0

>  if test "$libiscsi" != "no" ; then

> @@ -6779,9 +6767,6 @@ fi

>  if test "$st_atim" = "yes" ; then

>    echo "HAVE_STRUCT_STAT_ST_ATIM=y" >> $config_host_mak

>  fi

> -if test "$bswap_h" = "yes" ; then

> -  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak

> -fi

>  if test "$curl" = "yes" ; then

>    echo "CONFIG_CURL=y" >> $config_host_mak

>    echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak

> diff --git a/include/qemu/bswap.h b/include/qemu/bswap.h

> index 1a297bfec22..7e586531c09 100644

> --- a/include/qemu/bswap.h

> +++ b/include/qemu/bswap.h

> @@ -3,17 +3,12 @@

>  

>  #include "fpu/softfloat-types.h"

>  

> -#ifdef CONFIG_MACHINE_BSWAP_H

> -# include <sys/endian.h>

> -# include <machine/bswap.h>

> -#else

>  #undef  bswap16

>  #define bswap16(_x) __builtin_bswap16(_x)

>  #undef  bswap32

>  #define bswap32(_x) __builtin_bswap32(_x)

>  #undef  bswap64

>  #define bswap64(_x) __builtin_bswap64(_x)

> -#endif /* ! CONFIG_MACHINE_BSWAP_H */

>  

>  static inline void bswap16s(uint16_t *s)

>  {

>
Peter Maydell Sept. 29, 2020, 8:58 a.m. UTC | #2
On Mon, 28 Sep 2020 at 23:02, Kamil Rytarowski <kamil@netbsd.org> wrote:
>

> Personally, I prefer using the system headers. but if you want to use

> the GCC builtins, please go for it.


I'd agree if the system header approach was cross-platform
or if this was a BSD-only program or if we were aiming for
complete compiler-implementation independence, but since we
rely on GCC/clang all over the place already it seems nicer to
avoid all the machinery for identifying which of the multiple
different system header implementations is present, and
instead just have a single implementation that works on
all the hosts we care about...

thanks
-- PMM
Kamil Rytarowski Sept. 29, 2020, 2:06 p.m. UTC | #3
On 29.09.2020 10:58, Peter Maydell wrote:
> On Mon, 28 Sep 2020 at 23:02, Kamil Rytarowski <kamil@netbsd.org> wrote:

>>

>> Personally, I prefer using the system headers. but if you want to use

>> the GCC builtins, please go for it.

> 

> I'd agree if the system header approach was cross-platform

> or if this was a BSD-only program or if we were aiming for

> complete compiler-implementation independence, but since we

> rely on GCC/clang all over the place already it seems nicer to

> avoid all the machinery for identifying which of the multiple

> different system header implementations is present, and

> instead just have a single implementation that works on

> all the hosts we care about...

> 


This is already a part of POSIX:

https://www.austingroupbugs.net/view.php?id=162

We have got everything needed from the standard now to implement bswap
without relying on compiler builtins. Every modern enough POSIX-like OS
already ships with <endian.h>.

> thanks

> -- PMM

>
diff mbox series

Patch

diff --git a/configure b/configure
index bff787daea7..1b0a02a0af8 100755
--- a/configure
+++ b/configure
@@ -4886,18 +4886,6 @@  if test "$docs" != "no" ; then
   fi
 fi
 
-# Search for bswap32 function
-bswap_h=no
-cat > $TMPC << EOF
-#include <sys/endian.h>
-#include <sys/types.h>
-#include <machine/bswap.h>
-int main(void) { return bswap32(0); }
-EOF
-if compile_prog "" "" ; then
-  bswap_h=yes
-fi
-
 ##########################################
 # Do we have libiscsi >= 1.9.0
 if test "$libiscsi" != "no" ; then
@@ -6779,9 +6767,6 @@  fi
 if test "$st_atim" = "yes" ; then
   echo "HAVE_STRUCT_STAT_ST_ATIM=y" >> $config_host_mak
 fi
-if test "$bswap_h" = "yes" ; then
-  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
-fi
 if test "$curl" = "yes" ; then
   echo "CONFIG_CURL=y" >> $config_host_mak
   echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
diff --git a/include/qemu/bswap.h b/include/qemu/bswap.h
index 1a297bfec22..7e586531c09 100644
--- a/include/qemu/bswap.h
+++ b/include/qemu/bswap.h
@@ -3,17 +3,12 @@ 
 
 #include "fpu/softfloat-types.h"
 
-#ifdef CONFIG_MACHINE_BSWAP_H
-# include <sys/endian.h>
-# include <machine/bswap.h>
-#else
 #undef  bswap16
 #define bswap16(_x) __builtin_bswap16(_x)
 #undef  bswap32
 #define bswap32(_x) __builtin_bswap32(_x)
 #undef  bswap64
 #define bswap64(_x) __builtin_bswap64(_x)
-#endif /* ! CONFIG_MACHINE_BSWAP_H */
 
 static inline void bswap16s(uint16_t *s)
 {