- GCC - The GNU Compiler Collection (Git)
- GDB - The GNU Project Debugger (Git)
- Binutils - The GNU Binary Utilities (Git)
- LLVM - The LLVM Compiler Infrastructure (Git)
- LLDB - The LLDB Debugger
- Clang - C language family frontend for LLVM
- LLD - The LLVM Linker
LLVM Resources
- Crosstool-NG - Versatile toolchain generator supporting many architectures and components
- OSXCross - macOS Cross toolchain for Linux and *BSD
ELF
Mach-O
Debuggers
DWARF
Linkers
Miscellaneous
Security
Tutorials
- Demystifying programs that create programs, part 1: A disassembler
- Demystifying programs that create programs, part 2: Starting an assembler
- Demystifying programs that create programs, part 3: Globals, passes, and error handling
- Demystifying programs that create programs, part 4: Parsing
- Demystifying programs that create programs, part 5: Processing our first opcode
- Demystifying programs that create programs, part 6: Processing more opcodes
- Demystifying programs that create programs, part 7: Further opcode processing
- Demystifying programs that create programs, part 8: Finishing opcode processing
- Demystifying programs that create programs, part 9: Pseudo-ops