draperlaboratory / VIBES

Verified, Incremental, Binary Editing with Synthesis
MIT License
51 stars 1 forks source link

Re-adds ability to ingest multiple patches and extra constraints #224

Closed bmourad01 closed 2 years ago

bmourad01 commented 2 years ago

This re-introduces the functionality from the monolithic tool for applying multiple patches in one go, as well as providing extra constraints for MiniZinc.

For extra constraints, it works the same as before, no surprises here.

For multiple patches, we change the setup of the patch-info config file. Specifically, we separate the list of external patch spaces to its own file, since it can be re-used by multiple patches. Next, we will provide the patch-info file to vibes-as, where we transfer the patch-site and patch-size fields to the resulting assembly file. Finally, vibes-patch can now take in a list of assembly files, each of which are telling the patcher where they want to be placed, and iteratively we can chomp away at the external patch spaces if they exist. After that, we can return not only the applied patches but also the modified spaces (since they are now occupied). Right now we just print them out if --verbose is enabled, but we could output them to a file in the future if we want.