diff --git a/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java b/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java
index 760d090..0139ddf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java
@@ -30,6 +30,7 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Options;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Options.MakeVariableSource;
+import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
 import com.google.devtools.build.lib.cmdline.Label;
 import java.util.TreeMap;
 
@@ -82,7 +83,10 @@
       ResolvedToolchainProviders providers =
           (ResolvedToolchainProviders)
               ruleContext.getToolchainContext().getResolvedToolchainProviders();
-      providers.getForToolchainType(ruleContext.getLabel()).addGlobalMakeVariables(fragmentBuilder);
+      ToolchainInfo toolchainInfo = providers.getForToolchainType(ruleContext.getLabel());
+      if (toolchainInfo != null) {
+        toolchainInfo.addGlobalMakeVariables(fragmentBuilder);
+      }
     } else {
       Class<? extends BuildConfiguration.Fragment> fragmentClass =
           fragmentMap.get(ruleContext.getLabel());
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
index ecd0814..7ba9f8a 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
@@ -78,7 +78,7 @@
         "/bazel_tools_workspace/tools/cpp/BUILD",
         "package(default_visibility=['//visibility:public'])",
         "cc_library(name = 'stl')",
-        "cc_toolchain_type(name = 'toolchain_type')",
+        "toolchain_type(name = 'toolchain_type')",
         "cc_library(name = 'malloc')",
         "cc_toolchain_suite(",
         "    name = 'toolchain',",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java b/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
index 70fe4e0..649eed1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java
@@ -17,15 +17,11 @@
 
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.TemplateVariableInfo;
-import com.google.devtools.build.lib.analysis.ToolchainContext.ResolvedToolchainProviders;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
 import com.google.devtools.build.lib.analysis.util.ScratchAttributeWriter;
-import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.packages.util.MockPlatformSupport;
-import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
 import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
 import com.google.devtools.build.lib.testutil.TestConstants;
-import java.util.Map;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -50,62 +46,6 @@
   }
 
   @Test
-  public void testMakeVariablesFromToolchain() throws Exception {
-    MockPlatformSupport.addMockPiiiPlatform(
-        mockToolsConfig, analysisMock.ccSupport().getMockCrosstoolLabel());
-    useConfiguration(
-        "--enabled_toolchain_types="
-            + TestConstants.TOOLS_REPOSITORY
-            + "//tools/cpp:toolchain_type",
-        "--experimental_platforms=//mock_platform:mock-piii-platform",
-        "--extra_toolchains=//mock_platform:toolchain_cc-compiler-piii",
-        "--make_variables_source=toolchain");
-    ConfiguredTarget cc =
-        getConfiguredTarget(TestConstants.TOOLS_REPOSITORY + "//tools/cpp:toolchain_type");
-    assertThat(cc.get(TemplateVariableInfo.PROVIDER).getVariables())
-        .containsEntry("TARGET_CPU", "piii");
-  }
-
-  @Test
-  public void testGlibcVersionSetInEnv() throws Exception {
-    MockPlatformSupport.addMockPiiiPlatform(
-        mockToolsConfig, analysisMock.ccSupport().getMockCrosstoolLabel());
-    useConfiguration(
-        "--enabled_toolchain_types="
-            + TestConstants.TOOLS_REPOSITORY
-            + "//tools/cpp:toolchain_type",
-        "--experimental_platforms=//mock_platform:mock-piii-platform",
-        "--extra_toolchains=//mock_platform:toolchain_cc-compiler-piii",
-        "--make_variables_source=toolchain");
-    ConfiguredTarget toolchainType =
-        getConfiguredTarget(TestConstants.TOOLS_REPOSITORY + "//tools/cpp:toolchain_type");
-    Map<String, String> makeVariables =
-        toolchainType.get(TemplateVariableInfo.PROVIDER).getVariables();
-
-    ConfiguredTarget target =
-        ScratchAttributeWriter.fromLabelString(this, "cc_library", "//lib")
-            .setList("srcs", "a.cc")
-            .write();
-
-    ResolvedToolchainProviders providers =
-        (ResolvedToolchainProviders)
-            getRuleContext(target).getToolchainContext().getResolvedToolchainProviders();
-    CcToolchainProvider toolchainProvider =
-        (CcToolchainProvider)
-            providers.getForToolchainType(
-                Label.parseAbsolute(TestConstants.TOOLS_REPOSITORY + "//tools/cpp:toolchain_type"));
-
-    String targetLibc = toolchainProvider.getTargetLibc();
-    String glibcVersion = makeVariables.get("GLIBC_VERSION");
-    assertThat(glibcVersion).isNotNull();
-    if (targetLibc.startsWith("glibc-")) {
-      assertThat(glibcVersion).isEqualTo(targetLibc.substring("glibc-".length()));
-    } else {
-      assertThat(glibcVersion).isEqualTo(targetLibc);
-    }
-  }
-
-  @Test
   public void testCcTargetsDependOnCcToolchainAutomatically() throws Exception {
     MockPlatformSupport.addMockPiiiPlatform(
         mockToolsConfig, analysisMock.ccSupport().getMockCrosstoolLabel());
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
index 74f6145..3883aae 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -998,6 +998,7 @@
           CoreRules.INSTANCE.init(builder);
           CoreWorkspaceRules.INSTANCE.init(builder);
           PlatformRules.INSTANCE.init(builder);
+          ToolchainRules.INSTANCE.init(builder);
           GenericRules.INSTANCE.init(builder);
           CcRules.INSTANCE.init(builder);
           // Some tests use genrules so they need the shell toolchain (//tools/sh:toolchain_type) so
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index 68886db..e6319b2 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -17,7 +17,7 @@
 licenses(["notice"])  # Apache 2.0
 
 # The toolchain type used to distinguish cc toolchains.
-cc_toolchain_type(name = "toolchain_type")
+toolchain_type(name = "toolchain_type")
 
 # It is frequently necessary to constrain platforms based on the cc compiler type.
 constraint_setting(name = "cc_compiler")
