Tutorial: LLVM for Security Practitioners

At the 2020 IEEE Secure Development Conference (SecDev 2020)
11:30 AM - 1:00 PM, Monday, September 28
Zoom webinar room: 922 4078 6482

John Criswell and Ethan Johnson
University of Rochester, Department of Computer Science

→ Click here for tutorial slides ←

In this tutorial session, you will learn how to write a pass in LLVM to instrument loads and stores during compilation of a program.

You will need:

1) A laptop computer with you in the tutorial session

2) Some familiarity with the C++ programing language

LLVM is written in modern C++, and C++ is the primary language used for writing passes and other software that works with LLVM. Bindings existing for using LLVM in other languages, but the native C++ interface is the most flexible and well-maintained, so we will be using that in this tutorial.

To get the most out of this tutorial, you should:

3) A development environment for writing LLVM passes

Getting a development environment set up for writing your own LLVM passes isn't too hard in theory, but it can take a fair amount of time (LLVM+Clang is a large codebase and can take over an hour to compile from source) and might be a bit daunting for those unfamiliar with the LLVM ecosystem. Since we only have an hour for the tutorial, we've prepared a pre-canned Linux-based virtual machine image with a ready-to-go development environment for you to participate in the tutorial.

→ You can download the virtual machine image and read instructions on how to use it here. ←

After you've completed the tutorial, we'd greatly appreciate it if you could fill out a brief (1-page) survey on your experience, so we can improve future versions of this tutorial:

→ Post-Tutorial Feedback Survey ←

Page © 2019-2020 Ethan Johnson