Bug#555303: kfreebsd-8: problems with *at syscalls
I tracked down the problem to the AT_* #define that are different
between GNU/Linux and GNU/Hurd on one side and GNU/kFreeBSD on the other
I have committed a patch to glibc-bsd to move those definitions to
bits/fcntl.h. The same has to be done on upstream glibc, which impact
quite a lot of files. Before actually doing it, I do wonder if we
shouldn't instead translate the values in our *at functions, which
should also solve the problem of already built binaries using the old
What do you think?
1) the AT constants might be put into a different new file,
i.e. <bits/atfile.h> or <bits/atfcntl.h>. This way it would suffice
just only one new generic file.
2) I am in favor change AT constant to match native FreeBSD.
The *at functions have been introduced in 2.4 glibc,
at about 8700 binary pakages have Depends "libc0.1 (>= 2.3",
these are definitely not affected. We might look into remaining 650
binary packages and decide which need a binNMU.
The patch fixes all failures except:
- io/tst-renameat.out: the test verifies error with wrong arguments, and
the FreeBSD kernel does not check the errors in the same order when
there are two or more errors, so and error is returned, but not the
one expected by the tests. I think we can live with that.
- io/tst-mknodat.out: it's not possible to use mknod outside of /dev on
GNU/kFreeBSD, this is not specific to the *at syscall.
This sounds promising.