chown() fails when it should succeed in QEMU user mode on Linux/sparc64 Description of problem: The `chown()` function fails, instead of succeeding, in a particular situation. Steps to reproduce: [foo.c](/uploads/630d9b83671a071f4ded4da43b6c1b9b/foo.c) 1. ``` # apt install g++-10-sparc64-linux-gnu # mkdir -p /usr/sparc64-linux-gnu/etc # touch /usr/sparc64-linux-gnu/etc/ld.so.cache ``` 2. ``` $ sparc64-linux-gnu-gcc-10 -Wall -static foo.c ``` [a.out](/uploads/bbab43a1b78e6d16ee13e0eff5e963a5/a.out) 3. Transfer the a.out file to a Linux/sparc64 machine; execute these commands there: ``` $ id ``` Verify that you are in 2 or more groups. ``` $ touch file $ ln -s file link $ ln -s link link2 $ ./a.out; echo $? ``` It prints `0`. 4. ``` $ id ``` Verify that you are in 2 or more groups. ``` $ touch file $ ln -s file link $ ln -s link link2 $ QEMU_LD_PREFIX=/usr/sparc64-linux-gnu ~/inst-qemu/6.1.0/bin/qemu-sparc64 ./a.out; echo $? ``` Expected: `0` Actual: ``` chown: Operation not permitted 1 ``` Additional information: