Hi David, Hi Fang-rui,
Just to remind, when I add -save-temps flag, linking works, but without this option it fails with:
clang-8: error: unable to make temporary file: No such file or directory
clang-8: error: unable to make temporary file: No such file or directory
clang-8: error: unable to make temporary file: No such file or directory
Here is the output with flags -save-temps, -###:
“/usr/bin/clang-8” “-cc1” “-triple” “x86_64-unknown-windows-cygnus” “-S” “-save-temps=cwd” “-disable-free” “-disable-llvm-verifier” “-discard-value-names” “-main-file-name” “my_files\my_file1.bc” “-mrelocation-model” “pic” “-pic-level” “2” “-mthread-model” “posix” “-fmath-errno” “-masm-verbose” “-mconstructor-aliases” “-munwind-tables” “-target-cpu” “x86-64” “-dwarf-column-info” “-debugger-tuning=gdb” “-momit-leaf-frame-pointer” “-v” “-resource-dir” “/usr/lib/clang/8.0.1” “-fdebug-compilation-dir” “/cygdrive/c/my_projects/prj1/Debug” “-ferror-limit” “19” “-fmessage-length” “0” “-fobjc-runtime=gcc” “-fseh-exceptions” “-fdiagnostics-show-option” “-o” “my_files\my_file1.s” “-x” “ir” “my_files\my_file1.bc” “-faddrsig”
Here is the output without -save-temps, just -###:
“/usr/bin/clang-8” “-cc1” “-triple” “x86_64-unknown-windows-cygnus” “-emit-obj” “-mrelax-all” “-disable-free” “-disable-llvm-verifier” “-discard-value-names” “-main-file-name” “my_files\my_file1.bc” “-mrelocation-model” “pic” “-pic-level” “2” “-mthread-model” “posix” “-fmath-errno” “-masm-verbose” “-mconstructor-aliases” “-munwind-tables” “-target-cpu” “x86-64” “-dwarf-column-info” “-debugger-tuning=gdb” “-momit-leaf-frame-pointer” “-v” “-resource-dir” “/usr/lib/clang/8.0.1” “-fdebug-compilation-dir” “/cygdrive/c/my_projects/prj1/Debug” “-ferror-limit” “19” “-fmessage-length” “0” “-fobjc-runtime=gcc” “-fseh-exceptions” “-fdiagnostics-show-option” “-o” “” “-x” “ir” “my_files\my_file1.bc” “-faddrsig”
So the “-o” “my_files\my_file1.s” vs “-o” “” seems to be the difference. Is there an explanation?
Also, some more output with the output with flags -save-temps, -###:
“/usr/bin/ld” “-m” “i386pep” “–wrap” “_Znwm” “–wrap” “_Znam” “–wrap” “_ZnwmRKSt9nothrow_t” “–wrap” “_ZnamRKSt9nothrow_t” “–wrap” “_ZdlPv” “–wrap” “_ZdaPv” “–wrap” “_ZdlPvRKSt9nothrow_t” “–wrap” “_ZdaPvKSt9nothrow_t” “-Bdynamic” “–tsaware” “-o” “myexecutable” “/usr/lib/crt0.o” “/usr/lib/gcc/x86_64-pc-cygwin/10/crtbegin.o” “-LC:/mylibraries” “-L/usr/lib/gcc/x86_64-pc-cygwin/10” “-L/usr/x86_64-pc-cygwin/lib” “-L/usr/lib” “-L/usr/lib/w32api” “my_files\my_file1.o” “my_files\my_file2.o” " my_files\my_file3.o" “-lnaturedsp” “-lgcc_s” “-gcc” “-lcygwin” “-ladvapi32” “-lshell32” “-luser32” “-lkernel32” “/usr/lib/default-manifest.o” “/usr/lib/gcc/x86_64-pc-cygwin/10/crtend.o”
and with only -###:
“/usr/bin/ld” “-m” “i386pep” “–wrap” “_Znwm” “–wrap” “_Znam” “–wrap” “_ZnwmRKSt9nothrow_t” “–wrap” “_ZnamRKSt9nothrow_t” “–wrap” “_ZdlPv” “–wrap” “_ZdaPv” “–wrap” “_ZdlPvRKSt9nothrow_t” “–wrap” “_ZdaPvKSt9nothrow_t” “-Bdynamic” “–tsaware” “-o” “myexecutable” “/usr/lib/crt0.o” “/usr/lib/gcc/x86_64-pc-cygwin/10/crtbegin.o” “-LC:/mylibraries” “-L/usr/lib/gcc/x86_64-pc-cygwin/10” “-L/usr/x86_64-pc-cygwin/lib” “-L/usr/lib” “-L/usr/lib/w32api” “” “” “” “-lnaturedsp” “-lgcc_s” “-lgcc” “-lcygwin” “-ladvapi32” “-lshell32” “-luser32” “-lkernel32” “/usr/lib/default-manifest.o” “/usr/lib/gcc/x86_64-pc-cygwin/10/crtend.o”
So, again “my_files\my_file1.o” “my_files\my_file2.o” " my_files\my_file3.o" is lost and substituted with empty strings “” “” “”.
Does this info help resolve my problem?