DWARF info and the patch are relevant only for mingw32 toolchain, not MS
toolchain, of course.
gcc (MinGW) toolchain is inconsistent handling path seperators.
Compile m.c=
int main() { return 0; }
with
cd c:\test
gcc m.c m.c -g -o m.exe
To get
C:\Users\user\AppData\Local\Temp\ccjRtBrL.o: In function `main':
*c:\test/m.c*:1: multiple definition of `main'
C:\Users\user\AppData\Local\Temp\cc60AUBa.o:*c:\test/m.c*:1: first defined
here
collect2.exe: error: ld returned 1 exit status
so \ in directory name but / between directory and filename, incosistent.
if you generate assembly
gcc c:\test\m.c -S -g -o m.s
the assembly file
.file 1 "c:/test/m.c"
.ascii "c:\\test\\m.c\0"
gdb is also quirky, unrelated to debug info:
gcc m.c -o m.exe
gdb m.exe
Reading symbols from *c:\test\m.exe*...done.
(gdb) r
Starting program: *c:\test/m.exe*
Back to clang, directories could be normalized to / but not the case now.
If we make an error:
int main() { return e; }
and run clang -c -g c:/test/m.c -o m.o -target i686-pc-mingw32 we get
*c:/test/m.c*:1:21: error: use of undeclared identifier 'e'
but if we run clang -c -g c:\test\m.c -o m.o -target i686-pc-mingw32 we get
*c:\test\m.c*:1:21: error: use of undeclared identifier 'e'
so it follows the input.
In DWARF info the path sep. in directories follows input in some fields and
normalized to host \\ in others but is never normalized to / so hardcoding
/ in MCDWARF does not match this behaviour.
Yaron
2014-03-17 9:32 GMT+02:00 NAKAMURA Takumi <[email protected]>:
> Does dwarf affect "Your Windows"? I suppose MS toolchain would be
> innocent of dwarf.
> Would mingw emit '\\' as pathsep in dwarf? I'll investigate later.
> (IIRC, it wouldn't)
> I assume "preferred_separator" depends on host system. Would you
> really like to emit '\\' on Windows targeting elf?
>
> IMO, pathsep should be always normalized to '/' unless it would be illegal.
>
> 2014-03-17 16:18 GMT+09:00 Yaron Keren <[email protected]>:
> > The path seperator is hardcoded in MCDwarf.cpp:649 as '/'. This is worng
> on
> > Windows.
> >
> > A patch to use the correct path seperator is attached. I had to expose
> the
> > path seperator from llvm::sys::path.
> >
> > Yaron
> >
> >
> > _______________________________________________
> > cfe-commits mailing list
> > [email protected]
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> >
>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits