diff --git a/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl b/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
index 3ec8ca4..fab9f88 100644
--- a/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
+++ b/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
@@ -62,23 +62,6 @@
     else:
         compilation_artifacts = objc_internal.create_compilation_artifacts(ctx = ctx)
 
-    #    objc_common = objc_internal.create_common(
-    #        purpose = "COMPILE_AND_LINK",
-    #        ctx = ctx,
-    #        compilation_attributes = compilation_attributes,
-    #        compilation_artifacts = compilation_artifacts,
-    #        deps = deps,
-    #        runtime_deps = runtime_deps,
-    #        intermediate_artifacts = intermediate_artifacts,
-    #        alwayslink = ctx.attr.alwayslink,
-    #        has_module_map = True,
-    #        extra_import_libraries = extra_import_libraries,
-    #        linkopts = linkopts,
-    #    )
-
-    #    objc_provider = objc_common.objc_provider
-    #    objc_compilation_context = objc_common.objc_compilation_context
-
     (objc_provider, objc_compilation_context) = objc_common.create_context_and_provider(
         purpose = "COMPILE_AND_LINK",
         ctx = ctx,
diff --git a/src/main/starlark/builtins_bzl/common/objc/objc_common.bzl b/src/main/starlark/builtins_bzl/common/objc/objc_common.bzl
index bfc3a3b..e3b5ff8 100644
--- a/src/main/starlark/builtins_bzl/common/objc/objc_common.bzl
+++ b/src/main/starlark/builtins_bzl/common/objc/objc_common.bzl
@@ -51,7 +51,7 @@
         if apple_common.Objc in runtime_dep:
             runtime_objc_providers.append(runtime_dep[apple_common.Objc])
         if CcInfo in runtime_dep:
-            cc_compilation_contexts.append(runtime_dep[CcInfo].cc_compilation_context)
+            cc_compilation_contexts.append(runtime_dep[CcInfo].compilation_context)
 
     link_order_keys = [
         "imported_library",
@@ -66,9 +66,9 @@
         "weak_sdk_framework": [],
         "sdk_dylib": [],
         "linkopt": [],
-        "cc_library": [],
         "library": [],
         "providers": objc_providers,
+        "cc_library": [],
         "sdk_framework": [],
         "linkstamp": [],
         "force_load_library": [],
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 5f897a4..8feddba 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
@@ -2283,4 +2283,72 @@
 
     getConfiguredTarget("//x:foo");
   }
+
+  @Test
+  public void testRuntimeDeps() throws Exception {
+    scratch.file(
+        "x/defs.bzl",
+        "def _var_providing_rule_impl(ctx):",
+        "   return [",
+        "       CcInfo(),",
+        "       apple_common.new_dynamic_framework_provider(objc=ctx.attr.dep[apple_common.Objc])",
+        "   ]",
+        "var_providing_rule = rule(",
+        "   implementation = _var_providing_rule_impl,",
+        "   attrs = { 'dep': attr.label(),}",
+        ")");
+    scratch.file(
+        "x/BUILD",
+        "load('//x:defs.bzl', 'var_providing_rule')",
+        "objc_library(",
+        "    name = 'baz',",
+        "    srcs = ['baz.m'],",
+        ")",
+        "var_providing_rule(",
+        "    name = 'foo',",
+        "    dep = 'baz',",
+        ")",
+        "objc_library(",
+        "    name = 'bar',",
+        "    srcs = ['bar.m'],",
+        "    runtime_deps = [':foo'],",
+        ")");
+    getConfiguredTarget("//x:bar");
+  }
+
+  @Test
+  public void testRightOrderCcLibs() throws Exception {
+    scratch.file(
+        "x/BUILD",
+        "cc_library(",
+        "    name = 'qux',",
+        "    srcs = ['qux.cc'],",
+        ")",
+        "cc_library(",
+        "    name = 'baz',",
+        "    srcs = ['baz.cc'],",
+        ")",
+        "objc_library(",
+        "    name = 'quux',",
+        "    srcs = ['quux.m'],",
+        "    deps = ['qux'],",
+        ")",
+        "cc_library(",
+        "    name = 'foo',",
+        "    srcs = ['foo.cc'],",
+        "    deps = [':baz'],",
+        ")",
+        "objc_library(",
+        "    name = 'bar',",
+        "    srcs = ['bar.m'],",
+        "    deps = ['quux', ':foo'],",
+        ")");
+    assertThat(
+            artifactsToStrings(
+                getConfiguredTarget("//x:bar")
+                    .get(ObjcProvider.STARLARK_CONSTRUCTOR)
+                    .getCcLibraries()))
+        .containsExactly("/ x/libqux.a", "/ x/libfoo.a", "/ x/libbaz.a")
+        .inOrder();
+  }
 }
