zequanwu added a comment. In D147256#4258419 <https://reviews.llvm.org/D147256#4258419>, @zequanwu wrote:
> In D147256#4257797 <https://reviews.llvm.org/D147256#4257797>, @hans wrote: > >> In D147256#4249527 <https://reviews.llvm.org/D147256#4249527>, @zequanwu >> wrote: >> >>> - Add a `-use-target-path-separator` flag for llc. >>> - Add test for llc with that flag. >> >> But where does `TM.Options.ObjectFilenameForDebug` come from? Presumably it >> comes from Clang at some point, so is there any chance we can fix it "at the >> source" instead? > > `TM.Options.ObjectFilenameForDebug` either comes from llc's `-o` or > clang-cl's `object-file-name=` which is translated from `/Fo[ObjectFileName]`. > > For Chromium, the `/Fo[ObjectFileName]` we pass to clang-cl is the same when > building on Windows and targeting Windows from Linux. The problem comes > `llvm::sys::path::remove_dots(PathStore, /*remove_dot_dot=*/true);` in > `CodeViewDebug.cpp`. That function always convert the path to use host's path > separator. And I don't think we can write a `remove_dots` function that > doesn't change path separator, because `\` can only be used as path separator > on Windows but is a valid path character on Linux. > > Or we could just not use `llvm::sys::path::remove_dots`, use the user's input > as it is for object file path. Well, MSVC cl removes redundant dots so we shouldn't remove `llvm::sys::path::remove_dots`. Generally, I think it's okay to use target path separator for object file path in codeview when user input is not an absolute path, because we can only generate codeview when targeting on windows. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147256/new/ https://reviews.llvm.org/D147256 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits