[PATCH v2] linux-user: Move PRAGMA_DISABLE_PACKED_WARNING to compiler.h

Warner Losh posted 1 patch 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230829184743.54557-1-imp@bsdimp.com
Maintainers: Laurent Vivier <laurent@vivier.eu>, "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Thomas Huth <thuth@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>
include/qemu/compiler.h  |  6 +-----
linux-user/qemu.h        | 26 --------------------------
tests/lcitool/libvirt-ci |  2 +-
3 files changed, 2 insertions(+), 32 deletions(-)
[PATCH v2] linux-user: Move PRAGMA_DISABLE_PACKED_WARNING to compiler.h
Posted by Warner Losh 8 months ago
Replace the slightly older version of this in include/qemu/compiler.h
that was commit as part of bsd-user changes with the newer one from
linux-user. bsd-user has no regreassions with this.

Signed-off-by: Warner Losh <imp@bsdimp.com>
---
 include/qemu/compiler.h  |  6 +-----
 linux-user/qemu.h        | 26 --------------------------
 tests/lcitool/libvirt-ci |  2 +-
 3 files changed, 2 insertions(+), 32 deletions(-)

diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
index b0374425180..0df9febbe2f 100644
--- a/include/qemu/compiler.h
+++ b/include/qemu/compiler.h
@@ -31,17 +31,13 @@
  *   functions than host-endian unaligned load/store plus tswapN.
  * - The pragmas are necessary only to silence a clang false-positive
  *   warning: see https://bugs.llvm.org/show_bug.cgi?id=39113 .
- * - We have to disable -Wpragmas warnings to avoid a complaint about
- *   an unknown warning type from older compilers that don't know about
- *   -Waddress-of-packed-member.
  * - gcc has bugs in its _Pragma() support in some versions, eg
  *   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only
  *   include the warning-suppression pragmas for clang
  */
-#ifdef __clang__
+#if defined(__clang__) && __has_warning("-Waddress-of-packed-member")
 #define PRAGMA_DISABLE_PACKED_WARNING                                   \
     _Pragma("GCC diagnostic push");                                     \
-    _Pragma("GCC diagnostic ignored \"-Wpragmas\"");                    \
     _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
 
 #define PRAGMA_REENABLE_PACKED_WARNING          \
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
index 4f8b55e2fb0..12821e54d0a 100644
--- a/linux-user/qemu.h
+++ b/linux-user/qemu.h
@@ -193,32 +193,6 @@ static inline bool access_ok(CPUState *cpu, int type,
    These are usually used to access struct data members once the struct has
    been locked - usually with lock_user_struct.  */
 
-/*
- * Tricky points:
- * - Use __builtin_choose_expr to avoid type promotion from ?:,
- * - Invalid sizes result in a compile time error stemming from
- *   the fact that abort has no parameters.
- * - It's easier to use the endian-specific unaligned load/store
- *   functions than host-endian unaligned load/store plus tswapN.
- * - The pragmas are necessary only to silence a clang false-positive
- *   warning: see https://bugs.llvm.org/show_bug.cgi?id=39113 .
- * - gcc has bugs in its _Pragma() support in some versions, eg
- *   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only
- *   include the warning-suppression pragmas for clang
- */
-#if defined(__clang__) && __has_warning("-Waddress-of-packed-member")
-#define PRAGMA_DISABLE_PACKED_WARNING                                   \
-    _Pragma("GCC diagnostic push");                                     \
-    _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
-
-#define PRAGMA_REENABLE_PACKED_WARNING          \
-    _Pragma("GCC diagnostic pop")
-
-#else
-#define PRAGMA_DISABLE_PACKED_WARNING
-#define PRAGMA_REENABLE_PACKED_WARNING
-#endif
-
 #define __put_user_e(x, hptr, e)                                            \
     do {                                                                    \
         PRAGMA_DISABLE_PACKED_WARNING;                                      \
diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci
index bbd55b4d18c..9bff3b763b5 160000
--- a/tests/lcitool/libvirt-ci
+++ b/tests/lcitool/libvirt-ci
@@ -1 +1 @@
-Subproject commit bbd55b4d18cce8f89b5167675e434a6941315634
+Subproject commit 9bff3b763b5531a1490e238bfbf77306dc3a6dbb
-- 
2.41.0
Re: [PATCH v2] linux-user: Move PRAGMA_DISABLE_PACKED_WARNING to compiler.h
Posted by Richard Henderson 8 months ago
On 8/29/23 11:47, Warner Losh wrote:
> Replace the slightly older version of this in include/qemu/compiler.h
> that was commit as part of bsd-user changes with the newer one from
> linux-user. bsd-user has no regreassions with this.
> 
> Signed-off-by: Warner Losh <imp@bsdimp.com>

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

> diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci
> index bbd55b4d18c..9bff3b763b5 160000
> --- a/tests/lcitool/libvirt-ci
> +++ b/tests/lcitool/libvirt-ci
> @@ -1 +1 @@
> -Subproject commit bbd55b4d18cce8f89b5167675e434a6941315634
> +Subproject commit 9bff3b763b5531a1490e238bfbf77306dc3a6dbb

Be careful about these.


r~
Re: [PATCH v2] linux-user: Move PRAGMA_DISABLE_PACKED_WARNING to compiler.h
Posted by Warner Losh 8 months ago
On Tue, Aug 29, 2023 at 5:35 PM Richard Henderson <
richard.henderson@linaro.org> wrote:

> On 8/29/23 11:47, Warner Losh wrote:
> > Replace the slightly older version of this in include/qemu/compiler.h
> > that was commit as part of bsd-user changes with the newer one from
> > linux-user. bsd-user has no regreassions with this.
> >
> > Signed-off-by: Warner Losh <imp@bsdimp.com>
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>
> > diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci
> > index bbd55b4d18c..9bff3b763b5 160000
> > --- a/tests/lcitool/libvirt-ci
> > +++ b/tests/lcitool/libvirt-ci
> > @@ -1 +1 @@
> > -Subproject commit bbd55b4d18cce8f89b5167675e434a6941315634
> > +Subproject commit 9bff3b763b5531a1490e238bfbf77306dc3a6dbb
>
> Be careful about these.
>

Doh! how did I miss that... Oh, I only did the git submodule update on my
blitz branch, but not also on the master branch before I created this. Nice
catch.

My love for submodules... is not increasing. Do I need to fix that and send
a v3?

Warner
Re: [PATCH v2] linux-user: Move PRAGMA_DISABLE_PACKED_WARNING to compiler.h
Posted by Warner Losh 8 months ago
On Tue, Aug 29, 2023 at 5:57 PM Warner Losh <imp@bsdimp.com> wrote:

>
>
> On Tue, Aug 29, 2023 at 5:35 PM Richard Henderson <
> richard.henderson@linaro.org> wrote:
>
>> On 8/29/23 11:47, Warner Losh wrote:
>> > Replace the slightly older version of this in include/qemu/compiler.h
>> > that was commit as part of bsd-user changes with the newer one from
>> > linux-user. bsd-user has no regreassions with this.
>> >
>> > Signed-off-by: Warner Losh <imp@bsdimp.com>
>>
>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>>
>> > diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci
>> > index bbd55b4d18c..9bff3b763b5 160000
>> > --- a/tests/lcitool/libvirt-ci
>> > +++ b/tests/lcitool/libvirt-ci
>> > @@ -1 +1 @@
>> > -Subproject commit bbd55b4d18cce8f89b5167675e434a6941315634
>> > +Subproject commit 9bff3b763b5531a1490e238bfbf77306dc3a6dbb
>>
>> Be careful about these.
>>
>
> Doh! how did I miss that... Oh, I only did the git submodule update on my
> blitz branch, but not also on the master branch before I created this. Nice
> catch.
>
> My love for submodules... is not increasing. Do I need to fix that and
> send a v3?
>

.... or just send the pull request with your reviewed by?

Warner
Re: [PATCH v2] linux-user: Move PRAGMA_DISABLE_PACKED_WARNING to compiler.h
Posted by Warner Losh 8 months ago
CC Peter Maywell
CC Stefan Hajnoczi

On Tue, Aug 29, 2023 at 12:51 PM Warner Losh <imp@bsdimp.com> wrote:

> Replace the slightly older version of this in include/qemu/compiler.h
> that was commit as part of bsd-user changes with the newer one from
> linux-user. bsd-user has no regreassions with this.
>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> ---
>  include/qemu/compiler.h  |  6 +-----
>  linux-user/qemu.h        | 26 --------------------------
>  tests/lcitool/libvirt-ci |  2 +-
>  3 files changed, 2 insertions(+), 32 deletions(-)
>
> diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
> index b0374425180..0df9febbe2f 100644
> --- a/include/qemu/compiler.h
> +++ b/include/qemu/compiler.h
> @@ -31,17 +31,13 @@
>   *   functions than host-endian unaligned load/store plus tswapN.
>   * - The pragmas are necessary only to silence a clang false-positive
>   *   warning: see https://bugs.llvm.org/show_bug.cgi?id=39113 .
> - * - We have to disable -Wpragmas warnings to avoid a complaint about
> - *   an unknown warning type from older compilers that don't know about
> - *   -Waddress-of-packed-member.
>   * - gcc has bugs in its _Pragma() support in some versions, eg
>   *   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only
>   *   include the warning-suppression pragmas for clang
>   */
> -#ifdef __clang__
> +#if defined(__clang__) && __has_warning("-Waddress-of-packed-member")
>  #define PRAGMA_DISABLE_PACKED_WARNING                                   \
>      _Pragma("GCC diagnostic push");                                     \
> -    _Pragma("GCC diagnostic ignored \"-Wpragmas\"");                    \
>      _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
>
>  #define PRAGMA_REENABLE_PACKED_WARNING          \
> diff --git a/linux-user/qemu.h b/linux-user/qemu.h
> index 4f8b55e2fb0..12821e54d0a 100644
> --- a/linux-user/qemu.h
> +++ b/linux-user/qemu.h
> @@ -193,32 +193,6 @@ static inline bool access_ok(CPUState *cpu, int type,
>     These are usually used to access struct data members once the struct
> has
>     been locked - usually with lock_user_struct.  */
>
> -/*
> - * Tricky points:
> - * - Use __builtin_choose_expr to avoid type promotion from ?:,
> - * - Invalid sizes result in a compile time error stemming from
> - *   the fact that abort has no parameters.
> - * - It's easier to use the endian-specific unaligned load/store
> - *   functions than host-endian unaligned load/store plus tswapN.
> - * - The pragmas are necessary only to silence a clang false-positive
> - *   warning: see https://bugs.llvm.org/show_bug.cgi?id=39113 .
> - * - gcc has bugs in its _Pragma() support in some versions, eg
> - *   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only
> - *   include the warning-suppression pragmas for clang
> - */
> -#if defined(__clang__) && __has_warning("-Waddress-of-packed-member")
> -#define PRAGMA_DISABLE_PACKED_WARNING                                   \
> -    _Pragma("GCC diagnostic push");                                     \
> -    _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
> -
> -#define PRAGMA_REENABLE_PACKED_WARNING          \
> -    _Pragma("GCC diagnostic pop")
> -
> -#else
> -#define PRAGMA_DISABLE_PACKED_WARNING
> -#define PRAGMA_REENABLE_PACKED_WARNING
> -#endif
> -
>  #define __put_user_e(x, hptr, e)
>   \
>      do {
>   \
>          PRAGMA_DISABLE_PACKED_WARNING;
>   \
> diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci
> index bbd55b4d18c..9bff3b763b5 160000
> --- a/tests/lcitool/libvirt-ci
> +++ b/tests/lcitool/libvirt-ci
> @@ -1 +1 @@
> -Subproject commit bbd55b4d18cce8f89b5167675e434a6941315634
> +Subproject commit 9bff3b763b5531a1490e238bfbf77306dc3a6dbb
> --
> 2.41.0
>
>