[SharedCache] Fix handling of relative selectors in macOS shared caches #6192
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Find the relative selector base address in the Objective-C optimization data pointed to by the shared cache header, rather than via
__objc_scoffs
. That section is only present on iOS, and not for every iOS version that encodes selectors via direct offsets.This also includes some related improvements:
dyld_cache_header
type added to the view is truncated to the length of the header in the loaded cache. This ensures it is correctly applied to the view.Additionally,
SharedCache
now tracks whether non-image regions are data vs code. This means it can avoid marking some regions as containing code when they don't, reducing the amount of analysis work that has to be done.