]> git.saurik.com Git - apple/ld64.git/blobdiff - src/ld/passes/objc.cpp
ld64-236.3.tar.gz
[apple/ld64.git] / src / ld / passes / objc.cpp
index d471d98f9421204b79dd02eec2b02189263ccae9..d921a64fb515100d69668828fa22fc6c6b0721a6 100644 (file)
@@ -54,6 +54,7 @@ struct objc_image_info  {
 #define OBJC_IMAGE_REQUIRES_GC                 (1<<2)
 #define OBJC_IMAGE_OPTIMIZED_BY_DYLD   (1<<3)
 #define OBJC_IMAGE_SUPPORTS_COMPACTION (1<<4)
+#define OBJC_IMAGE_IS_SIMULATED                        (1<<5)
 
 
 
@@ -111,6 +112,9 @@ ObjCImageInfoAtom<A>::ObjCImageInfoAtom(ld::File::ObjcConstraint objcConstraint,
                        if ( compaction ) 
                                value |= OBJC_IMAGE_SUPPORTS_COMPACTION;
                        break;
+               case ld::File::objcConstraintRetainReleaseForSimulator:
+                               value |= OBJC_IMAGE_IS_SIMULATED;
+                       break;
        }
 
        _content.version = 0;
@@ -1176,10 +1180,18 @@ void doPass(const Options& opts, ld::Internal& state)
                                                        opts.objCABIVersion2POverride() ? true : false));
                                break;
 #endif
+#if SUPPORT_ARCH_arm_any
                        case CPU_TYPE_ARM:
                                state.addAtom(*new ObjCImageInfoAtom<arm>(state.objcObjectConstraint, compaction, 
                                                        true));
                                break;
+#endif
+#if SUPPORT_ARCH_arm64
+                       case CPU_TYPE_ARM64:
+                               state.addAtom(*new ObjCImageInfoAtom<arm64>(state.objcObjectConstraint, compaction, 
+                                                       true));
+                               break;
+#endif
                        default:
                                assert(0 && "unknown objc arch");
                }       
@@ -1195,16 +1207,19 @@ void doPass(const Options& opts, ld::Internal& state)
 #endif
 #if SUPPORT_ARCH_i386
                        case CPU_TYPE_I386:
-                               // disable optimization until fully tested
                                if ( opts.objCABIVersion2POverride() )
                     OptimizeCategories<x86>::doit(opts, state);
                                break;
 #endif
 #if SUPPORT_ARCH_arm_any
                        case CPU_TYPE_ARM:
-                               // disable optimization until fully tested
                                OptimizeCategories<arm>::doit(opts, state);
                                break;
+#endif
+#if SUPPORT_ARCH_arm64
+                       case CPU_TYPE_ARM64:
+                               // disabled until tested
+                               break;
 #endif
                        default:
                                assert(0 && "unknown objc arch");