Conversation

I'm talking about memory tagging as a replacement for stack canaries, not stack canaries. I'm not sure why you're responding about stack canaries. Memory tagging the stack frame makes it so that trying to use pointers to the stack frame to access memory outside it will trap.
1
1
Sure, and as I've stated many times in this conversation, I would like for C to be more strongly specified. However, defining something like signed integer overflow as guaranteed to wrap would be a step backwards for implementations that want to make it safer such as trapping.
2
2
Making that a second class, less supported option would also be a step backwards in this area. It would be *perfectly fine* if the standard said that signed integer overflow must either wrap or produce a poison value that is guaranteed to trap if it would be observable.
2
It's important to specify it that way to permit efficient implementations. It should be allowed to have an implementation using poison values including via hardware support. There is no need for any ABI changes. Permitting trapping later doesn't mean requiring doing it later.
1
I don't think that's a lot of spec baggage and it's required to support real implementations and software / hardware designs which you say is something that must be done by the specification. You say you want that, but then you don't when it doesn't fit making it more permissive.
1