Index: OpenProjects.html =================================================================== --- OpenProjects.html +++ OpenProjects.html @@ -205,6 +205,63 @@ + +
+ Implement an ASTImporter fuzzer +
+ + +
+

Description of the project: + Clang contains an ASTImporter which allows moving declarations and + statements from one Clang AST to another. This is for example used for + static analysis across translation units and in LLDB's expression + evaluator. +

+

+ The current ASTImporter works as intended when moving simple C code from + one AST to another. However, more complicated declarations such as C++'s + OOP features and templates are not fully implemented and can cause crashes + or invalid AST nodes. The bug reports related to these crashes are often + filed against LLDB's expression evaluator and are rarely submited with a + minimal reproducer. This makes improving ASTImporter a time-consuming and + tedious task. +

+

+ This project is about writing a fuzzer to proactively discover these + ASTImporter bugs and provide minimal reproducers which make understanding + and fixing the underlying bug easier. +

+

+ A possible implementation of such a fuzzer and driver could look like this: + +

+ This is just one possible approach and students are welcome to submit their + own ideas on how the fuzzer should operate. Approaches that allow to + automatically verify more aspects of the imported AST (e.g. the source + locations of AST nodes, size of RecordDecls) are encouraged. The fuzzer and + driver should be implemented in C++ and/or Python. +

+

Confirmed Mentor: Raphael Isemann, Shafik Yaghmour

+

Desirable skills: Intermediate knowledge of C++.

+