-
Notifications
You must be signed in to change notification settings - Fork 151
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Correctly handle dyld caches on macOS 13 and above
This allows successful parsing of dyld caches on macOS 13 and above on Intel Macs. The main dyld cache file on macOS contains an array of subcache info structs, each of which specifies the UUID (and some other information) of each subcache. `DyldCache::parse` checks that the subcache UUIDs match these expected UUIDs. In macOS 13, the format of the subcache info struct changed: it gained an additional field after the UUID field. This means that as soon as you had more than one subcache, our UUID check would fail, because the second subcache UUID would be read from the wrong offset. I didn't notice this on my Apple Silicon Mac, because the arm64e dyld cache only has one subcache: `dyld_shared_cache_arm64e.01`. But on Intel Macs, there are currently four subcaches: `dyld_shared_cache_x86_64.01`, `.02`, `.03`, and `.04`. In practice this means that my software hasn't been able to symbolicate macOS system libraries on Intel Macs since the release of macOS 13. This commit adds the new struct definition and makes the UUID check work correctly. This is a breaking change to the public API. I added a `DyldSubCacheSlice` enum, but I'm not particularly fond of it. I'm also not a big fan of the new allocation for the Vec of UUIDs, but it seemed better than the alternatives I tried, which all had a bunch of code duplication.
- Loading branch information
Showing
2 changed files
with
76 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters