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

Reply via email to