[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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
side.

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
value.

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.

Many thanks

		Petr




Reply to: