mylai-mtk wrote:

> There are intentional tradeoffs here, for the ABI, which should be made 
> carefully; in some cases, it might be the right tradeoff to reject 
> standard-compliant code. If you've considered it, I guess I won't object. I 
> can't find any discussion of it, though.

The reduction of unprototyped function types to prototyped no parameter 
function types is proposed by me in 
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/434#issuecomment-2162159763>,
 which is accepted without much discussion/objection. I also proposed treating 
such usages as errors, but it looks like this part had not been taken into the 
spec.

> With my psABI hat on, settling on an ABI that turns out to be wrong is my big 
> concern, but you can't find those corner cases until you try it at scale (and 
> that's speaking from experience where we've missed things in the past for 
> CHERI). This is probably the kind of thing that needs to be explicitly marked 
> as experimental and with no ABI forward-compatibility guarantees, but that 
> needs to be landed so that people can start actually using it and finding 
> where it falls down in the real world. (But that doesn't obviate proper code 
> review, the implementation should still be proper even if the ABI isn't 
> stable.)

Agree. I'm pretty sure that the mangling scheme is not perfect, especially when 
applied to ancient C projects. With regard to forward-compatibility management, 
I think we can introduce versioning to Zicfilp psABI as well? (cf. 
Tag_RISCV_atomic_abi in `.riscv.attributes` section) @kito-cheng 

> Given the comparison with the AArch64 PAuth work, how much is building on 
> that versus doing our own independent thing?

We did not refer to the AArch64 PtrAuth work when we devised the Zicfilp 
mangling scheme, and instead, our foundation was the Itanium C++ ABI. The time 
at which these 2 mangling schemes appeared were close, and I did not know that 
AArch64 was developing a similar thing back then, so adapting the Itanium C++ 
ABI looked like the most practical approach. 

> Is there any real-world deployment experience from that that we can make use 
> of?

Not that I know of... The AArch64 PtrAuth work is in the main trunk for only 
less than 1 year, and it may take multiple years for the feature to mature, so 
I would say that we can surely learn some valuable things from it if we observe 
it long enough, but for now, I think both schemes are in a similarly nascent 
status, with the AArch64 PtrAuth scheme being more explicit and controllable.

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

Reply via email to