├── .github └── FUNDING.yml ├── LICENSE └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [gmh5225] 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 gmh 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # `awesome-llvm-security` 3 | 4 | [![GitHub license](https://img.shields.io/github/license/gmh5225/awesome-llvm-security)](https://github.com/gmh5225/awesome-llvm-security/blob/main/LICENSE) 5 | 6 | ## How to contribute? 7 | - https://github.com/HyunCafe/contribute-practice 8 | - https://docs.github.com/en/get-started/quickstart/contributing-to-projects 9 | 10 | ## Guide 11 | - https://llvm.org/docs 12 | - https://github.com/rice7th/compilers-resources [A list of compiler related resources] 13 | - https://github.com/learn-llvm/awesome-llvm 14 | - https://github.com/DoctorWkt/acwj 15 | - https://github.com/aalhour/awesome-compilers 16 | - https://github.com/gmh5225/compiler-class 17 | - https://www.llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html 18 | - https://github.com/true-grue/Compiler-Development 19 | - https://github.com/rust-hosted-langs/book [Writing Interpreters in Rust] 20 | - https://github.com/0xSh4dy/learning_llvm [Learning LLVM] 21 | 22 | ## Papers 23 | - [SATURN: Software Deobfuscation Framework Based on LLVM](https://arxiv.org/pdf/1909.01752) 24 | - [Modern Obfuscation Techniques](https://is.muni.cz/th/v1f9y/Modern_obfuscation_techniques.pdf) 25 | 26 | ## IDE Configuration 27 | - https://github.com/gmh5225/Clion-llvm_build [Clion] 28 | 29 | ## Toolchain 30 | - https://github.com/Kenvyra/llvm-android [Android LLVM toolchain build scripts] 31 | - https://github.com/swift-nav/swift-toolchains [toolchains used at Swift] 32 | 33 | ## OLLVM 34 | - https://github.com/obfuscator-llvm/obfuscator 35 | - https://github.com/Cobalt-Strike/obfuscator-llvm 36 | - https://github.com/isrc-cas/flounder 37 | - https://github.com/romangol/Armariries 38 | - https://github.com/amimo/goron 39 | - https://github.com/Ylarod/goron [ndk21] 40 | - https://github.com/emc2314/YANSOllvm 41 | - https://github.com/HikariObfuscator/Hikari 42 | - https://github.com/Lessica/HikariSummer 43 | - https://github.com/61bcdefg/Hikari-LLVM15 44 | - https://github.com/PPKunOfficial/Hikari-LLVM19 45 | - https://github.com/HakonHarnes/emcc-obf [Hikari] 46 | - https://github.com/lich4/llvm-pass-hikari [Independent Hikari] 47 | - https://github.com/WYK15/swift-Ollvm11 [apple llvm 11 (swift-llvm 5.4)] 48 | - https://github.com/DeNA/DeClang 49 | - https://github.com/0x3f97/ollvm-12.x 50 | - https://github.com/kk-laoguo/ollvm-13 51 | - https://github.com/redheart923/ollvm-ext 52 | - https://github.com/sterling0x1/android-ndk-aarch64-host-LLVM6.0-Ollvm-Armariris [ndk17] 53 | - https://github.com/o2e/OLLVM-9.0.1 [ndk-r21d] 54 | - https://github.com/Ant-tree/ObfuscatorNDK [ndk23] 55 | - https://github.com/s3team/gdop 56 | - https://github.com/wolfm/extended-gdop 57 | - https://github.com/bigBestWay/CodeObfs 58 | - https://github.com/SheLLVM/SheLLVM 59 | - https://github.com/amdx1254/capstone-design1-llvm-obfuscation 60 | - https://github.com/Deniskore/llvm 61 | - https://github.com/samdspeare/othread 62 | - https://github.com/NudistBeaaach/Chained-CFG-obfuscation-pass 63 | - https://github.com/veritas501/ToyObfuscator 64 | - https://github.com/tsarpaul/llvm-string-obfuscator 65 | - https://github.com/crvvdev/obfuscator 66 | - https://github.com/zzrcxb/fusor 67 | - https://github.com/bluesadi/Pluto-Obfuscator 68 | - https://github.com/MaxXor/obfuscator-llvm 69 | - https://github.com/svv232/1nsanity 70 | - https://github.com/nlykkei/llvm-ir-obfuscation 71 | - https://github.com/scrt/avcleaner [Based Clang] 72 | - https://github.com/za233/LLVMMyPass 73 | - https://github.com/GoSSIP-SJTU/Armariris 74 | - https://github.com/heroims/obfuscator 75 | - https://github.com/HikariRebooted/HikariCore 76 | - https://github.com/tsarpaul/llvm-string-obfuscator 77 | - https://github.com/SsageParuders/SsagePass 78 | - https://github.com/eshard/obfuscator-llvm 79 | - https://github.com/KpwnZ/sllvm 80 | - https://github.com/open-obfuscator/o-mvll 81 | - https://github.com/trustdecision/td-ollvm 82 | - https://github.com/GANGE666/xVMP [IR VMP] 83 | - https://github.com/NiTianErXing666/SmallVmp [IR VMP] 84 | - https://github.com/KomiMoe/Arkari 85 | - https://github.com/thomasxm/Akira-obfuscator 86 | - https://github.com/Yuerino/obfuscator-pass 87 | - https://github.com/Slattz/ObfusC 88 | - https://github.com/Colerar/labyrinth 89 | - https://github.com/aiglematth/simple_obfuscator 90 | - https://github.com/Despire/llvm-obfuscator 91 | - https://github.com/DrShabulaji/Paper_Obfs 92 | - https://github.com/janoglezcampos/llvm-yx-callobfuscator 93 | - https://github.com/leetonidas/linearize 94 | - https://github.com/jonpalmisc/limoncello 95 | - https://github.com/cainiao1992/ollvm-mingw [mingw-w64 toolchain] 96 | - https://github.com/0xlane/ollvm-rust [rust toolchain] 97 | - https://github.com/Brythzz/cfg-flattening-pass [CFG Flattening for LLVM 17] 98 | - https://github.com/DSusan/LLVM_Obfuscation_Pass [CFG Flattening for LLVM 18] 99 | - https://github.com/dwuid/chenxification [OLLVM 4] 100 | - https://github.com/joaovarelas/Obfuscator-LLVM-16.0 [OLLVM 16] 101 | - https://github.com/MustangYM/ShelbyObfuscator [OLLVM 16] 102 | - https://github.com/AimiP02/BronyaObfus [OLLVM 16] 103 | - https://github.com/wwh1004/ollvm-16 [OLLVM 16] 104 | - https://github.com/za233/Polaris-Obfuscator [OLLVM 16] 105 | - https://github.com/killvxk/llvm-msvc-ex [OLLVM 18] 106 | - https://github.com/can1357/selene/tree/master/apollo-linker [DIY obfuscation linker] 107 | - https://github.com/djolertrk/kovid-obfuscation-passes [A set of LLVM and GCC based plugins that perform code obfustaion] 108 | - https://github.com/MrRoy09/VMwhere [regular ollvm] 109 | - https://github.com/LLVM-PASS/IRvana [Slaying multi-language LLVM IR with obfuscation passes to achieve JIT execution] 110 | - https://github.com/rottaj/obfuscator-llvm [Some fixes to eShard's LLVM obfuscator to support LLVM 19 and updated README for Windows installment] 111 | 112 | ## MSVC Warbird 113 | - https://github.com/gmh5225/warbird-docs [Documentation of Microsoft's Warbird obfuscation] 114 | - https://github.com/gmh5225/warbird-obfuscator 115 | - https://github.com/gmh5225/warbird-runtime 116 | - https://github.com/gmh5225/warbirdvm 117 | - https://github.com/DownWithUp/WarbirdExamples 118 | - https://github.com/gmh5225/warbird-example 119 | - https://github.com/GetRektBoy724/warbird-research [Find out how to bypass HVCI (or not)] 120 | - https://github.com/are-we-cool-yet/debird [Decrypt Warbird segments] 121 | 122 | ## LIFT 123 | - https://github.com/avast/retdec 124 | - https://github.com/lifting-bits/mcsema 125 | - https://github.com/revng/revng 126 | - https://github.com/LLVMParty/TicklingVMProtect 127 | - https://github.com/microsoft/llvm-mctoll 128 | - https://github.com/sh4m2hwz/triton_ast_llvm_ir_translator 129 | - https://github.com/aengelke/rellume 130 | - https://github.com/andybalholm/leaven [IR->GO] 131 | - https://github.com/JonathanSalwan/Triton/issues/1078 132 | - https://github.com/DCNick3/rusty-x86 133 | - https://github.com/nevillegrech/gigahorse-toolchain [EVM] 134 | - https://github.com/balayette/saphIR-project 135 | - https://github.com/JonathanSalwan/Triton/wiki 136 | - https://github.com/JonathanSalwan/Triton/issues/1085 137 | - https://github.com/JonathanSalwan/Triton/commit/0753a0c097fe637beb25b428ff2f0983f14f96d9 138 | - https://github.com/JonathanSalwan/Triton/commit/7af202df2064a6dc95d7fa4bd0dbe5635e5a44fa 139 | - https://github.com/JonathanSalwan/Triton/commit/4e42a22c7a4d970c81875f6474adf284187b452b 140 | - [Triton:Dead Store Elimination](https://github.com/JonathanSalwan/Triton/issues/1130) 141 | - [Triton:Solution of the Hack.lu 2021 OLLVM challenge](https://github.com/JonathanSalwan/Triton/commit/9e6eb2492c7b66e8e1ccc14d75eb89705d108746) 142 | - https://github.com/ergo720/lib86cpu 143 | - https://github.com/fvrmatteo/TritonASTLLVMIRTranslator 144 | - https://github.com/toor-de-force/Ghidra-to-LLVM 145 | - https://github.com/cbwang505/llvmanalyzer [Retdec Example] 146 | - https://github.com/GaloisInc/reopt 147 | - https://github.com/LLVMParty/UnsupportedInstructionsLiftingToLLVM 148 | - https://github.com/JuliaComputingOSS/llvm-cbe [C Backend] 149 | - https://github.com/praeclarum/Iril [LLVM IR to IL] 150 | - https://github.com/trailofbits/binrec-tob [Dynamic Binary Lifting and Recompilation] 151 | - https://github.com/fay59/fcd 152 | - https://github.com/relyze-ltd/LibTCGTranslate [TCG] 153 | - https://github.com/katrinafyi/llvm-translator 154 | - https://github.com/cojocar/bin2llvm 155 | - https://github.com/staticafi/llvm2c [IR->C] 156 | - https://github.com/sunfishcode/llvm2cranelift [LLVM IR to Cranelift IR] 157 | - https://github.com/trailofbits/circuitous [binary->LLVM->circuits] 158 | - https://github.com/superblaubeere27/masxinlingvonta [JVM->LLVM IR] 159 | - https://github.com/jagv091205/Python_to_C_converter [Python->C] 160 | - https://github.com/t3tra-dev/pyc [Python->LLVM IR] 161 | - https://github.com/TBSI-RIOS-Lab/elf-lifter [RISC-V Binary Lifting] 162 | - https://github.com/jeremy-rifkin/wyrm [GCC GIMPLE to LLVM IR] 163 | - https://github.com/loyaltypollution/ida2llvm [IDA to LLVM] 164 | - https://github.com/metalift/metalift [A program synthesis framework for verified lifting applications] 165 | 166 | ## libcxx 167 | - https://github.com/topjohnwu/libcxx [Without Exception and RTTI] 168 | 169 | ## libunwind 170 | - https://github.com/nidefawl/slowstacktrace 171 | 172 | ## Android Kernel 173 | - https://github.com/nathanchance/android-kernel-clang 174 | 175 | ## trace 176 | - https://github.com/microsoft/spoor 177 | 178 | ## JIT 179 | - https://github.com/spencertipping/jit-tutorial 180 | - https://github.com/hfinkel/llvm-project-cxxjit 181 | - https://github.com/vnmakarov/mir 182 | - https://discourse.llvm.org/t/write-jitlink-support-for-a-new-format-architecture/60322 [Jitlink] 183 | - https://github.com/jmmartinez/easy-just-in-time [just-in-time compiler for C++] 184 | - https://github.com/YutaroOrikasa/ljf-project [LLVM based JIT Framework] 185 | - https://github.com/JLLVM/JLLVM [JVM implementation using LLVM as a JIT] 186 | - https://github.com/Themaister/MIPS-LLVM-Jitter [MIPS to LLVM IR recompiler] 187 | - https://github.com/dstogov/ir [Lightweight JIT Compilation Framework] 188 | - https://github.com/light-tech/LLVM-On-iOS [use LLVM + Clang to provide an iOS app with some scripting capability] 189 | - https://github.com/viktorika/jitfusion [A execution engine completely based on llvm] 190 | - https://github.com/LLVM-PASS/IRvana [Slaying multi-language LLVM IR with obfuscation passes to achieve JIT execution] 191 | 192 | ## Rust Manipulation 193 | - https://github.com/jauhien/iron-kaleidoscope [LLVM tutorial in Rust language] 194 | - https://github.com/maekawatoshiki/vicis 195 | - https://github.com/TheDan64/inkwell 196 | - https://github.com/jamesmth/llvm-plugin-rs [Out-of-tree LLVM passes in Rust] 197 | 198 | ## Intermediate Representation 199 | - https://github.com/vnmakarov/mir 200 | 201 | ## Monitor 202 | - https://github.com/trailofbits/monitoring_linux_events 203 | - https://github.com/AndHager/SysCallStubber 204 | 205 | ## eBPF 206 | - https://github.com/elastic/bpfcov 207 | 208 | ## WASM 209 | - https://github.com/leaningtech/cheerp-compiler 210 | - https://github.com/wasmerio/wasmer 211 | - https://github.com/bytecodealliance/wasmtime 212 | 213 | ## Dynamic Binary Instrumentation 214 | - https://github.com/aengelke/instrew 215 | - https://github.com/aengelke/binopt 216 | - https://github.com/QBDI/QBDI 217 | 218 | ## Assembly Engine 219 | - https://github.com/gmh5225/LLVM-ASM-Engine-cheater 220 | 221 | ## Symbolic Execution 222 | - https://github.com/insufficiently-caffeinated/caffeine 223 | - https://github.com/R-Fuzz/symsan 224 | - https://github.com/PLSysSec/haybale 225 | - https://github.com/eurecom-s3/symcc 226 | - https://github.com/phulin/symbolic-trace [Symbolic execution of LLVM IR traces for program understanding] 227 | 228 | ## SMT solving 229 | - https://github.com/mikekben/SLOT [SMT-LLVM Optimizing Translation] 230 | 231 | ## Runtime Check 232 | - https://github.com/danteisalive/llvm-typecheking 233 | 234 | ## Mathematics related 235 | - https://github.com/vgvassilev/clad 236 | 237 | ## Memory Leak Detector 238 | - https://github.com/hygoni/precise-leak-sanitizer 239 | 240 | ## Sanitizer 241 | - https://github.com/google/sanitizers 242 | - https://github.com/tudasc/TypeART [LLVM-based type and memory allocation tracking sanitizer] 243 | 244 | ## Static Analysis 245 | - https://github.com/secure-software-engineering/phasar 246 | - https://github.com/JohannesLiu/LLVM-Pass-Analysis-Collection 247 | - https://github.com/andreasfertig/cppinsights 248 | - https://github.com/SCRT/avcleaner 249 | - https://github.com/Ericsson/codechecker 250 | - https://github.com/franchiotta/taintchecker 251 | - https://github.com/mchalupa/dg 252 | - https://github.com/fadyosman/LLVMTaintAnalysis 253 | - https://github.com/llvm/llvm-project/commit/34a7387986a68835680a8b7bef0ea091d57d28b0 [Taint analysis] 254 | - https://github.com/joernio/joern 255 | - https://github.com/enochii/simple-pointer-analysis [Pointer analysis] 256 | - https://github.com/grievejia/andersen [Pointer analysis] 257 | - https://github.com/GaloisInc/yapall [Pointer analysis] 258 | - https://github.com/shivin101/Compiler-Pass [Liveness analysis] 259 | - https://github.com/seahorn/clam 260 | - https://github.com/Veridise/Vanguard [Smart Contracts] 261 | - https://github.com/KDE/clazy [Qt] 262 | - https://github.com/GoSSIP-SJTU/TripleDoggy 263 | - https://github.com/seclab-ucr/SUTURE 264 | - https://github.com/viktormalik/diffkemp [Static analysis of Linux kernel] 265 | - [Lightweight static analysis for many languages. Find bug variants with patterns that look like source code](https://github.com/returntocorp/semgrep) 266 | - https://github.com/satya-das/cppparser [A library to parse C/C++ source as AST] 267 | - [Static analysis tool based on clang, which detects source-to-binary information leaks in C and C++ projects](https://github.com/ergrelet/cpplumber) 268 | - https://github.com/CryptoExperts/wyverse [White-box analytic framework based on LLVM ] 269 | - https://github.com/LLVM-but-worse/maple-ir [Java] 270 | 271 | ## Clang Build Analysis 272 | - https://github.com/aras-p/ClangBuildAnalyzer 273 | 274 | ## Crash Analysis 275 | - https://github.com/cisco-open/llvm-crash-analyzer 276 | 277 | ## DirectX Shader Compiler 278 | - https://github.com/EpicGames/DirectXShaderCompiler 279 | 280 | ## Virtual Machine 281 | - https://github.com/jakogut/tinyvm 282 | - https://github.com/gmh5225/tinyvm-msvc 283 | - https://github.com/RodrigoDornelles/3bc-lang 284 | - https://github.com/EladB1/vmPrototype 285 | - https://github.com/marcosantos98/llvm-test 286 | - https://github.com/thesecretclub/riscy-business [RISC-V] 287 | - https://github.com/MaxXSoft/sigma-vm [Sigma] 288 | 289 | ## DIY Compiler 290 | - https://github.com/ethereum/solidity 291 | - https://github.com/swiftlang/llvm-project [llvm for apple] 292 | - https://github.com/gleam-lang/gleam [type-safe] 293 | - https://github.com/microsoft/checkedc-clang 294 | - https://github.com/RealNeGate/Cuik [Modern C11] 295 | - https://github.com/tylerweston/ccc 296 | - https://github.com/kumachan-mis/umlcc [C] 297 | - https://github.com/pizlonator/llvm-project-deluge [Fil-C] 298 | - https://github.com/lcompilers/lc [C++] 299 | - https://github.com/greydevv/cpp-compiler 300 | - https://github.com/stardust95/TinyCompiler 301 | - https://github.com/drop-stones/Tiny-C 302 | - https://github.com/Kingtous/WebC-llvm-compiler 303 | - https://github.com/tamphi/CompilerDesign-LLVM 304 | - https://github.com/PLC-lang/rusty 305 | - https://github.com/henne90gen/Neon 306 | - https://github.com/tinygo-org/tinygo [GO] 307 | - https://github.com/go-llvm/llgo [GO] 308 | - https://github.com/ab25cq/comelang 309 | - https://github.com/sleirsgoevy/ps4-rop-8cc 310 | - https://github.com/keiichiw/constexpr-8cc 311 | - https://github.com/egunnarsson/llfp 312 | - https://github.com/mirkosertic/Bytecoder [JAVA] 313 | - https://github.com/evanacox/honors-forum-project 314 | - https://github.com/rui314/chibicc 315 | - https://github.com/gmh5225/chibicc-riscv64 316 | - https://github.com/gmh5225/chibicc-riscv 317 | - https://github.com/Nicholas-Baron/little-lang 318 | - https://github.com/tj/luna 319 | - https://github.com/fanx-dev/fanx 320 | - https://github.com/PipeRift/rift 321 | - https://github.com/JuliaLang/julia 322 | - https://github.com/crystal-lang/crystal 323 | - https://github.com/lotabout/write-a-C-interpreter 324 | - https://github.com/foonathan/clauf [C interpreter] 325 | - https://github.com/root-project/cling [C++ interpreter] 326 | - https://github.com/alinalihassan/Lesma 327 | - https://github.com/RoryBrennan1999/PythonCompiler 328 | - https://github.com/skvadrik/re2c [Lexer] 329 | - https://github.com/SimplyDanny/bitsy-llvm 330 | - https://github.com/mikelma/oktac 331 | - https://github.com/One-Language/One 332 | - https://github.com/adorad/adorad 333 | - https://github.com/jfecher/ante 334 | - https://github.com/arcsysu/SYsU-lang 335 | - https://github.com/skyzluo/CS143-Compilers-Stanford 336 | - https://github.com/TinyCC/tinycc [tcc] 337 | - https://github.com/alekmaul/tcc [tcc] 338 | - https://github.com/rochus-keller/TccGen [tcc] 339 | - https://github.com/rswier/c4 [c4] 340 | - https://github.com/EarlGray/c4 [c4 jit] 341 | - https://bellard.org/otcc [otcc-c4] 342 | - https://github.com/sand-lang/sand 343 | - https://github.com/fly-lang/fly 344 | - https://github.com/RainingComputers/ShnooTalk 345 | - https://github.com/spicelang/spice 346 | - https://github.com/Spencer-Comin/Fern 347 | - https://github.com/savi-lang/savi 348 | - https://github.com/artagnon/rhine 349 | - https://github.com/beefytech/Beef 350 | - https://github.com/ValeLang/Vale 351 | - https://github.com/NilFoundation/zkLLVM [zk] 352 | - https://github.com/MoritzGoeckel/MLang 353 | - https://github.com/SjVer/Evi-Lang 354 | - https://github.com/greydevv/mango-compiler 355 | - https://github.com/rems-project/sail 356 | - https://github.com/Fedjmike/mini-c [C] 357 | - https://github.com/masyagin1998/CSC [C] 358 | - https://github.com/larmel/lacc [C] 359 | - https://github.com/SerenityOS/jakt [memory-safe] 360 | - https://github.com/ziglang/zig 361 | - https://github.com/li-script/lightning 362 | - https://github.com/alinalihassan/Lesma 363 | - https://github.com/gmh5225/Tiny 364 | - https://github.com/carbon-language/carbon-lang 365 | - https://github.com/Omyyyy/pycom [python] 366 | - https://github.com/zero9178/Pylir [python] 367 | - https://github.com/rakudo/rakudo [Raku] 368 | - https://github.com/agraef/pure-lang 369 | - https://github.com/Xeouz/vire 370 | - https://github.com/Sokolmish/cw39 371 | - https://github.com/lethalbit/clank [A C++ Front-end based on LLVM's clang] 372 | - https://github.com/Juicestus/Capstone 373 | - https://github.com/ange-yaghi/piranha 374 | - https://github.com/leanprover/lean4 375 | - https://github.com/krispybyte/virtual-machine [A virtual machine with an included lexer] 376 | - https://github.com/glouw/c8c [compiler, assembler, and virtual machine] 377 | - https://github.com/NVIDIA/MDL-SDK [NVIDIA Material Definition Language SDK] 378 | - https://github.com/spicelang/spice 379 | - https://github.com/yume-lang/yume 380 | - https://github.com/Nicholas-Baron/little-lang 381 | - https://github.com/kamkow1/yup 382 | - https://github.com/brwhale/KataScript [Script] 383 | - https://github.com/XChy/XSharp 384 | - https://github.com/alan123piano/functional-lang 385 | - https://github.com/KCreate/charly-vm [Bytecode virtual machine] 386 | - https://github.com/xinyu-evolutruster/CsGo-Compiler 387 | - https://github.com/thradams/cake [Cake a C23 front end and transpiler written in C] 388 | - https://github.com/garc0/GachiC 389 | - https://github.com/Retr0Wawe/STXA 390 | - https://github.com/eokas/eokas-lang 391 | - https://github.com/parsabee/Quack-v2 392 | - https://github.com/darealvenum/Flare 393 | - https://github.com/jzimmerman/langcc [A Next-Generation Compiler Compiler] 394 | - https://github.com/objeck/objeck-lang [Modern object-oriented and functional programming language] 395 | - https://github.com/Kindelia/Kind2 [A next-gen functional language] 396 | - https://github.com/phate/jlm [A research compiler based on the RVSDG IR] 397 | - https://github.com/memoryleak47/lua2llvm 398 | - https://github.com/KianShepherd/dusk 399 | - https://github.com/f0xeri/SlangCompiler 400 | - https://github.com/davidgiven/calculon 401 | - https://github.com/epoll-reactor/weak_compiler 402 | - https://github.com/JuliaPoo/Artfuscator [Art compiler] 403 | - https://github.com/Ma11ock/holyc [C variant] 404 | - https://github.com/ianfun/xcc [Small C Compiler written in C++] 405 | - https://github.com/tjysdsg/tan 406 | - https://github.com/One-Language/One 407 | - https://github.com/1whatleytay/kara [Easy-to-use, blazing-fast] 408 | - https://github.com/forrestchang/gptlang [ChatGPT] 409 | - https://github.com/exaloop/codon [python] 410 | - https://github.com/ASDAlexander77/TypeScriptCompiler [TypeScript] 411 | - https://github.com/PaddlePaddle/CINN [Neural Networks] 412 | - https://github.com/momentarylapse/kaba 413 | - https://github.com/viper-org/viper-lang [C] 414 | - https://github.com/ab25cq/neo-c 415 | - https://github.com/cgsdfc/simplecc [C] 416 | - https://github.com/WerWolv/PatternLanguage [ImHex] 417 | - https://github.com/DavidPH/GDCC [Game Data Compiler Collection] 418 | - https://github.com/jephthai/EvilVM [Information security research tools] 419 | - https://github.com/tathanhdinh/tocc [A untyped C compiler] 420 | - https://github.com/AmrDeveloper/Jot 421 | - https://github.com/pducklin/minimalisti-C [A stripped-downTiny CC for 64-bit Windows] 422 | - https://github.com/AdamOron/LightweightCompiler 423 | - https://github.com/wangyu-/mycc [C] 424 | - https://github.com/swetanjal/MiniC-Compiler [C] 425 | - https://github.com/mixr26/mxrlang 426 | - https://github.com/pflynn157/orka 427 | - https://github.com/drmortalwombat/oscar64 428 | - https://github.com/GregorGullwi/FlashCpp 429 | - https://github.com/BrandonKi/BF-Compiler [Compiler for Brainfuck] 430 | - https://github.com/project-type/type-c 431 | - https://github.com/thepowersgang/mrustc [rust] 432 | - https://github.com/acd1034/try-rust [C Compiler Frontend in Rust] 433 | - https://github.com/x8xx/p4c-s4 [Backend for the P4 compiler targeting S4] 434 | - https://github.com/inko-lang/inko [A language for building concurrent software with confidence] 435 | - https://github.com/grassator/mass [Compile-time execution] 436 | - https://github.com/dtcxzyw/cmmc [CPP] 437 | - https://github.com/ArthurPV/lily 438 | - https://github.com/leaningtech/cheerp-compiler [C++ compiler for Web] 439 | - https://github.com/raustin9/ThunderBirdCompiler 440 | - https://github.com/c3lang/c3c [compatibility with C] 441 | - https://github.com/zourenDevote/KaleidoscopeLanguage [Kaleidoscope] 442 | - https://github.com/gmh5225/PJDCc [PJDC] 443 | - https://github.com/arnetheduck/nlvm [Nim] 444 | - https://github.com/brymer-meneses/lev-lang [rust style] 445 | - https://github.com/gmh5225/synthex-lang/tree/master [rust style] 446 | - https://github.com/edg-l/edlang [rust style] 447 | - https://github.com/Baleg00/tau-lang [rust style] 448 | - https://github.com/zuojianfa/ca-lang [rust style] 449 | - https://github.com/caoimhebyrne/petal [rust style] 450 | - https://github.com/Ttimofeyka/Rave 451 | - https://github.com/sasalla23/ni 452 | - https://github.com/agentcooper/eye [Syntax inspired by TypeScript] 453 | - https://github.com/OsamaAhmad00/Dua [Antlr4] 454 | - https://github.com/lang-vulpi/vulpi [Algebraic effects] 455 | - https://github.com/andyyu2004/l-lang [Rust-inspired] 456 | - https://github.com/techie-mike/compiler-for-vm [IR for VM] 457 | - https://github.com/gmh5225/minir [IR written in Zig] 458 | - https://github.com/grachale/llvm_frontend [Inspired by Pasca] 459 | - https://github.com/red/red [Inspired by Rebol] 460 | - https://github.com/vvaltchev/mylang [Inspired by Python, JavaScript and C] 461 | - https://github.com/candy-lang/candy [robust, minimalistic, and expressive] 462 | - https://github.com/SamoZ256/lvslang [LVSL] 463 | - https://github.com/debugx-x/HighLevel-Compiler [Java-Based Compiler] 464 | - https://github.com/mathieudelehaye/JavaToLLVMIRCompiler [Java-Based Compiler] 465 | - https://github.com/ianw3214/velvet [With VSC extension] 466 | - https://github.com/rochus-keller/Micron [Micron] 467 | - https://github.com/IITH-Compilers/P4LLVM [P4] 468 | - https://github.com/wandvvs/dust-lang [Imperative programming] 469 | - https://github.com/elixir-lang/elixir [Dynamic, functional language] 470 | - https://github.com/mlang-dev/m [For WebAssembly] 471 | - https://github.com/Vinz2008/C. [C-like] 472 | - https://github.com/eckertliam/newc [C-like] 473 | - https://github.com/JohnMitchell04/toy-langauge [C-like] 474 | - https://github.com/michael-lehn/abc-llvm [A Bloody Compiler with llvm backend] 475 | - https://github.com/VKCOM/kphp [PHP compiler] 476 | - https://github.com/c2lang/c2compiler [c2 compiler] 477 | - https://github.com/matter-labs/solx [LLVM-based Compiler Toolchain for Solidity and Yul] 478 | - https://github.com/tpde2/tpde [A fast framework for writing baseline compiler back-ends in C++] 479 | - https://github.com/Fare9/MyCCompiler [C] 480 | 481 | 482 | ## Out-of-tree LLVM pass 483 | - https://github.com/MitchBriles/PtrIntRoundTripRemover [Pointer-Integer Round Trip Remover] 484 | - https://github.com/djolertrk/kovid-obfuscation-passes [A set of LLVM and GCC based plugins that perform code obfustaion] 485 | 486 | ## Clang Plugins 487 | - https://chromium.googlesource.com/chromium/src/tools/clang/+/refs/heads/master/plugins/FindBadConstructsAction.h 488 | - https://github.com/theuni/bitcoin-tidy 489 | - https://github.com/gwangmu/clang-ast-plugin-template 490 | - https://github.com/foonathan/cppast 491 | - https://github.com/llvm/llvm-project/blob/main/clang/tools/clang-check/ClangCheck.cpp 492 | - https://chromium.googlesource.com/chromium/src/+/refs/heads/main/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp 493 | - https://github.com/vgvassilev/clad [Math] 494 | - [Rewrite C++ code to automatically apply `constexpr` where possible](https://github.com/gmh5225/constexpr-everything) 495 | - [A clang tool for happy refactoring without source-code gymnastics ](https://github.com/goldsborough/clang-expand) 496 | - [Clang-based tool to dump type information (enums, records, vtables) from a C++ codebase and optionally import it into IDA](https://github.com/leoetlino/classgen) 497 | - https://github.com/KDE/clazy [Allows clang to understand Qt semantics] 498 | 499 | ## CIR 500 | - https://discourse.llvm.org/t/rfc-an-mlir-based-clang-ir-cir/63319 501 | - https://github.com/llvm/clangir 502 | - https://github.com/facebookincubator/clangir 503 | 504 | ## MLIR 505 | - https://github.com/j2kun/mlir-tutorial [MLIR For Beginners] 506 | - https://github.com/gmh5225/mlir-cf-pass [out-of-tree pass] 507 | - https://github.com/llvm/torch-mlir [PyTorch MLIR] 508 | - https://github.com/openxla/iree [MLIR compiler] 509 | - https://github.com/openxla/xla [MLIR compiler] 510 | - https://github.com/Lewuathe/mlir-hello [MLIR Sample dialect] 511 | - https://github.com/llvm/Polygeist [C/C++ frontend for MLIR] 512 | 513 | ## Clangd/Language Server 514 | - https://github.com/clangd/vscode-clangd 515 | - https://github.com/clice-project/clice [new language server] 516 | 517 | ## LLD 518 | - https://github.com/llvm/llvm-project/commit/9dd2d50984f5b02e19d3576812dc9b09ddcc9483 [COFF] 519 | - https://github.com/llvm/llvm-project/commit/98bc304e9faded44f1d8988ffa4c5d8b50c759ec [COFF] 520 | 521 | ## LLDB 522 | - https://github.com/endoli/lldb-sys.rs [LLDB bindings for Rust] 523 | - https://github.com/tetsuo-cpp/visual-lldb [A GUI frontend for LLDB] 524 | - https://github.com/ant4g0nist/vegvisir [A browser based GUI for LLDB Debugger] 525 | - https://github.com/zmeadows/lldbg [A lightweight native GUI for LLDB] 526 | - https://github.com/plasma-umass/ChatDBG [LLDB with chatGPT] 527 | - https://github.com/teemu-hakala/debugging-masterclass [Debugging with LLDB on VSCode GUI] 528 | - https://github.com/vadimcn/codelldb [A native debugger extension for VSCode based on LLDB] 529 | - https://github.com/facebookarchive/ds2 [Debug server for lldb] 530 | - https://github.com/yangyss/lldb-trace 531 | 532 | ## Transfer 533 | - https://github.com/sbip-sg/tsll 534 | - https://github.com/Acmodeus/O2M_LLVM 535 | 536 | ## Bundler 537 | - https://github.com/oToToT/CppBundler 538 | 539 | 540 | ## Security Features 541 | - https://github.com/llvm/llvm-project/commit/82af95029ec947fed8b9c516f04d4f217bd87930 542 | - https://github.com/llvm/llvm-project/issues/48474#issuecomment-1022431702 543 | 544 | 545 | ## MSVC Features 546 | - https://github.com/llvm/llvm-project/commit/37d1d02200b9472082304c191f396f0489d00e05 547 | - https://github.com/llvm/llvm-project/commit/3e19ba36fca9fa0b6aba0de2767f26dfd463cb5a 548 | - https://reviews.llvm.org/D80344 [SEH] 549 | - https://reviews.llvm.org/D102817 [SEH] 550 | - https://github.com/MicrosoftDocs/cpp-docs/tree/main/docs/intrinsics [intrinsics] 551 | - https://github.com/llvm/llvm-project/commit/8cd8bd4a5ca702024b9df53a9c7984bb700488a0 [intrinsics] 552 | - https://github.com/llvm/llvm-project/commit/67d9276b16024bae66dfc2fcb739d947637b8c52 553 | 554 | ## X86 555 | - [Add WRMSRNS instructions](https://github.com/llvm/llvm-project/commit/3ee58e2f355f8fdb8e0fe29dc366c8833fafa7d3#diff-9b86f2920663e81557799fbbd887a211dfd3358e91f671a767b3786fbd802045) 556 | - [Support PREFETCHI instructions](https://github.com/NewWorldComingSoon/llvm-msvc/commit/62ca79102cf9646aa9ed0dac7f018432a68eedf1) 557 | 558 | ## Optimization 559 | - https://discourse.llvm.org/t/rfc-cmov-vs-branch-optimization/6040 560 | - https://github.com/llvm/llvm-project/commit/0b7669f33331b7af157be4de02ab9dcbc2590dc2 561 | - https://github.com/llvm/llvm-project/commit/eb1ff70fc5fc166fa67dc1cfd5854fc6f51e0b17 562 | - https://github.com/llvm/llvm-project/commit/e03d216c28dfbda52afe7e1f6606cc5dafb3235e 563 | - https://github.com/llvm/llvm-project/commit/75c4a9270649020710ca86c00e4a89788661b067 564 | - https://github.com/llvm/llvm-project/commit/c1b9667148105d99f4792b46805b6a4d2aea4a6e 565 | - https://github.com/llvm/llvm-project/commit/940d7cd59f88d78af443091e75a33a39ce098fbe 566 | - https://github.com/wlingze/llvm_opt 567 | - https://github.com/llvm/llvm-project/commit/e3deb7d88b0cd6d15a7b5a345d94c37ff6262bb4 568 | - https://github.com/llvm/llvm-project/commit/2c4e38fa6f33d371f9169715f97046343095bba0 569 | - https://github.com/llvm/llvm-project/commit/4e4f839ac2a9002df504f1bed8383c2d7d72e86e 570 | - https://github.com/llvm/llvm-project/commit/0af3e6a22da2eda5021b5fad656d0b9db7702e0a 571 | - https://github.com/llvm/llvm-project/commit/c7ba5a9affbcabb0d05301e5417c203274667572 572 | - https://github.com/llvm/llvm-project/commit/b90478d4220ce5c13b8c8e613e23300cea2fd8b1 573 | - https://reviews.llvm.org/D122084 574 | - https://github.com/NewWorldComingSoon/llvm-msvc/commit/5fd945166862377be390948c9ab7dab2f47df217 575 | - https://github.com/llvm/llvm-project/commit/a5f637bcbb7d1e08ce637f113fc117c3f4b2b110 576 | - https://github.com/llvm/llvm-project/commit/ffe0cc82dbaecde4fd1bb2bca5c6aea59be698a6 577 | - https://github.com/NewWorldComingSoon/llvm-msvc/commit/ca33d74ca5cefdad929d5c2759f7d80faa6be539 578 | - https://github.com/kai-franz/dbds [Based DT] 579 | - https://github.com/d4rk-kn1gh7/llvm-optimization-pass 580 | - https://github.com/UofT-EcoSystem/CSCD70 [CSCD70 Compiler Optimization] 581 | - https://github.com/AliveToolkit/alive2 [Automatic verification of LLVM optimizations] 582 | 583 | 584 | ## Testing Tools 585 | - https://godbolt.org/ 586 | - https://github.com/llvm/llvm-test-suite 587 | - https://github.com/NewWorldComingSoon/llvm-msvc-build [Testing Windows Driver] 588 | - https://github.com/crosire/blink 589 | - https://github.com/ykfre/BsodSurvivor [Debugging Windows Driver] 590 | - https://github.com/LouisJenkinsCS/LLVM-Simple-GUI [View DT&CFG] 591 | - https://github.com/trailofbits/DomTreSat [Testing DT] 592 | - https://github.com/CAST-projects/Clang-ast-viewer 593 | - https://github.com/NewWorldComingSoon/UnknownField [Testing Obfuscated Field] 594 | - https://github.com/vaivaswatha/debugir [Debugging IR] 595 | - https://github.com/grotius-cnc/Qt_LLVM_App [Testing CPP2IR] 596 | 597 | 598 | ## LLVM Tutorial 599 | - https://llvm.discourse.group/t/beginner-resources-documentation/5872 [LLVM Community] 600 | - https://github.com/mikeroyal/LLVM-Guide 601 | - https://github.com/banach-space/llvm-tutor 602 | - https://github.com/xiaoweiChen/Learn-LLVM-12 603 | - https://github.com/xiaoweiChen/LLVM-Techniques-Tips-and-Best-Practies 604 | - https://github.com/Enna1/LLVM-Clang-Study-Notes 605 | - https://github.com/duduWang20/llvmbooks 606 | - https://github.com/hunterzju/llvm-tutorial 607 | - https://github.com/KCreate/llvm-learning 608 | - https://github.com/danbev/learning-llvm 609 | - https://blog.csdn.net/wuhui_gdnt/article/details/61194221 610 | - https://blog.csdn.net/dreammeard/article/details/19493599 [LLVM Metadata] 611 | - https://blog.csdn.net/dreammeard/article/details/19827141 [LLVM DominatorTree] 612 | - https://www.youtube.com/watch?v=d1Y4EZOFfkQ [LLVM DominatorTree] 613 | - https://blog.csdn.net/weixin_46222091/article/details/105420409 [LLVM Callgraph] 614 | - https://github.com/Evian-Zhang/llvm-ir-tutorial [LLVM IR] 615 | - https://github.com/Virtual-Machine/llvm-tutorial-book 616 | - https://github.com/Virtual-Machine/ir-examples [LLVM IR] 617 | - https://github.com/ronnie88597/Notes/tree/f206fa9998b1f6288193cb40e667e32165cf9f2b/llvm 618 | - https://github.com/objwyh/Formatv [LLVM Formatv] 619 | - https://github.com/lahiri-phdworks/LLVM-Examples 620 | - https://github.com/michelou/llvm-examples/tree/master/examples 621 | - https://llvm.org/docs/MIRLangRef.html [LLVM MIR] 622 | - https://llvm.org/docs/PDB/index.html [LLVM PDB] 623 | - https://github.com/bigconvience/llvm-ir-in-action [LLVM IR Examples] 624 | - https://github.com/alexjung/Writing-an-LLVM-Pass-using-the-new-PassManager [New Pass] 625 | - https://github.com/sepy97/newPM_LLVM_pass [New Pass] 626 | - https://github.com/jvstech/windows-gpt-transform [New Pass] 627 | - https://github.com/Radon10043/LLVMDFGPass [LLVM DFG] 628 | - https://github.com/zslwyuan/LLVM-11-Tutorials 629 | - https://github.com/wuzhanglin/llvm-IR-examples [LLVM IR] 630 | - https://github.com/smlnj/smlnj-llvm [Calling Convention] 631 | - https://github.com/Jonathan2251/lbd [backend] 632 | - https://github.com/lac-dcc/llvm-course 633 | - https://github.com/vhiribarren/llvm-tuto-kaleidoscope-rust [Kaleidoscope rust] 634 | - https://github.com/xLox-x/llvm-pass-manager-demos [llvm pass demos by using new pas manager] 635 | 636 | ## Clang Tutorial 637 | - https://github.com/banach-space/clang-tutor 638 | - https://github.com/ingve/awesome-clang 639 | - https://github.com/lahiri-phdworks/LLVM-Examples/tree/master/ClangAST 640 | - https://github.com/ronnie88597/Notes/tree/master/clang 641 | - https://github.com/lijiansong/clang-llvm-tutorial 642 | - https://blog.quarkslab.com/implementing-a-custom-directive-handler-in-clang.html 643 | - https://clang.llvm.org/docs/LibASTMatchersReference.html [AST Matcher] 644 | 645 | ## CPP Tutorial 646 | - https://github.com/andreasfertig/programming-with-cpp20 647 | - https://github.com/AnthonyCalandra/modern-cpp-features 648 | - https://github.com/xiaoweiChen/CPP-Move-Semantics 649 | 650 | ## Security Book 651 | - https://github.com/llsoftsec/llsoftsecbook 652 | 653 | ## Compiler Book 654 | - http://www.craftinginterpreters.com/contents.html 655 | - https://github.com/GuoYaxiang/craftinginterpreters_zh 656 | - https://github.com/tuoxie007/play_with_llvm [CN] 657 | 658 | ## Jobs 659 | - https://github.com/mgaudet/CompilerJobs 660 | 661 | 662 | --------------------------------------------------------------------------------