From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D728141EA5; Thu, 16 Mar 2023 01:58:20 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AEEBF40EF1; Thu, 16 Mar 2023 01:58:20 +0100 (CET) Received: from forward500c.mail.yandex.net (forward500c.mail.yandex.net [178.154.239.208]) by mails.dpdk.org (Postfix) with ESMTP id 905AE40DF6 for ; Thu, 16 Mar 2023 01:58:19 +0100 (CET) Received: from myt6-459ab7c4bc67.qloud-c.yandex.net (myt6-459ab7c4bc67.qloud-c.yandex.net [IPv6:2a02:6b8:c12:201c:0:640:459a:b7c4]) by forward500c.mail.yandex.net (Yandex) with ESMTP id F35BB5F45B; Thu, 16 Mar 2023 03:58:18 +0300 (MSK) Received: by myt6-459ab7c4bc67.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id FwX8iBQbsKo1-3xzyl5x1; Thu, 16 Mar 2023 03:58:18 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1678928298; bh=rQewvFv0SpMKyPP3m1kR7MW4SecWWAeY4Fej78YtmyU=; h=From:In-Reply-To:Cc:Date:References:To:Subject:Message-ID; b=WdHw9USweqF9zyeoS6s33VDXUAPBNK7AcuYAUiD2+yoz9L///Z1f9EQDQc4dkPc/W cb66/uWfoyduQIkWpIkQeziwZNwqLNX8fQQM9nbSTaTfbbniL2A9+oOSE+++sr6vHO EyxfoTxKnovtgvZM7dFFhGPqxBSuQCx7M1T8LWIE= Authentication-Results: myt6-459ab7c4bc67.qloud-c.yandex.net; dkim=pass header.i=@yandex.ru Message-ID: <91770103-3420-e248-5727-8ef5df4f4970@yandex.ru> Date: Thu, 16 Mar 2023 00:58:15 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v5] lib/bpf: Rename bpf function names to avoid potential conflict with libpcap Content-Language: en-US To: "J.J. Martzki" , dev@dpdk.org Cc: stephen@networkplumber.org, thomas@monjalon.net, konstantin.ananyev@huawei.com, Ruifeng Wang References: <20230312062021.7349-1-mars14850@gmail.com> <20230314142038.23436-1-mars14850@gmail.com> From: Konstantin Ananyev In-Reply-To: <20230314142038.23436-1-mars14850@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 14/03/2023 14:20, J.J. Martzki пишет: > The library libpcap has their function 'bpf_validate' either so there would > be a multiple definition issue when linking with librte_bpf.a and libpcap.a > statically (Same as http://dpdk.org/patch/52631). So just rename the > function names to avoid such issue. > > Signed-off-by: J.J. Martzki > > --- > v5: > * Use '__rte' prefix. > * Add annotation for function naming. > v4: > * Update my name. > v3: > * Rewrite the commit message. > v2: > * Rename all functions in bpf_impl.h. > * Adjust the commit message. > --- > lib/bpf/bpf.c | 6 +++--- > lib/bpf/bpf_convert.c | 3 --- > lib/bpf/bpf_impl.h | 14 ++++++++------ > lib/bpf/bpf_jit_arm64.c | 2 +- > lib/bpf/bpf_jit_x86.c | 2 +- > lib/bpf/bpf_load.c | 4 ++-- > lib/bpf/bpf_validate.c | 2 +- > 7 files changed, 16 insertions(+), 17 deletions(-) > > diff --git a/lib/bpf/bpf.c b/lib/bpf/bpf.c > index 1e1dd42a58..8a0254d8bb 100644 > --- a/lib/bpf/bpf.c > +++ b/lib/bpf/bpf.c > @@ -31,14 +31,14 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit) > } > > int > -bpf_jit(struct rte_bpf *bpf) > +__rte_bpf_jit(struct rte_bpf *bpf) > { > int32_t rc; > > #if defined(RTE_ARCH_X86_64) > - rc = bpf_jit_x86(bpf); > + rc = __rte_bpf_jit_x86(bpf); > #elif defined(RTE_ARCH_ARM64) > - rc = bpf_jit_arm64(bpf); > + rc = __rte_bpf_jit_arm64(bpf); > #else > rc = -ENOTSUP; > #endif > diff --git a/lib/bpf/bpf_convert.c b/lib/bpf/bpf_convert.c > index 9563274c9c..d441be6663 100644 > --- a/lib/bpf/bpf_convert.c > +++ b/lib/bpf/bpf_convert.c > @@ -23,11 +23,8 @@ > #include > #include > > -/* Workaround name conflicts with libpcap */ > -#define bpf_validate(f, len) bpf_validate_libpcap(f, len) > #include > #include > -#undef bpf_validate > > #include "bpf_impl.h" > #include "bpf_def.h" > diff --git a/lib/bpf/bpf_impl.h b/lib/bpf/bpf_impl.h > index b4d8e87c6d..3e067c1ff4 100644 > --- a/lib/bpf/bpf_impl.h > +++ b/lib/bpf/bpf_impl.h > @@ -17,12 +17,14 @@ struct rte_bpf { > uint32_t stack_sz; > }; > > -extern int bpf_validate(struct rte_bpf *bpf); > - > -extern int bpf_jit(struct rte_bpf *bpf); > - > -extern int bpf_jit_x86(struct rte_bpf *); > -extern int bpf_jit_arm64(struct rte_bpf *); > +/* > + * Use '__rte' prefix for non-static internal functions > + * to avoid potential name conflict with other libraries. > + */ > +extern int __rte_bpf_validate(struct rte_bpf *bpf); > +extern int __rte_bpf_jit(struct rte_bpf *bpf); > +extern int __rte_bpf_jit_x86(struct rte_bpf *bpf); > +extern int __rte_bpf_jit_arm64(struct rte_bpf *bpf); > > extern int rte_bpf_logtype; > > diff --git a/lib/bpf/bpf_jit_arm64.c b/lib/bpf/bpf_jit_arm64.c > index db79ff7385..f9ddafd7dc 100644 > --- a/lib/bpf/bpf_jit_arm64.c > +++ b/lib/bpf/bpf_jit_arm64.c > @@ -1393,7 +1393,7 @@ emit(struct a64_jit_ctx *ctx, struct rte_bpf *bpf) > * Produce a native ISA version of the given BPF code. > */ > int > -bpf_jit_arm64(struct rte_bpf *bpf) > +__rte_bpf_jit_arm64(struct rte_bpf *bpf) > { > struct a64_jit_ctx ctx; > size_t size; > diff --git a/lib/bpf/bpf_jit_x86.c b/lib/bpf/bpf_jit_x86.c > index c1a30e0386..a73b2006db 100644 > --- a/lib/bpf/bpf_jit_x86.c > +++ b/lib/bpf/bpf_jit_x86.c > @@ -1490,7 +1490,7 @@ emit(struct bpf_jit_state *st, const struct rte_bpf *bpf) > * produce a native ISA version of the given BPF code. > */ > int > -bpf_jit_x86(struct rte_bpf *bpf) > +__rte_bpf_jit_x86(struct rte_bpf *bpf) > { > int32_t rc; > uint32_t i; > diff --git a/lib/bpf/bpf_load.c b/lib/bpf/bpf_load.c > index 1e17df6ce0..45ce9210da 100644 > --- a/lib/bpf/bpf_load.c > +++ b/lib/bpf/bpf_load.c > @@ -108,9 +108,9 @@ rte_bpf_load(const struct rte_bpf_prm *prm) > return NULL; > } > > - rc = bpf_validate(bpf); > + rc = __rte_bpf_validate(bpf); > if (rc == 0) { > - bpf_jit(bpf); > + __rte_bpf_jit(bpf); > if (mprotect(bpf, bpf->sz, PROT_READ) != 0) > rc = -ENOMEM; > } > diff --git a/lib/bpf/bpf_validate.c b/lib/bpf/bpf_validate.c > index 61cbb42216..119dc4d3aa 100644 > --- a/lib/bpf/bpf_validate.c > +++ b/lib/bpf/bpf_validate.c > @@ -2302,7 +2302,7 @@ evaluate(struct bpf_verifier *bvf) > } > > int > -bpf_validate(struct rte_bpf *bpf) > +__rte_bpf_validate(struct rte_bpf *bpf) > { > int32_t rc; > struct bpf_verifier bvf; Acked-by: Konstantin Ananyev