[RN][iOS] Fix symbol not found _jump_fcontext with use_frameworks! #42228
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.
Summary:
While developing Xcode 15, Apple reimplemented the linker.
In Xcode 15.0, the linker was making old iOS (< 15) crash when they were built using Xcode 15.
To fix that, we make Apple create new compiler flags (
-ld_classic
) to have a backward compatible linker.In Xcode 15.1, Apple fixed that behavior, so the flags should not be required anymore.
But now, if we pass
-ld_classic
to the linker and we have an app that is usinguse_framworks!
, that app crashes at startup.This change remove the flags if the Xcode that is used is 15.1 or greater.
Note: The previous change added the flags to Hermes as well. I tested this fix in a configuration where Hermes has the flags and React Native does not, and it works. So we are removing the flags only from React Native.
Changelog:
[Internal] - Do not add the
-ld_classic
flag if the app is built with Xcode 15.1 or greater.Test Plan:
Tested locally that a new app with
use_frameworks!
is not crashing.Tested on Firebase Testlab that a new app built with Xcode 15.2 and running on iOS <15 is not crashing at startup.