C++: Fix null pointer exception introduced by https://github.com/bazelbuild/bazel/commit/b2ae211e821f9b43fd59d52c71410572096b3c24.
Fixes #10897.
RELNOTES:none
PiperOrigin-RevId: 304148267
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index dc9b317..cf98688 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -162,12 +162,17 @@
private final FdoContext fdoContext;
public CcCommon(RuleContext ruleContext) {
- this.ruleContext = ruleContext;
- this.ccToolchain =
+ this(
+ ruleContext,
Preconditions.checkNotNull(
- CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext));
+ CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext)));
+ }
+
+ public CcCommon(RuleContext ruleContext, CcToolchainProvider ccToolchain) {
+ this.ruleContext = ruleContext;
this.cppConfiguration = ruleContext.getFragment(CppConfiguration.class);
this.fdoContext = ccToolchain.getFdoContext();
+ this.ccToolchain = ccToolchain;
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index bd21553..4c1dba0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -1653,7 +1653,7 @@
throw Starlark.errorf("Either PIC or no PIC actions have to be created.");
}
- CcCommon common = new CcCommon(actions.getRuleContext());
+ CcCommon common = new CcCommon(actions.getRuleContext(), ccToolchainProvider);
CcCompilationHelper helper =
new CcCompilationHelper(
actions.asActionRegistry(actions),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
index b890378..9e09d64 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
@@ -5995,7 +5995,7 @@
" for dep in ctx.attr._deps:",
" dep_compilation_contexts.append(dep[CcInfo].compilation_context)",
" dep_linking_contexts.append(dep[CcInfo].linking_context)",
- " toolchain = ctx.attr._cc_toolchain[cc_common.CcToolchainInfo]",
+ " toolchain = ctx.attr._my_cc_toolchain[cc_common.CcToolchainInfo]",
" feature_configuration = cc_common.configure_features(",
" ctx = ctx,",
" cc_toolchain=toolchain,",
@@ -6047,7 +6047,7 @@
+ " default=['//foo:extra_compiler_input']),",
" '_deps': attr.label_list(default=['//foo:dep1', '//foo:dep2']),",
" 'aspect_deps': attr.label_list(aspects=[_cc_aspect]),",
- " '_cc_toolchain': attr.label(default =",
+ " '_my_cc_toolchain': attr.label(default =",
" configuration_field(fragment = 'cpp', name = 'cc_toolchain'))",
" },",
fragments,