+Faidon

Le 15/12/2023 à 13:15, Israel Galadima a écrit :
Dear Maintainers,

I have looked further into this and I think these lines in the patch file at debian/patches/wasm/wasm-sysroot-usr.diff
are responsible.

40 +    if (!getDriver().SysRoot.empty()) {
41 +        // Second add the generic one.
42 +        addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version);
43 +        // Third the backward one.
44 +        addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version + "/backward");
45 +    }

The above lines are adding c++ include paths in the method (WebAssembly::AddClangSystemIncludeArgs)
for adding only system/c include paths.
I think the c++ include paths should only be added in the methods for adding libc++ (WebAssembly::addLibCxxIncludePaths) or libstdc++ (WebAssembly::addLibStdCXXIncludePaths) include
paths.

Some context on why I need this fixed. I'm updating emscripten in Debian and need to provide pre-compiled libraries to the end user. However, when compiling c files in compiler-rt that include stdatomic.h, an issue arises. The system's stdatomic.h file uses an include_next to select any other stdatomic.h it finds in the include paths, and since there's another stdatomic.h [1] in the c++ include path of the emscripten sysroot, it gets selected. Ideally, the other stdatomic.h shouldn't be seen, but when compiling c files, clang-17 wrongly adds the c++ include directory from
the emscripten sysroot to the include paths which causes the conflict.

1. https://github.com/emscripten-core/emscripten/blob/main/system/lib/libcxx/include/stdatomic.h


_______________________________________________
Pkg-llvm-team mailing list
pkg-llvm-t...@alioth-lists.debian.net
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-llvm-team

Reply via email to