diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
index 5e982eb..983e117c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
@@ -275,7 +275,7 @@
 
   @Option(
     name = "experimental_objc_crosstool",
-    defaultValue = "off",
+    defaultValue = "all",
     documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
     effectTags = {OptionEffectTag.CHANGES_INPUTS},
     metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE},
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
index 887b941..19e2013 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
@@ -26,9 +26,9 @@
 import com.google.devtools.build.lib.actions.CommandAction;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
-import com.google.devtools.build.lib.packages.util.MockObjcSupport;
 import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
 import com.google.devtools.build.lib.rules.cpp.CppLinkAction;
+import com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions.ObjcCrosstoolMode;
 import com.google.devtools.build.lib.testutil.Scratch;
 import java.io.IOException;
 import java.util.Set;
@@ -69,9 +69,7 @@
 
   @Test
   public void testCanUseCrosstool() throws Exception {
-    useConfiguration(
-        "--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL,
-        "--experimental_objc_crosstool=all");
+    useConfiguration(ObjcCrosstoolMode.ALL);
     RULE_TYPE.scratchTarget(scratch, "srcs", "['a.m']");
 
     // If the target is indeed using the c++ backend, then its archive action should be a
@@ -84,10 +82,7 @@
 
   @Test
   public void testCanUseCrosstool_multiArch() throws Exception {
-    useConfiguration(
-        "--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL,
-        "--experimental_objc_crosstool=all",
-        "--ios_multi_cpus=i386,x86_64");
+    useConfiguration(ObjcCrosstoolMode.ALL, "--ios_multi_cpus=i386,x86_64");
     RULE_TYPE.scratchTarget(scratch, "srcs", "['a.m']");
 
     // If the target is indeed using the c++ backend, then its archive action should be a
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
index 6633fcc..5b71555 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
@@ -50,6 +50,7 @@
 import com.google.devtools.build.lib.rules.apple.AppleToolchain;
 import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMapAction;
+import com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions.ObjcCrosstoolMode;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.common.options.OptionsParsingException;
 import java.util.Collections;
@@ -135,15 +136,13 @@
 
   @Test
   public void testObjcPlusPlusCompileDarwin() throws Exception {
-    useConfiguration(
-        "--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL,
+    useConfiguration(ObjcCrosstoolMode.ALL,
         "--experimental_disable_go",
         "--cpu=darwin_x86_64",
         "--macos_minimum_os=9.10.11",
         // TODO(b/36126423): Darwin should imply macos, so the
         // following line should not be necessary.
-        "--apple_platform_type=macos",
-        "--experimental_objc_crosstool=all");
+        "--apple_platform_type=macos");
     createLibraryTargetWriter("//objc:lib")
         .setList("srcs", "a.mm")
         .write();
@@ -1549,9 +1548,8 @@
   public void testSysrootArgSpecifiedWithGrteTopFlag() throws Exception {
     MockObjcSupport.setup(mockToolsConfig, "default_grte_top : '//x'");
     useConfiguration(
-        "--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL,
+        ObjcCrosstoolMode.ALL,
         "--experimental_disable_go",
-        "--experimental_objc_crosstool=all",
         "--cpu=ios_x86_64",
         "--ios_cpu=x86_64");
     scratch.file(
@@ -1582,9 +1580,8 @@
         "  }",
         "}");
     useConfiguration(
-        "--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL,
+        ObjcCrosstoolMode.ALL,
         "--experimental_disable_go",
-        "--experimental_objc_crosstool=all",
         "--cpu=ios_x86_64",
         "--ios_cpu=x86_64");
     scratch.file(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
index 2c82883..c576d42 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -364,13 +364,18 @@
   protected void useConfiguration(ObjcCrosstoolMode objcCrosstoolMode, String... args)
       throws Exception {
     ImmutableList.Builder<String> extraArgsBuilder = ImmutableList.builder();
-    if (objcCrosstoolMode != ObjcCrosstoolMode.OFF) {
-      String crosstoolModeFlag =
-          objcCrosstoolMode == ObjcCrosstoolMode.ALL
-              ? "--experimental_objc_crosstool=all"
-              : "--experimental_objc_crosstool=library";
-      extraArgsBuilder.add(crosstoolModeFlag);
+    switch(objcCrosstoolMode) {
+      case ALL:
+        extraArgsBuilder.add("--experimental_objc_crosstool=all");
+        break;
+      case LIBRARY:
+        extraArgsBuilder.add("--experimental_objc_crosstool=library");
+        break;
+      case OFF:
+        extraArgsBuilder.add("--experimental_objc_crosstool=off");
+        break;
     }
+
     extraArgsBuilder
         .add("--experimental_disable_go")
         .add("--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL);
@@ -4674,9 +4679,7 @@
   }
 
   public void checkLinkingRuleCanUseCrosstool(RuleType ruleType) throws Exception {
-    useConfiguration(
-        "--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL,
-        "--experimental_objc_crosstool=all");
+    useConfiguration(ObjcCrosstoolMode.ALL);
     ruleType.scratchTarget(scratch, "srcs", "['a.m']");
     ConfiguredTarget target = getConfiguredTarget("//x:x");
 
@@ -4687,9 +4690,7 @@
   }
 
   public void checkLinkingRuleCanUseCrosstool_singleArch(RuleType ruleType) throws Exception {
-    useConfiguration(
-        "--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL,
-        "--experimental_objc_crosstool=all");
+    useConfiguration(ObjcCrosstoolMode.ALL);
     ruleType.scratchTarget(scratch, "srcs", "['a.m']");
 
     // If bin is indeed using the c++ backend, then its archive action should be a CppLinkAction.
@@ -4702,10 +4703,7 @@
   }
 
   public void checkLinkingRuleCanUseCrosstool_multiArch(RuleType ruleType) throws Exception {
-    useConfiguration(
-        "--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL,
-        "--experimental_objc_crosstool=all",
-        "--ios_multi_cpus=i386,x86_64");
+    useConfiguration(ObjcCrosstoolMode.ALL, "--ios_multi_cpus=i386,x86_64");
     ruleType.scratchTarget(scratch, "srcs", "['a.m']");
 
     // If bin is indeed using the c++ backend, then its archive action should be a CppLinkAction.
