Skip to content

Unable to build stage3 on Windows: FileNotFound followed by Unable to dump stack trace: InvalidPEMagic #12703

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

Closed
kcbanner opened this issue Aug 31, 2022 · 10 comments · Fixed by #13514
Labels
bug Observed behavior contradicts documented or intended behavior os-windows
Milestone

Comments

@kcbanner
Copy link
Contributor

Zig Version

26e9839

Steps to Reproduce

Within the zig folder:

mkdir build-release
pushd build-release
"c:\Program Files\CMake\bin\cmake.exe" .. -Thost=x64 -G "Visual Studio 16 2019" -A x64 -DCMAKE_PREFIX_PATH=e:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt -DCMAKE_BUILD_TYPE=Release
msbuild -p:Configuration=Release INSTALL.vcxproj
popd

llvm/clang/lld built with MSVC as per instructions on the wiki

Expected Behavior

stage3 builds

Actual Behavior

The failing part of the build:

InitializeBuildStatus:
  Touching "x64\Release\stage3\stage3.tlog\unsuccessfulbuild".
CustomBuild:
  Building stage3
thread 22108 panic : attempt to unwrap error : FileNotFound [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  Unable to dump stack trace: InvalidPEMagic
CUSTOMBUILD : error : zig... [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
CUSTOMBUILD : error : The following command exited with error code 3: [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\build-release\Release\zig2.exe build-exe --stack 33554432 C:\cygwin64\home\kcbanner\kit\zig\src\stage1.zig -lc -cflags -std=c++14 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_S
  OURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Werror=type-limits -Wno-missing-braces -Wno-comment -- C:\cygwin64\home\kcbanner\kit\zig\src\stage1\analyze.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\astgen.cpp C:\cygwin64\h
  ome\kcbanner\kit\zig\src\stage1\bigfloat.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\bigint.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\buffer.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\codegen.cpp C:\cygwin64\home\kcbanner\ki
  t\zig\src\stage1\errmsg.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\error.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\heap.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\ir.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\ir_print
  .cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\mem.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\os.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\parser.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\range_set.cpp C:\cygwin64\home\
  kcbanner\kit\zig\src\stage1\stage1.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\target.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\tokenizer.cpp C:\cygwin64\home\kcbanner\kit\zig\src\stage1\util.cpp C:\cygwin64\home\kcbanner\kit\zig\
  src\stage1\softfloat_ext.cpp -cflags -std=c99 -O3 -- C:\cygwin64\home\kcbanner\kit\zig\src\stage1\parse_f128.c C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\553b54d24d228ed46af11d50869fd1da\softfloat.lib -lc++ C:\cygwin64\home\kcbanner\kit\zi
  g\build-release\zigcpp\zigcpp.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangFrontendTool.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windo
  ws-msvc-release-mt\lib\clangFrontend.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangDriver.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangSerialization.lib E:\dev\llvm+clang+lld-14.0.6-x86_6
  4-windows-msvc-release-mt\lib\clangSema.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangStaticAnalyzerFrontend.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangStaticAnalyzerCheckers.lib E:\dev
  \llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangStaticAnalyzerCore.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangAnalysis.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangASTMa
  tchers.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangAST.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangParse.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangSema.l
  ib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangBasic.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangEdit.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangLex.lib E:\de
  v\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangARCMigrate.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangRewriteFrontend.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangRewri
  te.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangCrossTU.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangIndex.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\clangToolin
  gCore.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\lldMinGW.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\lldELF.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\lldCOFF.lib E:\d
  ev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\lldWasm.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\lldMachO.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\lldCommon.lib E:\dev\llvm+cla
  ng+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMWindowsManifest.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMXRay.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMLibDriver.lib E:\dev\llv
  m+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMDlltoolDriver.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMCoverage.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMLineEditor.lib E:
  \dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMXCoreDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMXCoreCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMX
  CoreDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMXCoreInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMX86TargetMCA.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\li
  b\LLVMX86Disassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMX86AsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMX86CodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc
  -release-mt\lib\LLVMX86Desc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMX86Info.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_6
  4-windows-msvc-release-mt\lib\LLVMWebAssemblyAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyDesc.lib E:\d
  ev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyUtils.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMV
  EDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMVEAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMVECodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-m
  t\lib\LLVMVEDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMVEInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSystemZDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-r
  elease-mt\lib\LLVMSystemZAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSystemZCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSystemZDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86
  _64-windows-msvc-release-mt\lib\LLVMSystemZInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSparcDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSparcAsmParser.lib E:\dev\llvm+c
  lang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSparcCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSparcDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSparcInfo.lib E:\dev
  \llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMRISCVDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMRISCVAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMRIS
  CVCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMRISCVDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMRISCVInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\
  LLVMPowerPCDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMPowerPCAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMPowerPCCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-wi
  ndows-msvc-release-mt\lib\LLVMPowerPCDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMPowerPCInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMNVPTXCodeGen.lib E:\dev\llvm+clang+lld-14.0.
  6-x86_64-windows-msvc-release-mt\lib\LLVMNVPTXDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMNVPTXInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMSP430Disassembler.lib E:\dev\llvm+cl
  ang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMSP430AsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMSP430CodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMSP430Desc.lib
   E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMSP430Info.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMipsDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMM
  ipsAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMipsCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMipsDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\
  lib\LLVMMipsInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMLanaiDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMLanaiCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-ms
  vc-release-mt\lib\LLVMLanaiAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMLanaiDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMLanaiInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-w
  indows-msvc-release-mt\lib\LLVMHexagonDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMHexagonCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMHexagonAsmParser.lib E:\dev\llvm
  +clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMHexagonDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMHexagonInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBPFDisassembler.l
  ib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBPFAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBPFCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBPF
  Desc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBPFInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAVRDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\L
  LVMAVRAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAVRCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAVRDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt
  \lib\LLVMAVRInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMARMDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMARMAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc
  -release-mt\lib\LLVMARMCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMARMDesc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMARMUtils.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-ms
  vc-release-mt\lib\LLVMARMInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUTargetMCA.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-
  x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUDesc.lib E:\dev\llvm+cl
  ang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUUtils.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUInfo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAArch64Disassembler.l
  ib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAArch64AsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAArch64CodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib
  \LLVMAArch64Desc.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAArch64Utils.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAArch64Info.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-rel
  ease-mt\lib\LLVMOrcJIT.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMCJIT.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMJITLink.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-
  mt\lib\LLVMInterpreter.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMExecutionEngine.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMRuntimeDyld.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows
  -msvc-release-mt\lib\LLVMOrcTargetProcess.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMOrcShared.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMDWP.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-wi
  ndows-msvc-release-mt\lib\LLVMSymbolize.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoPDB.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoGSYM.lib E:\dev\llvm+clang+lld-14.0.
  6-x86_64-windows-msvc-release-mt\lib\LLVMOption.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMObjectYAML.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMCA.lib E:\dev\llvm+clang+lld-14.0.6-x8
  6_64-windows-msvc-release-mt\lib\LLVMMCDisassembler.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMLTO.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMPasses.lib E:\dev\llvm+clang+lld-14.0.6-x8
  6_64-windows-msvc-release-mt\lib\LLVMCFGuard.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMCoroutines.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMObjCARCOpts.lib E:\dev\llvm+clang+lld-14.0
  .6-x86_64-windows-msvc-release-mt\lib\LLVMipo.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMVectorize.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMLinker.lib E:\dev\llvm+clang+lld-14.0.6-x8
  6_64-windows-msvc-release-mt\lib\LLVMInstrumentation.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMFrontendOpenMP.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMFrontendOpenACC.lib E:\dev\llv
  m+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMExtensions.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMDWARFLinker.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMGlobalISel.lib E:
  \dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMIRParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAsmPrinter.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoMS
  F.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSelectionDAG.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMCodeGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMIRR
  eader.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAsmParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMInterfaceStub.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\
  LLVMFileCheck.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMFuzzMutate.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMTarget.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\li
  b\LLVMScalarOpts.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMInstCombine.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAggressiveInstCombine.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows
  -msvc-release-mt\lib\LLVMTransformUtils.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBitWriter.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMAnalysis.lib E:\dev\llvm+clang+lld-14.0.6-x86_64
  -windows-msvc-release-mt\lib\LLVMProfileData.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoDWARF.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMObject.lib E:\dev\llvm+clang+lld-14.0.
  6-x86_64-windows-msvc-release-mt\lib\LLVMTextAPI.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMCParser.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMMC.lib E:\dev\llvm+clang+lld-14.0.6-x86_
  64-windows-msvc-release-mt\lib\LLVMDebugInfoCodeView.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBitReader.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMCore.lib E:\dev\llvm+clang+lld-14.0
  .6-x86_64-windows-msvc-release-mt\lib\LLVMRemarks.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBitstreamReader.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMBinaryFormat.lib E:\dev\llvm+cla
  ng+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMTableGen.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMSupport.lib E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib\LLVMDemangle.lib C:\cygwin64\hom
  e\kcbanner\kit\zig\psapi.lib C:\cygwin64\home\kcbanner\kit\zig\shell32.lib C:\cygwin64\home\kcbanner\kit\zig\ole32.lib C:\cygwin64\home\kcbanner\kit\zig\uuid.lib C:\cygwin64\home\kcbanner\kit\zig\advapi32.lib C:\Program Files (x86)\Microsoft
  Visual Studio\2019\Community\DIA SDK\lib\amd64\diaguids.lib --strip -OReleaseFast --cache-dir C:\cygwin64\home\kcbanner\kit\zig\zig-cache --global-cache-dir C:\Users\kcbanner\AppData\Local\zig --name zig -target native-native -mcpu x86_64 --p
  kg-begin build_options C:\cygwin64\home\kcbanner\kit\zig\zig-cache\options\lj-Eg_1tyMhWKGXDcrwaVsLZZD4mlCYpzl6cGUv9XwZJle7t_Sghuk5yvTom1f1b --pkg-end --pkg-begin compiler_rt C:\cygwin64\home\kcbanner\kit\zig\src\empty.zig --pkg-end -I C:\cygw
  in64\home\kcbanner\kit\zig\src -I C:\cygwin64\home\kcbanner\kit\zig\deps\SoftFloat-3e\source\include -I C:\cygwin64\home\kcbanner\kit\zig\deps\SoftFloat-3e-prebuilt -I E:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\include -D ZIG
  _LINK_MODE=Static -L e:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\lib -isystem e:\dev\llvm+clang+lld-14.0.6-x86_64-windows-msvc-release-mt\include -fno-build-id --zig-lib-dir C:\cygwin64\home\kcbanner\kit\zig\lib -fno-lto --ena
  ble-cache
CUSTOMBUILD : error : the following build command failed with exit code 3: [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\b15aa5791736e53e11f43fbbfa18bdb5\build.exe C:\cygwin64\home\kcbanner\kit\zig\build-release\Release\zig2.exe C:\cygwin64\home\kcbanner\kit\zig C:\cygwin64\home\kcbanner\kit\zig\zig-cache C:\Users\k
  cbanner\AppData\Local\zig --zig-lib-dir C:/cygwin64/home/kcbanner/kit/zig/lib --prefix C:/cygwin64/home/kcbanner/kit/zig/build-release/stage3 -Dconfig_h=C:/cygwin64/home/kcbanner/kit/zig/build-release/config.h -Denable-llvm -Denable-stage1 -D
  release -Dstrip -Dskip-install-lib-files=false -Dtarget=native -Dcpu=baseline
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): error MSB8066: Custom build for 'C:\cygwin64\home\kcbanner\kit\zig\build-release\CMakeFiles\c117af414c283891e1c8f0d2ca1a
dec5\stage3.rule' exited with code 1. [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
Done Building Project "C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj" (default targets) -- FAILED.

Done Building Project "C:\cygwin64\home\kcbanner\kit\zig\build-release\ALL_BUILD.vcxproj" (default targets) -- FAILED.

Done Building Project "C:\cygwin64\home\kcbanner\kit\zig\build-release\INSTALL.vcxproj" (default targets) -- FAILED.


Build FAILED.

"C:\cygwin64\home\kcbanner\kit\zig\build-release\INSTALL.vcxproj" (default target) (1) ->
"C:\cygwin64\home\kcbanner\kit\zig\build-release\ALL_BUILD.vcxproj" (default target) (3) ->
"C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj" (default target) (4) ->
(CustomBuild target) ->
  thread 22108 panic : attempt to unwrap error : FileNotFound [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  CUSTOMBUILD : error : zig... [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  CUSTOMBUILD : error : The following command exited with error code 3: [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  CUSTOMBUILD : error : the following build command failed with exit code 3: [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): error MSB8066: Custom build for 'C:\cygwin64\home\kcbanner\kit\zig\build-release\CMakeFiles\c117af414c283891e1c8f0d2ca
1adec5\stage3.rule' exited with code 1. [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]

    0 Warning(s)
    5 Error(s)

Time Elapsed 00:11:07.45
@kcbanner kcbanner added the bug Observed behavior contradicts documented or intended behavior label Aug 31, 2022
@jcmoyer
Copy link
Contributor

jcmoyer commented Aug 31, 2022

I ran into this the other day. Note that the build command references some files that definitely don't exist, e.g.

C:\cygwin64\home\kcbanner\kit\zig\shell32.lib
C:\cygwin64\home\kcbanner\kit\zig\ole32.lib

Normally these are located somewhere under C:\Program Files (x86)\Windows Kits\10\Lib\<version>. Copying these files to the zig source directory gets the build process a little further along, but it still failed for me because of some multiply defined symbols.

I'm not sure what the cause of this is since I haven't bothered building a debug version of LLVM, and I've had other strange problems with MSVC builds (like #12664) so I just switched to zig-bootstrap. It's honestly a much smoother experience and seems to be the recommended way going forward.

@kcbanner
Copy link
Contributor Author

Ah, good catch, I had missed those obviously wrong lib paths. Maybe something broke in the stage3 cmake stuff?

For completeness I tried building with MSYS2 using clang/clang++, but this time it fails to build zig2.exe:

[2/4] Linking CXX executable zig2.exe
FAILED: zig2.exe
cmd.exe /C "cd . && E:\dev\msys64\mingw64\bin\clang++.exe -g -Wl,--stack,16777216 zig2.o CMakeFiles/zig2.dir/src/stage1/empty.cpp.obj -o zig2.exe -Wl,--out-implib,zigcpp\libzig2.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -L/lib zigcpp/libzigstage1.a  -lntdll  zigcpp/libopt_c_util.a  zigcpp/libembedded_softfloat.a  zigcpp/libzigcpp.a  -lclang-cpp  -Wl,-Bstatic  -llldMinGW  -llldELF  -llldCOFF  -llldWasm  -llldMachO  -llldCommon  -Wl,-Bdynamic  -lLLVM-14  -lpsapi  -lshell32  -lole32  -luuid  -ladvapi32  -lpthread  -lz  -lxml2  -lversion  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
E:/dev/msys64/mingw64/bin/ld: zig2.o:zig2:(.text+0x136): undefined reference to `__stack_chk_fail'
E:/dev/msys64/mingw64/bin/ld: zig2.o:zig2:(.text+0x6c6): undefined reference to `__stack_chk_fail'
E:/dev/msys64/mingw64/bin/ld: zig2.o:zig2:(.text+0x796): undefined reference to `__stack_chk_fail'
E:/dev/msys64/mingw64/bin/ld: zig2.o:zig2:(.text+0x866): undefined reference to `__stack_chk_fail'
E:/dev/msys64/mingw64/bin/ld: zig2.o:zig2:(.text+0x936): undefined reference to `__stack_chk_fail'
E:/dev/msys64/mingw64/bin/ld: zig2.o:zig2:(.text+0xa06): more undefined references to `__stack_chk_fail' follow
E:/dev/msys64/mingw64/bin/ld: zig2.o:zig2:(.rdata$.refptr.__stack_chk_guard[.refptr.__stack_chk_guard]+0x0): undefined reference to `__stack_chk_guard'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

@kcbanner
Copy link
Contributor Author

kcbanner commented Sep 2, 2022

I built a debug LLVM (MTd) and attempting to build Zig debug results in this:

CustomBuild:
  Building stage3
thread 7000 panic : attempt to unwrap error : FileNotFound [C:\cygwin64\home\kcbanner\kit\zig\build-debug\stage3.vcxproj]
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c4d7e43e in ??? (???)
  ???:?:?: 0x7ff6c4b910af in ??? (???)
  ???:?:?: 0x7ff6c49b251b in ??? (???)
  ???:?:?: 0x7ff6c4997d3c in ??? (???)
  ???:?:?: 0x7ff6c476a11f in ??? (???)
  ???:?:?: 0x7ff6c4458135 in ??? (???)
  ???:?:?: 0x7ff6c4454415 in ??? (???)
  ???:?:?: 0x7ff6c44558cb in ??? (???)
  ???:?:?: 0x7ff6c4441026 in ??? (???)
  ???:?:?: 0x7ff6c45a5a69 in ??? (???)
  ???:?:?: 0x7ff6c45a2c40 in ??? (???)
  ???:?:?: 0x7ff6c45a03b5 in ??? (???)
  ???:?:?: 0x7ff6c4539c69 in ??? (???)
  ???:?:?: 0x7ff6c452dcd0 in ??? (???)
  ???:?:?: 0x7ff6c44c6783 in ??? (???)
  ???:?:?: 0x7ff6c44256ad in ??? (???)
  ???:?:?: 0x7ff6c43d496f in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
  ???:?:?: 0x7ff6c49af64a in ??? (???)
CUSTOMBUILD : error : zig... [C:\cygwin64\home\kcbanner\kit\zig\build-debug\stage3.vcxproj]
CUSTOMBUILD : error : The following command exited with error code 3: [C:\cygwin64\home\kcbanner\kit\zig\build-debug\stage3.vcxproj]

I imagine the stack trace breakage is related to the InvalidPEMagic from the release build. Although I don't see this error here.

Note for anyone else trying this, this patch is required as /O2 is incompatible with /RTC1. I'll PR this if I can figure out the build errors:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7a278ad3b..f49bc020f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -309,8 +309,14 @@ set(EMBEDDED_SOFTFLOAT_SOURCES
 )
 add_library(embedded_softfloat STATIC ${EMBEDDED_SOFTFLOAT_SOURCES})
 if(MSVC)
+    set(SOFTFLOAT_CFLAGS "/w")
+
+    if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+        set(SOFTFLOAT_CFLAGS "${SOFTFLOAT_CFLAGS} /O2")
+    endif()
+
     set_target_properties(embedded_softfloat PROPERTIES
-        COMPILE_FLAGS "/w /O2"
+        COMPILE_FLAGS ${SOFTFLOAT_CFLAGS}
     )
 else()
     set_target_properties(embedded_softfloat PROPERTIES
@@ -871,7 +877,9 @@ else()
 endif()

 if(MSVC)
-  set(OPTIMIZED_C_FLAGS "/O2")
+  if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+    set(OPTIMIZED_C_FLAGS "/O2")
+  endif()
 else(MSVC)
   set(OPTIMIZED_C_FLAGS "-std=c99 -O3")
 endif(MSVC)

@kcbanner
Copy link
Contributor Author

kcbanner commented Sep 4, 2022

Narrowed down the unknown stack trace when building stage3 with the debugger:

debug.zig#886       try di.debug_data.pdb.parseDbiStream(); (readCoffDebugInfo) Panics here
debug.zig#1355     obj_di.* = try readCoffDebugInfo(self.allocator, coff_file); (DebugInfo.lookupModuleWin32)
debug.zig#1221     return self.lookupModuleWin32(address); (DebugInfo.getModuleForAddress)

@kcbanner
Copy link
Contributor Author

kcbanner commented Sep 6, 2022

I made a patch that fixes up how system libs are passed through, and I can get a bit further:

diff --git a/build.zig b/build.zig
index c8e757dc4..7a614588e 100644
--- a/build.zig
+++ b/build.zig
@@ -555,6 +555,7 @@ fn addCmakeCfgOptionsToExe(
     addCMakeLibraryList(exe, cfg.clang_libraries);
     addCMakeLibraryList(exe, cfg.lld_libraries);
     addCMakeLibraryList(exe, cfg.llvm_libraries);
+    addCMakeSystemLibraryList(exe, cfg.llvm_system_libraries);
 
     if (use_zig_libcxx) {
         exe.linkLibCpp();
@@ -674,6 +675,23 @@ fn addCMakeLibraryList(exe: *std.build.LibExeObjStep, list: []const u8) void {
     }
 }
 
+fn addCMakeSystemLibraryList(exe: *std.build.LibExeObjStep, list: []const u8) void {
+    var it = mem.tokenize(u8, list, ";");
+    while (it.next()) |lib| {
+        var start_offset: usize = 0;
+        var end_offset: usize = 0;
+        if (mem.startsWith(u8, lib, "-l")) {
+            start_offset = "-l".len;
+        }
+
+        if (exe.target.isWindows() and mem.endsWith(u8, lib, ".lib")) {
+            end_offset = ".lib".len;
+        }
+
+        exe.linkSystemLibrary(lib[start_offset..lib.len - end_offset]);
+    }
+}
+
 const CMakeConfig = struct {
     llvm_linkage: std.build.LibExeObjStep.Linkage,
     cmake_binary_dir: []const u8,
@@ -683,6 +701,7 @@ const CMakeConfig = struct {
     lld_libraries: []const u8,
     clang_libraries: []const u8,
     llvm_libraries: []const u8,
+    llvm_system_libraries: []const u8,
     dia_guids_lib: []const u8,
 };
 
@@ -744,6 +763,7 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {
         .lld_libraries = undefined,
         .clang_libraries = undefined,
         .llvm_libraries = undefined,
+        .llvm_system_libraries = undefined,
         .dia_guids_lib = undefined,
     };
 
@@ -776,6 +796,10 @@ fn parseConfigH(b: *Builder, config_h_text: []const u8) ?CMakeConfig {
             .prefix = "#define ZIG_LLVM_LIBRARIES ",
             .field = "llvm_libraries",
         },
+        .{
+            .prefix = "#define ZIG_LLVM_SYSTEM_LIBRARIES ",
+            .field = "llvm_system_libraries",
+        },
         .{
             .prefix = "#define ZIG_DIA_GUIDS_LIB ",
             .field = "dia_guids_lib",
diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake
index d55abd2dc..a8c556466 100644
--- a/cmake/Findllvm.cmake
+++ b/cmake/Findllvm.cmake
@@ -5,6 +5,7 @@
 # LLVM_FOUND
 # LLVM_INCLUDE_DIRS
 # LLVM_LIBRARIES
+# LLVM_SYSTEM_LIBRARIES
 # LLVM_LIBDIRS
 # LLVM_LINK_MODE
 
@@ -172,9 +173,9 @@ if(ZIG_USE_LLVM_CONFIG)
         OUTPUT_STRIP_TRAILING_WHITESPACE)
     string(REPLACE " " ";" LLVM_STATIC_SYSTEM_LIBS "${LLVM_STATIC_SYSTEM_LIBS_SPACES}")
 
-    set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS})
+    set(LLVM_SYSTEM_LIBRARIES ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS})
   else()
-    set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
+    set(LLVM_SYSTEM_LIBRARIES ${LLVM_SYSTEM_LIBS})
   endif()
 
   execute_process(
@@ -366,7 +367,11 @@ else()
   find_path(LLVM_INCLUDE_DIRS NAMES llvm/IR/IRBuilder.h)
 endif()
 
+if(NOT LLVM_SYSTEM_LIBRARIES)
+    set(LLVM_SYSTEM_LIBRARIES "")
+endif()
+
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(llvm DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS)
 
-mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_LIBDIRS)
+mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_SYSTEM_LIBRARIES LLVM_LIBDIRS)
diff --git a/src/stage1/config.h.in b/src/stage1/config.h.in
index 2be083999..fe8b35d90 100644
--- a/src/stage1/config.h.in
+++ b/src/stage1/config.h.in
@@ -23,6 +23,7 @@
 #define ZIG_LLD_LIBRARIES "@LLD_LIBRARIES@"
 #define ZIG_CLANG_LIBRARIES "@CLANG_LIBRARIES@"
 #define ZIG_LLVM_LIBRARIES "@LLVM_LIBRARIES@"
+#define ZIG_LLVM_SYSTEM_LIBRARIES "@LLVM_SYSTEM_LIBRARIES@"
 #define ZIG_DIA_GUIDS_LIB "@ZIG_DIA_GUIDS_LIB_ESCAPED@"
 
 #endif

This gets a bit further, where linking fails with:

lld-link: error: duplicate symbol: atexit
>>> defined at C:\Users\kcbanner\AppData\Local\zig\o\5889591dc3f3260dc8b6de5cf24c522a\crt2.obj
>>> defined at LIBCMTD.lib(utility.obj)
error: FileNotFound
C:\cygwin64\home\kcbanner\kit\zig\lib\std\os\windows.zig:128:35: 0x7ff7f072f536 in OpenFile (build.exe.obj)
        .OBJECT_NAME_NOT_FOUND => return error.FileNotFound,
                                  ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\fs.zig:1159:23: 0x7ff7f0732af3 in openFileW (build.exe.obj)
            .handle = try w.OpenFile(sub_path_w, .{
                      ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\fs.zig:1031:13: 0x7ff7f070137e in openFile (build.exe.obj)
            return self.openFileW(path_w.span(), flags);
            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\fs.zig:2250:24: 0x7ff7f0797beb in updateFile (build.exe.obj)
        var src_file = try source_dir.openFile(source_path, .{});
                       ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:1088:29: 0x7ff7f079fb1d in updateFile (build.exe.obj)
        const prev_status = try fs.Dir.updateFile(cwd, source_path, cwd, dest_path, .{});
                            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:3420:9: 0x7ff7f07a0026 in make (build.exe.obj)
        try builder.updateFile(self.artifact.getOutputSource().getPath(builder), full_dest_path);
        ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:3655:9: 0x7ff7f06ec879 in make (build.exe.obj)
        try self.makeFn(self);
        ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:508:9: 0x7ff7f06cc375 in makeOneStep (build.exe.obj)
        try s.make();
        ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:502:17: 0x7ff7f06cc2f5 in makeOneStep (build.exe.obj)
                return err;
                ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:463:13: 0x7ff7f06cc051 in make (build.exe.obj)
            try self.makeOneStep(s);
            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\build_runner.zig:213:21: 0x7ff7f06cee8a in main (build.exe.obj)
            else => return err,
                    ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\child_process.zig:1072:5: 0x7ff7f0783871 in windowsCreateProcess (build.exe.obj)
    return windows.CreateProcessW(
    ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\os\windows.zig:1599:32: 0x7ff7f078396d in CreateProcessW (build.exe.obj)
            .FILE_NOT_FOUND => return error.FileNotFound,
                               ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\child_process.zig:1072:5: 0x7ff7f0783871 in windowsCreateProcess (build.exe.obj)
    return windows.CreateProcessW(
    ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\os\windows.zig:1599:32: 0x7ff7f078396d in CreateProcessW (build.exe.obj)
            .FILE_NOT_FOUND => return error.FileNotFound,
                               ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\child_process.zig:1072:5: 0x7ff7f0783871 in windowsCreateProcess (build.exe.obj)
    return windows.CreateProcessW(
    ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\os\windows.zig:1599:32: 0x7ff7f078396d in CreateProcessW (build.exe.obj)
            .FILE_NOT_FOUND => return error.FileNotFound,
                               ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\child_process.zig:1072:5: 0x7ff7f0783871 in windowsCreateProcess (build.exe.obj)
    return windows.CreateProcessW(
    ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\child_process.zig:1009:17: 0x7ff7f074e979 in spawnWindows (build.exe.obj)
                return no_path_err; // return the original error
                ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\child_process.zig:141:13: 0x7ff7f07217a8 in spawn (build.exe.obj)
            return self.spawnWindows();
            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:1189:9: 0x7ff7f06dbc3c in execAllowFail (build.exe.obj)
        try child.spawn();
        ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:1285:24: 0x7ff7f07950b8 in execPkgConfigList (build.exe.obj)
        const stdout = try self.execAllowFail(&[_][]const u8{ "pkg-config", "--list-all" }, out_code, .Ignore);
                       ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:1320:13: 0x7ff7f0794f32 in getPkgConfigList (build.exe.obj)
            return result;
            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:2080:26: 0x7ff7f07954a2 in runPkgConfig (build.exe.obj)
            const pkgs = try self.builder.getPkgConfigList();
                         ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:1302:13: 0x7ff7f0794c98 in getPkgConfigList (build.exe.obj)
            return res;
            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:2080:26: 0x7ff7f07954a2 in runPkgConfig (build.exe.obj)
            const pkgs = try self.builder.getPkgConfigList();
                         ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:1302:13: 0x7ff7f0794c98 in getPkgConfigList (build.exe.obj)
            return res;
            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:2080:26: 0x7ff7f07954a2 in runPkgConfig (build.exe.obj)
            const pkgs = try self.builder.getPkgConfigList();
                         ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:1302:13: 0x7ff7f0794c98 in getPkgConfigList (build.exe.obj)
            return res;
            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:2080:26: 0x7ff7f07954a2 in runPkgConfig (build.exe.obj)
            const pkgs = try self.builder.getPkgConfigList();
                         ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:1302:13: 0x7ff7f0794c98 in getPkgConfigList (build.exe.obj)
            return res;
            ^
C:\cygwin64\home\kcbanner\kit\zig\lib\std\build.zig:2080:26: 0x7ff7f07954a2 in runPkgConfig (build.exe.obj)
            const pkgs = try self.builder.getPkgConfigList();

@kcbanner
Copy link
Contributor Author

Update, this is still happening on latest master with llvm 15.0.2 - with the same patch above I get the atexit issue. Without the patch, I get CUSTOMBUILD : warning : FileNotFound: C:\cygwin64\home\kcbanner\kit\zig\psapi.lib [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]

@andrewrk andrewrk modified the milestones: 0.10.0, 0.10.1 Oct 31, 2022
@kcbanner
Copy link
Contributor Author

kcbanner commented Nov 2, 2022

Updated for llvm 15.0.3: Still have the atexit issue, more info on that:

lld-link : error : duplicate symbol: atexit [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at C:\Users\kcbanner\AppData\Local\zig\o\0695c4bf2cb5e281f94d3985a406902e\crt2.obj
  >>> defined at LIBCMT.lib(utility.obj)

The strange thing is that if I re-run the build after this, it doesn't notice that zig.exe wasn't built and tries to run the install step.

I had to add this:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index cb2e2e2d6..5c0c38fbf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -170,6 +170,7 @@ foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES})
     string(TOUPPER ${CONFIG_TYPE} CONFIG_TYPE)
     set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPE} ${ZIG_CPP_LIB_DIR})
     set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPE} ${ZIG_CPP_LIB_DIR})
+    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPE} ${CMAKE_BINARY_DIR})
 endforeach(CONFIG_TYPE CMAKE_CONFIGURATION_TYPES)

 include_directories(${LLVM_INCLUDE_DIRS})

To get the install working (otherwise zig2.exe ends up in Release/ instead of the root dir). Once that is running it ends up failing reading a file, with this trace from procmon:

1:38:25.0602944 AM build.exe 23632 CreateFile C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o \a1c5164b429f3bbdb6a216ff950d6b35\zig.exe NAME NOT FOUND Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, Delete, AllocationSize: n/a

I'm assuming this is the missing zig.exe that wasn't linked due to the atexit failure. It's seems like a bug that the build didn't try to rebuild this since it was missing. A zig.exe.obj does exist in that cache directory.

@kcbanner
Copy link
Contributor Author

kcbanner commented Nov 2, 2022

I think the issue may be caused by LLVM being built by MSVC, but the zig target defaulting to gnu. This is why it links crt2.obj (mingw) but LIBCMT.lib comes from a dependency from llvm:

Dump of file E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMTarget.lib

File Type: LIBRARY

   Linker Directives
   -----------------
   /FAILIFMISMATCH:_CRT_STDIO_ISO_WIDE_SPECIFIERS=0
   /FAILIFMISMATCH:_MSC_VER=1900
   /FAILIFMISMATCH:_ITERATOR_DEBUG_LEVEL=0
   /FAILIFMISMATCH:RuntimeLibrary=MT_StaticRelease
   /DEFAULTLIB:libcpmt
   /FAILIFMISMATCH:LLVM_ENABLE_ABI_BREAKING_CHECKS=0
   /DEFAULTLIB:LIBCMT
   /DEFAULTLIB:OLDNAMES

@kcbanner
Copy link
Contributor Author

kcbanner commented Nov 2, 2022

For completeness, here is the --verbose-link output with the failing command:

lld-link -ERRORLIMIT:0 -NOLOGO -STACK:33554432 -MACHINE:X64 -INCLUDE:_tls_index -OUT:C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\fd3eb698cd22422f5686ad281d1981cb\zig.exe -IMPLIB:C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\fd3eb698cd22422f5686ad281d1981cb\zig.lib -LIBPATH:E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib -LIBPATH:e:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\e69a386bd8f8b64ab67b70d5991a50da\softfloat.lib C:\cygwin64\home\kcbanner\kit\zig\build-release\zigcpp\zigcpp.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangFrontendTool.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangFrontend.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangDriver.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangSerialization.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangSema.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangStaticAnalyzerFrontend.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangStaticAnalyzerCheckers.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangStaticAnalyzerCore.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangAnalysis.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangASTMatchers.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangAST.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangParse.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangSema.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangBasic.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangEdit.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangLex.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangARCMigrate.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangRewriteFrontend.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangRewrite.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangCrossTU.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangIndex.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangToolingCore.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangExtractAPI.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\clangSupport.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\lldMinGW.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\lldELF.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\lldCOFF.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\lldWasm.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\lldMachO.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\lldCommon.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMWindowsManifest.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMWindowsDriver.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMXRay.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLibDriver.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDlltoolDriver.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMCoverage.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLineEditor.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMXCoreDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMXCoreCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMXCoreDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMXCoreInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMX86TargetMCA.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMX86Disassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMX86AsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMX86CodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMX86Desc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMX86Info.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyUtils.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMWebAssemblyInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMVEDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMVEAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMVECodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMVEDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMVEInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSystemZDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSystemZAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSystemZCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSystemZDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSystemZInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSparcDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSparcAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSparcCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSparcDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSparcInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMRISCVDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMRISCVAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMRISCVCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMRISCVDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMRISCVInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMPowerPCDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMPowerPCAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMPowerPCCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMPowerPCDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMPowerPCInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMNVPTXCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMNVPTXDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMNVPTXInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMSP430Disassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMSP430AsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMSP430CodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMSP430Desc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMSP430Info.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMipsDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMipsAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMipsCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMipsDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMipsInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLanaiDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLanaiCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLanaiAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLanaiDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLanaiInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMHexagonDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMHexagonCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMHexagonAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMHexagonDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMHexagonInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBPFDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBPFAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBPFCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBPFDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBPFInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAVRDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAVRAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAVRCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAVRDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAVRInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMARMDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMARMAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMARMCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMARMDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMARMUtils.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMARMInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUTargetMCA.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUDesc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUUtils.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAMDGPUInfo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAArch64Disassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAArch64AsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAArch64CodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAArch64Desc.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAArch64Utils.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAArch64Info.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMOrcJIT.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMCJIT.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMJITLink.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMInterpreter.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMExecutionEngine.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMRuntimeDyld.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMOrcTargetProcess.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMOrcShared.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDWP.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoGSYM.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMOption.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMObjectYAML.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMObjCopy.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMCA.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMCDisassembler.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLTO.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMPasses.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMCFGuard.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMCoroutines.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMObjCARCOpts.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMipo.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMVectorize.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMLinker.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMInstrumentation.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMFrontendOpenMP.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMFrontendOpenACC.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMExtensions.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDWARFLinker.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMGlobalISel.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMIRParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAsmPrinter.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSelectionDAG.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMCodeGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMIRReader.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAsmParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMInterfaceStub.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMFileCheck.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMFuzzMutate.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMTarget.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMScalarOpts.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMInstCombine.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAggressiveInstCombine.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMTransformUtils.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBitWriter.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMAnalysis.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMProfileData.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSymbolize.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoPDB.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoMSF.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoDWARF.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMObject.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMTextAPI.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMCParser.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMMC.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDebugInfoCodeView.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBitReader.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMFuzzerCLI.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMCore.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMRemarks.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBitstreamReader.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMBinaryFormat.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMTableGen.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMSupport.lib E:\dev\llvm\llvm+clang+lld-15.0.3-x86_64-windows-msvc-release-mt\lib\LLVMDemangle.lib C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\DIA SDK\lib\amd64\diaguids.lib C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\e0629e6ff71c73a8ed87b90c3fff7983\analyze.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\365b043a7ee5b85cccb374a80df89a37\astgen.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\336e26640f2f651738684e9e5d6cc3e6\bigfloat.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\b960be62c4048afd775e236dea984208\bigint.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\e5f7860a7ac77533d8aeefdcf2a0ebec\buffer.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\e507b2cce88f33c8d9cc361ed9ed22a7\codegen.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\b23de21a35785c180aa503d5b98f2849\errmsg.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\e36d156585c6d23f2d911daf15d11fa8\error.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\22fc9197d807d27afd874b460255432f\heap.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\7d23f6eff801d81ddf107181d86bb2a0\ir.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\c36b03374cea4acc51f80deb0cc67526\ir_print.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\480696dfdce19ad9699c425ceea1c4fa\mem.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\f900841ed3fe32f838950cba057203df\os.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\790e7694d9a5cfcea9b2e3fbf5a8992c\parser.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\feeaf2db82c0be6d3a289348a9988194\range_set.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\8b3ddaa32f8e875cd5d9212722e3d16e\stage1.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\cc7405d841dc6868141c370588b896e5\target.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\07e27f4a7bd709da1269320a4e4ab429\tokenizer.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\04d971eafe0e49023bd2196d252d684e\util.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\c30c0d434ddaa41e242999962fa5e088\softfloat_ext.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\321a8cb364f125f06877f3727dcb3a4b\parse_f128.obj C:\cygwin64\home\kcbanner\kit\zig\zig-cache\o\fd3eb698cd22422f5686ad281d1981cb\zig.exe.obj -SUBSYSTEM:console -lldmingw -ALTERNATENAME:__image_base__=__ImageBase C:\Users\kcbanner\AppData\Local\zig\o\0695c4bf2cb5e281f94d3985a406902e\crt2.obj C:\Users\kcbanner\AppData\Local\zig\o\ea2a03907bb56c12fac8a7877c08ed57\mingw32.lib C:\Users\kcbanner\AppData\Local\zig\o\9f9fcb14b704d9ed907629df092882c3\mingwex.lib C:\Users\kcbanner\AppData\Local\zig\o\efa89daff2e4bd1749bc9ec9afe3c583\msvcrt-os.lib C:\Users\kcbanner\AppData\Local\zig\o\104d0117e43944f95f65feed3545f2e7\c++abi.lib C:\Users\kcbanner\AppData\Local\zig\o\bf880183e1eb2c02339714df43b04ecb\c++.lib C:\Users\kcbanner\AppData\Local\zig\o\c28b8780eefd95e8ffc79660533181d1\unwind.lib C:\Users\kcbanner\AppData\Local\zig\o\a78d3037088b593e018f2c20d3f9fff3\compiler_rt.lib C:\Users\kcbanner\AppData\Local\zig\o\77cc2a330df340978b8bba2455a15956\psapi.lib C:\Users\kcbanner\AppData\Local\zig\o\97131b72e1c5d9fb59844d7e2191ffc8\shell32.lib C:\Users\kcbanner\AppData\Local\zig\o\fab885eb4e8f5b1404991a87bcf7059a\ole32.lib C:\Users\kcbanner\AppData\Local\zig\o\8f3ee3505a8d41e516a1c954878f7ba8\uuid.lib C:\Users\kcbanner\AppData\Local\zig\o\dfef4f484918bf1bd21135cd5eed06c1\advapi32.lib C:\Users\kcbanner\AppData\Local\zig\o\44a44c46b475a93aeb9b9478536c01d9\kernel32.lib C:\Users\kcbanner\AppData\Local\zig\o\ebbdcc544c420154cad22af562e9e87d\msvcrt.lib C:\Users\kcbanner\AppData\Local\zig\o\14de2b49253c7925a32adbda6ed8e447\ntdll.lib C:\Users\kcbanner\AppData\Local\zig\o\c486a648b86087f070a356f824a49def\user32.lib
lld-link: error: duplicate symbol: atexit
>>> defined at C:\Users\kcbanner\AppData\Local\zig\o\0695c4bf2cb5e281f94d3985a406902e\crt2.obj
>>> defined at LIBCMT.lib(utility.obj)

@kcbanner
Copy link
Contributor Author

kcbanner commented Nov 5, 2022

I believe the atexit duplicate symbol error is caused by conflicting libc, so I tried building with -DZIG_TARGET_TRIPLE=x86_64-windows-msvc instead.

I ran into some compile errors with this, within libcxxabi:

CustomBuild:
  Building stage3
  error(compilation): clang failed with stderr: zig2: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
zig2 : warning : argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_aux_runtime.cpp:14:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\typeinfo:76:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h(121,13): error G23DB1848: target of using declaration conflicts with declaration already in scope [C:\cygwin64\home\kcbanne
r\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h:69:7: note: target of using declaration
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\include\cxxabi.h:30:27: note: conflicting declaration

  error(compilation): clang failed with stderr: zig2: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
zig2 : warning : argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_new_delete.cpp(34,36): error G1A4676F8: no member named 'get_new_handler' in namespace 'std' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_new_delete.cpp(154,36): error G1A4676F8: no member named 'get_new_handler' in namespace 'std' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]

  error(compilation): clang failed with stderr: zig2: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
zig2 : warning : argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(17,12): error GBBEA2599: redefinition of '~exception' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:88:13: note: previous definition is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(21,24): warning G0D31C4A9: exception specification in declaration does not match previous declaration [-Wmicrosoft-exception-spec] [C:\cygwin64\home\kcbanner\kit\zig\b
uild-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:93:36: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(21,24): error GBBEA2599: redefinition of 'what' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:93:36: note: previous definition is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(28,16): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:103:7: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(28,16): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(32,28): error G33378AB6: out-of-line definition of 'what' does not match any declaration in 'std::bad_exception' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage
3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(40,12): error GBBEA2599: redefinition of 'bad_alloc' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:119:5: note: previous definition is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(44,12): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:114:7: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(44,12): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(49,12): error G33378AB6: out-of-line definition of 'what' does not match any declaration in 'std::bad_alloc' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vc
xproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(56,23): error GBBEA2599: redefinition of 'bad_array_new_length' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:139:5: note: previous definition is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(56,23): error G7E39DB43: constructor for 'std::bad_array_new_length' must explicitly initialize the base class 'std::bad_alloc' which does not have a default construct
or [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:114:7: note: 'std::bad_alloc' declared here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(60,23): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_exception.h:134:7: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(60,23): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp(65,23): error G33378AB6: out-of-line definition of 'what' does not match any declaration in 'std::bad_array_new_length' [C:\cygwin64\home\kcbanner\kit\zig\build-releas
e\stage3.vcxproj]

  error(compilation): clang failed with stderr: zig2: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
zig2 : warning : argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp:15:
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/refstring.h(84,1): error G30564CF7: use of undeclared identifier '__libcpp_refstring' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/refstring.h(96,1): error G30564CF7: use of undeclared identifier '__libcpp_refstring' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/refstring.h(96,46): error G58EA42A4: unknown type name '__libcpp_refstring' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/refstring.h(104,1): error G58EA42A4: unknown type name '__libcpp_refstring' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/refstring.h(104,21): error G30564CF7: use of undeclared identifier '__libcpp_refstring' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/refstring.h(104,51): error G58EA42A4: unknown type name '__libcpp_refstring' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/refstring.h(121,1): error G30564CF7: use of undeclared identifier '__libcpp_refstring' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/refstring.h(131,6): error G30564CF7: use of undeclared identifier '__libcpp_refstring' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(17,27): error G1A4676F8: no member named '__libcpp_refstring' in namespace 'std' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(22,14): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\stdexcept:77:29: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(22,14): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(25,14): error G33378AB6: out-of-line definition of 'what' does not match any declaration in 'std::logic_error' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.
vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(27,12): error G30564CF7: use of undeclared identifier '__imp_' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(30,16): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\stdexcept:100:29: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(30,16): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(33,16): error G33378AB6: out-of-line definition of 'what' does not match any declaration in 'std::runtime_error' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage
3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(35,12): error G30564CF7: use of undeclared identifier '__imp_' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(38,15): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\stdexcept:123:29: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(38,15): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(39,19): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\stdexcept:136:29: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(39,19): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(40,15): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\stdexcept:149:29: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(40,15): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(41,15): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\stdexcept:161:29: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(41,15): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp(43,14): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-except
ion-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\stdexcept:174:29: note: previous declaration is here
CUSTOMBUILD : fatal error : too many errors emitted, stopping now [-ferror-limit=] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]

  error(compilation): clang failed with stderr: zig2: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
zig2 : warning : argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(16,12): error G27060440: cannot define or redeclare '~type_info' here because namespace 'std' does not enclose namespace 'type_info' [C:\cygwin64\home\kcbanner\kit\zig\
build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(22,11): error GBBEA2599: redefinition of 'bad_cast' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h:135:5: note: previous definition is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(26,11): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-excepti
on-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h:130:7: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(26,11): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(31,11): error G33378AB6: out-of-line definition of 'what' does not match any declaration in 'std::bad_cast' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxp
roj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(38,13): error GBBEA2599: redefinition of 'bad_typeid' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h:158:5: note: previous definition is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(42,13): warning G1C526DB9: function previously declared with an implicit exception specification redeclared with an explicit exception specification [-Wimplicit-excepti
on-spec-mismatch] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h:153:7: note: previous declaration is here
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(42,13): error GE2420B1F: definition of implicitly declared destructor [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp(47,13): error G33378AB6: out-of-line definition of 'what' does not match any declaration in 'std::bad_typeid' [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vc
xproj]

  error(compilation): clang failed with stderr: zig2: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
zig2 : warning : argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_handlers.cpp:19:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/private_typeinfo.h:14:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\typeinfo:76:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h(121,13): error G23DB1848: target of using declaration conflicts with declaration already in scope [C:\cygwin64\home\kcbanne
r\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h:69:7: note: target of using declaration
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\include\cxxabi.h:30:27: note: conflicting declaration
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_handlers.cpp:19:
C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/private_typeinfo.h(19,53): error G3662B220: base class has incomplete type [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\include\cxxabi.h:30:27: note: forward declaration of 'std::type_info'

  error(compilation): clang failed with stderr: zig2: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
zig2 : warning : argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_exception.cpp:20:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/atomic_support.h:13:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\memory:853:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\__memory/compressed_pair.h:16:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\tuple:226:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\typeinfo:76:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h(121,13): error G23DB1848: target of using declaration conflicts with declaration already in scope [C:\cygwin64\home\kcbanne
r\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h:69:7: note: target of using declaration
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\include\cxxabi.h:30:27: note: conflicting declaration

  error(compilation): clang failed with stderr: zig2: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
zig2 : warning : argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument] [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_guard.cpp:15:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_guard_impl.h:47:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src\include/atomic_support.h:13:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\memory:853:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\__memory/compressed_pair.h:16:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\tuple:226:
  In file included from C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\include\typeinfo:76:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h(121,13): error G23DB1848: target of using declaration conflicts with declaration already in scope [C:\cygwin64\home\kcbanne
r\kit\zig\build-release\stage3.vcxproj]
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime_typeinfo.h:69:7: note: target of using declaration
  C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\include\cxxabi.h:30:27: note: conflicting declaration

  error(compilation): C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_aux_runtime.cpp:1:1: unable to build C object: clang exited with code 1
  error(compilation): C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_new_delete.cpp:1:1: unable to build C object: clang exited with code 1
  error(compilation): C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_exception.cpp:1:1: unable to build C object: clang exited with code 1
  error(compilation): C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_stdexcept.cpp:1:1: unable to build C object: clang exited with code 1
  error(compilation): C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/stdlib_typeinfo.cpp:1:1: unable to build C object: clang exited with code 1
  error(compilation): C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_handlers.cpp:1:1: unable to build C object: clang exited with code 1
  error(compilation): C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_exception.cpp:1:1: unable to build C object: clang exited with code 1
  error(compilation): C:\cygwin64\home\kcbanner\kit\zig\lib\libcxxabi\src/cxa_guard.cpp:1:1: unable to build C object: clang exited with code 1

It seems like using libcxxabi to target the MSVC ABI isn't a supported use case. There are a few FIXME in the llvm codebase around this, and also some issues with new.h and get_new_handler:

It seems that libcxxabi is meant for Itanium conventions and not x86_64. So I tried just not building/linking libcxxabi, since oin the main llvm-project for windows, this doesn't seem to be a thing:

From llvm-project/libcxx/cmake/Modules/HandleLibCXXABI.cmake:

# Link against a system-provided vcruntime
# FIXME: Figure out how to configure the ABI library on Windows.
elseif ("${LIBCXX_CXX_ABI}" STREQUAL "vcruntime")
  add_library(libcxx-abi-headers INTERFACE)
  add_library(libcxx-abi-shared INTERFACE)
  add_library(libcxx-abi-static INTERFACE)

My thinking was maybe the msvc runtime would fill in the blanks there:

diff --git a/src/Compilation.zig b/src/Compilation.zig
index 958aac5e1..3b11de441 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -2036,7 +2036,9 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
         }
         if (build_options.have_llvm and is_exe_or_dyn_lib and comp.bin_file.options.link_libcpp) {
             try comp.work_queue.writeItem(.libcxx);
-            try comp.work_queue.writeItem(.libcxxabi);
+            if (target.os.tag != .windows and target.abi != .msvc) {
+                try comp.work_queue.writeItem(.libcxxabi);
+            }
         }
         if (build_options.have_llvm and comp.bin_file.options.tsan) {
             try comp.work_queue.writeItem(.libtsan);
--- a/src/link/Coff/lld.zig
+++ b/src/link/Coff/lld.zig
@@ -451,7 +451,10 @@ pub fn linkWithLLD(self: *Coff, comp: *Compilation, prog_node: *std.Progress.Nod

         // libc++ dep
         if (self.base.options.link_libcpp) {
-            try argv.append(comp.libcxxabi_static_lib.?.full_object_path);
+            if (comp.libcxxabi_static_lib) |libcxxabi_static_lib| {
+                try argv.append(libcxxabi_static_lib.full_object_path);
+            }
+
             try argv.append(comp.libcxx_static_lib.?.full_object_path);
         }

This compiles, but fails during linking with a missing libc++.lib error.

Changing the name in `libcxx.zig (c++ -> libc++, plus a few changes to match closer with what the llvm-project cmake scripts do):

diff --git a/src/libcxx.zig b/src/libcxx.zig
index 850da698c..d646f0660 100644
--- a/src/libcxx.zig
+++ b/src/libcxx.zig
@@ -108,7 +108,8 @@ pub fn buildLibCXX(comp: *Compilation) !void {
     defer arena_allocator.deinit();
     const arena = arena_allocator.allocator();

-    const root_name = "c++";
+    const root_name = "libc++";
+
     const output_mode = .Lib;
     const link_mode = .Static;
     const target = comp.getTarget();
@@ -160,10 +161,19 @@ pub fn buildLibCXX(comp: *Compilation) !void {
         try cflags.append("-DNDEBUG");
         try cflags.append("-D_LIBCPP_BUILDING_LIBRARY");
         try cflags.append("-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER");
-        try cflags.append("-DLIBCXX_BUILDING_LIBCXXABI");
+
+        if (!(target.os.tag == .windows and target.abi == .msvc)) {
+            try cflags.append("-DLIBCXX_BUILDING_LIBCXXABI");
+        }
+
         try cflags.append("-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS");
         try cflags.append("-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS");
-        try cflags.append("-D_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS");
+
+        if (!(target.os.tag == .windows and target.abi == .msvc)) {
+            // https://reviews.llvm.org/D60717
+            try cflags.append("-D_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS");
+        }
+
         try cflags.append("-D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS");

         try cflags.append(abi_version_arg);
@@ -311,6 +321,9 @@ pub fn buildLibCXXABI(comp: *Compilation) !void {
                 std.mem.startsWith(u8, cxxabi_src, "src/cxa_personality.cpp"))
                 continue;
             try cflags.append("-fno-exceptions");
+        } else {
+            if (std.mem.startsWith(u8, cxxabi_src, "src/cxa_noexception.cpp"))
+                continue;
         }

         // WASM targets are single threaded.
@@ -327,6 +340,7 @@ pub fn buildLibCXXABI(comp: *Compilation) !void {
         try cflags.append("-D_LIBCPP_DISABLE_EXTERN_TEMPLATE");
         try cflags.append("-D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS");
         try cflags.append("-D_LIBCXXABI_BUILDING_LIBRARY");
+        try cflags.append("-D_LIBCPP_BUILDING_LIBRARY");
         try cflags.append("-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS");
         try cflags.append("-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS");

This results in some different duplicate symbol issues:

CustomBuild:
  Building stage3
lld-link : error : duplicate symbol: void * __cdecl operator new(unsigned __int64) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\heap\new_scalar.cpp:32
  >>>            libcmt.lib(new_scalar.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/new.cpp
  >>>            libc++.lib(new.obj)

lld-link : error : duplicate symbol: void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\heap\new_scalar_nothrow.cpp:27
  >>>            libcmt.lib(new_scalar_nothrow.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/new.cpp
  >>>            libc++.lib(new.obj)

lld-link : error : duplicate symbol: void * __cdecl operator new[](unsigned __int64) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\heap\new_array.cpp:28
  >>>            libcmt.lib(new_array.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/new.cpp
  >>>            libc++.lib(new.obj)

lld-link : error : duplicate symbol: void __cdecl operator delete(void *) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\heap\delete_scalar.cpp:36
  >>>            libcmt.lib(delete_scalar.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/new.cpp
  >>>            libc++.lib(new.obj)

lld-link : error : duplicate symbol: void __cdecl operator delete(void *, unsigned __int64) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\heap\delete_scalar_size.cpp:31
  >>>            libcmt.lib(delete_scalar_size.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/new.cpp
  >>>            libc++.lib(new.obj)

lld-link : error : duplicate symbol: void __cdecl operator delete[](void *) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\heap\delete_array.cpp:31
  >>>            libcmt.lib(delete_array.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/new.cpp
  >>>            libc++.lib(new.obj)

lld-link : error : duplicate symbol: void __cdecl operator delete[](void *, unsigned __int64) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\heap\delete_array_size.cpp:31
  >>>            libcmt.lib(delete_array_size.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/new.cpp
  >>>            libc++.lib(new.obj)

lld-link : error : duplicate symbol: struct std::nothrow_t const std::nothrow [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at libcmt.lib(std_nothrow.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/new.cpp
  >>>            libc++.lib(new.obj)

lld-link : error : duplicate symbol: void __cdecl std::terminate(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at lldCOFF.lib(Driver.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: virtual __cdecl std::exception::~exception(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at zigcpp.lib(zig_llvm.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: virtual char const * __cdecl std::exception::what(void) const [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at zigcpp.lib(zig_llvm.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: __cdecl std::bad_alloc::bad_alloc(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\vcruntime\inc\vcruntime_exception.h:120
  >>>            libcmt.lib(throw_bad_alloc.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: __cdecl std::bad_array_new_length::bad_array_new_length(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at zigcpp.lib(zig_llvm.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: __cdecl std::exception_ptr::exception_ptr(class std::exception_ptr const &) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at lldCOFF.lib(Driver.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: __cdecl std::exception_ptr::~exception_ptr(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at d:\a01\_work\12\s\src\vctools\crt\github\stl\inc\exception:225
  >>>            libcpmt.lib(future.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: void __cdecl std::rethrow_exception(class std::exception_ptr) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at lldCOFF.lib(Driver.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: virtual __cdecl std::bad_exception::~bad_exception(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at libcpmt.lib(excptptr.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: virtual __cdecl std::bad_alloc::~bad_alloc(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at libcmt.lib(throw_bad_alloc.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: virtual __cdecl std::bad_array_new_length::~bad_array_new_length(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at zigcpp.lib(zig_llvm.obj)
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)

lld-link : error : duplicate symbol: public: __cdecl std::bad_cast::bad_cast(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)
  >>> defined at libcpmt.lib(locale.obj)

lld-link : error : duplicate symbol: public: virtual __cdecl std::bad_cast::~bad_cast(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)
  >>> defined at libcpmt.lib(locale.obj)

lld-link : error : duplicate symbol: public: __cdecl std::bad_cast::bad_cast(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)
  >>> defined at libcpmt.lib(wlocale.obj)

lld-link : error : duplicate symbol: public: virtual __cdecl std::bad_cast::~bad_cast(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)
  >>> defined at libcpmt.lib(wlocale.obj)

lld-link : error : duplicate symbol: public: __cdecl std::bad_cast::bad_cast(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)
  >>> defined at libcpmt.lib(xlocale.obj)

lld-link : error : duplicate symbol: public: virtual __cdecl std::bad_cast::~bad_cast(void) [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> defined at C:\cygwin64\home\kcbanner\kit\zig\lib\libcxx\src/exception.cpp
  >>>            libc++.lib(exception.obj)
  >>> defined at libcpmt.lib(xlocale.obj)
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): error MSB8066: Custom build for 'C:\cygwin64\home\kcbanner\kit\zig\build-release\CMakeFiles\c117af414c28389
1e1c8f0d2ca1adec5\stage3.rule' exited with code -1. [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]

If _LIBCPP_NO_VCRUNTIME (https://reviews.llvm.org/D38522) is defined, then it will stop trying to include the vcruntime headers, but the assumption is that nothing else will try to use these (and I'm not sure if this is true), but worth a try:

        if (!(target.os.tag == .windows and target.abi == .msvc)) {
            try cflags.append("-DLIBCXX_BUILDING_LIBCXXABI");
        } else {
            try cflags.append("-D_LIBCPP_NO_VCRUNTIME");
        }

This moves things a bit further, but now symbols are missing:

CustomBuild:
  Building stage3
lld-link : error : undefined symbol: GetFileVersionInfoSizeW [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> referenced by clangDriver.lib(MSVC.obj):(class llvm::VersionTuple __cdecl getMSVCVersionFromExe(class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &))

lld-link : error : undefined symbol: GetFileVersionInfoW [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> referenced by clangDriver.lib(MSVC.obj):(class llvm::VersionTuple __cdecl getMSVCVersionFromExe(class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &))

lld-link : error : undefined symbol: VerQueryValueW [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]
  >>> referenced by clangDriver.lib(MSVC.obj):(class llvm::VersionTuple __cdecl getMSVCVersionFromExe(class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &))
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): error MSB8066: Custom build for 'C:\cygwin64\home\kcbanner\kit\zig\build-release\CMakeFiles\c117af414c28389
1e1c8f0d2ca1adec5\stage3.rule' exited with code -1. [C:\cygwin64\home\kcbanner\kit\zig\build-release\stage3.vcxproj]

Maybe related: llvm/llvm-project#58318

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Observed behavior contradicts documented or intended behavior os-windows
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants