diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index e835609..2afd77d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -36,6 +36,7 @@
 import com.google.devtools.build.lib.actions.ResourceSet;
 import com.google.devtools.build.lib.actions.extra.CppCompileInfo;
 import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
+import com.google.devtools.build.lib.analysis.actions.ExecutionRequirements;
 import com.google.devtools.build.lib.analysis.config.PerLabelOptions;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.collect.CollectionUtils;
@@ -167,7 +168,6 @@
   public static final String CLIF_MATCH = "clif-match";
 
   private final ImmutableMap<String, String> localShellEnvironment;
-  private final boolean isCodeCoverageEnabled;
   protected final Artifact outputFile;
   private final Artifact sourceFile;
   private final Label sourceLabel;
@@ -294,7 +294,6 @@
       @Nullable Artifact dwoFile,
       Artifact optionalSourceFile,
       ImmutableMap<String, String> localShellEnvironment,
-      boolean isCodeCoverageEnabled,
       CppConfiguration cppConfiguration,
       CppCompilationContext context,
       Class<? extends CppCompileActionContext> actionContext,
@@ -315,7 +314,6 @@
         CollectionUtils.asListWithoutNulls(
             outputFile, (dotdFile == null ? null : dotdFile.artifact()), gcnoFile, dwoFile));
     this.localShellEnvironment = localShellEnvironment;
-    this.isCodeCoverageEnabled = isCodeCoverageEnabled;
     this.sourceLabel = sourceLabel;
     this.sourceFile = sourceFile;
     this.outputFile = Preconditions.checkNotNull(outputFile);
@@ -697,7 +695,9 @@
   @Override
   public ImmutableMap<String, String> getEnvironment() {
     Map<String, String> environment = new LinkedHashMap<>(localShellEnvironment);
-    if (isCodeCoverageEnabled) {
+    if (!getExecutionInfo().containsKey(ExecutionRequirements.REQUIRES_DARWIN)) {
+      // Linux: this prevents gcc/clang from writing the unpredictable (and often irrelevant) value
+      // of getcwd() into the debug info. Not applicable to Darwin or Windows, which have no /proc.
       environment.put("PWD", "/proc/self/cwd");
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index cc83edd..aa666f1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -362,7 +362,6 @@
           tempOutputFile,
           dotdFile,
           localShellEnvironment,
-          codeCoverageEnabled,
           cppConfiguration,
           context,
           actionContext,
@@ -393,7 +392,6 @@
           dwoFile,
           optionalSourceFile,
           localShellEnvironment,
-          codeCoverageEnabled,
           cppConfiguration,
           context,
           actionContext,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 7df15c0..26b3fc5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -75,7 +75,6 @@
       PathFragment tempOutputFile,
       DotdFile dotdFile,
       ImmutableMap<String, String> localShellEnvironment,
-      boolean codeCoverageEnabled,
       CppConfiguration cppConfiguration,
       CppCompilationContext context,
       Class<? extends CppCompileActionContext> actionContext,
@@ -105,7 +104,6 @@
         null,
         null,
         localShellEnvironment,
-        codeCoverageEnabled,
         cppConfiguration,
         // We only allow inclusion of header files explicitly declared in
         // "srcs", so we only use declaredIncludeSrcs, not declaredIncludeDirs.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
index 7ec2b85..366bcd4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
@@ -14,18 +14,18 @@
 
 package com.google.devtools.build.lib.rules.cpp;
 
-import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.actions.ActionExecutionContext;
-import com.google.devtools.build.lib.actions.ActionInput;
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.actions.BaseSpawn;
+import com.google.devtools.build.lib.actions.EmptyRunfilesSupplier;
 import com.google.devtools.build.lib.actions.ExecException;
 import com.google.devtools.build.lib.actions.ExecutionStrategy;
-import com.google.devtools.build.lib.actions.Executor;
-import com.google.devtools.build.lib.actions.ResourceSet;
+import com.google.devtools.build.lib.actions.SimpleSpawn;
 import com.google.devtools.build.lib.actions.Spawn;
 import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.actions.UserExecException;
 
 /**
  * A context for C++ compilation that calls into a {@link SpawnActionContext}.
@@ -35,26 +35,6 @@
   name = {"spawn"}
 )
 public class SpawnGccStrategy implements CppCompileActionContext {
-
-  /**
-   * A {@link Spawn} that wraps a {@link CppCompileAction} and adds its
-   * {@code additionalInputs} (potential files included) to its inputs.
-   */
-  private static class GccSpawn extends BaseSpawn {
-    private final Iterable<? extends ActionInput> inputs;
-
-    public GccSpawn(CppCompileAction action, ResourceSet resources) {
-      super(action.getArgv(), action.getEnvironment(), action.getExecutionInfo(), action,
-          resources);
-      this.inputs = Iterables.concat(action.getInputs(), action.getAdditionalInputs());
-    }
-
-    @Override
-    public Iterable<? extends ActionInput> getInputFiles() {
-      return ImmutableSet.copyOf(inputs);
-    }
-  }
-
   @Override
   public Iterable<Artifact> findAdditionalInputs(
       CppCompileAction action,
@@ -68,10 +48,27 @@
   public CppCompileActionContext.Reply execWithReply(
       CppCompileAction action, ActionExecutionContext actionExecutionContext)
       throws ExecException, InterruptedException {
-    Executor executor = actionExecutionContext.getExecutor();
-    SpawnActionContext spawnActionContext = executor.getSpawnActionContext(action.getMnemonic());
-    Spawn spawn = new GccSpawn(action, action.estimateResourceConsumptionLocal());
-    spawnActionContext.exec(spawn, actionExecutionContext);
+    if (action.getDotdFile() != null && action.getDotdFile().artifact() == null) {
+      throw new UserExecException("cannot execute remotely or locally: "
+          + action.getPrimaryInput().getExecPathString());
+    }
+    Iterable<Artifact> inputs = Iterables.concat(action.getInputs(), action.getAdditionalInputs());
+    Spawn spawn = new SimpleSpawn(
+        action,
+        ImmutableList.copyOf(action.getArgv()),
+        ImmutableMap.copyOf(action.getEnvironment()),
+        ImmutableMap.copyOf(action.getExecutionInfo()),
+        EmptyRunfilesSupplier.INSTANCE,
+        ImmutableList.<Artifact>copyOf(inputs),
+        /*tools=*/ImmutableList.<Artifact>of(),
+        /*filesetManifests=*/ImmutableList.<Artifact>of(),
+        action.getOutputs().asList(),
+        action.estimateResourceConsumptionLocal());
+
+    actionExecutionContext
+        .getExecutor()
+        .getSpawnActionContext(action.getMnemonic())
+        .exec(spawn, actionExecutionContext);
     return null;
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java b/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
index 12b3fdc..28a0b2a 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
@@ -14,7 +14,6 @@
 
 package com.google.devtools.build.lib.sandbox;
 
-import com.google.common.collect.Iterables;
 import com.google.common.io.Files;
 import com.google.devtools.build.lib.actions.ActionExecutionContext;
 import com.google.devtools.build.lib.actions.ActionInput;
@@ -22,7 +21,6 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.Spawn;
 import com.google.devtools.build.lib.analysis.AnalysisUtils;
-import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
 import com.google.devtools.build.lib.rules.fileset.FilesetActionContext;
 import com.google.devtools.build.lib.util.Preconditions;
 import com.google.devtools.build.lib.vfs.FileSystem;
@@ -169,13 +167,6 @@
         ActionInputHelper.expandArtifacts(
             spawn.getInputFiles(), actionExecutionContext.getArtifactExpander());
 
-    if (spawn.getResourceOwner() instanceof CppCompileAction) {
-      CppCompileAction action = (CppCompileAction) spawn.getResourceOwner();
-      if (action.shouldScanIncludes()) {
-        Iterables.addAll(inputs, action.getAdditionalInputs());
-      }
-    }
-
     // ActionInputHelper#expandArtifacts above expands empty TreeArtifacts into an empty list.
     // However, actions that accept TreeArtifacts as inputs generally expect that the empty
     // directory is created. So here we explicitly mount the directories of the TreeArtifacts as
