<div dir="ltr">Good Afternoon Developers,<div><br></div><div>I'm currently working on educational senior project in computer science attempting to randomize the layout of manually and automatically selected C structures.<br><br>I'm currently trying to develop the manual randomization feature and develop an automatic structure selection method (e.G. all function pointers).</div><div><br></div><div>Some goals of the project:<br><br>1.) Full randomization: All structures marked with  "__randomize_layout" have their field positions randomized, including bit fields.<br><br>2.) Best Effort: Limit randomization to cache-line (64 byte) size regions, and keep adjacent bit-fields together.<br><br>3.) Automatic structure selection: Find structures that should be automatically selected (for example, structures of entirely function pointers), disabled with "__no_randomize_layout".<br><br>We will of course be working on regressions tests to check all corner cases and include it in the implementation.<br><br>As the student team is new to this type of development, we hope to ask for any documentation, guidance or items to be on the lookout for. We are curious if a plugin may be capable of doing the listed goals, or within a LLVM pass? How would we target struct layouts in the LLVM pass?<br><br>Any and all help would be very appreciated. We are in the beginning stages of planning and look forward to any guidance.<br><br>All the best,</div><div><br></div><div>Tim</div></div>