On Thu, Jul 24, 2025 at 04:26:12PM +0000, Aaron Ballman wrote:
> Ah, apologies, I wasn't clear. My thinking is: we're (Clang folks)
> going to want it to work in C++ mode because of shared headers. If it
> works in C++ mode, then we have to figure out what it means with all
> the various C++ features that are possible, not just the use cases

I am most familiar with C, so I may be missing something here, but if
-fbounds-safety is intended to be C only, then why not just make it
unrecognized in C++? Shared headers don't seem like much of a challenge;
e.g. Linux uses macros specifically to avoid mixing illegal syntax into
places where it isn't supported. For example, why can't Clang have:

#if defined(__cplusplus)
# define __counted_by(ARGS...)
#else
# define __counted_by(ARGS...) __attribute__((counted_by(ARGS)))
#endif

And then use __counted_by() in all the shared headers? C++ uses will
ignore it, and C uses will apply the attributes.

It seems weird to me that Clang needs to solve how -fbounds-safety works
with C++ if it's not for _use_ in C++. I feel like I'm missing something
about features that can't be macro-ified or some ABI issue, but I keep
coming up empty.

-- 
Kees Cook

Reply via email to