On 13/05/2020 14:50, akhil.go...@nxp.com wrote: > From: Akhil Goyal <akhil.go...@nxp.com> > > gcc 10 defaults to -fno-common and as a result when linking > with crypto drivers: > > drivers/librte_pmd_dpaa_sec.a(crypto_dpaa_sec_dpaa_sec.c.o): > (.bss+0x4): multiple definition of `rta_sec_era'; > drivers/librte_pmd_caam_jr.a(crypto_caam_jr_caam_jr.c.o): > (.bss+0x0): first defined here > > drivers/librte_pmd_dpaa2_sec.a(crypto_dpaa2_sec_dpaa2_sec_dpseci.c.o): > (.data+0x0): multiple definition of `rta_sec_era'; > drivers/librte_pmd_caam_jr.a(crypto_caam_jr_caam_jr.c.o): > (.bss+0x0): first defined here > > This patch fixes the blunt workaround in the following commit. > > Fixes: 50b03f3b8eaf ("drivers/crypto: disable gcc 10 no-common errors") > > Bugzilla ID: 469 > Cc: sta...@dpdk.org > > Signed-off-by: Akhil Goyal <akhil.go...@nxp.com> > --- > This patch is not tested on GCC 10. > @kevin Please verify on your setup if it is fixing the GCC 10 > compilation. >
Passing with gcc 10 on my setup. Internal symbol part looks ok to me, but might be best to get review from Ray. Tested-by: Kevin Traynor <ktray...@redhat.com> > > drivers/common/dpaax/Makefile | 3 ++- > drivers/common/dpaax/caamflib.c | 16 ++++++++++++++++ > drivers/common/dpaax/meson.build | 4 +++- > .../common/dpaax/rte_common_dpaax_version.map | 4 ++++ > drivers/crypto/caam_jr/Makefile | 7 ------- > drivers/crypto/caam_jr/caam_jr.c | 2 -- > drivers/crypto/caam_jr/meson.build | 5 ----- > drivers/crypto/dpaa2_sec/Makefile | 7 ------- > drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 4 ++-- > drivers/crypto/dpaa2_sec/meson.build | 5 ----- > drivers/crypto/dpaa_sec/Makefile | 7 ------- > drivers/crypto/dpaa_sec/dpaa_sec.c | 2 -- > drivers/crypto/dpaa_sec/meson.build | 5 ----- > 13 files changed, 27 insertions(+), 44 deletions(-) > create mode 100644 drivers/common/dpaax/caamflib.c > > diff --git a/drivers/common/dpaax/Makefile b/drivers/common/dpaax/Makefile > index 15b0b38d0..2f4b924fd 100644 > --- a/drivers/common/dpaax/Makefile > +++ b/drivers/common/dpaax/Makefile > @@ -15,6 +15,7 @@ CFLAGS += -Wno-pointer-arith > CFLAGS += -Wno-cast-qual > > CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax > +CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib > > # versioning export map > EXPORT_MAP := rte_common_dpaax_version.map > @@ -22,7 +23,7 @@ EXPORT_MAP := rte_common_dpaax_version.map > # > # all source are stored in SRCS-y > # > -SRCS-y += dpaax_iova_table.c dpaa_of.c > +SRCS-y += dpaax_iova_table.c dpaa_of.c caamflib.c > > LDLIBS += -lrte_eal > > diff --git a/drivers/common/dpaax/caamflib.c b/drivers/common/dpaax/caamflib.c > new file mode 100644 > index 000000000..55e20281c > --- /dev/null > +++ b/drivers/common/dpaax/caamflib.c > @@ -0,0 +1,16 @@ > +/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) > + * > + * Copyright 2020 NXP > + * > + */ > + > +#include <rta.h> > + > +/* > + * SEC HW block revision. > + * > + * This *must not be confused with SEC version*: > + * - SEC HW block revision format is "v" > + * - SEC revision format is "x.y" > + */ > +enum rta_sec_era rta_sec_era; > diff --git a/drivers/common/dpaax/meson.build > b/drivers/common/dpaax/meson.build > index ff2d1a507..0b8bf7bd5 100644 > --- a/drivers/common/dpaax/meson.build > +++ b/drivers/common/dpaax/meson.build > @@ -6,7 +6,9 @@ if not is_linux > reason = 'only supported on linux' > endif > > -sources = files('dpaax_iova_table.c', 'dpaa_of.c') > +sources = files('dpaax_iova_table.c', 'dpaa_of.c', 'caamflib.c') > + > +includes += include_directories('caamflib') > > cflags += ['-D_GNU_SOURCE'] > if cc.has_argument('-Wno-cast-qual') > diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map > b/drivers/common/dpaax/rte_common_dpaax_version.map > index f72eba761..837ce01af 100644 > --- a/drivers/common/dpaax/rte_common_dpaax_version.map > +++ b/drivers/common/dpaax/rte_common_dpaax_version.map > @@ -21,3 +21,7 @@ DPDK_20.0 { > > local: *; > }; > + > +INTERNAL { > + rta_sec_era; > +}; > diff --git a/drivers/crypto/caam_jr/Makefile b/drivers/crypto/caam_jr/Makefile > index 10848884c..89d323817 100644 > --- a/drivers/crypto/caam_jr/Makefile > +++ b/drivers/crypto/caam_jr/Makefile > @@ -14,13 +14,6 @@ CFLAGS += -D _GNU_SOURCE > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) > > -# FIXME: temporary solution for Bugzilla 469 > -ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) > -ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1) > -CFLAGS += -fcommon > -endif > -endif > - > CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/include > CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax > CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib/ > diff --git a/drivers/crypto/caam_jr/caam_jr.c > b/drivers/crypto/caam_jr/caam_jr.c > index 5a29dd169..45003ba25 100644 > --- a/drivers/crypto/caam_jr/caam_jr.c > +++ b/drivers/crypto/caam_jr/caam_jr.c > @@ -37,8 +37,6 @@ > static uint8_t cryptodev_driver_id; > int caam_jr_logtype; > > -enum rta_sec_era rta_sec_era; > - > /* Lists the states possible for the SEC user space driver. */ > enum sec_driver_state_e { > SEC_DRIVER_STATE_IDLE, /* Driver not initialized */ > diff --git a/drivers/crypto/caam_jr/meson.build > b/drivers/crypto/caam_jr/meson.build > index 551b13632..f8b5250a9 100644 > --- a/drivers/crypto/caam_jr/meson.build > +++ b/drivers/crypto/caam_jr/meson.build > @@ -12,11 +12,6 @@ sources = files('caam_jr_capabilities.c', > 'caam_jr_uio.c', > 'caam_jr.c') > > -# FIXME: temporary solution for Bugzilla 469 > -if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0')) > - cflags += '-fcommon' > -endif > - > includes += include_directories('../../bus/dpaa/include/') > includes += include_directories('../../common/dpaax/') > includes += include_directories('../../common/dpaax/caamflib/') > diff --git a/drivers/crypto/dpaa2_sec/Makefile > b/drivers/crypto/dpaa2_sec/Makefile > index 8ce637db6..a0a279557 100644 > --- a/drivers/crypto/dpaa2_sec/Makefile > +++ b/drivers/crypto/dpaa2_sec/Makefile > @@ -19,13 +19,6 @@ CFLAGS += -Wno-implicit-fallthrough > endif > endif > > -# FIXME: temporary solution for Bugzilla 469 > -ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) > -ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1) > -CFLAGS += -fcommon > -endif > -endif > - > CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax > CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib > CFLAGS += -I$(RTE_SDK)/drivers/crypto/dpaa2_sec/ > diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c > b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c > index fe34e644c..6459a025b 100644 > --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c > +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c > @@ -56,8 +56,6 @@ > #define SEC_FLC_DHR_OUTBOUND -114 > #define SEC_FLC_DHR_INBOUND 0 > > -enum rta_sec_era rta_sec_era = RTA_SEC_ERA_8; > - > static uint8_t cryptodev_driver_id; > > int dpaa2_logtype_sec; > @@ -3870,6 +3868,8 @@ cryptodev_dpaa2_sec_probe(struct rte_dpaa2_driver > *dpaa2_drv __rte_unused, > > if (dpaa2_svr_family == SVR_LX2160A) > rta_set_sec_era(RTA_SEC_ERA_10); > + else > + rta_set_sec_era(RTA_SEC_ERA_8); > > DPAA2_SEC_INFO("2-SEC ERA is %d", rta_get_sec_era()); > > diff --git a/drivers/crypto/dpaa2_sec/meson.build > b/drivers/crypto/dpaa2_sec/meson.build > index 505ad9414..cb1c2d049 100644 > --- a/drivers/crypto/dpaa2_sec/meson.build > +++ b/drivers/crypto/dpaa2_sec/meson.build > @@ -10,9 +10,4 @@ deps += ['security', 'mempool_dpaa2'] > sources = files('dpaa2_sec_dpseci.c', > 'mc/dpseci.c') > > -# FIXME: temporary solution for Bugzilla 469 > -if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0')) > - cflags += '-fcommon' > -endif > - > includes += include_directories('mc', '../../common/dpaax', > '../../common/dpaax/caamflib') > diff --git a/drivers/crypto/dpaa_sec/Makefile > b/drivers/crypto/dpaa_sec/Makefile > index 6cf392cb3..ea266962a 100644 > --- a/drivers/crypto/dpaa_sec/Makefile > +++ b/drivers/crypto/dpaa_sec/Makefile > @@ -13,13 +13,6 @@ LIB = librte_pmd_dpaa_sec.a > CFLAGS += -O3 > CFLAGS += $(WERROR_FLAGS) > > -# FIXME: temporary solution for Bugzilla 469 > -ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) > -ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1) > -CFLAGS += -fcommon > -endif > -endif > - > CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa > CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/include > CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/base/qbman > diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c > b/drivers/crypto/dpaa_sec/dpaa_sec.c > index 25dcbd259..a9bfb8685 100644 > --- a/drivers/crypto/dpaa_sec/dpaa_sec.c > +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c > @@ -43,8 +43,6 @@ > #include <dpaa_sec_log.h> > #include <dpaax_iova_table.h> > > -enum rta_sec_era rta_sec_era; > - > int dpaa_logtype_sec; > > static uint8_t cryptodev_driver_id; > diff --git a/drivers/crypto/dpaa_sec/meson.build > b/drivers/crypto/dpaa_sec/meson.build > index f5e660457..7d422d8d5 100644 > --- a/drivers/crypto/dpaa_sec/meson.build > +++ b/drivers/crypto/dpaa_sec/meson.build > @@ -9,11 +9,6 @@ endif > deps += ['bus_dpaa', 'mempool_dpaa', 'security'] > sources = files('dpaa_sec.c') > > -# FIXME: temporary solution for Bugzilla 469 > -if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0')) > - cflags += '-fcommon' > -endif > - > includes += include_directories('../../bus/dpaa/include') > includes += include_directories('../../common/dpaax') > includes += include_directories('../../common/dpaax/caamflib/') >