Compiler and Machine Learning-based Predictive Techniques for Security Enhancement through Software Debloating