mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
uClibc:
- downgrade to uClibc-0.9.30.1 because we have some trouble with recent uClibc - add backports for rpmatch(), timerfd(), *at-functions, getline()-fix and ppoll-fix
This commit is contained in:
parent
4497344f53
commit
5d64b2b260
@ -5,9 +5,7 @@
|
||||
$SCRIPTS/install gcc-core toolchain
|
||||
[ "$DEBUG" = yes ] && CFLAGS="$CFLAGS -D_DLSYM_TRACE_NAME"
|
||||
|
||||
cd $PKG_BUILD
|
||||
make pregen
|
||||
make
|
||||
make -C utils
|
||||
|
||||
make -C $PKG_BUILD
|
||||
#[ "$DEVTOOLS" = yes ] && make -C $PKG_BUILD/utils
|
||||
make -C $PKG_BUILD/utils
|
||||
exit 0
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Version: 0.9.30-git
|
||||
# Version: 0.9.30.1
|
||||
#
|
||||
# TARGET_alpha is not set
|
||||
# TARGET_arm is not set
|
||||
@ -90,7 +90,6 @@ UCLIBC_CTOR_DTOR=y
|
||||
UCLIBC_HAS_THREADS=y
|
||||
PTHREADS_DEBUG_SUPPORT=y
|
||||
LINUXTHREADS_OLD=y
|
||||
# UCLIBC_HAS_THREADS_NATIVE is not set
|
||||
UCLIBC_HAS_SYSLOG=y
|
||||
UCLIBC_HAS_LFS=y
|
||||
# MALLOC is not set
|
||||
@ -101,7 +100,6 @@ MALLOC_STANDARD=y
|
||||
# COMPAT_ATEXIT is not set
|
||||
UCLIBC_SUSV3_LEGACY=y
|
||||
# UCLIBC_SUSV3_LEGACY_MACROS is not set
|
||||
# UCLIBC_SUSV4_LEGACY is not set
|
||||
# UCLIBC_HAS_STUBS is not set
|
||||
UCLIBC_HAS_SHADOW=y
|
||||
UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
|
||||
@ -110,8 +108,8 @@ UCLIBC_HAS_PTY=y
|
||||
# ASSUME_DEVPTS is not set
|
||||
# UNIX98PTY_ONLY is not set
|
||||
UCLIBC_HAS_GETPT=y
|
||||
UCLIBC_HAS_TM_EXTENSIONS=y
|
||||
UCLIBC_HAS_TZ_CACHING=y
|
||||
# UCLIBC_HAS_TM_EXTENSIONS is not set
|
||||
# UCLIBC_HAS_TZ_CACHING is not set
|
||||
UCLIBC_HAS_TZ_FILE=y
|
||||
# UCLIBC_HAS_TZ_FILE_READ_MANY is not set
|
||||
UCLIBC_TZ_FILE_PATH="/etc/TZ"
|
||||
@ -125,7 +123,7 @@ UCLIBC_GRP_BUFFER_SIZE=256
|
||||
#
|
||||
# Support various families of functions
|
||||
#
|
||||
# UCLIBC_LINUX_MODULE_24 is not set
|
||||
UCLIBC_LINUX_MODULE_24=y
|
||||
UCLIBC_LINUX_SPECIFIC=y
|
||||
UCLIBC_HAS_GNU_ERROR=y
|
||||
UCLIBC_BSD_SPECIFIC=y
|
||||
@ -150,9 +148,6 @@ UCLIBC_HAS_RPC=y
|
||||
# UCLIBC_HAS_REENTRANT_RPC is not set
|
||||
# UCLIBC_USE_NETLINK is not set
|
||||
# UCLIBC_HAS_BSD_RES_CLOSE is not set
|
||||
UCLIBC_HAS_COMPAT_RES_STATE=y
|
||||
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
|
||||
# UCLIBC_HAS_RESOLV_STUB is not set
|
||||
|
||||
#
|
||||
# String and Stdio Support
|
||||
@ -212,7 +207,6 @@ UCLIBC_HAS_GNU_GLOB=y
|
||||
SHARED_LIB_LOADER_PREFIX="$(DEVEL_PREFIX)/lib"
|
||||
RUNTIME_PREFIX="/"
|
||||
DEVEL_PREFIX="/usr"
|
||||
HARDWIRED_ABSPATH=y
|
||||
|
||||
#
|
||||
# Security options
|
||||
|
@ -2,19 +2,19 @@
|
||||
|
||||
. config/options
|
||||
|
||||
if [ "$2" = toolchain ]; then
|
||||
rm -rf "$SYSROOT_PREFIX/lib" "$SYSROOT_PREFIX/usr/lib" "$SYSROOT_PREFIX/usr/include"
|
||||
$SCRIPTS/install linux-headers
|
||||
make -C $PKG_BUILD PREFIX="$SYSROOT_PREFIX" install
|
||||
exit 0
|
||||
fi
|
||||
if [ "$2" = toolchain ]; then
|
||||
rm -rf "$SYSROOT_PREFIX/lib" "$SYSROOT_PREFIX/usr/lib" "$SYSROOT_PREFIX/usr/include"
|
||||
$SCRIPTS/install linux-headers
|
||||
make -C $PKG_BUILD PREFIX="$SYSROOT_PREFIX" install
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$2" = initramfs ]; then
|
||||
mkdir -p $INSTALL/$2/lib
|
||||
cp $PKG_BUILD/lib/ld-uClibc.so.0 $INSTALL/$2/lib
|
||||
cp $PKG_BUILD/lib/libc.so.0 $INSTALL/$2/lib
|
||||
exit 0
|
||||
fi
|
||||
if [ "$2" = initramfs ]; then
|
||||
mkdir -p $INSTALL/$2/lib
|
||||
cp $PKG_BUILD/lib/ld-uClibc.so.0 $INSTALL/$2/lib
|
||||
cp $PKG_BUILD/lib/libc.so.0 $INSTALL/$2/lib
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p $INSTALL/lib
|
||||
cp $PKG_BUILD/lib/ld*-uClibc.so.0 $INSTALL/lib
|
||||
@ -28,9 +28,9 @@ fi
|
||||
# needed by dbus-glib
|
||||
cp $PKG_BUILD/lib/libnsl.so.0 $INSTALL/lib
|
||||
|
||||
[ "$DEVTOOLS" = yes ] && cp $PKG_BUILD/lib/libthread_db.so.1 $INSTALL/lib
|
||||
[ "$DEBUG" = yes ] && cp $PKG_BUILD/lib/libthread_db.so.1 $INSTALL/lib
|
||||
[ "$NETWORK" = yes ] && cp $PKG_BUILD/lib/libcrypt.so.0 $INSTALL/lib
|
||||
# [ "$NETWORK" = yes ] && cp $PKG_BUILD/lib/libresolv.so.0 $INSTALL/lib
|
||||
[ "$NETWORK" = yes ] && cp $PKG_BUILD/lib/libresolv.so.0 $INSTALL/lib
|
||||
|
||||
[ "$DEVTOOLS" = yes ] && \
|
||||
mkdir -p $INSTALL/bin && \
|
||||
|
@ -1,12 +1,11 @@
|
||||
diff -Naur uClibc-20090902/Makefile.in uClibc-20090902.patch/Makefile.in
|
||||
--- uClibc-20090902/Makefile.in 2009-08-31 10:48:04.000000000 +0200
|
||||
+++ uClibc-20090902.patch/Makefile.in 2009-09-02 11:25:11.698689044 +0200
|
||||
@@ -167,7 +167,7 @@
|
||||
$(Q)set -e; \
|
||||
tmp=`mktemp $(top_builddir)include/bits/sysnum.h.XXXXXX 2>/dev/null || true`; \
|
||||
[ -z "$$tmp" ] && tmp='$(top_builddir)include/bits/sysnum.h.new'; \
|
||||
- KERNEL_HEADERS="${KERNEL_HEADERS}" top_builddir="$(top_builddir)" CC="$(CC) $(CPU_CFLAGS)" $(SHELL) $< > $$tmp; \
|
||||
+ KERNEL_HEADERS="${KERNEL_HEADERS}" top_builddir="$(top_builddir)" CC="$(HOSTCC) $(CPU_CFLAGS)" $(SHELL) $< > $$tmp; \
|
||||
if cmp $(top_builddir)include/bits/sysnum.h $$tmp >/dev/null 2>&1; then \
|
||||
--- uClibc.orig/Makefile.in 2008-09-02 14:51:27.000000000 +0200
|
||||
+++ uClibc/Makefile.in 2008-09-02 14:51:42.000000000 +0200
|
||||
@@ -145,7 +145,7 @@
|
||||
cd $(top_builddir); \
|
||||
tmp=`mktemp include/bits/sysnum.h.XXXXXX 2>/dev/null`; \
|
||||
[ -z "$$tmp" ] && tmp='include/bits/sysnum.h.new'; \
|
||||
- KERNEL_HEADERS="${KERNEL_HEADERS}" top_builddir=. CC="$(CC) $(CPU_CFLAGS)" $(SHELL) extra/scripts/gen_bits_syscall_h.sh > $$tmp; \
|
||||
+ KERNEL_HEADERS="${KERNEL_HEADERS}" top_builddir=. CC="$(HOSTCC) $(CPU_CFLAGS)" $(SHELL) extra/scripts/gen_bits_syscall_h.sh > $$tmp; \
|
||||
if cmp include/bits/sysnum.h $$tmp >/dev/null 2>&1; then \
|
||||
$(RM) $$tmp; \
|
||||
else \
|
||||
|
@ -15,7 +15,7 @@ stripping out required symbols.
|
||||
const char *name2 = name;
|
||||
#endif
|
||||
+#ifdef _DLSYM_TRACE_NAME
|
||||
+ FILE *log = fopen("/var/log/dlsym.log", "a");
|
||||
+ FILE *log = fopen("/dlsym.log", "a");
|
||||
+
|
||||
+ fprintf(log, "%s\n", name);
|
||||
+ fflush(log);
|
||||
|
@ -0,0 +1,11 @@
|
||||
--- a/libc/inet/getaddrinfo.c
|
||||
+++ b/libc/inet/getaddrinfo.c
|
||||
@@ -187,6 +187,8 @@
|
||||
}
|
||||
|
||||
for (runp = ifa; runp != NULL; runp = runp->ifa_next) {
|
||||
+ if (runp->ifa_addr == NULL)
|
||||
+ continue;
|
||||
#if defined __UCLIBC_HAS_IPV4__
|
||||
if (runp->ifa_addr->sa_family == PF_INET)
|
||||
seen |= SEEN_IPV4;
|
@ -0,0 +1,80 @@
|
||||
diff -Naur uClibc-0.9.30.1/libc/stdlib/Makefile.in uClibc-0.9.30.1.patch/libc/stdlib/Makefile.in
|
||||
--- uClibc-0.9.30.1/libc/stdlib/Makefile.in 2008-11-07 22:15:53.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/stdlib/Makefile.in 2009-09-26 21:02:10.972572307 +0200
|
||||
@@ -14,7 +14,7 @@
|
||||
rand.c random.c random_r.c setenv.c system.c div.c ldiv.c lldiv.c \
|
||||
getpt.c drand48-iter.c jrand48.c \
|
||||
jrand48_r.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c nrand48.c \
|
||||
- nrand48_r.c rand_r.c srand48.c srand48_r.c seed48.c seed48_r.c \
|
||||
+ nrand48_r.c rand_r.c rpmatch.c srand48.c srand48_r.c seed48.c seed48_r.c \
|
||||
valloc.c a64l.c l64a.c __uc_malloc.c
|
||||
ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
|
||||
CSRC += posix_memalign.c
|
||||
diff -Naur uClibc-0.9.30.1/libc/stdlib/rpmatch.c uClibc-0.9.30.1.patch/libc/stdlib/rpmatch.c
|
||||
--- uClibc-0.9.30.1/libc/stdlib/rpmatch.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/stdlib/rpmatch.c 2003-06-12 00:12:19.000000000 +0200
|
||||
@@ -0,0 +1,64 @@
|
||||
+/* Determine whether string value is affirmation or negative response
|
||||
+ according to current locale's data.
|
||||
+ This file is part of the GNU C Library.
|
||||
+ Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+#include <langinfo.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <regex.h>
|
||||
+
|
||||
+
|
||||
+int
|
||||
+rpmatch (response)
|
||||
+ const char *response;
|
||||
+{
|
||||
+ /* Match against one of the response patterns, compiling the pattern
|
||||
+ first if necessary. */
|
||||
+ auto int try (const int tag, const int match, const int nomatch,
|
||||
+ const char **lastp, regex_t *re);
|
||||
+
|
||||
+ int try (const int tag, const int match, const int nomatch,
|
||||
+ const char **lastp, regex_t *re)
|
||||
+ {
|
||||
+ const char *pattern = nl_langinfo (tag);
|
||||
+ if (pattern != *lastp)
|
||||
+ {
|
||||
+ /* The pattern has changed. */
|
||||
+ if (*lastp)
|
||||
+ {
|
||||
+ /* Free the old compiled pattern. */
|
||||
+ __regfree (re);
|
||||
+ *lastp = NULL;
|
||||
+ }
|
||||
+ /* Compile the pattern and cache it for future runs. */
|
||||
+ if (__regcomp (re, pattern, REG_EXTENDED) != 0)
|
||||
+ return -1;
|
||||
+ *lastp = pattern;
|
||||
+ }
|
||||
+
|
||||
+ /* Try the pattern. */
|
||||
+ return __regexec (re, response, 0, NULL, 0) == 0 ? match : nomatch;
|
||||
+ }
|
||||
+
|
||||
+ /* We cache the response patterns and compiled regexps here. */
|
||||
+ static const char *yesexpr, *noexpr;
|
||||
+ static regex_t yesre, nore;
|
||||
+
|
||||
+ return (try (YESEXPR, 1, 0, &yesexpr, &yesre) ?:
|
||||
+ try (NOEXPR, 0, -1, &noexpr, &nore));
|
||||
+}
|
@ -0,0 +1,119 @@
|
||||
diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in
|
||||
index fbb5729..788571e 100644
|
||||
--- a/libc/sysdeps/linux/common/Makefile.in
|
||||
+++ b/libc/sysdeps/linux/common/Makefile.in
|
||||
@@ -31,7 +31,7 @@ CSRC := $(filter-out capget.c capset.c inotify.c ioperm.c iopl.c madvise.c \
|
||||
remap_file_pages.c sched_getaffinity.c sched_setaffinity.c \
|
||||
sendfile64.c sendfile.c setfsgid.c setfsuid.c setresuid.c \
|
||||
splice.c vmsplice.c tee.c signalfd.c swapoff.c swapon.c \
|
||||
- sync_file_range.c sysctl.c sysinfo.c uselib.c vhangup.c,$(CSRC))
|
||||
+ sync_file_range.c sysctl.c sysinfo.c timerfd.c uselib.c vhangup.c,$(CSRC))
|
||||
endif
|
||||
|
||||
ifneq ($(UCLIBC_BSD_SPECIFIC),y)
|
||||
diff --git a/libc/sysdeps/linux/common/sys/timerfd.h b/libc/sysdeps/linux/common/sys/timerfd.h
|
||||
new file mode 100644
|
||||
index 0000000..c1bb06f
|
||||
--- a/dev/null
|
||||
+++ b/libc/sysdeps/linux/common/sys/timerfd.h
|
||||
@@ -0,0 +1,60 @@
|
||||
+/* Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+#ifndef _SYS_TIMERFD_H
|
||||
+#define _SYS_TIMERFD_H 1
|
||||
+
|
||||
+#include <time.h>
|
||||
+
|
||||
+
|
||||
+/* Bits to be set in the FLAGS parameter of `timerfd_create'. */
|
||||
+enum
|
||||
+ {
|
||||
+ TFD_CLOEXEC = 02000000,
|
||||
+#define TFD_CLOEXEC TFD_CLOEXEC
|
||||
+ TFD_NONBLOCK = 04000
|
||||
+#define TFD_NONBLOCK TFD_NONBLOCK
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+/* Bits to be set in the FLAGS parameter of `timerfd_settime'. */
|
||||
+enum
|
||||
+ {
|
||||
+ TFD_TIMER_ABSTIME = 1 << 0
|
||||
+#define TFD_TIMER_ABSTIME TFD_TIMER_ABSTIME
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+__BEGIN_DECLS
|
||||
+
|
||||
+/* Return file descriptor for new interval timer source. */
|
||||
+extern int timerfd_create (clockid_t __clock_id, int __flags) __THROW;
|
||||
+
|
||||
+/* Set next expiration time of interval timer source UFD to UTMR. If
|
||||
+ FLAGS has the TFD_TIMER_ABSTIME flag set the timeout value is
|
||||
+ absolute. Optionally return the old expiration time in OTMR. */
|
||||
+extern int timerfd_settime (int __ufd, int __flags,
|
||||
+ __const struct itimerspec *__utmr,
|
||||
+ struct itimerspec *__otmr) __THROW;
|
||||
+
|
||||
+/* Return the next expiration time of UFD. */
|
||||
+extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
|
||||
+
|
||||
+__END_DECLS
|
||||
+
|
||||
+#endif /* sys/timerfd.h */
|
||||
diff --git a/libc/sysdeps/linux/common/timerfd.c b/libc/sysdeps/linux/common/timerfd.c
|
||||
new file mode 100644
|
||||
index 0000000..2332044
|
||||
--- a/dev/null
|
||||
+++ b/libc/sysdeps/linux/common/timerfd.c
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* vi: set sw=4 ts=4: */
|
||||
+/*
|
||||
+ * timerfd_create() / timerfd_settime() / timerfd_gettime() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Stephan Raue <stephan@openelec.tv>
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/timerfd.h>
|
||||
+
|
||||
+/*
|
||||
+ * timerfd_create()
|
||||
+ */
|
||||
+#ifdef __NR_timerfd_create
|
||||
+_syscall2(int, timerfd_create, int, clockid, int, flags)
|
||||
+#endif
|
||||
+
|
||||
+/*
|
||||
+ * timerfd_settime()
|
||||
+ */
|
||||
+#ifdef __NR_timerfd_settime
|
||||
+_syscall4(int,timerfd_settime, int, ufd, int, flags, const struct itimerspec *, utmr, struct itimerspec *, otmr)
|
||||
+#endif
|
||||
+
|
||||
+/*
|
||||
+ * timerfd_gettime()
|
||||
+ */
|
||||
+#ifdef __NR_timerfd_gettime
|
||||
+_syscall2(int, timerfd_gettime, int, ufd, struct itimerspec *, otmr)
|
||||
+#endif
|
||||
--
|
||||
cgit v0.8.2.1
|
@ -0,0 +1,811 @@
|
||||
diff -Naur uClibc-0.9.30.1/include/dirent.h uClibc-0.9.30.1.patch/include/dirent.h
|
||||
--- uClibc-0.9.30.1/include/dirent.h 2005-11-03 20:13:24.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/include/dirent.h 2009-08-15 10:03:32.679480228 +0200
|
||||
@@ -134,6 +134,14 @@
|
||||
marked with __THROW. */
|
||||
extern DIR *opendir (__const char *__name) __nonnull ((1));
|
||||
|
||||
+#ifdef __USE_XOPEN2K8
|
||||
+/* Same as opendir, but open the stream on the file descriptor FD.
|
||||
+
|
||||
+ This function is a possible cancellation point and therefore not
|
||||
+ marked with __THROW. */
|
||||
+extern DIR *fdopendir (int __fd);
|
||||
+#endif
|
||||
+
|
||||
/* Close the directory stream DIRP.
|
||||
Return 0 if successful, -1 if not.
|
||||
|
||||
@@ -210,7 +218,7 @@
|
||||
extern long int telldir (DIR *__dirp) __THROW __nonnull ((1));
|
||||
#endif
|
||||
|
||||
-#if defined __USE_BSD || defined __USE_MISC
|
||||
+#if defined __USE_BSD || defined __USE_MISC || defined __XOPEN_2K8
|
||||
|
||||
/* Return the file descriptor used by DIRP. */
|
||||
extern int dirfd (DIR *__dirp) __THROW __nonnull ((1));
|
||||
diff -Naur uClibc-0.9.30.1/include/fcntl.h uClibc-0.9.30.1.patch/include/fcntl.h
|
||||
--- uClibc-0.9.30.1/include/fcntl.h 2008-10-03 15:59:52.000000000 +0200
|
||||
+++ uClibc-0.9.30.1.patch/include/fcntl.h 2009-08-15 10:03:32.680479250 +0200
|
||||
@@ -56,13 +56,16 @@
|
||||
# define SEEK_END 2 /* Seek from end of file. */
|
||||
#endif /* XPG */
|
||||
|
||||
-#if 0 /*def __USE_GNU*/
|
||||
+#ifdef __USE_ATFILE
|
||||
# define AT_FDCWD -100 /* Special value used to indicate
|
||||
- openat should use the current
|
||||
- working directory. */
|
||||
+ the *at functions should use the
|
||||
+ current working directory. */
|
||||
# define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */
|
||||
# define AT_REMOVEDIR 0x200 /* Remove directory instead of
|
||||
unlinking file. */
|
||||
+# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */
|
||||
+# define AT_EACCESS 0x200 /* Test access permitted for
|
||||
+ effective IDs, not real IDs. */
|
||||
#endif
|
||||
|
||||
/* Do the file control operation described by CMD on FD.
|
||||
@@ -103,11 +106,11 @@
|
||||
extern int open64 (__const char *__file, int __oflag, ...) __nonnull ((1));
|
||||
#endif
|
||||
|
||||
-#if 0 /*def __USE_GNU*/
|
||||
-/* Similar to OPEN but a relative path name is interpreted relative to
|
||||
+#ifdef __USE_ATFILE
|
||||
+/* Similar to `open' but a relative path name is interpreted relative to
|
||||
the directory for which FD is a descriptor.
|
||||
|
||||
- NOTE: some other OPENAT implementation support additional functionality
|
||||
+ NOTE: some other `openat' implementation support additional functionality
|
||||
through this interface, especially using the O_XATTR flag. This is not
|
||||
yet supported here.
|
||||
|
||||
diff -Naur uClibc-0.9.30.1/include/features.h uClibc-0.9.30.1.patch/include/features.h
|
||||
--- uClibc-0.9.30.1/include/features.h 2008-09-06 18:45:07.000000000 +0200
|
||||
+++ uClibc-0.9.30.1.patch/include/features.h 2009-08-15 10:44:21.810477838 +0200
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 1991-1993,1995-2003,2004,2005 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 1991-1993,1995-2006,2007,2009 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -50,9 +50,10 @@
|
||||
if >=199309L, add IEEE Std 1003.1b-1993;
|
||||
if >=199506L, add IEEE Std 1003.1c-1995;
|
||||
if >=200112L, all of IEEE 1003.1-2004
|
||||
+ if >=200809L, all of IEEE 1003.1-2008
|
||||
_XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
|
||||
Single Unix conformance is wanted, to 600 for the
|
||||
- upcoming sixth revision.
|
||||
+ sixth revision, to 700 for the seventh revision.
|
||||
_XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
|
||||
_LARGEFILE_SOURCE Some more functions for correct standard I/O.
|
||||
_LARGEFILE64_SOURCE Additional functionality from LFS for large files.
|
||||
@@ -69,7 +70,7 @@
|
||||
The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__.
|
||||
If none of these are defined, the default is to have _SVID_SOURCE,
|
||||
_BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
|
||||
- 199506L. If more than one of these are defined, they accumulate.
|
||||
+ 200112L. If more than one of these are defined, they accumulate.
|
||||
For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE
|
||||
together give you ISO C, 1003.1, and 1003.2, but nothing else.
|
||||
|
||||
@@ -77,6 +78,7 @@
|
||||
header files to decide what to declare or define:
|
||||
|
||||
__USE_ISOC99 Define ISO C99 things.
|
||||
+ __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
|
||||
__USE_POSIX Define IEEE Std 1003.1 things.
|
||||
__USE_POSIX2 Define IEEE Std 1003.2 things.
|
||||
__USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
|
||||
@@ -85,6 +87,7 @@
|
||||
__USE_XOPEN_EXTENDED Define X/Open Unix things.
|
||||
__USE_UNIX98 Define Single Unix V2 things.
|
||||
__USE_XOPEN2K Define XPG6 things.
|
||||
+ __USE_XOPEN2K8 Define XPG7 things.
|
||||
__USE_LARGEFILE Define correct standard I/O things.
|
||||
__USE_LARGEFILE64 Define LFS things with separate names.
|
||||
__USE_FILE_OFFSET64 Define 64bit interface as default.
|
||||
@@ -111,6 +114,7 @@
|
||||
|
||||
/* Undefine everything, so we get a clean slate. */
|
||||
#undef __USE_ISOC99
|
||||
+#undef __USE_ISOC95
|
||||
#undef __USE_POSIX
|
||||
#undef __USE_POSIX2
|
||||
#undef __USE_POSIX199309
|
||||
@@ -119,6 +123,7 @@
|
||||
#undef __USE_XOPEN_EXTENDED
|
||||
#undef __USE_UNIX98
|
||||
#undef __USE_XOPEN2K
|
||||
+#undef __USE_XOPEN2K8
|
||||
#undef __USE_LARGEFILE
|
||||
#undef __USE_LARGEFILE64
|
||||
#undef __USE_FILE_OFFSET64
|
||||
@@ -171,9 +176,9 @@
|
||||
# undef _POSIX_SOURCE
|
||||
# define _POSIX_SOURCE 1
|
||||
# undef _POSIX_C_SOURCE
|
||||
-# define _POSIX_C_SOURCE 199506L
|
||||
+# define _POSIX_C_SOURCE 200809L
|
||||
# undef _XOPEN_SOURCE
|
||||
-# define _XOPEN_SOURCE 600
|
||||
+# define _XOPEN_SOURCE 700
|
||||
# undef _XOPEN_SOURCE_EXTENDED
|
||||
# define _XOPEN_SOURCE_EXTENDED 1
|
||||
# ifdef __UCLIBC_HAS_LFS__
|
||||
@@ -207,6 +212,12 @@
|
||||
# define __USE_ISOC99 1
|
||||
#endif
|
||||
|
||||
+/* This is to enable the ISO C90 Amendment 1:1995 extension. */
|
||||
+#if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \
|
||||
+ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))
|
||||
+# define __USE_ISOC95 1
|
||||
+#endif
|
||||
+
|
||||
/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2
|
||||
(and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */
|
||||
#if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE - 0) >= 500) && \
|
||||
@@ -214,9 +225,14 @@
|
||||
# define _POSIX_SOURCE 1
|
||||
# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500
|
||||
# define _POSIX_C_SOURCE 2
|
||||
-# else
|
||||
+# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600
|
||||
# define _POSIX_C_SOURCE 199506L
|
||||
+# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700
|
||||
+# define _POSIX_C_SOURCE 200112L
|
||||
+# else
|
||||
+# define _POSIX_C_SOURCE 200809L
|
||||
# endif
|
||||
+# define __USE_POSIX_IMPLICITLY 1
|
||||
#endif
|
||||
|
||||
#if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE
|
||||
@@ -237,6 +253,14 @@
|
||||
|
||||
#if (_POSIX_C_SOURCE - 0) >= 200112L
|
||||
# define __USE_XOPEN2K 1
|
||||
+# undef __USE_ISOC99
|
||||
+# define __USE_ISOC99 1
|
||||
+#endif
|
||||
+
|
||||
+#if (_POSIX_C_SOURCE - 0) >= 200809L
|
||||
+# define __USE_XOPEN2K8 1
|
||||
+# undef _ATFILE_SOURCE
|
||||
+# define _ATFILE_SOURCE 1
|
||||
#endif
|
||||
|
||||
#ifdef _XOPEN_SOURCE
|
||||
@@ -247,6 +271,9 @@
|
||||
# undef _LARGEFILE_SOURCE
|
||||
# define _LARGEFILE_SOURCE 1
|
||||
# if (_XOPEN_SOURCE - 0) >= 600
|
||||
+# if (_XOPEN_SOURCE - 0) >= 700
|
||||
+# define __USE_XOPEN2K8 1
|
||||
+# endif
|
||||
# define __USE_XOPEN2K 1
|
||||
# undef __USE_ISOC99
|
||||
# define __USE_ISOC99 1
|
||||
@@ -313,7 +340,7 @@
|
||||
|
||||
#ifdef __UCLIBC_HAS_WCHAR__
|
||||
/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1. */
|
||||
-# define __STDC_ISO_10646__ 200009L
|
||||
+#define __STDC_ISO_10646__ 200009L
|
||||
#endif
|
||||
|
||||
/* There is an unwholesomely huge amount of code out there that depends on the
|
||||
@@ -406,10 +433,6 @@
|
||||
# define __USE_LARGEFILE64 1
|
||||
#endif
|
||||
|
||||
-/* uClibc does not support *at interfaces. */
|
||||
-#undef _ATFILE_SOURCE
|
||||
-#undef __USE_ATFILE
|
||||
-
|
||||
#ifdef _LIBC
|
||||
# include <libc-internal.h>
|
||||
#endif
|
||||
diff -Naur uClibc-0.9.30.1/include/stdio.h uClibc-0.9.30.1.patch/include/stdio.h
|
||||
--- uClibc-0.9.30.1/include/stdio.h 2008-09-30 14:17:04.000000000 +0200
|
||||
+++ uClibc-0.9.30.1.patch/include/stdio.h 2009-08-15 10:03:32.684355210 +0200
|
||||
@@ -147,6 +147,11 @@
|
||||
extern int rename (__const char *__old, __const char *__new) __THROW;
|
||||
__END_NAMESPACE_STD
|
||||
|
||||
+#ifdef __USE_ATFILE
|
||||
+/* Rename file OLD relative to OLDFD to NEW relative to NEWFD. */
|
||||
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
|
||||
+ __const char *__new) __THROW;
|
||||
+#endif
|
||||
|
||||
__BEGIN_NAMESPACE_STD
|
||||
/* Create a temporary file and open it read/write.
|
||||
diff -Naur uClibc-0.9.30.1/include/sys/stat.h uClibc-0.9.30.1.patch/include/sys/stat.h
|
||||
--- uClibc-0.9.30.1/include/sys/stat.h 2006-03-01 10:55:06.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/include/sys/stat.h 2009-08-15 11:56:12.531353835 +0200
|
||||
@@ -1,4 +1,5 @@
|
||||
-/* Copyright (C) 1991,1992,1995-2004,2005,2006 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 1991, 1992, 1995-2004, 2005, 2006, 2007, 2009
|
||||
+ Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -27,11 +28,12 @@
|
||||
|
||||
#include <bits/types.h> /* For __mode_t and __dev_t. */
|
||||
|
||||
-#if defined __USE_XOPEN || defined __USE_MISC
|
||||
+#if defined __USE_XOPEN || defined __USE_XOPEN2K || defined __USE_MISC \
|
||||
+ || defined __USE_ATFILE
|
||||
# if defined __USE_XOPEN || defined __USE_XOPEN2K
|
||||
# define __need_time_t
|
||||
# endif
|
||||
-# ifdef __USE_MISC
|
||||
+# if defined __USE_MISC || defined __USE_ATFILE
|
||||
# define __need_timespec
|
||||
# endif
|
||||
# include <time.h> /* For time_t resp. timespec. */
|
||||
@@ -247,12 +249,14 @@
|
||||
# endif
|
||||
# endif
|
||||
|
||||
+# ifdef __USE_LARGEFILE64
|
||||
extern int fstatat64 (int __fd, __const char *__restrict __file,
|
||||
struct stat64 *__restrict __buf, int __flag)
|
||||
__THROW __nonnull ((2, 3));
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
|
||||
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
/* Get file attributes about FILE and put them in BUF.
|
||||
If FILE is a symbolic link, do not follow it. */
|
||||
@@ -296,7 +300,8 @@
|
||||
#ifdef __USE_ATFILE
|
||||
/* Set file access permissions of FILE relative to
|
||||
the directory FD is open on. */
|
||||
-extern int fchmodat (int __fd, __const char *__file, __mode_t mode, int __flag)
|
||||
+extern int fchmodat (int __fd, __const char *__file, __mode_t __mode,
|
||||
+ int __flag)
|
||||
__THROW __nonnull ((2)) __wur;
|
||||
#endif /* Use ATFILE. */
|
||||
|
||||
@@ -330,14 +335,15 @@
|
||||
#if defined __USE_MISC || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
|
||||
extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
|
||||
__THROW __nonnull ((1));
|
||||
-#endif
|
||||
|
||||
-#ifdef __USE_ATFILE
|
||||
+# ifdef __USE_ATFILE
|
||||
/* Like mknod, create a new device file with permission bits MODE and
|
||||
device number DEV. But interpret relative PATH names relative to
|
||||
the directory associated with FD. */
|
||||
extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
|
||||
__dev_t __dev) __THROW __nonnull ((2));
|
||||
+libc_hidden_proto(mknodat)
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -352,7 +358,21 @@
|
||||
extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
|
||||
__THROW __nonnull ((2));
|
||||
#endif
|
||||
+
|
||||
+#ifdef __USE_ATFILE
|
||||
+/* Set file access and modification times relative to directory file
|
||||
+ descriptor. */
|
||||
+extern int utimensat (int __fd, __const char *__path,
|
||||
+ __const struct timespec __times[2],
|
||||
+ int __flags)
|
||||
+ __THROW __nonnull ((2));
|
||||
+#endif
|
||||
|
||||
+#ifdef __USE_XOPEN2K8
|
||||
+/* Set file access and modification times of the file associated with FD. */
|
||||
+extern int futimens (int __fd, __const struct timespec __times[2]) __THROW;
|
||||
+#endif
|
||||
+
|
||||
/* on uClibc we have unversioned struct stat and mknod.
|
||||
* bits/stat.h is filled with wrong info, so we undo it here. */
|
||||
#undef _STAT_VER
|
||||
diff -Naur uClibc-0.9.30.1/include/sys/time.h uClibc-0.9.30.1.patch/include/sys/time.h
|
||||
--- uClibc-0.9.30.1/include/sys/time.h 2005-11-30 18:07:06.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/include/sys/time.h 2009-08-15 10:03:32.697354509 +0200
|
||||
@@ -148,7 +148,7 @@
|
||||
extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW;
|
||||
#endif
|
||||
|
||||
-#if 0 /*def __USE_GNU*/
|
||||
+#ifdef __USE_GNU
|
||||
/* Change the access time of FILE relative to FD to TVP[0] and the
|
||||
modification time of FILE to TVP[1]. If TVP is a null pointer, use
|
||||
the current time instead. Returns 0 on success, -1 on errors. */
|
||||
diff -Naur uClibc-0.9.30.1/libc/misc/dirent/opendir.c uClibc-0.9.30.1.patch/libc/misc/dirent/opendir.c
|
||||
--- uClibc-0.9.30.1/libc/misc/dirent/opendir.c 2008-09-09 14:04:00.000000000 +0200
|
||||
+++ uClibc-0.9.30.1.patch/libc/misc/dirent/opendir.c 2009-08-15 12:21:21.758478373 +0200
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <unistd.h>
|
||||
#include <sys/dir.h>
|
||||
#include <sys/stat.h>
|
||||
+#include <dirent.h>
|
||||
#include "dirstream.h"
|
||||
|
||||
libc_hidden_proto(opendir)
|
||||
@@ -21,6 +22,53 @@
|
||||
libc_hidden_proto(stat)
|
||||
libc_hidden_proto(fstat)
|
||||
|
||||
+static DIR *fd_to_DIR(int fd, __blksize_t size)
|
||||
+{
|
||||
+ DIR *ptr;
|
||||
+
|
||||
+ ptr = malloc(sizeof(*ptr));
|
||||
+ if (!ptr)
|
||||
+ return NULL;
|
||||
+
|
||||
+ ptr->dd_fd = fd;
|
||||
+ ptr->dd_nextloc = ptr->dd_size = ptr->dd_nextoff = 0;
|
||||
+ ptr->dd_max = size;
|
||||
+ if (ptr->dd_max < 512)
|
||||
+ ptr->dd_max = 512;
|
||||
+
|
||||
+ ptr->dd_buf = calloc(1, ptr->dd_max);
|
||||
+ if (!ptr->dd_buf) {
|
||||
+ free(ptr);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ __pthread_mutex_init(&ptr->dd_lock, NULL);
|
||||
+
|
||||
+ return ptr;
|
||||
+}
|
||||
+
|
||||
+DIR *fdopendir(int fd)
|
||||
+{
|
||||
+ int flags;
|
||||
+ struct stat st;
|
||||
+
|
||||
+ if (fstat(fd, &st))
|
||||
+ return NULL;
|
||||
+ if (!S_ISDIR(st.st_mode)) {
|
||||
+ __set_errno(ENOTDIR);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ flags = fcntl(fd, F_GETFL);
|
||||
+ if (flags == -1)
|
||||
+ return NULL;
|
||||
+ if ((flags & O_ACCMODE) == O_WRONLY) {
|
||||
+ __set_errno(EINVAL);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ return fd_to_DIR(fd, st.st_blksize);
|
||||
+}
|
||||
+
|
||||
/* opendir just makes an open() call - it return NULL if it fails
|
||||
* (open sets errno), otherwise it returns a DIR * pointer.
|
||||
*/
|
||||
@@ -61,23 +109,12 @@
|
||||
__set_errno(saved_errno);
|
||||
return NULL;
|
||||
}
|
||||
- if (!(ptr = malloc(sizeof(*ptr))))
|
||||
- goto nomem_close_and_ret;
|
||||
|
||||
- ptr->dd_fd = fd;
|
||||
- ptr->dd_nextloc = ptr->dd_size = ptr->dd_nextoff = 0;
|
||||
- ptr->dd_max = statbuf.st_blksize;
|
||||
- if (ptr->dd_max < 512)
|
||||
- ptr->dd_max = 512;
|
||||
-
|
||||
- if (!(ptr->dd_buf = calloc(1, ptr->dd_max))) {
|
||||
- free(ptr);
|
||||
-nomem_close_and_ret:
|
||||
+ ptr = fd_to_DIR(fd, statbuf.st_blksize);
|
||||
+ if (!ptr) {
|
||||
close(fd);
|
||||
__set_errno(ENOMEM);
|
||||
- return NULL;
|
||||
}
|
||||
- __pthread_mutex_init(&(ptr->dd_lock), NULL);
|
||||
return ptr;
|
||||
}
|
||||
libc_hidden_def(opendir)
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/faccessat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/faccessat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/faccessat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/faccessat.c 2009-08-15 10:03:32.699355556 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * faccessat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#ifdef __NR_faccessat
|
||||
+_syscall4(int, faccessat, int, fd, const char *, file, int, type, int, flag)
|
||||
+#else
|
||||
+/* should add emulation with faccess() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/fchmodat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/fchmodat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/fchmodat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/fchmodat.c 2009-08-15 10:03:32.728479172 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * fchmodat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
+#ifdef __NR_fchmodat
|
||||
+_syscall4(int, fchmodat, int, fd, const char *, file, mode_t, mode, int, flag)
|
||||
+#else
|
||||
+/* should add emulation with fchmod() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/fchownat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/fchownat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/fchownat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/fchownat.c 2009-08-15 10:03:32.729480080 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * fchownat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#ifdef __NR_fchownat
|
||||
+_syscall5(int, fchownat, int, fd, const char *, file, uid_t, owner, gid_t, group, int, flag)
|
||||
+#else
|
||||
+/* should add emulation with fchown() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/fstatat64.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/fstatat64.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/fstatat64.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/fstatat64.c 2009-08-15 10:03:32.732479171 +0200
|
||||
@@ -0,0 +1,31 @@
|
||||
+/*
|
||||
+ * fstatat64() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include "xstatconv.h"
|
||||
+
|
||||
+#ifdef __UCLIBC_HAS_LFS__
|
||||
+
|
||||
+#ifdef __NR_fstatat64
|
||||
+int fstatat64(int fd, const char *file, struct stat64 *buf, int flag)
|
||||
+{
|
||||
+ int ret;
|
||||
+ struct kernel_stat64 kbuf;
|
||||
+
|
||||
+ ret = INLINE_SYSCALL(fstatat64, 4, fd, file, &kbuf, flag);
|
||||
+ if (ret == 0)
|
||||
+ __xstat64_conv(&kbuf, buf);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+#else
|
||||
+/* should add emulation with fstat64() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
+
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/fstatat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/fstatat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/fstatat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/fstatat.c 2009-08-15 10:03:32.731479102 +0200
|
||||
@@ -0,0 +1,27 @@
|
||||
+/*
|
||||
+ * fstatat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include "xstatconv.h"
|
||||
+
|
||||
+#ifdef __NR_fstatat64
|
||||
+int fstatat(int fd, const char *file, struct stat *buf, int flag)
|
||||
+{
|
||||
+ int ret;
|
||||
+ struct kernel_stat kbuf;
|
||||
+
|
||||
+ ret = INLINE_SYSCALL(fstatat64, 4, fd, file, &kbuf, flag);
|
||||
+ if (ret == 0)
|
||||
+ __xstat_conv(&kbuf, buf);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+#else
|
||||
+/* should add emulation with fstat() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/futimesat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/futimesat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/futimesat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/futimesat.c 2009-08-15 10:03:32.733494676 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * futimesat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/time.h>
|
||||
+
|
||||
+#ifdef __NR_futimesat
|
||||
+_syscall3(int, futimesat, int, fd, const char *, file, const struct timeval *, tvp)
|
||||
+#else
|
||||
+/* should add emulation with futimes() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/linkat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/linkat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/linkat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/linkat.c 2009-08-15 10:03:32.734479799 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * linkat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#ifdef __NR_linkat
|
||||
+_syscall5(int, linkat, int, fromfd, const char *, from, int, tofd, const char *, to, int, flags)
|
||||
+#else
|
||||
+/* should add emulation with link() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/mkdirat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/mkdirat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/mkdirat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/mkdirat.c 2009-08-15 10:03:32.738479729 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * mkdirat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
+#ifdef __NR_mkdirat
|
||||
+_syscall3(int, mkdirat, int, fd, const char *, path, mode_t, mode)
|
||||
+#else
|
||||
+/* should add emulation with mkdir() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/mkfifoat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/mkfifoat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/mkfifoat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/mkfifoat.c 2009-08-15 10:03:32.744479868 +0200
|
||||
@@ -0,0 +1,19 @@
|
||||
+/*
|
||||
+ * mkfifoat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
+#ifdef __NR_mknodat
|
||||
+int mkfifoat(int fd, const char *path, mode_t mode)
|
||||
+{
|
||||
+ return mknodat(fd, path, mode | S_IFIFO, 0);
|
||||
+}
|
||||
+#else
|
||||
+/* should add emulation with mkfifo() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/mknodat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/mknodat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/mknodat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/mknodat.c 2009-08-15 10:03:32.751479587 +0200
|
||||
@@ -0,0 +1,25 @@
|
||||
+/*
|
||||
+ * mknodat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
+#ifdef __NR_mknodat
|
||||
+int mknodat(int fd, const char *path, mode_t mode, dev_t dev)
|
||||
+{
|
||||
+ unsigned long long int k_dev;
|
||||
+
|
||||
+ /* We must convert the value to dev_t type used by the kernel. */
|
||||
+ k_dev = (dev) & ((1ULL << 32) - 1);
|
||||
+
|
||||
+ return INLINE_SYSCALL(mknodat, 4, fd, path, mode, (unsigned int)k_dev);
|
||||
+}
|
||||
+libc_hidden_def(mknodat)
|
||||
+#else
|
||||
+/* should add emulation with mknod() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/openat64.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/openat64.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/openat64.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/openat64.c 2009-08-15 10:03:32.759359038 +0200
|
||||
@@ -0,0 +1,25 @@
|
||||
+/*
|
||||
+ * openat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#define openat64 __xx_openat
|
||||
+#include <sys/syscall.h>
|
||||
+#include <fcntl.h>
|
||||
+#undef openat64
|
||||
+
|
||||
+#ifdef __UCLIBC_HAS_LFS__
|
||||
+
|
||||
+#ifdef __NR_openat
|
||||
+int openat64(int fd, const char *file, int oflag, mode_t mode)
|
||||
+{
|
||||
+ return openat(fd, file, oflag | O_LARGEFILE, mode);
|
||||
+}
|
||||
+#else
|
||||
+/* should add emulation with open() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
+
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/openat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/openat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/openat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/openat.c 2009-08-15 10:03:32.755477351 +0200
|
||||
@@ -0,0 +1,18 @@
|
||||
+/*
|
||||
+ * openat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#define openat __xx_openat
|
||||
+#include <sys/syscall.h>
|
||||
+#include <fcntl.h>
|
||||
+#undef openat
|
||||
+
|
||||
+#ifdef __NR_openat
|
||||
+_syscall4(int, openat, int, fd, const char *, file, int, oflag, mode_t, mode)
|
||||
+#else
|
||||
+/* should add emulation with open() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/readlinkat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/readlinkat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/readlinkat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/readlinkat.c 2009-08-15 10:03:32.762393051 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * readlinkat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#ifdef __NR_readlinkat
|
||||
+_syscall4(ssize_t, readlinkat, int, fd, const char *, path, char *, buf, size_t, len)
|
||||
+#else
|
||||
+/* should add emulation with readlink() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/renameat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/renameat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/renameat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/renameat.c 2009-08-15 10:03:32.767352332 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * renameat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <stdio.h>
|
||||
+
|
||||
+#ifdef __NR_renameat
|
||||
+_syscall4(int, renameat, int, oldfd, const char *, old, int, newfd, const char *, new)
|
||||
+#else
|
||||
+/* should add emulation with rename() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/symlinkat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/symlinkat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/symlinkat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/symlinkat.c 2009-08-15 10:03:32.770352122 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * symlinkat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#ifdef __NR_symlinkat
|
||||
+_syscall3(int, symlinkat, const char *, from, int, tofd, const char *, to)
|
||||
+#else
|
||||
+/* should add emulation with symlink() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/unlinkat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/unlinkat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/unlinkat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/unlinkat.c 2009-08-15 10:03:32.773353309 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * unlinkat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#ifdef __NR_unlinkat
|
||||
+_syscall3(int, unlinkat, int, fd, const char *, file, int, flag)
|
||||
+#else
|
||||
+/* should add emulation with unlink() and /proc/self/fd/ ... */
|
||||
+#endif
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/utimensat.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/utimensat.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/utimensat.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/utimensat.c 2009-08-15 10:03:32.777355124 +0200
|
||||
@@ -0,0 +1,16 @@
|
||||
+/*
|
||||
+ * utimensat() for uClibc
|
||||
+ *
|
||||
+ * Copyright (C) 2009 Analog Devices Inc.
|
||||
+ *
|
||||
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
||||
+ */
|
||||
+
|
||||
+#include <sys/syscall.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
+#ifdef __NR_utimensat
|
||||
+_syscall4(int, utimensat, int, fd, const char *, path, const struct timespec *, times, int, flags)
|
||||
+#else
|
||||
+/* should add emulation with utimens() and /proc/self/fd/ ... */
|
||||
+#endif
|
@ -0,0 +1,48 @@
|
||||
diff -Naur uClibc-0.9.30.1/libc/sysdeps/linux/common/ppoll.c uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/ppoll.c
|
||||
--- uClibc-0.9.30.1/libc/sysdeps/linux/common/ppoll.c 2008-10-24 10:34:31.000000000 +0200
|
||||
+++ uClibc-0.9.30.1.patch/libc/sysdeps/linux/common/ppoll.c 2009-08-15 18:32:11.166479655 +0200
|
||||
@@ -17,6 +17,7 @@
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
+#include <signal.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/poll.h>
|
||||
|
||||
@@ -24,26 +25,19 @@
|
||||
|
||||
libc_hidden_proto(ppoll)
|
||||
|
||||
-# define __NR___libc_ppoll __NR_ppoll
|
||||
-static __always_inline
|
||||
-_syscall4(int, __libc_ppoll, struct pollfd *, fds,
|
||||
- nfds_t, nfds, const struct timespec *, timeout,
|
||||
- const __sigset_t *, sigmask)
|
||||
-
|
||||
int
|
||||
-ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
|
||||
- const __sigset_t *sigmask)
|
||||
+ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
|
||||
+ const sigset_t *sigmask)
|
||||
{
|
||||
- /* The Linux kernel can in some situations update the timeout value.
|
||||
- We do not want that so use a local variable. */
|
||||
- struct timespec tval;
|
||||
- if (timeout != NULL)
|
||||
- {
|
||||
- tval = *timeout;
|
||||
- timeout = &tval;
|
||||
- }
|
||||
+ /* The Linux kernel can in some situations update the timeout value.
|
||||
+ We do not want that so use a local variable. */
|
||||
+ struct timespec tval;
|
||||
+ if (timeout != NULL) {
|
||||
+ tval = *timeout;
|
||||
+ timeout = &tval;
|
||||
+ }
|
||||
|
||||
- return __libc_ppoll(fds, nfds, timeout, sigmask);
|
||||
+ return INLINE_SYSCALL(ppoll, 5, fds, nfds, timeout, sigmask, _NSIG / 8);
|
||||
}
|
||||
libc_hidden_def(ppoll)
|
||||
|
@ -0,0 +1,30 @@
|
||||
diff -Naur uClibc-0.9.30.1/extra/scripts/unifdef.c uClibc-0.9.30.1.patch/extra/scripts/unifdef.c
|
||||
--- uClibc-0.9.30.1/extra/scripts/unifdef.c 2008-04-28 01:10:00.000000000 +0200
|
||||
+++ uClibc-0.9.30.1.patch/extra/scripts/unifdef.c 2009-04-06 13:19:01.225263004 +0200
|
||||
@@ -206,7 +206,7 @@
|
||||
static void error(const char *);
|
||||
static int findsym(const char *);
|
||||
static void flushline(bool);
|
||||
-static Linetype getline(void);
|
||||
+static Linetype get_line(void);
|
||||
static Linetype ifeval(const char **);
|
||||
static void ignoreoff(void);
|
||||
static void ignoreon(void);
|
||||
@@ -512,7 +512,7 @@
|
||||
|
||||
for (;;) {
|
||||
linenum++;
|
||||
- lineval = getline();
|
||||
+ lineval = get_line();
|
||||
trans_table[ifstate[depth]][lineval]();
|
||||
debug("process %s -> %s depth %d",
|
||||
linetype_name[lineval],
|
||||
@@ -526,7 +526,7 @@
|
||||
* help from skipcomment().
|
||||
*/
|
||||
static Linetype
|
||||
-getline(void)
|
||||
+get_line(void)
|
||||
{
|
||||
const char *cp;
|
||||
int cursym;
|
@ -1 +1 @@
|
||||
http://sources.openelec.tv/svn/uClibc-20090922.tar.bz2
|
||||
http://www.uclibc.org/downloads/uClibc-0.9.30.1.tar.bz2
|
Loading…
x
Reference in New Issue
Block a user