2018-01-11 09:16:33

by Xiongfeng Wang

[permalink] [raw]
Subject: [PATCH] Kbuild: suppress packed-not-aligned warning for default setting only

From: Xiongfeng Wang <[email protected]>

gcc-8 reports many -Wpacked-not-aligned warnings. The below are some
examples.

./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
} __attribute__ ((packed));

./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
} __attribute__ ((packed));

./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
} __attribute__ ((packed));

This patch suppress this kind of warnings for default setting.

Signed-off-by: Xiongfeng Wang <[email protected]>
---
scripts/Makefile.extrawarn | 3 +++
1 file changed, 3 insertions(+)

diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
index c6ebf42..8d53570 100644
--- a/scripts/Makefile.extrawarn
+++ b/scripts/Makefile.extrawarn
@@ -11,6 +11,8 @@
# are not supported by all versions of the compiler
# ==========================================================================

+KBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned)
+
ifeq ("$(origin W)", "command line")
export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
endif
@@ -26,6 +28,7 @@ warning-1 += -Wold-style-definition
warning-1 += $(call cc-option, -Wmissing-include-dirs)
warning-1 += $(call cc-option, -Wunused-but-set-variable)
warning-1 += $(call cc-option, -Wunused-const-variable)
+warning-1 += $(call cc-option, -Wpacked-not-aligned)
warning-1 += $(call cc-disable-warning, missing-field-initializers)
warning-1 += $(call cc-disable-warning, sign-compare)

--
1.8.3.1


2018-01-16 16:39:14

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] Kbuild: suppress packed-not-aligned warning for default setting only

2018-01-11 18:22 GMT+09:00 Xiongfeng Wang <[email protected]>:
> From: Xiongfeng Wang <[email protected]>
>
> gcc-8 reports many -Wpacked-not-aligned warnings. The below are some
> examples.
>
> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
> } __attribute__ ((packed));
>
> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
> } __attribute__ ((packed));
>
> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
> } __attribute__ ((packed));
>
> This patch suppress this kind of warnings for default setting.
>
> Signed-off-by: Xiongfeng Wang <[email protected]>
> ---
> scripts/Makefile.extrawarn | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
> index c6ebf42..8d53570 100644
> --- a/scripts/Makefile.extrawarn
> +++ b/scripts/Makefile.extrawarn
> @@ -11,6 +11,8 @@
> # are not supported by all versions of the compiler
> # ==========================================================================
>
> +KBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned)
> +
> ifeq ("$(origin W)", "command line")
> export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
> endif
> @@ -26,6 +28,7 @@ warning-1 += -Wold-style-definition
> warning-1 += $(call cc-option, -Wmissing-include-dirs)
> warning-1 += $(call cc-option, -Wunused-but-set-variable)
> warning-1 += $(call cc-option, -Wunused-const-variable)
> +warning-1 += $(call cc-option, -Wpacked-not-aligned)
> warning-1 += $(call cc-disable-warning, missing-field-initializers)
> warning-1 += $(call cc-disable-warning, sign-compare)


Applied to linux-kbuild/kbuild. Thanks!

--
Best Regards
Masahiro Yamada

2018-01-17 16:23:50

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] Kbuild: suppress packed-not-aligned warning for default setting only

2018-01-11 18:22 GMT+09:00 Xiongfeng Wang <[email protected]>:
> From: Xiongfeng Wang <[email protected]>
>
> gcc-8 reports many -Wpacked-not-aligned warnings. The below are some
> examples.
>
> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
> } __attribute__ ((packed));
>
> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
> } __attribute__ ((packed));
>
> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
> } __attribute__ ((packed));
>
> This patch suppress this kind of warnings for default setting.
>
> Signed-off-by: Xiongfeng Wang <[email protected]>
> ---
> scripts/Makefile.extrawarn | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
> index c6ebf42..8d53570 100644
> --- a/scripts/Makefile.extrawarn
> +++ b/scripts/Makefile.extrawarn
> @@ -11,6 +11,8 @@
> # are not supported by all versions of the compiler
> # ==========================================================================
>
> +KBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned)
> +

I moved this to else case of KBUILD_ENABLE_EXTRA_GCC_CHECKS

Please let me know if you see a problem.




--
Best Regards
Masahiro Yamada

2018-01-17 19:43:10

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] Kbuild: suppress packed-not-aligned warning for default setting only

On Wed, Jan 17, 2018 at 5:12 PM, Masahiro Yamada
<[email protected]> wrote:
> 2018-01-11 18:22 GMT+09:00 Xiongfeng Wang <[email protected]>:
>> From: Xiongfeng Wang <[email protected]>
>>
>> gcc-8 reports many -Wpacked-not-aligned warnings. The below are some
>> examples.
>>
>> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
>> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
>> } __attribute__ ((packed));
>>
>> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
>> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
>> } __attribute__ ((packed));
>>
>> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
>> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
>> } __attribute__ ((packed));
>>
>> This patch suppress this kind of warnings for default setting.
>>
>> Signed-off-by: Xiongfeng Wang <[email protected]>
>> ---
>> scripts/Makefile.extrawarn | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
>> index c6ebf42..8d53570 100644
>> --- a/scripts/Makefile.extrawarn
>> +++ b/scripts/Makefile.extrawarn
>> @@ -11,6 +11,8 @@
>> # are not supported by all versions of the compiler
>> # ==========================================================================
>>
>> +KBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned)
>> +
>
> I moved this to else case of KBUILD_ENABLE_EXTRA_GCC_CHECKS
>
> Please let me know if you see a problem.

It means we get the warning for any argument to W=, not just W=1, but
that's probably fine. I'd like to one day clean up the clang warnings
and those that we disable unconditionally in the top-level Makefile
so that each warning gets enabled at a specific level. For the time
being, I'm happy with the packed-not-aligned disabled by default.

Arnd

2018-01-18 03:35:28

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] Kbuild: suppress packed-not-aligned warning for default setting only

Hi Arnd,

2018-01-18 4:40 GMT+09:00 Arnd Bergmann <[email protected]>:
> On Wed, Jan 17, 2018 at 5:12 PM, Masahiro Yamada
> <[email protected]> wrote:
>> 2018-01-11 18:22 GMT+09:00 Xiongfeng Wang <[email protected]>:
>>> From: Xiongfeng Wang <[email protected]>
>>>
>>> gcc-8 reports many -Wpacked-not-aligned warnings. The below are some
>>> examples.
>>>
>>> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
>>> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
>>> } __attribute__ ((packed));
>>>
>>> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
>>> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
>>> } __attribute__ ((packed));
>>>
>>> ./include/linux/ceph/msgr.h:67:1: warning: alignment 1 of 'struct
>>> ceph_entity_addr' is less than 8 [-Wpacked-not-aligned]
>>> } __attribute__ ((packed));
>>>
>>> This patch suppress this kind of warnings for default setting.
>>>
>>> Signed-off-by: Xiongfeng Wang <[email protected]>
>>> ---
>>> scripts/Makefile.extrawarn | 3 +++
>>> 1 file changed, 3 insertions(+)
>>>
>>> diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
>>> index c6ebf42..8d53570 100644
>>> --- a/scripts/Makefile.extrawarn
>>> +++ b/scripts/Makefile.extrawarn
>>> @@ -11,6 +11,8 @@
>>> # are not supported by all versions of the compiler
>>> # ==========================================================================
>>>
>>> +KBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned)
>>> +
>>
>> I moved this to else case of KBUILD_ENABLE_EXTRA_GCC_CHECKS
>>
>> Please let me know if you see a problem.
>
> It means we get the warning for any argument to W=, not just W=1, but
> that's probably fine.

Oops, you are right.

I retrace it.

> I'd like to one day clean up the clang warnings
> and those that we disable unconditionally in the top-level Makefile
> so that each warning gets enabled at a specific level.

Yup.

As a loosely related item,
I see some confusion for DTC extra warning checks.
I have sent a patch.


> For the time
> being, I'm happy with the packed-not-aligned disabled by default.
>
> Arnd


Anyway, I picked the original patch.
You may move it to the top-level Makefile when you work on it.



--
Best Regards
Masahiro Yamada