About this Document¶
I worked on the Mach-O backend for LLD from 2020-2023 together with a small team. We started nearly from scratch and ended up with a linker that supports production builds like Chromium.
This doc is a collection of what I remember about the Mach-O format from that effort. I have probably forgotten some things, and given how frequently Apple updates this format, I’m sure I’m missing out some things. Also, I will be focusing mostly on 64-bit Mach-O, since that was what my work was focused on, and 32-bit is pretty much unused in modern Apple hardware.
Regardless, I hope it can be useful to anyone trying to target or reverse-engineer Mach-O!