diff --git a/cabal-install/Distribution/Client/SourceFiles.hs b/cabal-install/Distribution/Client/SourceFiles.hs
index b5057dabae5f397db7a9345f6a5f619659351e6e..507f7a2b6a3ddf217ef0301672992879536bf504 100644
--- a/cabal-install/Distribution/Client/SourceFiles.hs
+++ b/cabal-install/Distribution/Client/SourceFiles.hs
@@ -144,7 +144,13 @@ needBuildInfo pkg_descr bi modules = do
     -- A.hs-boot; need to track both.
     findNeededModules ["hs", "lhs", "hsig", "lhsig"]
     findNeededModules ["hs-boot", "lhs-boot"]
-    traverse_ needIfExists (cSources bi ++ jsSources bi)
+    traverse_ needIfExists $ concat
+        [ cSources bi
+        , cxxSources bi
+        , jsSources bi
+        , cmmSources bi
+        , asmSources bi
+        ]
     -- A MASSIVE HACK to (1) make sure we rebuild when header
     -- files change, but (2) not have to rebuild when anything
     -- in extra-src-files changes (most of these won't affect
diff --git a/changelog.d/issue-6869 b/changelog.d/issue-6869
new file mode 100644
index 0000000000000000000000000000000000000000..525e476d8cc7e8bee210d23d928868dd9dabb343
--- /dev/null
+++ b/changelog.d/issue-6869
@@ -0,0 +1,3 @@
+synopsis: cxx-sources, asm-sources and cmm-sources are change-tracked
+packages: cabal-install
+issues: #6869