--- /dev/null
+From 7fa115171a658d5358e15dcb40b233d049acae2f Mon Sep 17 00:00:00 2001
+From: Philip Lorenz <philip.lorenz@bmw.de>
+Date: Mon, 3 Jun 2024 13:19:24 +0200
+Subject: [PATCH] CMakeDetermineCompilerABI: Strip -pipe from compile flags
+
+When `-pipe` is enabled, GCC passes data between its different
+executables using pipes instead of temporary files. This leads to issues
+when cmake attempts to infer compiler internals via the `-v` parameter
+as each executable will print to `stderr` in parallel.
+
+For example we have observed the following outputs in our builds which
+sporadically lead to build failures as system include directories were
+not detected reliably:
+
+Parsed CXX implicit include dir info from above output: rv=done
+ found start of include info
+ found start of implicit include info
+ add: [.../usr/bin/x86_64-poky-linux/../../lib/x86_64-poky-linux/gcc/x86_64-poky-linux/11.4.0/include]
+ add: [.../usr/bin/x86_64-poky-linux/../../lib/x86_64-poky-linux/gcc/x86_64-poky-linux/11.4.0/include-fixed]
+ add: [.../usr/include/c++/11.4.0]
+ add: [.../usr/include/c++/11.4.0/x86_64-poky-linux]
+ add: [.../usr/include/c++/11.4.0/backward]
+ add: [.../usr/lib/x86_64-poky-linux/11.4.0/include]
+ add: [...GNU assembler version 2.38 (x86_64-poky-linux) using BFD version (GNU Binutils) 2.38.20220708]
+ add: [/usr/include]
+ end of search list found
+
+Fix this issue by stripping the `-pipe` parameter from the compilation
+flag when determining the toolchain configuration.
+
+Upstream-Status: Backport [3.32.0, 71be059f3f32b6791427893a48ba4815a19e2e78]
+Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de>
+---
+ Modules/CMakeDetermineCompilerABI.cmake | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake
+index 4a75e25a92..806f0b715d 100644
+--- a/Modules/CMakeDetermineCompilerABI.cmake
++++ b/Modules/CMakeDetermineCompilerABI.cmake
+@@ -52,14 +52,21 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
+
+ __TestCompiler_setTryCompileTargetType()
+
+- # Avoid failing ABI detection on warnings.
++ # Avoid failing ABI detection caused by non-functionally relevant
++ # compiler arguments
+ if(CMAKE_TRY_COMPILE_CONFIGURATION)
+ string(TOUPPER "${CMAKE_TRY_COMPILE_CONFIGURATION}" _tc_config)
+ else()
+ set(_tc_config "DEBUG")
+ endif()
+ foreach(v CMAKE_${lang}_FLAGS CMAKE_${lang}_FLAGS_${_tc_config})
++ # Avoid failing ABI detection on warnings.
+ string(REGEX REPLACE "(^| )-Werror([= ][^-][^ ]*)?( |$)" " " ${v} "${${v}}")
++ # Avoid passing of "-pipe" when determining the compiler internals. With
++ # "-pipe" GCC will use pipes to pass data between the involved
++ # executables. This may lead to issues when their stderr output (which
++ # contains the relevant compiler internals) becomes interweaved.
++ string(REGEX REPLACE "(^| )-pipe( |$)" " " ${v} "${${v}}")
+ endforeach()
+
+ # Save the current LC_ALL, LC_MESSAGES, and LANG environment variables