Publications

Publications and Reports

This page includes both recent papers related to the ALLVM project, as well as older papers that are important building blocks of the ALLVM approach.

  1. Optimizing Whole Programs for Code Size.
    Sean Bartell.
    Ph.D. Dissertation, December 2021.
  2. Fast Intra-kernel Isolation and Security with IskiOS. Spyridoula Gravani, Mohammad Hedayati, John Criswell and Michael L. Scott. To appear in the International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2021), October 2021.
  3. Translation Validation for Compiler Verification.
    Theodoros Kasampalis.
    Ph.D. Dissertation, May 2021.
  4. Language-Parametric Compiler Validation with Application to LLVM.
    Theodoros Kasampalis, Deajun Park, Zhengyao Lin, Vikram Adve, and Grigore Rosu.
    Proceedings of the 26th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2021), April 2021.
    DOI: 10.1145/3445814.3446751.
  5. Guided Linking: Dynamic Linking Without the Costs.
    Sean Bartell, Will Dietz, and Vikram Adve.
    Proceedings of the ACM on Programming Languages (OOPSLA 2020), November 2020.
  6. Aligning Intent and Behavior in Software Systems: How Programs Communicate & their Distribution and Organization.
    Will Dietz.
    Ph.D. Dissertation, May 2020.
  7. Scalable validation of binary lifters
    Sandeep Dasgupta.
    Ph.D. Dissertation, May 2020.
  8. Dataflow-based Pruning for Speeding up Superoptimization.
    Manasij Mukherjee, Zhengyang Liu, and John Regehr.
    Proceedings of the ACM on Programming Languages (OOPSLA 2020), November 2020.
  9. Fast Execute-Only Memory for Embedded Systems.
    Zhuojia Shen and John Criswell.
    Proceedings of the IEEE Secure Development Conference (SecDev 2020), September 2020.
  10. Protecting Applications on Real-Time Embedded Systems from Control-Flow Hijacking with Kage.
    Yufei Du.
    M.S. Thesis, 2020.
  11. Silhouette: Efficient Protected Shadow Stacks for Embedded Systems.
    Jie Zhou, Yufei Du, Zhuojia Shen, Lele Ma, John Criswell, and Robert J. Walls.
    Proceedings of the 29th USENIX Security Symposium (USENIX Security 2020), August 2020.
  12. Scalable Validation of Binary Lifters.
    Sandeep Dasgupta, Sushant Dinesh, Deepan Venkatesh, Vikram Adve, and Christopher Fletcher.
    Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020), June 2020.
  13. Testing Static Analyses for Precision and Soundness.
    Jubi Taneja, Zhengyang Liu, and John Regehr.
    Proceedings of the International Symposium on Code Generation and Optimization (CGO 2020), February 2020.
    Best paper award.
  14. A Complete Formal Semantics of x86-64 User-Level Instruction Set Architecture.
    Sandeep Dasgupta, Daejun Park, Theodoros Kasampalis, Vikram Adve, and Grigore Rosu.
    Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2019), June 2019.
  15. Secure Guest Virtual Machine Support in Apparition.
    Ethan Johnson, Komail Dharsee, and John Criswell.
    Proceedings of the Fifteenth ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments, April 2019.
  16. Software Multiplexing: Share Your Libraries and Statically Link Them Too.
    Will Dietz and Vikram Adve.
    Proceedings of the ACM on Programming Languages (OOPSLA 2018), October 2018.
  17. Shielding Software from Privileged Side-Channel Attacks.
    Xiaowan Dong, Zhuojia Shen, John Criswell, Alan L. Cox, and Sandhya Dwarkadas.
    Usenix Security Symposium, August 2018.
  18. Spectres, Virtual Ghosts, and Hardware Support.
    Xiaowan Dong, Zhuojia Shen, John Criswell, Alan Cox, and Sandhya Dwarkadas.
    Hardware and Architectural Support for Security and Privacy (HASP), June 2018.
  19. A Software Solution for Hardware Vulnerabilities.
    Komail Dharsee, Ethan Johnson, and John Criswell.
    Proceedings of the IEEE Secure Development Conference, September 2017.
  20. Understanding Integer Overflow in C/C++.
    Will Dietz, Peng Li, John Regehr, and Vikram Adve.
    ACM Transactions on Software Engineering and Methodology (TOSEM), Volume 25 Issue 1, December 2015.
    (Invited journal version of the ICSE 2012 paper of the same title, below, revised and extended for journal publication.)
  21. Slipstream: Automatic Interprocess Communication Optimization.
    Will Dietz, Joshua Cranmer, Nathan Dautenhahn, and Vikram Adve.
    Proceedings of the 2015 USENIX Annual Technical Conference (USENIX ATC’15), July 2015.
  22. KCoFI: Complete Control-Flow Integrity for Commodity Operating System Kernels.
    John Criswell, Nathan Dautenhahn, and Vikram Adve.
    Proceedings of the Thirty Fifth IEEE Symposium on Security and Privacy (Oakland ’14), San Jose, CA, May 2014.
  23. Virtual Ghost: Protecting Applications from Hostile Operating Systems.
    John Criswell, Nathan Dautenhahn, and Vikram Adve.
    Proceedings of the Nineteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’14), Salt Lake City, UT, March 2014.
  24. Using Likely Invariants for Automated Software Fault Localization.
    Swarup Kumar Sahoo, John Criswell, Chase Geigle, and Vikram Adve.
    Proceedings of the Eighteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2013), March 2013.
  25. Understanding Integer Overflow in C/C++.
    Will Dietz, Peng Li, John Regehr, Vikram Adve.
    Proceedings of the 2012 International Conference on Software Engineering (ICSE’12), June 2012.  Received an ACM SIGSOFT Distinguished Paper Award.
  26. Virtual Instruction Set Computing for Heterogeneous Systems.
    Vikram Adve, Sarita Adve, Rakesh Komuravelli, Matthew D. Sinclair, and Prakalp Srivastava.
    4th USENIX Workshop on Hot Topics in Parallelism (HotPar), June 2012.
  27. Memory Safety for Low-Level Software/Hardware Interactions.
    John Criswell, Nicolas Geoffray, and Vikram Adve. Proceedings of the Eighteenth USENIX Security Symposium, Montreal, Canada, August 2009.
  28. Secure Virtual Architecture: A Safe Execution Environment for Commodity Operating Systems.
    John Criswell, Andrew Lenharth, Dinakar Dhurjati, and Vikram Adve.
    Proceedings of the Twenty First ACM Symposium on Operating Systems Principles (SOSP ’07), Stevenson, WA, October 2007.
    Received an SOSP 2007 Audience Choice Award.
  29. A Virtual Instruction Set Interface for Operating System Kernels.
    John Criswell, Brent Monroe, and Vikram Adve.
    Workshop on the Interaction between Operating Systems and Computer Architecture (WIOSCA ’06), Boston, Massachusetts, 2006.
  30. Vector LLVA: A Virtual Vector Instruction Set for Media Processing.
    Robert L. Bocchino Jr. and Vikram S. Adve.
    Proceedings of the Second International Conference on Virtual Execution Environments (VEE’06), Ottawa, Canada, June 2006.
  31. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation.
    Chris Lattner and Vikram Adve.
    Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO ’04), 2004.
    Received the 2014 10-year Most Influential Paper Award for papers from CGO 2004.
  32. LLVA: A Low-level Virtual Instruction Set Architecture
    Vikram Adve, Chris Lattner, Michael Brukman, Anand Shukla, and Brian Gaeke.
    Proceedings of the 36th annual ACM/IEEE international symposium on Microarchitecture (MICRO), December 2003.