The symlink test failure is even more complex than I thought. In 2009 there was a patch to gnulib to accept the incorrect EINVAL errno https://git.savannah.gnu.org/cgit/gnulib.git/commit/tests/test-symlink.h?id=48b0feac54dce2caf46cc53dd160e699737ff52a. which should never have been passing in the first place.
And now that this value has changed with glibc-2.41 everything breaks. Maybe all of these cases in the glibc patch should be EEXIST instead which I think is the behavior on linux (assumption and untested). I am unsure how to proceed because I don't know who is wrong, gnulib or glibc.