From 5c515a1c7a86c510b6ae4f99c5b2e20d52622543 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 16 Oct 2015 00:50:20 -0700 Subject: uclibc: Implement syncfs and AT_EMPTY_PATH for all and O_PATH for arm needed for systemd 225 to compile with uclibc Change-Id: Id5f990edf4a773de49742f9f9ea5139e55e21f69 Signed-off-by: Khem Raj Signed-off-by: Ross Burton --- meta/recipes-core/uclibc/uclibc-git.inc | 2 + ...-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch | 42 +++++++++++++++++++ .../uclibc/uclibc-git/0001-wire-in-syncfs.patch | 49 ++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 meta/recipes-core/uclibc/uclibc-git/0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch create mode 100644 meta/recipes-core/uclibc/uclibc-git/0001-wire-in-syncfs.patch diff --git a/meta/recipes-core/uclibc/uclibc-git.inc b/meta/recipes-core/uclibc/uclibc-git.inc index 9e3d64408c..dcb616d0d2 100644 --- a/meta/recipes-core/uclibc/uclibc-git.inc +++ b/meta/recipes-core/uclibc/uclibc-git.inc @@ -17,5 +17,7 @@ SRC_URI = "git://uclibc.org/uClibc.git;branch=master \ file://0006-ldso-limited-support-for-ORIGIN-in-rpath.patch \ file://0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch \ file://0001-gcc5-optimizes-away-the-write-only-static-functions-.patch \ + file://0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch \ + file://0001-wire-in-syncfs.patch \ " S = "${WORKDIR}/git" diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch b/meta/recipes-core/uclibc/uclibc-git/0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch new file mode 100644 index 0000000000..6942db4624 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-git/0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch @@ -0,0 +1,42 @@ +From 4c8f5fe7d41493e8e181941ae5a01713155f44d1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 15 Oct 2015 15:34:39 +0000 +Subject: [PATCH] fcntl: Add AT_EMPTY_PATH for all and O_PATH for arm + +Signed-off-by: Khem Raj +--- +Upstream-Status: Pending + + include/fcntl.h | 3 +++ + libc/sysdeps/linux/arm/bits/fcntl.h | 1 + + 2 files changed, 4 insertions(+) + +diff --git a/include/fcntl.h b/include/fcntl.h +index 11000dd..8a7ad9b 100644 +--- a/include/fcntl.h ++++ b/include/fcntl.h +@@ -65,6 +65,9 @@ __BEGIN_DECLS + # define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ + # define AT_EACCESS 0x200 /* Test access permitted for + effective IDs, not real IDs. */ ++# ifdef __USE_GNU ++# define AT_EMPTY_PATH 0x1000 /* Allow empty relative pathname. */ ++# endif + #endif + + /* Do the file control operation described by CMD on FD. +diff --git a/libc/sysdeps/linux/arm/bits/fcntl.h b/libc/sysdeps/linux/arm/bits/fcntl.h +index aedc154..c6ba958 100644 +--- a/libc/sysdeps/linux/arm/bits/fcntl.h ++++ b/libc/sysdeps/linux/arm/bits/fcntl.h +@@ -50,6 +50,7 @@ + # define O_DIRECT 0200000 /* Direct disk access. */ + # define O_NOATIME 01000000 /* Do not set atime. */ + # define O_CLOEXEC 02000000 /* Set close_on_exec. */ ++# define O_PATH 010000000 /* Resolve pathname but do not open file. */ + #endif + + /* For now Linux has synchronisity options for data and read operations. +-- +2.6.1 + diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-wire-in-syncfs.patch b/meta/recipes-core/uclibc/uclibc-git/0001-wire-in-syncfs.patch new file mode 100644 index 0000000000..079ad6b3b4 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-git/0001-wire-in-syncfs.patch @@ -0,0 +1,49 @@ +From 4f2db1b46bda5e376245ec36198b137709f069e8 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 15 Oct 2015 17:03:37 +0000 +Subject: [PATCH] wire in syncfs + +Signed-off-by: Khem Raj +--- +Upstream-Status: Pending + + include/unistd.h | 2 +- + libc/sysdeps/linux/common/syncfs.c | 13 +++++++++++++ + 2 files changed, 14 insertions(+), 1 deletion(-) + create mode 100644 libc/sysdeps/linux/common/syncfs.c + +diff --git a/include/unistd.h b/include/unistd.h +index 3793d2d..d01bb08 100644 +--- a/include/unistd.h ++++ b/include/unistd.h +@@ -1073,7 +1073,7 @@ extern char *getpass (const char *__prompt) __nonnull ((1)); + extern int fsync (int __fd); + #endif /* Use BSD || X/Open || Unix98. */ + +-#if 0 /*def __USE_GNU */ ++#ifdef __USE_GNU + /* Make all changes done to all files on the file system associated + * with FD actually appear on disk. */ + extern int syncfs (int __fd) __THROW; +diff --git a/libc/sysdeps/linux/common/syncfs.c b/libc/sysdeps/linux/common/syncfs.c +new file mode 100644 +index 0000000..d2eed05 +--- /dev/null ++++ b/libc/sysdeps/linux/common/syncfs.c +@@ -0,0 +1,13 @@ ++/* vi: set sw=4 ts=4: */ ++/* ++ * fsync() for uClibc ++ * ++ * Copyright (C) 2000-2006 Erik Andersen ++ * ++ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. ++ */ ++ ++#include ++#include ++ ++_syscall1(int, syncfs, int, fd) +-- +2.6.1 + -- cgit 1.2.3-korg