18. A computer system in accordance with claim 15 , wherein program instructions to distribute the selected executable machine language instruction sequences and the multiple non-executable copies in memory comprise program instructions to store the selected executable machine language instruction sequences and the multiple non-executable copies in memory and randomly permute memory blocks containing the selected executable machine language instruction sequences and the multiple non-executable copies, respectively.
15. A computer system for return-oriented programming (ROP) mitigation, the computer system comprising: one or more hardware computer processors, one or more computer-readable storage media, and program instructions stored on one or more of the computer-readable storage media for execution by at least one of the one or more processors, the program instructions comprising: program instructions to receive program code for execution and associated components needed by the program code for execution; program instructions to load the program code and associated components into memory; program instructions to a select a predetermined number of executable machine language instruction sequences from the loaded program code and the associated components, wherein each sequence terminates in a return instruction; program instructions to make multiple non-executable copies of each of the selected machine language instruction sequences; and program instructions to distribute the selected executable machine language instruction sequences and the multiple non-executable copies in memory; whereby, if the computer sustains an ROP attack and the ROP attack selects a machine language instruction sequence terminating in a return instruction to include in an ROP payload, the likelihood of the ROP attack selecting an executable machine language instruction sequence terminating in a return instruction is diminished.