Thread (165 messages) 165 messages, 13 authors, 2021-02-22

Re: [dpdk-dev] [PATCH v6 2/8] eal: fix error attribute use for clang

From: Bruce Richardson <hidden>
Date: 2021-01-28 15:17:00

On Thu, Jan 28, 2021 at 02:16:10PM +0000, Bruce Richardson wrote:
On Thu, Jan 28, 2021 at 02:36:25PM +0100, David Marchand wrote:
quoted
On Thu, Jan 28, 2021 at 12:20 PM Bruce Richardson
[off-list ref] wrote:
quoted
quoted
If the compiler has neither error or diagnose_if support, an internal
API can be called without ALLOW_INTERNAL_API.
I prefer a build error complaining on an unknown attribute rather than
silence a check.

I.e.

#ifndef ALLOW_INTERNAL_API

#if __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 \
__attribute__((error("Symbol is not public ABI"), \
section(".text.internal")))

#endif

#else /* ALLOW_INTERNAL_API */

#define __rte_internal \
section(".text.internal")))

#endif
Would this not mean that if someone was using a compiler that supported
neither that they could never include any header file which contained any
internal functions? I'd rather err on the side of allowing this, on the
basis that the symbol should be already documented as internal and this is
only an additional sanity check.
- Still not a fan.
We will never know about those compilers behavior, like how we caught
the clang issue and found an alternative.
So I understand, but I'm still concerned about breaking something that was
previously working. It's one thing a DPDK developer catching issues with
clang, quite another a user catching it when trying to build their own
application.

We probably need some other opinions on this one.
Adding Tech-board to see if we can get some more thoughts on this before I do
another revision of this set.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help