I have been learning about using stack overflows to get arbitrary code execution, one of the tricks used is overwriting the return address to make control flow go the way you want it. Assuming our system has NX bit.
What if we made the CPU instruction set require a "landing pad" instruction for any location that it ret or jmps to?
The idea is that a program would terminate with some kind of error if it jumps to a non landing pad instruction.
Would this stop the ability to make ROP gadgets? Do you think this ISA would be a lot more secure? Has the idea been tried in the past?