Fix futimesat for older MicroBlaze kernels (bug 16648).
commitd7a68734f7bbc76586017461cff19af0d9cb4df8
authorJoseph Myers <joseph@codesourcery.com>
Mon, 31 Mar 2014 12:51:45 +0000 (31 12:51 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 31 Mar 2014 12:51:45 +0000 (31 12:51 +0000)
tree8247b175a0af04c6b21e596f80484e52ba00231f
parentc760f5c210d85247ef0c6e10f7ef44fa27d9bd1d
Fix futimesat for older MicroBlaze kernels (bug 16648).

Continuing the fixes for __ASSUME_* issues in preparation for moving
to a 2.6.32 minimum kernel version, this *untested* patch fixes bug
16648, the definition of __ASSUME_ATFCTS meaning that the futimesat
syscall is assumed for all MicroBlaze kernels despite not being
present until 2.6.33.

__ASSUME_ATFCTS controls conditionals relating to a lot of different
syscalls in Linux-specific code (fstatat64 faccessat fchmodat fchownat
futimesat newfstatat linkat mkdirat openat readlinkat renameat
symlinkat unlinkat mknodat), where whether newfstatat fstatat64
futimesat are used depends on the architecture, as well as controlling
whether openat64_not_cancel_3 is expected to work in
sysdeps/posix/getcwd.c.  The assumptions are all OK as of 2.6.32
except for this MicroBlaze case, and it's generally desirable to get
rid of as many of the __ASSUME_ATFCTS conditionals as possible, to
simplify the code (the fallbacks include potential unbounded dynamic
stack allocations).  Thus, rather than the simplest approach of
undefining __ASSUME_ATFCTS for older kernels on MicroBlaze, this patch
takes the approach of using the linux-generic implementation of
futimesat for MicroBlaze kernels before 2.6.33 (all such kernels have
the utimensat syscall).

[BZ #16648]
* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
[__LINUX_KERNEL_VERSION >= 0x020621] (__ASSUME_FUTIMESAT): Define.
* sysdeps/unix/sysv/linux/microblaze/futimesat.c: New file.
ChangeLog
NEWS
sysdeps/unix/sysv/linux/microblaze/futimesat.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/microblaze/kernel-features.h