bpf: remove use of weak functions
authorBruce Richardson <bruce.richardson@intel.com>
Wed, 10 Apr 2019 13:45:17 +0000 (14:45 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 5 Jun 2019 14:28:20 +0000 (16:28 +0200)
Weak functions don't work well with static libraries and require the use of
"whole-archive" flag to ensure that the correct function is used when
linking.  Since the weak function is only used as a placeholder within this
library alone, we can replace it with a non-weak version protected using
preprocessor ifdefs.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
lib/librte_bpf/bpf_load.c
lib/librte_bpf/meson.build

index d9d163b..194103e 100644 (file)
@@ -131,7 +131,8 @@ rte_bpf_load(const struct rte_bpf_prm *prm)
        return bpf;
 }
 
-__rte_experimental __rte_weak struct rte_bpf *
+#ifndef RTE_LIBRTE_BPF_ELF
+__rte_experimental struct rte_bpf *
 rte_bpf_elf_load(const struct rte_bpf_prm *prm, const char *fname,
        const char *sname)
 {
@@ -146,3 +147,4 @@ rte_bpf_elf_load(const struct rte_bpf_prm *prm, const char *fname,
        rte_errno = ENOTSUP;
        return NULL;
 }
+#endif
index 8a79878..11c1fb5 100644 (file)
@@ -20,6 +20,7 @@ deps += ['mbuf', 'net', 'ethdev']
 
 dep = dependency('libelf', required: false)
 if dep.found()
+       dpdk_conf.set('RTE_LIBRTE_BPF_ELF', 1)
        sources += files('bpf_load_elf.c')
        ext_deps += dep
 endif