Is this lack of comments what I think it is?
I upvoted because I think it sounds important and cool but I have no clue what it means :-)
I upvoted because I think it sounds important and cool but I have no clue what it means :-)
I'm not sure but I think shadow stack makes assumptions about how you use the ISA. For example, it's a completely legitimate program to just execute forward 10 million instructions, and use the stack pointer for other things. Or use another register. RISC-V made JAL take any register, but then no compiler that I've ever seen will use anything but RA. But it's also pretty harmless! What isn't an assumption is how Linux uses the stack, so we can at least say that it makes Linux more reliable.
Fun fact: Golang doesn't use GP as a global pointer to data. It doesn't even use the register, maybe to be compatible with C?