[llvm-dev] clang emit Duplicate file entry on windows

kamlesh kumar via llvm-dev llvm-dev at lists.llvm.org
Mon Mar 29 10:07:36 PDT 2021


Hi Devs,
clang Emitting duplicate file entry when the input file given like this
case-1:
$./clang++ -g -c -o test.o
/c/Users/HI/Documents/windworkspace/llvm-dev-build/bin/tests/test.cc
-std=c++17

$./llvm-dwarfdump -debug-line test.o
         -----
file_names[ 52]:
           name: "test.cc"
      dir_index: 3
       mod_time: 0x00000000
         length: 0x00000000
file_names[ 53]:
           name: "test.cc"
      dir_index: 3
       mod_time: 0x00000000
         length: 0x00000000
              --------
case-2:
But when input file given like this It emit only one file entry
$ ./clang C:\\Users\\HI\\Documents\\windworkspace\\llvm-dev-build\\bin\\tests\\test.cc
-c -g -o test.o -std=c++17
$./llvm-dwarfdump -debug-line test.o
      ----
file_names[ 52]:
           name: "test.cc"
      dir_index: 3
       mod_time: 0x00000000
         length: 0x00000000
           ----
duplicate entry in case-1 creates a problem while planting
breakpoint(debugger says unresolved breakpoint, using a proprietary
debugger).
But case2 works fine because it has a single file entry.
 This problem can be observed with the relative path too.
Like to know expert's thoughts on this weird behavior only observed on windows?

Test(test.cc used above in command line is)
$ cat tests/test.cc
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n'; // (1)
    fs::current_path(fs::temp_directory_path()); // (3)
    std::cout << "Current path is " << fs::current_path() << '\n';
}

note: Above observation from mingw64 x86_64 msys2, latest clang(13.0)
i.e.
$ ./clang -v
clang version 13.0.0
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:\Users\HI\Documents\windworkspace\llvm-dev-build\bin
clang was built by
$ gcc -v

Using built-in specs.
COLLECT_GCC=C:\msys64\mingw64\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-10.2.0/configure --prefix=/mingw64
--with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32
--host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32
--with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include
--libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64
--with-tune=generic
--enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit
--enable-shared --enable-static --enable-libatomic
--enable-threads=posix --enable-graphite --enable-fully-dynamic-string
--enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes
--disable-libstdcxx-pch --disable-libstdcxx-debug
--disable-isl-version-check --enable-lto --enable-libgomp
--disable-multilib --enable-checking=release --disable-rpath
--disable-win32-registry --disable-nls --disable-werror
--disable-symvers --disable-plugin --with-libiconv --with-system-zlib
--with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64
--with-isl=/mingw64 --with-pkgversion='Rev9, Built by MSYS2 project'
--with-bugurl=https://github.com/msys2/MINGW-packages/issues
--with-gnu-as --with-gnu-ld --with-boot-ldflags='-pipe
-Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high
-Wl,--disable-dynamicbase -static-libstdc++ -static-libgcc'
'LDFLAGS_FOR_TARGET=-pipe
-Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high'
--enable-linker-plugin-flags='LDFLAGS=-static-libstdc++\
-static-libgcc\ -pipe\
-Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high\
-Wl,--stack,12582912'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.2.0 (Rev9, Built by MSYS2 project)
./kamlesh


More information about the llvm-dev mailing list