Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Bad clang binary" with Clang 12 installed from MSYS2 #1916

Closed
NoMore201 opened this issue Jun 4, 2021 · 3 comments · Fixed by #1953
Closed

"Bad clang binary" with Clang 12 installed from MSYS2 #1916

NoMore201 opened this issue Jun 4, 2021 · 3 comments · Fixed by #1953
Labels
bug a bug in the product Feature: kits help wanted we currently are not planning work on this and would like help from the open source community

Comments

@NoMore201
Copy link

Brief Issue Summary

CMate tools is unable to parse clang 12 installed from msys2 (both packages mingw-w64-clang-x86_64-clang and mingw-w64-x86_64-clang), giving the following error:

Bad Clang binary "C:\Users\iezzid1\Apps\msys2\mingw64\bin\clang.exe -v" version:12.0.0 output: clang version 12.0.0

By manually adding a kit for this compiler, everything works properly:

{
    "name": "custom clang 12 x86_64-w64-mingw32",
    "compilers": {
      "C": "C:\\Users\\someuser\\Apps\\msys2\\mingw64\\bin\\clang.exe",
      "CXX": "C:\\Users\\someuser\\Apps\\msys2\\mingw64\\bin\\clang++.exe"
    },
    "preferredGenerator": {
      "name": "Ninja"
    }
}

Expected:

  1. Click button "Change active kit"
  2. Click Scan for kits
  3. Expected clang to appear

Apparent Behavior:

  1. Click button "Change active kit"
  2. Click Scan for kits
  3. Only GCC is collected

CMake Tools Log

[extension] [1085] cmake.selectKit started
[kitsController] Start selection of kits. Found 5 kits.
[kitsController] Opening kit selection QuickPick
[kitsController] Rescanning for kits
[kit] Scanning for Kits on system
[kit] Scanning directory C:\Windows for compilers
[kit] Scanning directory C:\Windows\System32\Wbem for compilers
[kit] Scanning directory C:\Windows\System32\WindowsPowerShell\v1.0\ for compilers
[kit] Scanning directory C:\Windows\System32\OpenSSH\ for compilers
[kit] Scanning directory C:\Program Files\AdoptOpenJDK\jdk-11.0.10.9-hotspot\bin for compilers
[kit] Scanning directory C:\Windows\system32 for compilers
[kit] Scanning directory C:\Program Files (x86)\Pico Technology\PicoScope6\ for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Python\Python39\Scripts\ for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Python\Python39\ for compilers
[kit] Scanning directory C:\Users\someuser\Apps\ripgrep for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Python\Launcher\ for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Microsoft VS Code\bin for compilers
[kit] Scanning directory C:\Users\someuser\Apps\fd for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Microsoft\WindowsApps for compilers
[kit] Skipping scan of not existing path 
[kit] Found 0 kits in directory 
[kit] Scanning directory C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Git\cmd for compilers
[kit] Scanning directory C:\Users\someuser\Apps\msys2\mingw64\bin for compilers
[kit] Skipping scan of not existing path C:\Program Files (x86)\LLVM\bin
[kit] Found 0 kits in directory C:\Program Files (x86)\LLVM\bin
[kit] Skipping scan of not existing path C:\Program Files\LLVM\bin
[kit] Found 0 kits in directory C:\Program Files\LLVM\bin
[kit] Skipping scan of not existing path C:\Program Files (x86)\LLVM\bin
[kit] Skipping scan of not existing path C:\Program Files\LLVM\bin
[kit] Scanning directory C:\Windows\system32 for compilers
[kit] Scanning directory C:\Program Files\AdoptOpenJDK\jdk-11.0.10.9-hotspot\bin for compilers
[kit] Scanning directory C:\Windows\System32\Wbem for compilers
[kit] Scanning directory C:\Windows for compilers
[kit] Scanning directory C:\Windows\System32\WindowsPowerShell\v1.0\ for compilers
[kit] Scanning directory C:\Program Files (x86)\Pico Technology\PicoScope6\ for compilers
[kit] Scanning directory C:\Windows\System32\OpenSSH\ for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Python\Python39\Scripts\ for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Python\Python39\ for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Python\Launcher\ for compilers
[kit] Scanning directory C:\Users\someuser\Apps\ripgrep for compilers
[kit] Scanning directory C:\Users\someuser\Apps\fd for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Microsoft\WindowsApps for compilers
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Git\cmd for compilers
[kit] Skipping scan of not existing path 
[kit] Scanning directory C:\Users\someuser\AppData\Local\Programs\Microsoft VS Code\bin for compilers
[kit] Scanning directory C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin for compilers
[kit] Scanning directory C:\Users\someuser\Apps\msys2\mingw64\bin for compilers
[kit] Found 0 kits in directory C:\Windows\System32\OpenSSH\
[kit] Found 0 kits in directory C:\Windows\System32\WindowsPowerShell\v1.0\
[kit] Found 0 kits in directory C:\Windows
[kit] Found 0 kits in directory C:\Windows\System32\Wbem
[kit] Found 0 kits in directory C:\Program Files\AdoptOpenJDK\jdk-11.0.10.9-hotspot\bin
[kit] Found 0 kits in directory C:\Program Files (x86)\Pico Technology\PicoScope6\
[kit] Found 0 kits in directory C:\Users\someuser\AppData\Local\Programs\Python\Python39\
[kit] Found 0 kits in directory C:\Users\someuser\AppData\Local\Programs\Python\Python39\Scripts\
[kit] Found 0 kits in directory C:\Users\someuser\Apps\ripgrep
[kit] Found 0 kits in directory C:\Users\someuser\AppData\Local\Programs\Python\Launcher\
[kit] Found 0 kits in directory C:\Users\someuser\AppData\Local\Programs\Microsoft VS Code\bin
[kit] Found 0 kits in directory C:\Users\someuser\Apps\fd
[kit] Found 0 kits in directory C:\Users\someuser\AppData\Local\Microsoft\WindowsApps
[kit] Found 0 kits in directory C:\Users\someuser\AppData\Local\Programs\Git\cmd
[kit] Testing GCC binary: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\gcc.exe
[kit] Testing GCC binary: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\gcc.exe
[proc] Executing command: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\gcc.exe -v
[kit] Testing GCC binary: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\i686-w64-mingw32-gcc-4.9.4.exe
[kit] Testing GCC binary: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\i686-w64-mingw32-gcc-4.9.4.exe
[proc] Executing command: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\i686-w64-mingw32-gcc-4.9.4.exe -v
[kit] Testing GCC binary: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\i686-w64-mingw32-gcc.exe
[kit] Testing GCC binary: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\i686-w64-mingw32-gcc.exe
[proc] Executing command: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\i686-w64-mingw32-gcc.exe -v
[kit] Testing Clang binary: C:\Users\someuser\Apps\msys2\mingw64\bin\clang.exe
[kit] Testing Clang binary: C:\Users\someuser\Apps\msys2\mingw64\bin\clang.exe
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\clang.exe -v
[kit] Testing GCC binary: C:\Users\someuser\Apps\msys2\mingw64\bin\gcc.exe
[kit] Testing GCC binary: C:\Users\someuser\Apps\msys2\mingw64\bin\gcc.exe
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\gcc.exe -v
[kit] Testing GCC binary: C:\Users\someuser\Apps\msys2\mingw64\bin\x86_64-w64-mingw32-gcc-10.3.0.exe
[kit] Testing GCC binary: C:\Users\someuser\Apps\msys2\mingw64\bin\x86_64-w64-mingw32-gcc-10.3.0.exe
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\x86_64-w64-mingw32-gcc-10.3.0.exe -v
[kit] Testing GCC binary: C:\Users\someuser\Apps\msys2\mingw64\bin\x86_64-w64-mingw32-gcc.exe
[kit] Testing GCC binary: C:\Users\someuser\Apps\msys2\mingw64\bin\x86_64-w64-mingw32-gcc.exe
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\x86_64-w64-mingw32-gcc.exe -v
[kit] Testing Clang binary: C:\Users\someuser\Apps\msys2\mingw64\bin\clang-cl.exe
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\clang-cl.exe -v
[kit] Testing Clang binary: C:\Users\someuser\Apps\msys2\mingw64\bin\clang.exe
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\clang.exe -v
[kit] Found 0 kits in directory C:\Windows\system32
[kit] Detected GCC compiler: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\i686-w64-mingw32-gcc-4.9.4.exe
[kit] Detected GCC compiler: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\gcc.exe
[kit] Bad Clang binary "C:\Users\someuser\Apps\msys2\mingw64\bin\clang.exe -v" version:12.0.0 output: clang version 12.0.0
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/Users/someuser/Apps/msys2/mingw64/bin

[kit] Detected Clang compiler: C:\Users\someuser\Apps\msys2\mingw64\bin\clang-cl.exe
[kit] Detected GCC compiler: C:\Users\someuser\Apps\msys2\mingw64\bin\x86_64-w64-mingw32-gcc.exe
[kit] Detected GCC compiler: C:\Users\someuser\Apps\msys2\mingw64\bin\gcc.exe
[kit] Detected GCC compiler: C:\Users\someuser\Apps\msys2\mingw64\bin\x86_64-w64-mingw32-gcc-10.3.0.exe
[kit] Bad Clang binary "C:\Users\someuser\Apps\msys2\mingw64\bin\clang.exe -v" version:12.0.0 output: clang version 12.0.0
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/Users/someuser/Apps/msys2/mingw64/bin

[kit] Detected GCC compiler: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\i686-w64-mingw32-gcc.exe
[proc] Executing command: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\mingw32-make.exe -v
[proc] Executing command: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\mingw32-make.exe -v
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\mingw32-make.exe -v
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\mingw32-make.exe -v
[proc] Executing command: C:\Users\someuser\Apps\msys2\mingw64\bin\mingw32-make.exe -v
[proc] Executing command: C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin\mingw32-make.exe -v
[kit] Found 3 kits in directory C:\Users\someuser\Apps\msys2\mingw64\bin
[kit] Found 3 kits in directory C:\Users\someuser\Workspace\toolchain\mingw\i686-4.9.4-posix-dwarf-rt_v5-rev0\mingw32\bin
[kit] Found Kit: GCC 4.9.4 i686-w64-mingw32
[kit] Found Kit: GCC 4.9.4 i686-w64-mingw32
[kit] Found Kit: GCC 4.9.4 i686-w64-mingw32
[kit] Found Kit: GCC 10.3.0 x86_64-w64-mingw32
[kit] Found Kit: GCC 10.3.0 x86_64-w64-mingw32
[kit] Found Kit: GCC 10.3.0 x86_64-w64-mingw32
[kitsController] Saving kits to C:\Users\someuser\AppData\Local\CMakeTools\cmake-tools-kits.json
[kitsController] Saving new kits to C:\Users\someuser\AppData\Local\CMakeTools\cmake-tools-kits.json
[extension] [1085] cmake.selectKit finished (returned false)
[kit] Reading kits file C:\Users\someuser\AppData\Local\CMakeTools\cmake-tools-kits.json
[kit] Successfully loaded 3 kits from C:\Users\someuser\AppData\Local\CMakeTools\cmake-tools-kits.json
[extension] [1740] cmake.editKits started
[extension] Opening text editor for C:\Users\someuser\AppData\Local\CMakeTools\cmake-tools-kits.json
[extension] [1740] cmake.editKits finished (returned {"document":{"uri":{"$mid":1,"fsPath":"c:\\Users\\someuser\\AppData\\Local\\CMakeTools\\cmake-tools-kits.json","_sep":1,"external":"file:///c%3A/Users/someuser/AppData/Local/CMakeTools/cmake-tools-kits.json","path":"/c:/Users/someuser/AppData/Local/CMakeTools/cmake-tools-kits.json","scheme":"file"},"fileName":"c:\\Users\\someuser\\AppData\\Local\\CMakeTools\\cmake-tools-kits.json","isUntitled":false,"languageId":"json","version":1,"isClosed":false,"isDirty":false,"eol":1,"lineCount":32},"selection":{"start":{"line":18,"character":7},"end":{"line":18,"character":21},"active":{"line":18,"character":21},"anchor":{"line":18,"character":7}},"selections":[{"start":{"line":18,"character":7},"end":{"line":18,"character":21},"active":{"line":18,"character":21},"anchor":{"line":18,"character":7}}],"visibleRanges":[[{"line":0,"character":0},{"line":31,"character":1}]],"options":{"tabSize":2,"insertSpaces":true,"cursorStyle":1,"lineNumbers":1},"viewColumn":1})

Developer Tools Log

<!-- Paste the log contents HERE -->

Platform and Versions

  • Operating System: Windows 10
  • CMake Version: 3.20.3 from msys2
  • VSCode Version: 1.56.2
  • CMake Tools Extension Version: 1.7.3
  • Compiler/Toolchain: MSYS2 (using both ming64 and clang toolchains)

Other Notes/Information

This is clang version reported:

$ clang -v
clang version 12.0.0
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/Users/someuser/Apps/msys2/mingw64/bin
@NoMore201
Copy link
Author

Did some debugging, apparently function parseTargetTriple returns undefined here:

for (const key of Object.keys(TriplePossibleLibC)) {
const libcReg = TriplePossibleLibC[key];
if (libcReg.exec(tripleElement) !== null) {
elementToSkip.push(tripleElement);
if (foundLibc === "unknow") {
foundLibc = key;
} else if (foundLibc !== key) {
return undefined;
}

Local variables have the following values:

  • tripleElement: gnu
  • key: glibc
  • foundLibc: mingw

What happens (If i got it correclty) is that w64 string in triple gets matched to regex at key mingw, so foundLibc = mingw.
Later, gnu string in triple gets matched to regex at key glibc, but foundLibc was assigned before so function returns undefined.

@bobbrow
Copy link
Member

bobbrow commented Jun 4, 2021

@lygstate your PR #1337 added support for the target triplets. Is this something you can help fix?

@bobbrow bobbrow added bug a bug in the product Feature: kits labels Jun 4, 2021
@lygstate
Copy link
Contributor

lygstate commented Jun 5, 2021

@lygstate your PR #1337 added support for the target triplets. Is this something you can help fix?

OK easy to fix

@andreeis andreeis added the help wanted we currently are not planning work on this and would like help from the open source community label Jun 22, 2021
lygstate added a commit to lygstate/vscode-cmake-tools that referenced this issue Jun 26, 2021
lygstate added a commit to lygstate/vscode-cmake-tools that referenced this issue Jun 26, 2021
lygstate added a commit to lygstate/vscode-cmake-tools that referenced this issue Jun 26, 2021
lygstate added a commit to lygstate/vscode-cmake-tools that referenced this issue Jun 26, 2021
lygstate added a commit to lygstate/vscode-cmake-tools that referenced this issue Jun 26, 2021
andreeis added a commit that referenced this issue Jul 2, 2021
Fixes #1916

Signed-off-by: Yonggang Luo <[email protected]>

Co-authored-by: Andreea Isac <[email protected]>
@github-actions github-actions bot locked and limited conversation to collaborators Jan 30, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug a bug in the product Feature: kits help wanted we currently are not planning work on this and would like help from the open source community
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants