13 #ifndef ALLOW_EXPERIMENTAL_API 15 #ifdef RTE_TOOLCHAIN_MSVC 16 #define __rte_experimental 18 #define __rte_experimental \ 19 __attribute__((deprecated("Symbol is not yet part of stable ABI"), \ 20 section(".text.experimental"))) 25 #ifdef RTE_TOOLCHAIN_MSVC 26 #define __rte_experimental 28 #define __rte_experimental \ 29 __attribute__((section(".text.experimental"))) 34 #ifndef __has_attribute 36 #define __has_attribute(x) 0 39 #if !defined ALLOW_INTERNAL_API && __has_attribute(error) 41 #ifdef RTE_TOOLCHAIN_MSVC 42 #define __rte_internal 44 #define __rte_internal \ 45 __attribute__((error("Symbol is not public ABI"), \ 46 section(".text.internal"))) 49 #elif !defined ALLOW_INTERNAL_API && __has_attribute(diagnose_if) 51 #ifdef RTE_TOOLCHAIN_MSVC 52 #define __rte_internal 54 #define __rte_internal \ 55 _Pragma("GCC diagnostic push") \ 56 _Pragma("GCC diagnostic ignored \"-Wgcc-compat\"") \ 57 __attribute__((diagnose_if(1, "Symbol is not public ABI", "error"), \ 58 section(".text.internal"))) \ 59 _Pragma("GCC diagnostic pop") 64 #ifdef RTE_TOOLCHAIN_MSVC 65 #define __rte_internal 67 #define __rte_internal \ 68 __attribute__((section(".text.internal")))