From: Markos Chandras <[email protected]>
Signed-off-by: Markos Chandras <[email protected]>
---
libc/sysdeps/linux/common/Makefile.in | 2 +-
.../sysdeps/unix/sysv/linux/Makefile.commonarch | 4 ++-
libpthread/nptl/sysdeps/unix/sysv/linux/openat.S | 22 ++++++++++++++++++++
3 files changed, 26 insertions(+), 2 deletions(-)
create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/openat.S
diff --git a/libc/sysdeps/linux/common/Makefile.in
b/libc/sysdeps/linux/common/Makefile.in
index b39082b..98fd6a9 100644
--- a/libc/sysdeps/linux/common/Makefile.in
+++ b/libc/sysdeps/linux/common/Makefile.in
@@ -64,7 +64,7 @@ CSRC-$(if $(findstring
yy,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_LFS)),y) += \
# NPTL needs these internally: madvise.c
CSRC-$(findstring y,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_THREADS_NATIVE)) +=
madvise.c
ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
-CSRC- += fork.c getpid.c raise.c open.c close.c read.c write.c
+CSRC- += fork.c getpid.c raise.c open.c openat.c close.c read.c write.c
CSRC- += $(if $(findstring =arm=,=$(TARGET_ARCH)=),vfork.c)
CSRC- += $(if $(findstring =x86_64=,=$(TARGET_ARCH)=),vfork.c)
CSRC- += $(if $(findstring
=mips=y=,=$(TARGET_ARCH)=$(CONFIG_MIPS_O32_ABI)=),waitpid.c)
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
index 8a762b7..ab2d6c9 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
@@ -77,7 +77,7 @@ librt_linux_CSRC += mq_notify.c timer_create.c timer_delete.c
\
timer_settime.c
# These provide both a cancellable and a not cancellable implementation
-libc_linux_SSRC = close.S open.S write.S read.S waitpid.S
+libc_linux_SSRC = close.S open.S openat.S write.S read.S waitpid.S
libc_linux_SSRC := $(filter-out
$(libc_linux_arch_SSRC-OMIT),$(libc_linux_SSRC))
libpthread_linux_CSRC := $(filter-out $(notdir
$(libpthread_linux_arch_OBJS:.o=.c)),$(libpthread_linux_CSRC))
@@ -145,6 +145,7 @@ CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc
-DIS_IN_libpthread
CFLAGS-OMIT-close.S = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-OMIT-open.S = -DNOT_IN_libc -DIS_IN_libpthread
+CFLAGS-OMIT-openat.S = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-OMIT-read.S = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-OMIT-write.S = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-OMIT-waitpid.S = -DNOT_IN_libc -DIS_IN_libpthread
@@ -158,6 +159,7 @@ CFLAGS-OMIT-timer_routines.c = -DIS_IN_libpthread
CFLAGS-OMIT-timer_settime.c = -DIS_IN_libpthread
ASFLAGS-open.S = -D_LIBC_REENTRANT
+ASFLAGS-openat.S = -D_LIBC_REENTRANT
ASFLAGS-close.S = -D_LIBC_REENTRANT
ASFLAGS-read.S = -D_LIBC_REENTRANT
ASFLAGS-write.S = -D_LIBC_REENTRANT
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/openat.S
b/libpthread/nptl/sysdeps/unix/sysv/linux/openat.S
new file mode 100644
index 0000000..468154b
--- /dev/null
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/openat.S
@@ -0,0 +1,22 @@
+#include <sysdep-cancel.h>
+
+/*
+extern int __openat_nocancel (const char *, int, ...) attribute_hidden;
+*/
+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+#if defined(__NR_openat)
+PSEUDO (__libc_openat, openat, 4)
+ret
+PSEUDO_END(__libc_openat)
+
+libc_hidden_def (__openat_nocancel)
+libc_hidden_def (__libc_openat)
+weak_alias (__libc_openat, __openat)
+libc_hidden_weak (__openat)
+weak_alias (__libc_openat, openat)
+libc_hidden_weak (openat)
+
+#endif
+
+#endif
--
1.7.1
_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc