My virtual bookshelf - a list of articles / blog posts / books worth having around for reference.
RISC-V
libunwind
Various resources used to add RISC-V support for libunwind
- How debuggers work: Part 3 - Debugging information - A walk through of DWARF, ELF, and debuggers
- RISC-V Calling Conventions
- RISC-V ELF psABI specification
- binutils-gdb: gdb/riscv: Provide non-DWARF stack unwinder (a patch mailed to the
gdb
mailing list) - libunwind docs
- DWARF Register Mappings - A GitHub issue for the RISC-V psABI, raised by someone trying to add stack unwinding to Mono
- Manual Stack Unwinding - Someone’s notes testing stack unwinding on RISC-V (from 2017; may be out of date)
- cfa == rsp on x86_64 - A post explaining the relationship between ‘CFA’ (Canonical Frame Address) in the DWARF standard and the RSP register on
x86_64
- Generating core dumps on bare metal RISC-V - A forum post asking for help on core dumps on RISC-V that mentions details of the
.reg
section of the core dump files - riscv.h - The GCC config for RISC-V, a useful reference for important implementation details
- RISC-V registers A short and handy reference page on RISC-V registers. Not comprehensive; it details the 32 general purpose registers but doesn’t mention floating point registers
- libunwind patch for AArch64 support
- Emulating RISC-V Debian on WSL2
- Building a RISC-V CPU from scratch
- The Apple M1 and RISC-V (lots of links on history and current status as well as a suggestion of RISC-V as the basis of a co-processor revolution)
- RISC-V from scratch 2: Hardware layouts, linker scripts, and C runtimes
- Transparently running binaries from any architecture in Linux with QEMU and binfmt_misc
Neat Tweets
- 6 interesting HTML attributes
- Debugging mystery: the case of the 50ms request (understanding TCP)
- A long tweet thread about failures of complex systems (and why the software industry is still immature here)
- Favorite Security Articles
Compilers
- A Basic Just-In-Time Compiler
- JIT compiler and runtime for a toy language, using Cranelift
- A Complete Guide to LLVM for Programming Language Creators
- Linux x86 Program Start Up
- A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux
Firmware
Service Mesh
- The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and HAProxy
- REST API Design Guide
- Kubernetes and Networks - why is this so dang hard?