[dpdk-dev] net/mlx: update C compliance standard
Checks
Commit Message
This commit addresses a compilation issue against Glibc >= 2.25, which
implements assert() through a nonstandard ({ }) construct. Such constructs
can normally not be used without __extension__ keyword when -pedantic is
enabled, as is the case when compiling mlx4 and mlx5 PMDs in debug mode.
While assert.h checks for the compiler ability to support GNU extensions,
Clang, unlike GCC, does not allow the above syntax when combining
-std=gnu99 with -pedantic.
Work around missing keyword by moving these PMDs to a stricter compliance
standard without GNU extensions but properly checked by Glibc. Doing so is
supported on the DPDK side since includes have been cleaned up.
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
---
drivers/net/mlx4/Makefile | 2 +-
drivers/net/mlx5/Makefile | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
Comments
On 6/30/2017 6:19 PM, Adrien Mazarguil wrote:
> This commit addresses a compilation issue against Glibc >= 2.25, which
> implements assert() through a nonstandard ({ }) construct. Such constructs
> can normally not be used without __extension__ keyword when -pedantic is
> enabled, as is the case when compiling mlx4 and mlx5 PMDs in debug mode.
>
> While assert.h checks for the compiler ability to support GNU extensions,
> Clang, unlike GCC, does not allow the above syntax when combining
> -std=gnu99 with -pedantic.
>
> Work around missing keyword by moving these PMDs to a stricter compliance
> standard without GNU extensions but properly checked by Glibc. Doing so is
> supported on the DPDK side since includes have been cleaned up.
>
> Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Applied to dpdk-next-net/master, thanks.
> On Jun 30, 2017, at 10:47 AM, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 6/30/2017 6:19 PM, Adrien Mazarguil wrote:
>> This commit addresses a compilation issue against Glibc >= 2.25, which
>> implements assert() through a nonstandard ({ }) construct. Such constructs
>> can normally not be used without __extension__ keyword when -pedantic is
>> enabled, as is the case when compiling mlx4 and mlx5 PMDs in debug mode.
>>
>> While assert.h checks for the compiler ability to support GNU extensions,
>> Clang, unlike GCC, does not allow the above syntax when combining
>> -std=gnu99 with -pedantic.
>>
>> Work around missing keyword by moving these PMDs to a stricter compliance
>> standard without GNU extensions but properly checked by Glibc. Doing so is
>> supported on the DPDK side since includes have been cleaned up.
>>
>> Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
>
> Applied to dpdk-next-net/master, thanks.
This breaks debug-enabled build of mlx5 as mlx5 isn't ready yet!
Thanks,
Yongseok
Hi,
Thanks,
Yongseok
> On Jun 30, 2017, at 11:14 AM, Yongseok Koh <yskoh@mellanox.com> wrote:
>
>
>> On Jun 30, 2017, at 10:47 AM, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>>
>> On 6/30/2017 6:19 PM, Adrien Mazarguil wrote:
>>> This commit addresses a compilation issue against Glibc >= 2.25, which
>>> implements assert() through a nonstandard ({ }) construct. Such constructs
>>> can normally not be used without __extension__ keyword when -pedantic is
>>> enabled, as is the case when compiling mlx4 and mlx5 PMDs in debug mode.
>>>
>>> While assert.h checks for the compiler ability to support GNU extensions,
>>> Clang, unlike GCC, does not allow the above syntax when combining
>>> -std=gnu99 with -pedantic.
>>>
>>> Work around missing keyword by moving these PMDs to a stricter compliance
>>> standard without GNU extensions but properly checked by Glibc. Doing so is
>>> supported on the DPDK side since includes have been cleaned up.
>>>
>>> Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
>>
>> Applied to dpdk-next-net/master, thanks.
> This breaks debug-enabled build of mlx5 as mlx5 isn't ready yet!
Specifically, the following errors happen. It might be better to later make the
change for mlx5 with further cleanup.
CC mlx5_flow.o
In file included from /.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5.h:68:0,
from /.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5_rxtx_vec_sse.c:62:
/.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5_rxtx.h:258:2: error: type of bit-field ‘elts_n’ is a GCC extension [-Werror=pedantic]
uint16_t elts_n:4; /* (*elts)[] length (in log2). */
^
In file included from /.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5.h:68:0,
from /.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5_rxtx.c:65:
/.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5_rxtx.h:258:2: error: type of bit-field ‘elts_n’ is a GCC extension [-Werror=pedantic]
uint16_t elts_n:4; /* (*elts)[] length (in log2). */
^
In file included from /.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5.h:68:0,
from /.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5_rxq.c:67:
/.autodirect/swgwork/yskoh/git/mellanox/dpdk.org/drivers/net/mlx5/mlx5_rxtx.h:258:2: error: type of bit-field ‘elts_n’ is a GCC extension [-Werror=pedantic]
uint16_t elts_n:4; /* (*elts)[] length (in log2). */
Thanks,
Yongseok
On 6/30/2017 7:25 PM, Yongseok Koh wrote:
>
> Hi,
>
>
>
> Thanks,
> Yongseok
>
>> On Jun 30, 2017, at 11:14 AM, Yongseok Koh <yskoh@mellanox.com> wrote:
>>
>>
>>> On Jun 30, 2017, at 10:47 AM, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>>>
>>> On 6/30/2017 6:19 PM, Adrien Mazarguil wrote:
>>>> This commit addresses a compilation issue against Glibc >= 2.25, which
>>>> implements assert() through a nonstandard ({ }) construct. Such constructs
>>>> can normally not be used without __extension__ keyword when -pedantic is
>>>> enabled, as is the case when compiling mlx4 and mlx5 PMDs in debug mode.
>>>>
>>>> While assert.h checks for the compiler ability to support GNU extensions,
>>>> Clang, unlike GCC, does not allow the above syntax when combining
>>>> -std=gnu99 with -pedantic.
>>>>
>>>> Work around missing keyword by moving these PMDs to a stricter compliance
>>>> standard without GNU extensions but properly checked by Glibc. Doing so is
>>>> supported on the DPDK side since includes have been cleaned up.
>>>>
>>>> Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
>>>
>>> Applied to dpdk-next-net/master, thanks.
>> This breaks debug-enabled build of mlx5 as mlx5 isn't ready yet!
> Specifically, the following errors happen. It might be better to later make the
> change for mlx5 with further cleanup.
I don't see build errors.
Patch is requested to fix mlx DEBUG builds [1]. Can you please give more
details how to reproduce build error?
[1]
http://dpdk.org/ml/archives/dev/2017-June/067866.html
> On Jul 1, 2017, at 8:58 AM, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 6/30/2017 7:25 PM, Yongseok Koh wrote:
>>
>>> On Jun 30, 2017, at 11:14 AM, Yongseok Koh <yskoh@mellanox.com> wrote:
>>>
>>>
>>>> On Jun 30, 2017, at 10:47 AM, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>>>>
>>>> On 6/30/2017 6:19 PM, Adrien Mazarguil wrote:
>>>>> This commit addresses a compilation issue against Glibc >= 2.25, which
>>>>> implements assert() through a nonstandard ({ }) construct. Such constructs
>>>>> can normally not be used without __extension__ keyword when -pedantic is
>>>>> enabled, as is the case when compiling mlx4 and mlx5 PMDs in debug mode.
>>>>>
>>>>> While assert.h checks for the compiler ability to support GNU extensions,
>>>>> Clang, unlike GCC, does not allow the above syntax when combining
>>>>> -std=gnu99 with -pedantic.
>>>>>
>>>>> Work around missing keyword by moving these PMDs to a stricter compliance
>>>>> standard without GNU extensions but properly checked by Glibc. Doing so is
>>>>> supported on the DPDK side since includes have been cleaned up.
>>>>>
>>>>> Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
>>>>
>>>> Applied to dpdk-next-net/master, thanks.
>>> This breaks debug-enabled build of mlx5 as mlx5 isn't ready yet!
>> Specifically, the following errors happen. It might be better to later make the
>> change for mlx5 with further cleanup.
>
> I don't see build errors.
> Patch is requested to fix mlx DEBUG builds [1]. Can you please give more
> details how to reproduce build error?
Mine is on CentOS 7.3 and gcc is "version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)"
Adrien chatted with me and he is already preparing a simple patch. I've also
verified his patch fixed the issue.
Thanks,
Yongseok
@@ -40,7 +40,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_flow.c
# Basic CFLAGS.
CFLAGS += -O3
-CFLAGS += -std=gnu99 -Wall -Wextra
+CFLAGS += -std=c11 -Wall -Wextra
CFLAGS += -g
CFLAGS += -I.
CFLAGS += -D_BSD_SOURCE
@@ -52,7 +52,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_flow.c
# Basic CFLAGS.
CFLAGS += -O3
-CFLAGS += -std=gnu99 -Wall -Wextra
+CFLAGS += -std=c11 -Wall -Wextra
CFLAGS += -g
CFLAGS += -I.
CFLAGS += -D_BSD_SOURCE