AaronBallman wrote:

> > Thank you for your patience!
> > In general, I think adding a new qualifier to Clang needs to come with 
> > significant justification for the implementation and maintenance costs. In 
> > this specific case, those costs are somewhat amortized because we already 
> > have the `__ptrauth` qualifier and this piggybacks off that work. But I 
> > don't think the benefits justify the costs: if the user writes `__ptrauth` 
> > on an integer type, we can determine whether that type is "good enough" or 
> > not and issue a diagnostic for invalid or suspicious uses, same as if the 
> > user spelled it `__ptrauth_restricted_intptr`.
> 
> It was a very 50/50 decision to have a different spelling at the time, so I'm 
> fine with dropping this, I just need to do some work to determine how to do 
> the feature checks nicely.

Excellent, thank you!

> > The implementation already has to update typechecking in various places 
> > regardless of which way we spell the qualifiers, so there should not be too 
> > much extra implementation burden from only using one qualifier.
> 
> The implementation actually becomes simpler - it removes a bunch of work for 
> debugging, and the type checking itself is just "__ptrauth only applies to 
> pointers and __ptrauth_restricted_intptr only applies to integers".
> 
> > So on balance, I think we should only upstream the single qualifier and use 
> > a header file + feature tests for compatibility with older compilers. Is 
> > that something you can get behind? (You're still the expert in this space, 
> > so if I'm trivializing concerns, please speak up!)
> 
> @AaronBallman we might need a feature check -- maybe (please help with what 
> it should be called, I'm terrible at naming) `__ptrauth_can_haz_intptrs`? 
> It's a little weird as I think support for the ptrauth qualifier has not yet 
> been in any official clang release, so from an end user's point of view 
> `__ptrauth` will always have worked on pointer sized integers. It's possible 
> that we might actually be able to manage by assuming that the lack of the 
> `__ptrauth_restricted_intptr` qualifier means `__ptrauth` works on pointers 
> and pointer sized integers but it will require some checking first.
> 
> In the mean time I'm going to update this PR to remove the new spelling and 
> related shenanigans, and then update tests.

Would it make sense to add the feature macro to your downstream instead? e.g., 
downstream supports `__has_feature(ptrauth_restricted_intptr)` and upstream 
would return `false` for it.


https://github.com/llvm/llvm-project/pull/137580
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to