Skip to content

Instantly share code, notes, and snippets.

@zzzihao-li
Forked from MattPD/analysis.draft.md
Created March 30, 2021 03:27
Show Gist options
  • Save zzzihao-li/b51e0386a71fcad8142b8da6df48ef3d to your computer and use it in GitHub Desktop.
Save zzzihao-li/b51e0386a71fcad8142b8da6df48ef3d to your computer and use it in GitHub Desktop.

Revisions

  1. @MattPD MattPD revised this gist Mar 29, 2021. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -468,6 +468,8 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering

    ##### New Pass Manager

    - LLVM’s New Pass Manager
    - https://blog.llvm.org/posts/2021-03-26-the-new-pass-manager/
    - New PM: taming a custom pipeline of Falcon JIT
    - 2018 EuroLLVM Developers’ Meeting - Fedor Sergeev, Azul Systems
    - https://www.youtube.com/watch?v=6X12D46sRFw
  2. @MattPD MattPD revised this gist Jan 8, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -424,7 +424,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - https://github.com/GaloisInc/reopt
    - Reopt is a tool under development for decompiling and recompiling code. It works by mapping binaries into LLVM byte code, using the LLVM optimization passes to optimize the LLVM, and then combining the newly generated into the binary to generate a new executable.
    - reopt-vcg: an in-progress Lean4 prototype LLVM/x86 equivalence checker for programs optimized by reopt.
    - https://github.com/GaloisInc/reopt-vcg
    - https://github.com/GaloisInc/reopt-vcg
    - RetDec: a retargetable machine-code decompiler based on LLVM
    - https://retdec.com/
    - https://github.com/avast-tl/retdec
  3. @MattPD MattPD revised this gist Jan 8, 2021. No changes.
  4. @MattPD MattPD revised this gist Jan 8, 2021. 1 changed file with 5 additions and 0 deletions.
    5 changes: 5 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -420,6 +420,11 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - Rellume is a lifter for x86-64 machine code to LLVM IR with focus on the performance of the lifted code. The generated LLVM IR can be compiled and executed again, for example using LLVM's JIT compiler, ideally having the same (or even better) performance as the original code.
    - Remill: Library for lifting of x86, amd64, and aarch64 machine code to LLVM bitcode
    - https://github.com/lifting-bits/remill
    - reopt: A tool for analyzing x86-64 binaries.
    - https://github.com/GaloisInc/reopt
    - Reopt is a tool under development for decompiling and recompiling code. It works by mapping binaries into LLVM byte code, using the LLVM optimization passes to optimize the LLVM, and then combining the newly generated into the binary to generate a new executable.
    - reopt-vcg: an in-progress Lean4 prototype LLVM/x86 equivalence checker for programs optimized by reopt.
    - https://github.com/GaloisInc/reopt-vcg
    - RetDec: a retargetable machine-code decompiler based on LLVM
    - https://retdec.com/
    - https://github.com/avast-tl/retdec
  5. @MattPD MattPD revised this gist Dec 25, 2020. 1 changed file with 10 additions and 2 deletions.
    12 changes: 10 additions & 2 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -345,14 +345,22 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view

    ##### Introduction: LLVM IR

    - Kaleidoscope: Implementing a Language with LLVM
    - https://www.llvm.org/docs/tutorial/MyFirstLanguageFrontend/
    - LLVM IR Tutorial - Phis, GEPs and other things, oh my!
    - 2019 EuroLLVM Developers’ Meeting; Vince Bridgers, Felipe de Azevedo Piovezan (Intel)
    - https://www.youtube.com/watch?v=m8G_S5LwlTo
    - LLVM's getelementptr, by example
    - https://blog.yossarian.net/2020/09/19/LLVMs-getelementptr-by-example
    - Mapping High Level Constructs to LLVM IR
    - https://github.com/f0rki/mapping-high-level-constructs-to-llvm-ir
    - https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/
    - Compiling a Functional Language Using C++
    - https://danilafe.com/blog/00_compiler_intro/
    - https://dev.danilafe.com/Web-Projects/blog-static/src/branch/master/code/compiler/
    - A Complete Guide to LLVM for Programming Language Creators
    - https://mukulrathi.co.uk/create-your-own-programming-language/llvm-ir-cpp-api-tutorial/
    - https://github.com/mukul-rathi/bolt
    - LLVM's getelementptr, by example
    - https://blog.yossarian.net/2020/09/19/LLVMs-getelementptr-by-example

    #### Instrumentation

  6. @MattPD MattPD revised this gist Nov 21, 2020. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -593,6 +593,9 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - A practitioner’s guide to reading programming languages papers
    - Adrian Colyer
    - https://blog.acolyer.org/2018/01/26/a-practitioners-guide-to-reading-programming-languages-papers/
    - Basic Mechanics of Operational Semantics
    - PLMW @ ICFP 2020; David Van Horn
    - https://www.youtube.com/watch?v=exhwykjH_z4
    - Crash Course on Notation in Programming Language Theory
    - Jeremy G. Siek
    - LambdaConf 2018
  7. @MattPD MattPD revised this gist Oct 16, 2020. 1 changed file with 5 additions and 0 deletions.
    5 changes: 5 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -48,6 +48,11 @@ See also:

    ## Lectures & Courses

    - CMPUT 416: Foundations of Program Analysis
    - University of Alberta; Fall 2020; Karim Ali
    - https://www.youtube.com/playlist?list=PLZSJMiy_FDQDlyJUgp86UiPBzWivq4b4y
    - https://github.com/cmput416/outline
    - https://github.com/cmput416/lectures
    - Foundations of Programming Languages
    - M-PS (WS 2014/2015): Concepts of Programming Languages
    - http://sepl.cs.uni-frankfurt.de/2014-ws/m-ps/index.en.html
  8. @MattPD MattPD revised this gist Oct 10, 2020. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -188,6 +188,10 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view

    #### LLVM - Verification

    - Crux: a tool for improving the assurance of software using symbolic testing, currently supporting C, C++, and Rust
    - https://crux.galois.com/
    - Crucible: a library for symbolic simulation of imperative programs
    - https://github.com/GaloisInc/crucible
    - LLBMC: The Low-Level Bounded Model Checker
    - http://llbmc.org/
    - http://llbmc.org/publications.html
  9. @MattPD MattPD revised this gist Sep 27, 2020. 1 changed file with 24 additions and 17 deletions.
    41 changes: 24 additions & 17 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -40,7 +40,7 @@ See also:
    - http://s3.eurecom.fr/tools/symbolic_execution/
    - http://s3.eurecom.fr/docs/acsac19_poeplau.pdf
    - https://hal.archives-ouvertes.fr/hal-02305914/
    - Scaling Symbolic Evaluation for Automated Verification of Systems Code with Serval
    - Scaling Symbolic Evaluation for Automated Verification of Systems Code with Serval
    - [SOSP 2019](https://sosp19.rcs.uwaterloo.ca/program.html)
    - Luke Nelson, James Bornholt, Ronghui Gu, Andrew Baumann, Emina Torlak, Xi Wang
    - https://unsat.cs.washington.edu/projects/serval/
    @@ -59,17 +59,24 @@ See also:
    - Static Program Analysis
    - Anders Møller and Michael I. Schwartzbach
    - https://cs.au.dk/~amoeller/spa/
    - PLISS 2019 - Anders Møller
    - PLISS 2019 - Anders Møller
    - Static Program Analysis (part 1/2) - https://www.youtube.com/watch?v=Lr4cMmaJHrg
    - Static Program Analysis (part 2/2) - https://www.youtube.com/watch?v=6QQSIIvH-F0
    - 25 Years of Program Analysis
    - DEF CON 25 (2017) - Yan Shoshitaishvili (Zardus)
    - https://www.youtube.com/watch?v=XL9kWQ3YpLo
    - https://media.defcon.org/DEF%20CON%2025/DEF%20CON%2025%20presentations/DEFCON-25-Zardus-25-Years-of-Program-Analysis-UPDATED.pdf
    - Software Analysis and Testing - [Mayur Naik](http://www.cis.upenn.edu/~mhnaik/)
    - http://rightingcode.org/
    - http://www.cis.upenn.edu/~mhnaik/edu/cis700/
    - https://www.youtube.com/channel/UCvwqRhlkE_Wm2FF9qzvHfJw
    - Software Analysis
    - CIS 547; University of Pennsylvania
    - [Mayur Naik](http://www.cis.upenn.edu/~mhnaik/)
    - https://www.seas.upenn.edu/~cis547/
    - https://www.youtube.com/playlist?list=PLF3-CvSRq2SYXEiS80KuZQ80q8K2aHLQX
    - Software Analysis and Testing
    - CIS 700; Georgia Institute of Technology
    - [Mayur Naik](http://www.cis.upenn.edu/~mhnaik/)
    - https://rightingcode.org/
    - https://www.cis.upenn.edu/~mhnaik/edu/cis700/
    - https://www.youtube.com/playlist?list=PLF3-CvSRq2SaApl3Lnu6Tu_ecsBr94543
    - Program Analysis and Reliability - Nick Sumner, CMPT 886, Spring 2015, SFU
    - Playlist: https://www.youtube.com/playlist?list=PLNC6lmsIySCOPjY8IwKBtD2cqe-MMgIGM
    - Schedule & Slides: http://www.cs.sfu.ca/~wsumner/teaching/886/15/schedule.html
    @@ -151,7 +158,7 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - TACAS 2019
    - Philipp D. Schubert, Ben Hermann, Eric Bodden
    - http://www.thewhitespace.de/publications/shb19-phasar.pdf
    - SVF: Interprocedural Static Value-Flow Analysis in LLVM
    - SVF: Interprocedural Static Value-Flow Analysis in LLVM
    - Pointer Analysis and Program Dependence Analysis for C and C++ Programs
    - http://svf-tools.github.io/SVF/
    - https://github.com/unsw-corg/SVF
    @@ -190,7 +197,7 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - https://doi.org/10.1007/978-3-642-27705-4_12
    - http://llbmc.org/files/papers/VSTTE12.pdf
    - http://llbmc.org/files/talks/vstte-2012.pdf
    - llrêve: Automatic regression verification for LLVM programs
    - llrêve: Automatic regression verification for LLVM programs
    - Automatically check programs for equivalence
    - https://github.com/mattulbrich/llreve
    - https://formal.iti.kit.edu/projects/improve/reve/
    @@ -276,15 +283,15 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - 2016 LLVM Developers’ Meeting
    - Hal Finkel, Argonne National Laboratory
    - https://www.youtube.com/watch?v=jII0AcgU_5c
    - LLVM Seminar - Northeastern+MIT
    - LLVM Seminar - Northeastern+MIT
    - 2019; Mike Shah
    - http://www.mshah.io/#Talks
    - https://www.youtube.com/playlist?list=PLvv0ScY6vfd8NDoT7qUab4VVAWV67oH-N
    - Introduction to LLVM
    - Introduction to LLVM
    - https://www.youtube.com/watch?v=KTMk45Q0d-8&list=PLvv0ScY6vfd8NDoT7qUab4VVAWV67oH-N
    - http://www.mshah.io/LLVM/NortheasternMITIntroduction%20to%20LLVM.pdf
    - http://www.mshah.io/LLVM/llvm_6_3_19.zip
    - Introduction to Clang
    - Introduction to Clang
    - https://www.youtube.com/watch?v=RAzre6PA-WI&list=PLvv0ScY6vfd8NDoT7qUab4VVAWV67oH-N
    - http://www.mshah.io/LLVM/NortheasternMITIntroductiontoClang.pdf
    - Introduction to Program Analysis using LLVM
    @@ -393,7 +400,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - https://github.com/lifting-bits/rellic
    - Rellume — Lifts x86-64 to LLVM IR
    - https://github.com/aengelke/rellume
    - Rellume is a lifter for x86-64 machine code to LLVM IR with focus on the performance of the lifted code. The generated LLVM IR can be compiled and executed again, for example using LLVM's JIT compiler, ideally having the same (or even better) performance as the original code.
    - Rellume is a lifter for x86-64 machine code to LLVM IR with focus on the performance of the lifted code. The generated LLVM IR can be compiled and executed again, for example using LLVM's JIT compiler, ideally having the same (or even better) performance as the original code.
    - Remill: Library for lifting of x86, amd64, and aarch64 machine code to LLVM bitcode
    - https://github.com/lifting-bits/remill
    - RetDec: a retargetable machine-code decompiler based on LLVM
    @@ -426,7 +433,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - A brief overview of LLVM, its pass and IR frameworks and API, and a tutorial on how to write legacy and modern optimization passes.
    - https://www.youtube.com/watch?v=MagR2KY8MQI
    - https://old.reddit.com/r/cpp/comments/hopfg3/writing_an_llvm_optimization_my_quarantine/
    - float-compare-pass: Fork of LLVM for demonstrating optimization pass development
    - float-compare-pass: Fork of LLVM for demonstrating optimization pass development
    - https://github.com/jvstech/float-compare-pass

    ##### Legacy Pass Manager
    @@ -503,9 +510,9 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering

    ## Background

    - Type Safety in Three Easy Lemmas
    - Type Safety in Three Easy Lemmas
    - https://siek.blogspot.com/2013/05/type-safety-in-three-easy-lemmas.html
    - On the Relationship Between Static Analysis and Type Theory
    - On the Relationship Between Static Analysis and Type Theory
    - https://semantic-domain.blogspot.com/2019/08/on-relationship-between-static-analysis.html
    - Soundness and completeness: with precision
    - https://bertrandmeyer.com/2019/04/21/soundness-completeness-precision/
    @@ -520,7 +527,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - free video lectures available, including the introductory ones based on Practical Foundations for Programming Languages: http://www.cs.cmu.edu/~rwh/pfpl/
    - Programming Language Implementation Summer School (PLISS)
    - https://pliss2019.github.io/talks.html
    - https://www.youtube.com/channel/UCofC5zis7rPvXxWQRDnrTqA/playlists
    - https://www.youtube.com/channel/UCofC5zis7rPvXxWQRDnrTqA/playlists
    - SSA book - http://ssabook.gforge.inria.fr/latest/
    - Intermediate Representations in Imperative Compilers: A Survey
    - ACM Computing Surveys, Vol. 45, No. 3, Article 26, 2013
    @@ -547,7 +554,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - Collected by Benjamin C. Pierce
    - https://www.cis.upenn.edu/~bcpierce/courses/670Fall04/GreatWorksInPL.shtml
    - 10PL: 10 papers that all PhD students in programming languages ought to know, for some value of 10
    - Northeastern University Programming Research Lab
    - Northeastern University Programming Research Lab
    - https://github.com/nuprl/10PL
    - Best of PLDI 2004
    - https://dblp.uni-trier.de/db/conf/pldi/pldi2004best.html
  10. @MattPD MattPD revised this gist Sep 19, 2020. 1 changed file with 11 additions and 6 deletions.
    17 changes: 11 additions & 6 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -276,9 +276,6 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - 2016 LLVM Developers’ Meeting
    - Hal Finkel, Argonne National Laboratory
    - https://www.youtube.com/watch?v=jII0AcgU_5c
    - LLVM IR Tutorial - Phis, GEPs and other things, oh my!
    - 2019 EuroLLVM Developers’ Meeting; Vince Bridgers, Felipe de Azevedo Piovezan (Intel)
    - https://www.youtube.com/watch?v=m8G_S5LwlTo
    - LLVM Seminar - Northeastern+MIT
    - 2019; Mike Shah
    - http://www.mshah.io/#Talks
    @@ -309,9 +306,6 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - slides & code: http://www.mshah.io/fosdem18.html
    - LLVMPlayground: Small sample programs that use LLVM and Clang APIs.
    - https://github.com/modocache/LLVMPlayground
    - Mapping High Level Constructs to LLVM IR
    - https://github.com/f0rki/mapping-high-level-constructs-to-llvm-ir
    - https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/
    - [Nick Sumner](https://www.cs.sfu.ca/~wsumner/)'s Examples
    - slides: https://www.cs.sfu.ca/~wsumner/teaching/886/llvm.pdf
    - llvm-demo: A simple example of how LLVM can be used to gather static or dynamic facts about a program.
    @@ -333,6 +327,17 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - Writing a basic clang static analysis check
    - https://bbannier.github.io/blog/2015/05/02/Writing-a-basic-clang-static-analysis-check.html

    ##### Introduction: LLVM IR

    - LLVM IR Tutorial - Phis, GEPs and other things, oh my!
    - 2019 EuroLLVM Developers’ Meeting; Vince Bridgers, Felipe de Azevedo Piovezan (Intel)
    - https://www.youtube.com/watch?v=m8G_S5LwlTo
    - LLVM's getelementptr, by example
    - https://blog.yossarian.net/2020/09/19/LLVMs-getelementptr-by-example
    - Mapping High Level Constructs to LLVM IR
    - https://github.com/f0rki/mapping-high-level-constructs-to-llvm-ir
    - https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/

    #### Instrumentation

    - Creating an LLVM Sanitizer from Hopes and Dreams
  11. @MattPD MattPD revised this gist Aug 17, 2020. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -85,6 +85,10 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - Programming Languages Mentoring Workshop 2014
    - Isıl Dillig (University of Texas)
    - https://www.cis.upenn.edu/~alur/CIS673/isil-plmw.pdf
    - UFMG DCC888: Static Program Analysis
    - 2020; Fernando Magno Quintão Pereira
    - https://homepages.dcc.ufmg.br/~fernando/classes/dcc888/
    - https://www.youtube.com/playlist?list=PLC-dUCVQghfdu7AG5f_p4oRyKgjDuoAWU

    ## Software

  12. @MattPD MattPD revised this gist Aug 11, 2020. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -260,6 +260,9 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - How to Contribute to LLVM
    - 2019 LLVM Developers’ Meeting; Chris Bieneman, Kit Barton
    - https://www.youtube.com/watch?v=C5Y977rLqpw
    - Intro to the Architecture of LLVM
    - 2020; Nick Desaulniers
    - https://www.youtube.com/watch?v=bUTXhcf_aNc
    - Introduction to LLVM
    - 2019 LLVM Developers’ Meeting
    - Eric Christopher & Johannes Doerfert
  13. @MattPD MattPD revised this gist Jul 10, 2020. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -419,7 +419,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering

    ##### Legacy Pass Manager

    - 2007 LLVM Developer's Meeting
    - 2007 LLVM Developer's Meeting; Devang Patel
    - http://llvm.org/devmtg/2007-05/03-Patel-Passmanager.pdf
    - LLVM Pass Manager Demystified (1 of 3) - https://www.youtube.com/watch?v=dZOrlikTaik
    - LLVM Pass Manager Demystified (2 of 3) - https://www.youtube.com/watch?v=PaUWxVLGBg0
    @@ -443,12 +443,14 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - https://www.youtube.com/watch?v=rY02LT08-J8
    - https://llvm.org/devmtg/2014-04/PDFs/Talks/Passes.pdf
    - Writing LLVM Pass in 2018
    - 2018; Min-Yih Hsu
    - Preface - https://medium.com/@mshockwave/writing-llvm-pass-in-2018-preface-6b90fa67ae82
    - Part I: Write a new HelloWorld Pass in new pass manager fashion
    - https://medium.com/@mshockwave/writing-llvm-pass-in-2018-preface-6b90fa67ae82
    - Part II - AnalysisManager - https://medium.com/@mshockwave/writing-llvm-pass-in-2018-part-ii-640f680978ec
    - Part III - In-Tree Pass Integration - https://medium.com/@mshockwave/writing-llvm-pass-in-2018-part-iii-d44cd0c2c354
    - Writing Pass Instrumentations for the New PassManager
    - 2020; Min-Yih Hsu
    - The more general and flexible version of `-print-before` / `-print-after`
    - https://medium.com/@mshockwave/writing-pass-instrument-for-llvm-newpm-f17c57d3369f
    - https://github.com/mshockwave/LLVM-NewPM-PassInstrumentation-Demo
  14. @MattPD MattPD revised this gist Jul 10, 2020. 1 changed file with 7 additions and 0 deletions.
    7 changes: 7 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -409,6 +409,13 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - 2019 LLVM Developers’ Meeting; Andrzej Warzynski
    - https://www.youtube.com/watch?v=ar7cJl2aBuU
    - http://llvm.org/devmtg/2019-10/talk-abstracts.html#tut4
    - Writing an LLVM Optimization
    - 2020; Jonathan Smith
    - A brief overview of LLVM, its pass and IR frameworks and API, and a tutorial on how to write legacy and modern optimization passes.
    - https://www.youtube.com/watch?v=MagR2KY8MQI
    - https://old.reddit.com/r/cpp/comments/hopfg3/writing_an_llvm_optimization_my_quarantine/
    - float-compare-pass: Fork of LLVM for demonstrating optimization pass development
    - https://github.com/jvstech/float-compare-pass

    ##### Legacy Pass Manager

  15. @MattPD MattPD revised this gist Jul 6, 2020. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -441,6 +441,10 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - https://medium.com/@mshockwave/writing-llvm-pass-in-2018-preface-6b90fa67ae82
    - Part II - AnalysisManager - https://medium.com/@mshockwave/writing-llvm-pass-in-2018-part-ii-640f680978ec
    - Part III - In-Tree Pass Integration - https://medium.com/@mshockwave/writing-llvm-pass-in-2018-part-iii-d44cd0c2c354
    - Writing Pass Instrumentations for the New PassManager
    - The more general and flexible version of `-print-before` / `-print-after`
    - https://medium.com/@mshockwave/writing-pass-instrument-for-llvm-newpm-f17c57d3369f
    - https://github.com/mshockwave/LLVM-NewPM-PassInstrumentation-Demo

    ## Readings

  16. @MattPD MattPD revised this gist Jun 29, 2020. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -565,3 +565,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - https://www.youtube.com/watch?v=7HKbjYqqPPQ
    - https://www.youtube.com/watch?v=dCuZkaaou0Q
    - Slides: https://labs.oracle.com/pls/apex/f?p=94065:40150:0::::P40150_PUBLICATION_ID:5376
    - What are we thinking when we present a type theory?
    - Homotopy Type Theory Electronic Seminar Talks, 2020-06-15; Peter LeFanu Lumsdaine
    - https://www.youtube.com/watch?v=kQe0knDuZqg
    - https://www.uwo.ca/math/faculty/kapulkin/seminars/hottestfiles/Lumsdaine-2020-06-15-HoTTEST.pdf
  17. @MattPD MattPD revised this gist Jun 17, 2020. 1 changed file with 7 additions and 0 deletions.
    7 changes: 7 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -167,6 +167,13 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - http://klee.github.io/
    - http://klee.github.io/publications/
    - https://github.com/klee/klee
    - SymCC: efficient compiler-based symbolic execution
    - https://github.com/eurecom-s3/symcc
    - Symbolic execution with SymCC: Don't interpret, compile!
    - USENIX Security 2020
    - Sebastian Poeplau, Aurélien Francillon
    - http://www.s3.eurecom.fr/tools/symbolic_execution/symcc.html
    - https://www.usenix.org/conference/usenixsecurity20/presentation/poeplau

    #### LLVM - Verification

  18. @MattPD MattPD revised this gist Jun 15, 2020. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -554,6 +554,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - 2012 blog post: http://siek.blogspot.com/2012/07/crash-course-on-notation-in-programming.html
    - It's Time for a New Old Language
    - Guy Steele
    - 2017 ACM PPoPP
    - 2017 ACM Symposium on Principles and Practice of Parallel Programming (PPoPP)
    - https://www.youtube.com/watch?v=7HKbjYqqPPQ
    - https://www.youtube.com/watch?v=dCuZkaaou0Q
    - Slides: https://labs.oracle.com/pls/apex/f?p=94065:40150:0::::P40150_PUBLICATION_ID:5376
  19. @MattPD MattPD revised this gist Jun 15, 2020. 1 changed file with 18 additions and 10 deletions.
    28 changes: 18 additions & 10 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -471,16 +471,6 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering

    ## Background

    - A practitioner’s guide to reading programming languages papers
    - Adrian Colyer
    - https://blog.acolyer.org/2018/01/26/a-practitioners-guide-to-reading-programming-languages-papers/
    - Crash Course on Notation in Programming Language Theory
    - Jeremy G. Siek
    - LambdaConf 2018
    - Part 1: https://www.youtube.com/watch?v=vU3caZPtT2I
    - Part 2: https://www.youtube.com/watch?v=MhuK_aepu1Y
    - Slides: https://www.dropbox.com/s/joaq7m9v75blrw5/pl-notation-lambdaconf-2018.pdf?dl=1
    - 2012 blog post: http://siek.blogspot.com/2012/07/crash-course-on-notation-in-programming.html
    - Type Safety in Three Easy Lemmas
    - https://siek.blogspot.com/2013/05/type-safety-in-three-easy-lemmas.html
    - On the Relationship Between Static Analysis and Type Theory
    @@ -549,3 +539,21 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - Resources for the working programmer to learn more about the fundamentals and theory of programming languages.
    - Jean Yang
    - https://github.com/jeanqasaur/learn-programming-languages

    ### Background: Notation

    - A practitioner’s guide to reading programming languages papers
    - Adrian Colyer
    - https://blog.acolyer.org/2018/01/26/a-practitioners-guide-to-reading-programming-languages-papers/
    - Crash Course on Notation in Programming Language Theory
    - Jeremy G. Siek
    - LambdaConf 2018
    - Part 1: https://www.youtube.com/watch?v=vU3caZPtT2I
    - Part 2: https://www.youtube.com/watch?v=MhuK_aepu1Y
    - Slides: https://www.dropbox.com/s/joaq7m9v75blrw5/pl-notation-lambdaconf-2018.pdf?dl=1
    - 2012 blog post: http://siek.blogspot.com/2012/07/crash-course-on-notation-in-programming.html
    - It's Time for a New Old Language
    - Guy Steele
    - 2017 ACM PPoPP
    - https://www.youtube.com/watch?v=7HKbjYqqPPQ
    - https://www.youtube.com/watch?v=dCuZkaaou0Q
  20. @MattPD MattPD revised this gist Jun 15, 2020. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -471,7 +471,9 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering

    ## Background

    - https://blog.acolyer.org/2018/01/26/a-practitioners-guide-to-reading-programming-languages-papers/
    - A practitioner’s guide to reading programming languages papers
    - Adrian Colyer
    - https://blog.acolyer.org/2018/01/26/a-practitioners-guide-to-reading-programming-languages-papers/
    - Crash Course on Notation in Programming Language Theory
    - Jeremy G. Siek
    - LambdaConf 2018
  21. @MattPD MattPD revised this gist May 20, 2020. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -224,6 +224,8 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view

    #### Clang

    - clang-tutor: A collection of Clang plugins - learn the API through examples
    - https://github.com/banach-space/clang-tutor/
    - My First Clang Warning
    - 2019 LLVM Developers’ Meeting
    - Meike Baumgärtner, Dmitri Gribenko
  22. @MattPD MattPD revised this gist May 12, 2020. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -541,4 +541,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - Principles of Programming Languages
    - Lectures - Matthias Felleisen
    - https://felleisen.org/matthias/4400-s20/lectures.html

    - learn-programming-languages
    - Resources for the working programmer to learn more about the fundamentals and theory of programming languages.
    - Jean Yang
    - https://github.com/jeanqasaur/learn-programming-languages
  23. @MattPD MattPD revised this gist May 4, 2020. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -392,6 +392,8 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - https://github.com/quarkslab/llvm-dev-meeting-tutorial-2015
    - https://blog.quarkslab.com/goto-llvm_dev_meeting.html
    - https://www.youtube.com/watch?v=Z5KcwVaak3s
    - llvm-pass-tutorial: A step-by-step tutorial for building an LLVM sample pass
    - https://github.com/abenkhadra/llvm-pass-tutorial
    - llvm-tutor: Basic LLVM passes for learning the API
    - https://github.com/banach-space/llvm-tutor
    - Writing an LLVM Pass: 101
  24. @MattPD MattPD revised this gist May 4, 2020. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,9 @@ See also:

    - [Compilers](https://github.com/MattPD/cpplinks/blob/master/compilers.md)
    - [correctness](https://github.com/MattPD/cpplinks/blob/master/compilers.correctness.md)
    - Program analysis:
    - [Dynamic analysis](https://github.com/MattPD/cpplinks/blob/master/analysis.dynamic.md) - instrumentation, translation, sanitizers
    - [Static analysis](https://github.com/MattPD/cpplinks/blob/master/analysis.static.md) - static analysis (static checkers and compilers) and verification

    ## General

  25. @MattPD MattPD revised this gist May 3, 2020. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -26,6 +26,11 @@ See also:
    - Roberto Baldoni, Emilio Coppa, Daniele Cono D'Elia, Camil Demetrescu, Irene Finocchi
    - https://github.com/season-lab/survey-symbolic-execution
    - https://arxiv.org/abs/1610.00502
    - All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution (but might have been afraid to ask)
    - Security and Privacy (SP), 2010
    - Edward J. Schwartz, Thanassis Avgerinos, David Brumley
    - Paper: https://edmcman.github.io/papers/oakland10.pdf
    - Slides: https://edmcman.github.io/pres/oakland10.pdf
    - Systematic Comparison of Symbolic Execution Systems: Intermediate Representation and its Generation
    - Annual Computer Security Applications Conference (ACSAC) 2019
    - Sebastian Poeplau and Aurélien Francillon
    @@ -429,11 +434,6 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - Communications of the ACM, Vol. 53 No. 2, 2010
    - Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, Dawson Engler
    - https://cacm.acm.org/magazines/2010/2/69354-a-few-billion-lines-of-code-later/fulltext
    - All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution (but might have been afraid to ask)
    - Security and Privacy (SP), 2010
    - Edward J. Schwartz, Thanassis Avgerinos, David Brumley
    - Paper: https://edmcman.github.io/papers/oakland10.pdf
    - Slides: https://edmcman.github.io/pres/oakland10.pdf
    - Analysing the Program Analyser
    - https://srg.doc.ic.ac.uk/publications/analyse-analyser-icse-v2025.html
    - Continuous Reasoning: Scaling the Impact of Formal Methods
  26. @MattPD MattPD revised this gist Apr 24, 2020. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -443,6 +443,9 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM) 2018
    - Mark Harman, Peter O'Hearn
    - https://research.fb.com/publications/from-start-ups-to-scale-ups-opportunities-and-open-problems-for-static-and-dynamic-program-analysis/
    - How to Prevent the next Heartbleed
    - 2014; David A. Wheeler
    - https://dwheeler.com/essays/heartbleed.html
    - Lessons from Building Static Analysis Tools at Google (2018)
    - https://cacm.acm.org/magazines/2018/4/226371-lessons-from-building-static-analysis-tools-at-google/fulltext
    - Pointer analysis: haven't we solved this problem yet?
  27. @MattPD MattPD revised this gist Apr 16, 2020. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -530,3 +530,7 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - https://www.youtube.com/playlist?list=PLvPsfYrGz3wspkm6LVEjndvQqK6SkcXaT
    - https://github.com/bravit/tt-ghc-exercises/
    - https://github.com/lambdaconf/lambdaconf-2018/tree/master/LC18-slides
    - Principles of Programming Languages
    - Lectures - Matthias Felleisen
    - https://felleisen.org/matthias/4400-s20/lectures.html

  28. @MattPD MattPD revised this gist Mar 10, 2020. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -319,6 +319,7 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - VEE 2020
    - Alexis Engelke, Martin Schulz
    - https://conf.researchr.org/details/vee-2020/vee-2020-papers/5/Instrew-Leveraging-LLVM-for-High-Performance-Dynamic-Binary-Instrumentation
    - https://github.com/aengelke/instrew
    - Loom: LLVM instrumentation library
    - https://github.com/cadets/loom
    - PolyTracker: An LLVM-based instrumentation tool for universal taint analysis.
  29. @MattPD MattPD revised this gist Feb 20, 2020. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -315,6 +315,10 @@ https://drive.google.com/file/d/1j9rfMt14pubi6G9PKK3akddyeet5bf0x/view
    - https://blog.trailofbits.com/2019/06/25/creating-an-llvm-sanitizer-from-hopes-and-dreams/
    - llvm-sanitizer-tutorial and documentation
    - https://github.com/trailofbits/llvm-sanitizer-tutorial
    - Instrew: Leveraging LLVM for High Performance Dynamic Binary Instrumentation
    - VEE 2020
    - Alexis Engelke, Martin Schulz
    - https://conf.researchr.org/details/vee-2020/vee-2020-papers/5/Instrew-Leveraging-LLVM-for-High-Performance-Dynamic-Binary-Instrumentation
    - Loom: LLVM instrumentation library
    - https://github.com/cadets/loom
    - PolyTracker: An LLVM-based instrumentation tool for universal taint analysis.
  30. @MattPD MattPD revised this gist Feb 19, 2020. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions analysis.draft.md
    Original file line number Diff line number Diff line change
    @@ -471,6 +471,9 @@ Lifting: Disassembly, Decompilation, Recompilation, Reverse Engineering
    - Soundness and completeness: with precision
    - https://bertrandmeyer.com/2019/04/21/soundness-completeness-precision/
    - What is soundness (in static analysis)? - http://www.pl-enthusiast.net/2017/10/23/what-is-soundness-in-static-analysis/
    - Brown CS: CSCI 1730: Programming Languages
    - http://cs.brown.edu/courses/csci1730/2012/
    - http://cs.brown.edu/courses/cs173/2012/Videos/
    - OPLSS (Oregon Programming Languages Summer School)
    - https://cs.uoregon.edu/research/summerschool/
    - 2019-2017, 2003: https://www.youtube.com/channel/UCDe6N9R7U-RYWA57wzJQ2SQ/playlists