On Wed, Jun 24, 2026 at 2:38 PM Jonathan Wakely <[email protected]> wrote:

> On Wed, 4 Mar 2026 at 23:17, Adam Wood <[email protected]> wrote:
> >
> >
> >
> > On Wed, Mar 4, 2026 at 9:14 AM Jonathan Wakely <[email protected]>
> wrote:
> >>
> >> On Mon, 16 Feb 2026 at 22:42, Adam Wood <[email protected]>
> wrote:
> >> >
> >> > Tested on x86_64-w64-mingw32 on Windows 11.
> >> >
> >> > The changes in v4 make sure the new symlink functions are only
> defined/enabled
> >> > on versions of Windows with symlink support.
> >> >
> >> > Because path resolution may be different between Windows and POSIX
> when a
> >> > dotdot follows a symlink, I also made some edits to tests involving
> that
> >> > specific case. I removed my changes to fs::absolute and
> >> > fs::canonical because I was misplaced and was trying to force Windows
> to
> >> > act like POSIX in that specific case.
> >> >
> >> > Finally, I dealt with the issue that creating symlinks with the
> unprivileged
> >> > flag returns an error in earlier versions of Windows by just trying
> again
> >> > if ERROR_INVALID_PARAMETER occurs without the unpriviledged flag. This
> >> > is how MSVC STL does it as well.
> >> >
> >> > The patch does not support junctions or mount points.
> >>
> >> Hi Adam,
> >>
> >> Thanks for the new patch. I'm still reviewing it, but I see these
> >> tests failing using a mingw-w64 cross compiler and testing under Wine:
> >>
> >>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc:27:
> >> void test_successful_copy(const std::filesystem::__cxx11::path&, bool
> >> (*)(const std::filesystem::__cxx11::path&)): Assertion
> >> 'is_some_file_type(p2)' failed.
> >> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc
> >>
> >>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc:36:
> >> void test01(): Assertion 'st1.type() == fs::file_type::directory'
> >> failed.
> >> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
> >>
> >> Do these PASS for you on real Windows?
> >>
> > Those tests all PASS on my Windows 11 VM.
>
> I've installed a Windows 11 VM. I built all the filesystem tests using
> a mingw-w64 cross compiler and ran the tests under Wine. For each test
> that PASSed before your changes and FAILed with your patch, I copied
> the .exe to the Windows VM and ran it there, and they also FAILed on
> the VM. So this doesn't seem to be a problem with Wine, the tests FAIL
> for Windows 11 too.


I've been compiling the tests entirely within the Windows VM and msys2
terminal. I'll try this method and see if I can fix this.

>
> At least the following fail, and several seem to be related to failing
> filesystem::is_directory checks.
>
>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc:40:
> void test01(): Assertion 'ent.is_directory(ec)' failed.
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
>
> terminate called after throwing an instance of
> 'std::filesystem::__cxx11::filesystem_error'
>  what():  filesystem error: cannot remove: Access denied
> [filesystem-test.caching.3601102154.416]
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc
>
>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc:60:
> void test02(): Assertion 'dir != end(dir)' failed.
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
>
> terminate called after throwing an instance of
> 'std::filesystem::__cxx11::filesystem_error'
>  what():  filesystem error: cannot remove: Access denied
> [filesystem-test.recursion_pending.3954863444.480]
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/iterators/recursion_pending.cc
>
>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:51:
> void test01(): Assertion '!ec' failed.
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
>
>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc:50:
> void test01(): Assertion 'p == dirc/"bar/baz"' failed.
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
>
> Skipping tests that depend on filesystem permissions
>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc:92:
> void test01(): Assertion '!ec' failed.
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
>
>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc:67:
> void test01(): Assertion '!ec' failed.
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
>
>
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc:35:
> void test01(): Assertion 'st1.type() == fs::file_type::directory'
> failed.
> FAIL:
> /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
>
>

Reply via email to