summaryrefslogtreecommitdiff
path: root/data/ld64/arm64e.diff
diff options
context:
space:
mode:
Diffstat (limited to 'data/ld64/arm64e.diff')
-rw-r--r--data/ld64/arm64e.diff135
1 files changed, 135 insertions, 0 deletions
diff --git a/data/ld64/arm64e.diff b/data/ld64/arm64e.diff
new file mode 100644
index 000000000..0b76998d2
--- /dev/null
+++ b/data/ld64/arm64e.diff
@@ -0,0 +1,135 @@
+diff -ur ld64-450.3/src/abstraction/MachOFileAbstraction.hpp ld64-450.3+iOS/src/abstraction/MachOFileAbstraction.hpp
+--- ld64-450.3/src/abstraction/MachOFileAbstraction.hpp 2019-04-09 13:33:07.000000000 -1000
++++ ld64-450.3+iOS/src/abstraction/MachOFileAbstraction.hpp 2019-12-09 16:47:35.000000000 -1000
+@@ -667,6 +667,9 @@
+ #if SUPPORT_ARCH_arm64v8
+ { "arm64v8", CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64_V8, "arm64v8-", "aarch64-", true, false },
+ #endif
++#if SUPPORT_ARCH_arm64e
++ { "arm64e", CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64E, "arm64e-", "aarch64-", true, false },
++#endif
+ { NULL, 0, 0, NULL, NULL, false, false }
+ };
+
+diff -ur ld64-450.3/src/create_configure ld64-450.3+iOS/src/create_configure
+--- ld64-450.3/src/create_configure 2019-04-09 13:33:08.000000000 -1000
++++ ld64-450.3+iOS/src/create_configure 2019-12-09 16:46:32.000000000 -1000
+@@ -11,12 +11,12 @@
+ fi
+
+ if [ -z "${RC_SUPPORTED_ARCHS}" ]; then
+- RC_SUPPORTED_ARCHS="i386 x86_64 x86_64h armv6 armv7 armv7s armv7m armv7k arm64"
++ RC_SUPPORTED_ARCHS="i386 x86_64 x86_64h armv6 armv7 armv7s armv7m armv7k arm64 arm64e"
+ fi
+
+ for ANARCH in ${RC_SUPPORTED_ARCHS}
+ do
+- KNOWN_ARCHS=",armv4t,armv5,armv6,armv7,armv7f,armv7k,armv7s,armv6m,armv7m,armv7em,armv8,arm64,arm64v8,i386,x86_64,x86_64h,"
++ KNOWN_ARCHS=",armv4t,armv5,armv6,armv7,armv7f,armv7k,armv7s,armv6m,armv7m,armv7em,armv8,arm64,arm64v8,arm64e,i386,x86_64,x86_64h,"
+ FOUND=`echo "$KNOWN_ARCHS" | grep ",$ANARCH,"`
+ if [ $FOUND ]; then
+ echo "#define SUPPORT_ARCH_$ANARCH 1" >> ${DERIVED_FILE_DIR}/configure.h
+diff -ur ld64-450.3/src/ld/Architectures.hpp ld64-450.3+iOS/src/ld/Architectures.hpp
+--- ld64-450.3/src/ld/Architectures.hpp 2019-04-09 13:33:08.000000000 -1000
++++ ld64-450.3+iOS/src/ld/Architectures.hpp 2019-12-09 16:46:32.000000000 -1000
+@@ -61,7 +61,10 @@
+ typedef Pointer64<LittleEndian> P;
+ };
+
+-
++struct arm64e
++{
++ typedef Pointer64<LittleEndian> P;
++};
+
+ #endif // __ARCHITECTURES__
+
+diff -ur ld64-450.3/src/ld/Options.cpp ld64-450.3+iOS/src/ld/Options.cpp
+--- ld64-450.3/src/ld/Options.cpp 2019-04-09 13:33:08.000000000 -1000
++++ ld64-450.3+iOS/src/ld/Options.cpp 2019-12-09 16:46:32.000000000 -1000
+@@ -621,14 +621,14 @@
+ if ( platforms().contains(ld::kPlatform_iOS) && (platforms().minOS(ld::kPlatform_iOS) == 0) && (fOutputKind != Options::kObjectFile) ) {
+ #if defined(DEFAULT_IPHONEOS_MIN_VERSION)
+ warning("-ios_version_min not specified, assuming " DEFAULT_IPHONEOS_MIN_VERSION);
+- setVersionMin(ld::kPlatformiOS, DEFAULT_IPHONEOS_MIN_VERSION);
++ setVersionMin(ld::kPlatform_iOS, DEFAULT_IPHONEOS_MIN_VERSION);
+ #else
+ warning("-ios_version_min not specified, assuming 6.0");
+ setVersionMin(ld::kPlatform_iOS, "6.0");
+ #endif
+ }
+ #if SUPPORT_ARCH_arm64e
+- if ( (fArchitecture == CPU_TYPE_ARM64) && (fSubArchitecture == CPU_SUBTYPE_ARM64_E) ) {
++ if ( (fArchitecture == CPU_TYPE_ARM64) && (fSubArchitecture == CPU_SUBTYPE_ARM64E) ) {
+ fSupportsAuthenticatedPointers = true;
+ }
+ #endif
+@@ -4412,7 +4412,7 @@
+ if ( (fOutputKind != Options::kObjectFile) && (fOutputKind != Options::kPreload) ) {
+ #if defined(DEFAULT_IPHONEOS_MIN_VERSION)
+ warning("-ios_version_min not specified, assuming " DEFAULT_IPHONEOS_MIN_VERSION);
+- setVersionMin(ld::kPlatformiOS, DEFAULT_IPHONEOS_MIN_VERSION);
++ setVersionMin(ld::kPlatform_iOS, DEFAULT_IPHONEOS_MIN_VERSION);
+ #else
+ if ( fSubArchitecture == CPU_SUBTYPE_ARM_V7K ) {
+ warning("-watchos_version_min not specified, assuming 2.0");
+@@ -4749,7 +4749,7 @@
+ break;
+ case Options::kDyld:
+ // arm64e has support for compressed LINKEDIT.
+- if ( (fArchitecture == CPU_TYPE_ARM64) && (fSubArchitecture == CPU_SUBTYPE_ARM64_E) )
++ if ( (fArchitecture == CPU_TYPE_ARM64) && (fSubArchitecture == CPU_SUBTYPE_ARM64E) )
+ break;
+ case Options::kPreload:
+ case Options::kStaticExecutable:
+@@ -4814,7 +4814,7 @@
+
+ if (fArchitecture == CPU_TYPE_ARM64) {
+ #if SUPPORT_ARCH_arm64e
+- if (fSubArchitecture == CPU_SUBTYPE_ARM64_E)
++ if (fSubArchitecture == CPU_SUBTYPE_ARM64E)
+ {
+ // FIXME: Move some of these to arm64
+ fNoLazyBinding = true;
+@@ -4873,7 +4873,7 @@
+ fUseLinkedListBinding = true;
+ fNoLazyBinding = true;
+ #if SUPPORT_ARCH_arm64e
+- if ( (fArchitecture == CPU_TYPE_ARM64) && (fSubArchitecture == CPU_SUBTYPE_ARM64_E) )
++ if ( (fArchitecture == CPU_TYPE_ARM64) && (fSubArchitecture == CPU_SUBTYPE_ARM64E) )
+ fSupportsAuthenticatedPointers = true;
+ #endif
+ break;
+@@ -5267,7 +5267,7 @@
+ }
+ else if ( platforms().minOS(ld::iOS_10_0) ) {
+ #if SUPPORT_ARCH_arm64e
+- if ( (fArchitecture == CPU_TYPE_ARM64) && (fSubArchitecture == CPU_SUBTYPE_ARM64_E) ) {
++ if ( (fArchitecture == CPU_TYPE_ARM64) && (fSubArchitecture == CPU_SUBTYPE_ARM64E) ) {
+ fUnalignedPointerTreatment = Options::kUnalignedPointerError;
+ } else
+ #endif
+diff -ur ld64-450.3/src/ld/passes/objc.cpp ld64-450.3+iOS/src/ld/passes/objc.cpp
+--- ld64-450.3/src/ld/passes/objc.cpp 2019-04-09 13:33:08.000000000 -1000
++++ ld64-450.3+iOS/src/ld/passes/objc.cpp 2019-12-09 16:46:32.000000000 -1000
+@@ -1322,7 +1322,7 @@
+ #if SUPPORT_ARCH_arm64
+ case CPU_TYPE_ARM64:
+ #if SUPPORT_ARCH_arm64e
+- if (opts.subArchitecture() == CPU_SUBTYPE_ARM64_E) {
++ if (opts.subArchitecture() == CPU_SUBTYPE_ARM64E) {
+ doPass<arm64e, true>(opts, state);
+ break;
+ }
+diff -ur ld64-450.3/src/ld/passes/stubs/stubs.cpp ld64-450.3+iOS/src/ld/passes/stubs/stubs.cpp
+--- ld64-450.3/src/ld/passes/stubs/stubs.cpp 2019-04-09 13:33:08.000000000 -1000
++++ ld64-450.3+iOS/src/ld/passes/stubs/stubs.cpp 2019-12-09 16:46:32.000000000 -1000
+@@ -235,7 +235,7 @@
+ #if SUPPORT_ARCH_arm64
+ case CPU_TYPE_ARM64:
+ #if SUPPORT_ARCH_arm64e
+- if ( (_options.subArchitecture() == CPU_SUBTYPE_ARM64_E) && _options.useAuthenticatedStubs() ) {
++ if ( (_options.subArchitecture() == CPU_SUBTYPE_ARM64E) && _options.useAuthenticatedStubs() ) {
+ if ( (_options.outputKind() == Options::kKextBundle) && _options.kextsUseStubs() )
+ return new ld::passes::stubs::arm64e::NonLazyStubAtom(*this, target, weakImport);
+ else if ( usingCompressedLINKEDIT() && !forLazyDylib && _options.noLazyBinding() && !stubToResolver )