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

Bug#555303: kfreebsd-8: problems with *at syscalls



On Mon, Nov 09, 2009 at 11:22:13AM +0100, Petr Salinger wrote:
> Package: kfreebsd-8
>
> I tried to rebuild current eglibc under kfreebsd-8,
> there are some problems with *at functions. Under kfreebsd-7
> we use some userspace emulation, under kfreebsd-8 we directly use
> *at syscalls.
>
> The new failed tests are:
>
> io/tst-renameat.out
> io/tst-faccessat.out
> io/tst-symlinkat.out
> io/tst-linkat.out
> io/tst-readlinkat.out
> io/tst-mkdirat.out
> io/tst-mknodat.out
>
> It needs further investigation before we could
> make 8.x kernel the default one.
>

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?

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.

-- 
Aurelien Jarno	                        GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net



Reply to: