eal: fix internal ABI tag with clang
Clang does not have an "error" attribute for functions, so for marking internal functions we need to check for the error attribute, and provide a fallback if it is not present. For clang, we can use "diagnose_if" attribute, similarly checking for its presence before use. Fixes: fba5af82adc8 ("eal: add internal ABI tag definition") Cc: stable@dpdk.org Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
parent
3c2cca6a0d
commit
4ab63cd60c
@ -19,12 +19,23 @@ __attribute__((section(".text.experimental")))
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef ALLOW_INTERNAL_API
|
||||
#ifndef __has_attribute
|
||||
/* if no has_attribute assume no support for attribute too */
|
||||
#define __has_attribute(x) 0
|
||||
#endif
|
||||
|
||||
#if !defined ALLOW_INTERNAL_API && __has_attribute(error) /* For GCC */
|
||||
|
||||
#define __rte_internal \
|
||||
__attribute__((error("Symbol is not public ABI"), \
|
||||
section(".text.internal")))
|
||||
|
||||
#elif !defined ALLOW_INTERNAL_API && __has_attribute(diagnose_if) /* For clang */
|
||||
|
||||
#define __rte_internal \
|
||||
__attribute__((diagnose_if(1, "Symbol is not public ABI", "error"), \
|
||||
section(".text.internal")))
|
||||
|
||||
#else
|
||||
|
||||
#define __rte_internal \
|
||||
|
Loading…
x
Reference in New Issue
Block a user