[git commit] utimes: Export utimensat based utimes

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Thu Mar 14 21:27:19 UTC 2013


commit: http://git.uclibc.org/uClibc/commit/?id=58668975669a8549c52a8075cf4358203f0e613d
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

sys/time.h has libc_hidden_proto(utimes) which generates the hidden
"__GI_utimes" symbol reference, and common/utimes.c has a
libc_hidden_def(utimes) which generates the exported "utimes" alias.

As part of no-legacy-syscall kernel ABI, Commit 80dc2ed05
"utimes: Use utimensat if arch does not have the utimes syscall"
introduced a new wrapper, but missed the corresponding libc_hidden_def,
causing Busybox (1.20.0) link to fail (for ARC).

Also don't generate a STUB, in that case.
---------------->8-------------------
....
touch.c:(.text.touch_main+0xdc): undefined reference to `utimes'
touch.c:(.text.touch_main+0x114): undefined reference to `utimes'
libbb/lib.a(copy_file.o): In function `copy_file':
copy_file.c:(.text.copy_file+0x446): undefined reference to `utimes'
collect2: ld returned 1 exit status
---------------->8-------------------

Signed-off-by: Vineet Gupta <vgupta at synopsys.com>
Cc: Markos Chandras <markos.chandras at imgtec.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 libc/sysdeps/linux/common/stubs.c  |    2 ++
 libc/sysdeps/linux/common/utimes.c |    2 +-
 2 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c
index 83bcf47..57c4664 100644
--- a/libc/sysdeps/linux/common/stubs.c
+++ b/libc/sysdeps/linux/common/stubs.c
@@ -448,10 +448,12 @@ make_stub(lutimes)
 # endif
 #endif
 
+#ifndef __NR_utimensat
 #if !defined __NR_utime && !defined __NR_utimes
 /*make_stub(utime) obsoleted */
 make_stub(utimes)
 #endif
+#endif
 
 #if !defined __NR_umount && !defined __NR_umount2 && defined __UCLIBC_LINUX_SPECIFIC__
 make_stub(umount)
diff --git a/libc/sysdeps/linux/common/utimes.c b/libc/sysdeps/linux/common/utimes.c
index a459d15..b5e76cc 100644
--- a/libc/sysdeps/linux/common/utimes.c
+++ b/libc/sysdeps/linux/common/utimes.c
@@ -51,6 +51,6 @@ int utimes(const char *file, const struct timeval tvp[2])
 }
 #endif
 
-#if defined __NR_utimes || defined __NR_utime
+#if defined __NR_utimensat || defined __NR_utimes || defined __NR_utime
 libc_hidden_def(utimes)
 #endif


More information about the uClibc-cvs mailing list