<div dir="ltr"><a href="https://llvm.org/docs/FuzzingLLVM.html">https://llvm.org/docs/FuzzingLLVM.html</a> looks like good background (if you haven't already seen it).<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 8, 2021 at 12:21 PM Johannes Doerfert via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Chibin,<br>
<br>
apologies for the late reply.<br>
<br>
There have been multiple people that expressed interest in this project,<br>
though it is open ended and we might want to tackle it from different <br>
angles.<br>
<br>
Truth be told, anything towards testing LLVM would be OK with me. To name a<br>
few areas: mutation testing inputs (C/C++/LLVM-IR/...), reordering or <br>
skipping<br>
passes, creating an IR database for testing but maybe also other purposes.<br>
<br>
I'd also be interested in fuzzing the OpenMP frontend and runtime (both <br>
on the<br>
host and GPU) if that is something you might want to do. I think here is a<br>
plethora of crashes and hangs to be found, not to mention the <br>
correctness issues<br>
if we manage to do test generation for which we can verify the result.<br>
<br>
Given that you have experience building and extending LLVM already, I <br>
think a<br>
good next would be to narrow it down so you can start looking at the <br>
infrastructure<br>
we want to test, e.g., the pass manager builder if we want to swap <br>
passes to find<br>
hidden dependences between them. The existing fuzzer capabilities and <br>
the C++<br>
mutation testing developed outside of LLVM <br>
(<a href="https://github.com/mull-project/mull" rel="noreferrer" target="_blank">https://github.com/mull-project/mull</a>)<br>
are also good places to take a look.<br>
<br>
Let me know what of the above areas, or areas of your choosing, might be <br>
most<br>
interesting to you. We can also schedule a 30min chat, just send me an <br>
email with<br>
times that would work for you.<br>
<br>
~ Johannes<br>
<br>
<br>
On 3/1/21 1:29 PM, Stefan Stipanovic wrote:<br>
> +Johannes Doerfert <<a href="mailto:johannesdoerfert@gmail.com" target="_blank">johannesdoerfert@gmail.com</a>><br>
><br>
> Hi Chibin,<br>
><br>
> Johannes will give you more information, but you can always start by<br>
> familiarizing yourself with the Attributor.<br>
><br>
> Stefan<br>
><br>
> On Mon, Mar 1, 2021 at 6:11 PM 张驰斌 via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
> wrote:<br>
><br>
>> Hi LLVM developers,<br>
>><br>
>>        I am a junior student majoring in Computer Science at ShanghaiTech<br>
>> University. I’ve been browsing through<br>
>> <a href="https://llvm.org/OpenProjects.html#gsoc21" rel="noreferrer" target="_blank">https://llvm.org/OpenProjects.html#gsoc21</a> and found out that LLVM is<br>
>> participating in Google Summer of Code 2021. I wanted to be sure to inquire<br>
>> about it and get in touch soon.<br>
>><br>
>>        One project idea really caught my eyes, ‘Fuzzing LLVM-IR Passes,’<br>
>> striking chord with my experience. Currently, I am working with Professor<br>
>> Hao Chen (Contact author of the fuzzer Angora) and his fellow graduate<br>
>> students researching fuzzing.  My main contribution lies in the<br>
>> experimental evaluation part. I’ve written many scripts to automate the<br>
>> benchmarking of different fuzzers, e.g., building libraries with fuzzer<br>
>> instrumentation (afl-clang-fast…), running fuzzers, and triaging and<br>
>> analyzing fuzz-results with afl-cov. Our most recent paper is under review<br>
>> at USENIX Security 2021. I’ve also written a dozen LLVM passes following<br>
>> USCD’s advanced compiler course (Open-sourced code and notes at<br>
>> <a href="https://github.com/chibinz/CSE231" rel="noreferrer" target="_blank">https://github.com/chibinz/CSE231</a>) as practice and contributed to the<br>
>> basic block stubbing pass for coverage feedback in the prior research<br>
>> project. If applicable, I see this as a golden opportunity to exercise what<br>
>> I’ve learned about LLVM and fuzzing in real-world application and at LLVM<br>
>> scale. This also a chance for me, as an LLVM user, to contribute back to<br>
>> LLVM, following the FOSS spirit.<br>
>><br>
>>        I wonder if this project is already occupied or still available? Are<br>
>> there any ‘good first issue’ that I can start working on or code of<br>
>> interest worth reading? I am aware the project description directs me to<br>
>> reach out to mentor Johannes Doerfert on IRC, but somehow trying to connect<br>
>> to the LLVM IRC channel using different clients always complains that the<br>
>> server refused the connection…(Sorry, but I’m not familiar with IRC, this<br>
>> is the first time trying…) Are there any other way to get in touch with the<br>
>> mentor? I feel really excited and hope to hear from you soon.<br>
>><br>
>><br>
>><br>
>> Sincerely,<br>
>><br>
>> Chibin Zhang<br>
>><br>
>> 2021.3.1<br>
>> _______________________________________________<br>
>> LLVM Developers mailing list<br>
>> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
>> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
>><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>