diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java
index c0dd02f..0bdea23 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java
@@ -24,6 +24,7 @@
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
+import com.google.devtools.build.lib.analysis.config.HostTransition;
 import com.google.devtools.build.lib.analysis.config.transitions.ComposingTransitionFactory;
 import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet;
 import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
@@ -140,6 +141,13 @@
                 .allowedFileTypes()
                 .nonconfigurable("defines an aspect of configuration")
                 .mandatoryProviders(ImmutableList.of(ConfigFeatureFlagProvider.id())))
+        .add(
+            attr(ObjcRuleClasses.HEADER_SCANNER_ATTRIBUTE, LABEL)
+                .cfg(HostTransition.createFactory())
+                .value(ObjcRuleClasses.headerScannerAttribute(env)))
+        .add(
+            attr(ObjcRuleClasses.APPLE_SDK_ATTRIBUTE, LABEL)
+                .value(ObjcRuleClasses.CompilingRule.SDK_LATE_BOUND_DEFAULT))
         /*<!-- #BLAZE_RULE(apple_binary).IMPLICIT_OUTPUTS -->
         <ul>
          <li><code><var>name</var>_lipobin</code>: the 'lipo'ed potentially multi-architecture
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index c30cf08..62c6cf5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -547,14 +547,7 @@
           .add(
               attr(HEADER_SCANNER_ATTRIBUTE, LABEL)
                   .cfg(HostTransition.createFactory())
-                  .value(
-                      LabelLateBoundDefault.fromTargetConfiguration(
-                          ObjcConfiguration.class,
-                          env.getToolsLabel("//tools/objc:header_scanner"),
-                          (Attribute.LateBoundDefault.Resolver<ObjcConfiguration, Label>
-                                  & Serializable)
-                              (rule, attributes, objcConfig) ->
-                                  objcConfig.getObjcHeaderScannerTool())))
+                  .value(headerScannerAttribute(env)))
           .add(attr(APPLE_SDK_ATTRIBUTE, LABEL).value(SDK_LATE_BOUND_DEFAULT))
           .build();
     }
@@ -574,6 +567,15 @@
     }
   }
 
+  static LabelLateBoundDefault<ObjcConfiguration> headerScannerAttribute(
+      RuleDefinitionEnvironment env) {
+    return LabelLateBoundDefault.fromTargetConfiguration(
+        ObjcConfiguration.class,
+        env.getToolsLabel("//tools/objc:header_scanner"),
+        (Attribute.LateBoundDefault.Resolver<ObjcConfiguration, Label> & Serializable)
+            (rule, attributes, objcConfig) -> objcConfig.getObjcHeaderScannerTool());
+  }
+
   /**
    * Common attributes for {@code objc_*} rules that need to call libtool.
    */
