Using LLVM to generate call graphs for the Linux kernel

This proposal has been accepted as a session.

Accepted Session
Microconference Session

One Line Summary

Build code with clang and get call graphs for free


LLVM can generate call graphs in dot notation for each compiled unit. This feature has been exposed via a command line option when compiling with clang. I have created an open source, browser based visualization tool to view and filter the call graphs. Hopefully this will generate ideas on how the tool can be extended by the community to improve the utility of the call graph information that can be generated. Call graphs for any compiled kernel file can be shown on request.


  • Mark Charlebois

    Qualcomm Innovation Center


    Mark Charlebois is a Director of Open Source Software Strategy at Qualcomm Innovation Center, Inc. (QuIC), a subsidiary of Qualcomm, Inc. He has been developing software for Unix, Linux and embedded systems for more than 20 years. Mark joined Qualcomm in 1999, where he initially worked on the GlobalStar satellite system. He subsequently led one of the core subsystem teams for MediaFLO, defining core parts of the system information protocol. He has worked for several years in various R&D organizations at Qualcomm and created the initial Penelope extension to Thunderbird that formed the basis for Open Source Eudora. While in R&D, Mark was an open source evangelist who helped drive the company’s open source strategy. He has moved to QuIC to take a more active role in defining its open source strategy and community engagements. Mark currently serves on the Board of the Linux Foundation. Recently he has been working on compiling the Linux kernel with Clang and helping to maintain and upstream patches to support that goal via the LLVMLinux project. Prior to Qualcomm, Mark worked at LMI in greater Vancouver, designing laser scanners. He also worked for CGI in Toronto as a real-time systems consultant using various Unix systems. Mark holds a bachelor’s degree in Systems Design Engineering from the University of Waterloo, and a master’s degree in Engineering Science from Simon Fraser University.