Message ID | 20230829184509.54434-1-imp@bsdimp.com |
---|---|
State | New |
Headers | show |
Series | linux-user: Move PRAGMA_DISABLE_PACKED_WARNING to compiler.h | expand |
On 29/08/2023 20.45, 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 s/commit/committed/ ? > linux-user. bsd-user has no regreassions with this. s/regreassions/regressions/ > > Signed-off-by: Warner Losh <imp@bsdimp.com> > --- > include/qemu/compiler.h | 3 +-- > linux-user/qemu.h | 26 -------------------------- > tests/lcitool/libvirt-ci | 2 +- > 3 files changed, 2 insertions(+), 29 deletions(-) > > diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h > index b0374425180..9496a65ea57 100644 > --- a/include/qemu/compiler.h > +++ b/include/qemu/compiler.h > @@ -38,10 +38,9 @@ > * 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 Accidentially committed the libvirt-ci submodule change? Thomas
diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index b0374425180..9496a65ea57 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -38,10 +38,9 @@ * 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
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 | 3 +-- linux-user/qemu.h | 26 -------------------------- tests/lcitool/libvirt-ci | 2 +- 3 files changed, 2 insertions(+), 29 deletions(-)