[PATCH] eal: enforce internal API check with Clang

David Marchand david.marchand at redhat.com
Thu Oct 15 12:57:24 CEST 2026


On Wed, 14 Oct 2026 at 22:16, Thomas Monjalon <thomas at monjalon.net> wrote:
>
> The __rte_internal macro is intended to prevent calls
> to internal API functions unless ALLOW_INTERNAL_API is defined.
> Unfortunately the check misses some calls to internal API
> when built with GCC or Clang.
> Clang can be better to diagnose such cases.
>
> Clang 14 and later support the error attribute
> and therefore select it instead of diagnose_if for __rte_internal.
> Unlike diagnose_if, the error attribute only rejects
> internal API calls that remain after optimization.
> Internal API calls can therefore go easily unnoticed,
> making internal API checks less strict with recent Clang.
>
> Prefer diagnose_if when available to keep strong Clang diagnostics.
> Retain the error attribute as a fallback for GCC.
>
> Fixes: 4ab63cd60ceb ("eal: fix internal ABI tag with clang")
> Cc: stable at dpdk.org
>
> Signed-off-by: Thomas Monjalon <thomas at monjalon.net>

What a mess this header has become :-).

I have a little cleanup to propose, and this patch actually does not
pass the chkinc test with recent clang now, as it raises warnings that
were not seen so far.
I'll post a v2, as we discussed offlist.


-- 
David Marchand



More information about the dev mailing list