diff options
author | Khem Raj <raj.khem@gmail.com> | 2015-08-17 02:35:33 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-08-19 18:05:36 +0100 |
commit | d6eb9cceb3079d0512535f8e5e32fe3a28fdf9b2 (patch) | |
tree | d7f603eadeec6d241e1867061356c5aa90047f14 /meta/recipes-core/uclibc | |
parent | 71e18354198276fa7a9c4d343693bec90ec9b50d (diff) | |
download | poky-d6eb9cceb3079d0512535f8e5e32fe3a28fdf9b2.tar.gz |
uclibc: Upgrade to tip of master
Drop upstreamed patches convert the rest to git am'able patches
(From OE-Core rev: 1c28f9300f133dc49755b34e4861ab5509609da4)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/uclibc')
23 files changed, 944 insertions, 1685 deletions
diff --git a/meta/recipes-core/uclibc/uclibc-git.inc b/meta/recipes-core/uclibc/uclibc-git.inc index 3c489406d9..14a577f432 100644 --- a/meta/recipes-core/uclibc/uclibc-git.inc +++ b/meta/recipes-core/uclibc/uclibc-git.inc | |||
@@ -1,30 +1,20 @@ | |||
1 | SRCREV = "48a0006012679ff0eda6f256da958d73a924fb57" | 1 | SRCREV = "ca1c74d67dd115d059a875150e10b8560a9c35a8" |
2 | 2 | ||
3 | PV = "0.9.33+git${SRCPV}" | 3 | PV = "0.9.33+git${SRCPV}" |
4 | 4 | ||
5 | FILESEXTRAPATHS =. "${FILE_DIRNAME}/uclibc-git:" | 5 | FILESEXTRAPATHS =. "${FILE_DIRNAME}/uclibc-git:" |
6 | 6 | ||
7 | SRC_URI = "git://uclibc.org/uClibc.git;branch=master \ | 7 | SRC_URI = "git://uclibc.org/uClibc.git;branch=master \ |
8 | file://uClibc.machine \ | 8 | file://uClibc.machine \ |
9 | file://uClibc.distro \ | 9 | file://uClibc.distro \ |
10 | file://obstack.cfg \ | 10 | file://obstack.cfg \ |
11 | file://locale.cfg \ | 11 | file://locale.cfg \ |
12 | file://uclibc_enable_log2_test.patch \ | 12 | file://0001-Disable-lrount_tes-function.patch \ |
13 | file://powerpc_copysignl.patch \ | 13 | file://0002-Add-implementation-for-copysignl-for-ppc.patch \ |
14 | file://argp-support.patch \ | 14 | file://0003-Add-argp-implementation.patch \ |
15 | file://argp-headers.patch \ | 15 | file://0004-Dont-support-localised-optimizations-this-helps-to-h.patch \ |
16 | file://remove_attribute_optimize_Os.patch \ | 16 | file://0005-Always-use-O2-for-compiling-fork.c.patch \ |
17 | file://compile-arm-fork-with-O2.patch \ | 17 | file://0006-ldso-limited-support-for-ORIGIN-in-rpath.patch \ |
18 | file://0001-ldso-limited-support-for-ORIGIN-in-rpath.patch \ | 18 | file://0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch \ |
19 | file://0001-atexit_old-Do-not-add-it-to-shared-libc.patch \ | 19 | " |
20 | file://0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch \ | ||
21 | file://0001-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch \ | ||
22 | file://0001-librt-Use-nodefaultlibs-instead-of-nostdlib.patch \ | ||
23 | file://0001-Revert-utent.c-wtent.c-move-functions-from-utxent.c.patch \ | ||
24 | file://0001-Add-eventfd_read-and-eventfd_write.patch \ | ||
25 | file://0002-wire-setns-syscall.patch \ | ||
26 | file://0001-Define-IPTOS_CLASS_-macros-according-to-RFC-2474.patch \ | ||
27 | file://0001-timex-Sync-with-glibc.patch \ | ||
28 | file://ldso-mark-_dl_exit-as-noreturn.patch \ | ||
29 | " | ||
30 | S = "${WORKDIR}/git" | 20 | S = "${WORKDIR}/git" |
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-Add-eventfd_read-and-eventfd_write.patch b/meta/recipes-core/uclibc/uclibc-git/0001-Add-eventfd_read-and-eventfd_write.patch deleted file mode 100644 index dd0efc0f36..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0001-Add-eventfd_read-and-eventfd_write.patch +++ /dev/null | |||
@@ -1,120 +0,0 @@ | |||
1 | From e3aae24ede969e2dede1aa19c2ee520cab71ce11 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Thu, 20 Feb 2014 00:30:18 -0800 | ||
4 | Subject: [PATCH 1/3] Add eventfd_read() and eventfd_write() | ||
5 | |||
6 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
7 | Upstream-Status: Pending | ||
8 | --- | ||
9 | libc/sysdeps/linux/common/Makefile.in | 2 ++ | ||
10 | libc/sysdeps/linux/common/eventfd_read.c | 27 +++++++++++++++++++++++++++ | ||
11 | libc/sysdeps/linux/common/eventfd_write.c | 28 ++++++++++++++++++++++++++++ | ||
12 | libc/sysdeps/linux/common/sys/eventfd.h | 4 ---- | ||
13 | 4 files changed, 57 insertions(+), 4 deletions(-) | ||
14 | create mode 100644 libc/sysdeps/linux/common/eventfd_read.c | ||
15 | create mode 100644 libc/sysdeps/linux/common/eventfd_write.c | ||
16 | |||
17 | diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in | ||
18 | index dbf0b0f..45d2e21 100644 | ||
19 | --- a/libc/sysdeps/linux/common/Makefile.in | ||
20 | +++ b/libc/sysdeps/linux/common/Makefile.in | ||
21 | @@ -25,6 +25,8 @@ CSRC-$(UCLIBC_LINUX_SPECIFIC) += \ | ||
22 | capset.c \ | ||
23 | dup3.c \ | ||
24 | eventfd.c \ | ||
25 | + eventfd_read.c \ | ||
26 | + eventfd_write.c \ | ||
27 | inotify.c \ | ||
28 | ioperm.c \ | ||
29 | iopl.c \ | ||
30 | diff --git a/libc/sysdeps/linux/common/eventfd_read.c b/libc/sysdeps/linux/common/eventfd_read.c | ||
31 | new file mode 100644 | ||
32 | index 0000000..75f2aaa | ||
33 | --- /dev/null | ||
34 | +++ b/libc/sysdeps/linux/common/eventfd_read.c | ||
35 | @@ -0,0 +1,27 @@ | ||
36 | +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. | ||
37 | + This file is part of the GNU C Library. | ||
38 | + | ||
39 | + The GNU C Library is free software; you can redistribute it and/or | ||
40 | + modify it under the terms of the GNU Lesser General Public | ||
41 | + License as published by the Free Software Foundation; either | ||
42 | + version 2.1 of the License, or (at your option) any later version. | ||
43 | + | ||
44 | + The GNU C Library is distributed in the hope that it will be useful, | ||
45 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
46 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
47 | + Lesser General Public License for more details. | ||
48 | + | ||
49 | + You should have received a copy of the GNU Lesser General Public | ||
50 | + License along with the GNU C Library; if not, see | ||
51 | + <http://www.gnu.org/licenses/>. */ | ||
52 | + | ||
53 | +#include <errno.h> | ||
54 | +#include <unistd.h> | ||
55 | +#include <sys/eventfd.h> | ||
56 | + | ||
57 | + | ||
58 | +int | ||
59 | +eventfd_read (int fd, eventfd_t *value) | ||
60 | +{ | ||
61 | + return read (fd, value, sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0; | ||
62 | +} | ||
63 | diff --git a/libc/sysdeps/linux/common/eventfd_write.c b/libc/sysdeps/linux/common/eventfd_write.c | ||
64 | new file mode 100644 | ||
65 | index 0000000..e1509cf | ||
66 | --- /dev/null | ||
67 | +++ b/libc/sysdeps/linux/common/eventfd_write.c | ||
68 | @@ -0,0 +1,28 @@ | ||
69 | +/* Copyright (C) 2007-2014 Free Software Foundation, Inc. | ||
70 | + This file is part of the GNU C Library. | ||
71 | + | ||
72 | + The GNU C Library is free software; you can redistribute it and/or | ||
73 | + modify it under the terms of the GNU Lesser General Public | ||
74 | + License as published by the Free Software Foundation; either | ||
75 | + version 2.1 of the License, or (at your option) any later version. | ||
76 | + | ||
77 | + The GNU C Library is distributed in the hope that it will be useful, | ||
78 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
79 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
80 | + Lesser General Public License for more details. | ||
81 | + | ||
82 | + You should have received a copy of the GNU Lesser General Public | ||
83 | + License along with the GNU C Library; if not, see | ||
84 | + <http://www.gnu.org/licenses/>. */ | ||
85 | + | ||
86 | +#include <errno.h> | ||
87 | +#include <unistd.h> | ||
88 | +#include <sys/eventfd.h> | ||
89 | + | ||
90 | + | ||
91 | +int | ||
92 | +eventfd_write (int fd, eventfd_t value) | ||
93 | +{ | ||
94 | + return write (fd, &value, | ||
95 | + sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0; | ||
96 | +} | ||
97 | diff --git a/libc/sysdeps/linux/common/sys/eventfd.h b/libc/sysdeps/linux/common/sys/eventfd.h | ||
98 | index 1bf785f..91b265b 100644 | ||
99 | --- a/libc/sysdeps/linux/common/sys/eventfd.h | ||
100 | +++ b/libc/sysdeps/linux/common/sys/eventfd.h | ||
101 | @@ -33,16 +33,12 @@ __BEGIN_DECLS | ||
102 | value to COUNT. */ | ||
103 | extern int eventfd (int __count, int __flags) __THROW; | ||
104 | |||
105 | -#if 0 /* not (yet) implemented in uClibc */ | ||
106 | - | ||
107 | /* Read event counter and possibly wait for events. */ | ||
108 | extern int eventfd_read (int __fd, eventfd_t *__value); | ||
109 | |||
110 | /* Increment event counter. */ | ||
111 | extern int eventfd_write (int __fd, eventfd_t __value); | ||
112 | |||
113 | -#endif | ||
114 | - | ||
115 | __END_DECLS | ||
116 | |||
117 | #endif /* sys/eventfd.h */ | ||
118 | -- | ||
119 | 1.9.0 | ||
120 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-Define-IPTOS_CLASS_-macros-according-to-RFC-2474.patch b/meta/recipes-core/uclibc/uclibc-git/0001-Define-IPTOS_CLASS_-macros-according-to-RFC-2474.patch deleted file mode 100644 index d613823695..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0001-Define-IPTOS_CLASS_-macros-according-to-RFC-2474.patch +++ /dev/null | |||
@@ -1,75 +0,0 @@ | |||
1 | From be8ed13a90c528adfbe3c8543946bb2c5a2ad713 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Mon, 25 Aug 2014 15:50:36 -0700 | ||
4 | Subject: [PATCH] Define IPTOS_CLASS_* macros according to RFC 2474 | ||
5 | |||
6 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
7 | Upstream-status: Pending | ||
8 | --- | ||
9 | include/netinet/ip.h | 42 ++++++++++++++++++++++++++++++------------ | ||
10 | 1 file changed, 30 insertions(+), 12 deletions(-) | ||
11 | |||
12 | diff --git a/include/netinet/ip.h b/include/netinet/ip.h | ||
13 | index 19e1249..3fe58b9 100644 | ||
14 | --- a/include/netinet/ip.h | ||
15 | +++ b/include/netinet/ip.h | ||
16 | @@ -188,7 +188,25 @@ struct ip_timestamp | ||
17 | #define IPTOS_DSCP_EF 0xb8 | ||
18 | |||
19 | /* | ||
20 | - * Definitions for IP type of service (ip_tos) | ||
21 | + * In RFC 2474, Section 4.2.2.1, the Class Selector Codepoints subsume | ||
22 | + * the old ToS Precedence values. | ||
23 | + */ | ||
24 | +#define IPTOS_CLASS_MASK 0xe0 | ||
25 | +#define IPTOS_CLASS(class) ((class) & IPTOS_CLASS_MASK) | ||
26 | +#define IPTOS_CLASS_CS0 0x00 | ||
27 | +#define IPTOS_CLASS_CS1 0x20 | ||
28 | +#define IPTOS_CLASS_CS2 0x40 | ||
29 | +#define IPTOS_CLASS_CS3 0x60 | ||
30 | +#define IPTOS_CLASS_CS4 0x80 | ||
31 | +#define IPTOS_CLASS_CS5 0xa0 | ||
32 | +#define IPTOS_CLASS_CS6 0xc0 | ||
33 | +#define IPTOS_CLASS_CS7 0xe0 | ||
34 | + | ||
35 | +#define IPTOS_CLASS_DEFAULT IPTOS_CLASS_CS0 | ||
36 | + | ||
37 | +/* | ||
38 | + * Definitions for IP type of service (ip_tos) [deprecated; use DSCP | ||
39 | + * and CS definitions above instead.] | ||
40 | */ | ||
41 | #define IPTOS_TOS_MASK 0x1E | ||
42 | #define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK) | ||
43 | @@ -199,18 +217,18 @@ struct ip_timestamp | ||
44 | #define IPTOS_MINCOST IPTOS_LOWCOST | ||
45 | |||
46 | /* | ||
47 | - * Definitions for IP precedence (also in ip_tos) (hopefully unused) | ||
48 | + * Definitions for IP precedence (also in ip_tos) [also deprecated.] | ||
49 | */ | ||
50 | -#define IPTOS_PREC_MASK 0xe0 | ||
51 | -#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK) | ||
52 | -#define IPTOS_PREC_NETCONTROL 0xe0 | ||
53 | -#define IPTOS_PREC_INTERNETCONTROL 0xc0 | ||
54 | -#define IPTOS_PREC_CRITIC_ECP 0xa0 | ||
55 | -#define IPTOS_PREC_FLASHOVERRIDE 0x80 | ||
56 | -#define IPTOS_PREC_FLASH 0x60 | ||
57 | -#define IPTOS_PREC_IMMEDIATE 0x40 | ||
58 | -#define IPTOS_PREC_PRIORITY 0x20 | ||
59 | -#define IPTOS_PREC_ROUTINE 0x00 | ||
60 | +#define IPTOS_PREC_MASK IPTOS_CLASS_MASK | ||
61 | +#define IPTOS_PREC(tos) IPTOS_CLASS(tos) | ||
62 | +#define IPTOS_PREC_NETCONTROL IPTOS_CLASS_CS7 | ||
63 | +#define IPTOS_PREC_INTERNETCONTROL IPTOS_CLASS_CS6 | ||
64 | +#define IPTOS_PREC_CRITIC_ECP IPTOS_CLASS_CS5 | ||
65 | +#define IPTOS_PREC_FLASHOVERRIDE IPTOS_CLASS_CS4 | ||
66 | +#define IPTOS_PREC_FLASH IPTOS_CLASS_CS3 | ||
67 | +#define IPTOS_PREC_IMMEDIATE IPTOS_CLASS_CS2 | ||
68 | +#define IPTOS_PREC_PRIORITY IPTOS_CLASS_CS1 | ||
69 | +#define IPTOS_PREC_ROUTINE IPTOS_CLASS_CS0 | ||
70 | |||
71 | /* | ||
72 | * Definitions for options. | ||
73 | -- | ||
74 | 2.1.0 | ||
75 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-Disable-lrount_tes-function.patch b/meta/recipes-core/uclibc/uclibc-git/0001-Disable-lrount_tes-function.patch new file mode 100644 index 0000000000..506f146a79 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-git/0001-Disable-lrount_tes-function.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From 14b865b3438d0df29b4969148678d8fa8943e1ef Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sun, 16 Aug 2015 20:49:33 -0700 | ||
4 | Subject: [PATCH 1/7] Disable lrount_tes() function | ||
5 | |||
6 | Its not used anyway, avoids some strict compiler warnings | ||
7 | |||
8 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
9 | --- | ||
10 | Upstream-Status: Pending | ||
11 | |||
12 | test/math/libm-test.inc | 2 -- | ||
13 | 1 file changed, 2 deletions(-) | ||
14 | |||
15 | diff --git a/test/math/libm-test.inc b/test/math/libm-test.inc | ||
16 | index f50b48b..6d70a95 100644 | ||
17 | --- a/test/math/libm-test.inc | ||
18 | +++ b/test/math/libm-test.inc | ||
19 | @@ -3470,7 +3470,6 @@ logb_test (void) | ||
20 | } | ||
21 | |||
22 | |||
23 | -#if 0 | ||
24 | static void | ||
25 | lround_test (void) | ||
26 | { | ||
27 | @@ -3605,7 +3604,6 @@ llround_test (void) | ||
28 | |||
29 | END (llround); | ||
30 | } | ||
31 | -#endif | ||
32 | |||
33 | static void | ||
34 | modf_test (void) | ||
35 | -- | ||
36 | 2.1.4 | ||
37 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-Revert-utent.c-wtent.c-move-functions-from-utxent.c.patch b/meta/recipes-core/uclibc/uclibc-git/0001-Revert-utent.c-wtent.c-move-functions-from-utxent.c.patch deleted file mode 100644 index 4ac765c334..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0001-Revert-utent.c-wtent.c-move-functions-from-utxent.c.patch +++ /dev/null | |||
@@ -1,319 +0,0 @@ | |||
1 | Upstream-Status: Pending | ||
2 | |||
3 | From 096abf14d2dc978607ccd8a0d7f42da65d8991f3 Mon Sep 17 00:00:00 2001 | ||
4 | From: Khem Raj <raj.khem@gmail.com> | ||
5 | Date: Sun, 9 Sep 2012 22:00:04 -0700 | ||
6 | Subject: [PATCH] Revert "utent.c, wtent.c: move functions from utxent.c" | ||
7 | |||
8 | This reverts commit 84135275cfeebc0b233c1c96eeada4d4178a0b18. | ||
9 | --- | ||
10 | include/utmp.h | 8 +++++ | ||
11 | libc/misc/utmp/utent.c | 80 +++++++++++------------------------------------ | ||
12 | libc/misc/utmp/utxent.c | 4 +-- | ||
13 | libc/misc/utmp/wtent.c | 14 ++------- | ||
14 | 4 files changed, 30 insertions(+), 76 deletions(-) | ||
15 | |||
16 | Index: git/include/utmp.h | ||
17 | =================================================================== | ||
18 | --- git.orig/include/utmp.h 2013-01-21 16:37:18.000000000 -0800 | ||
19 | +++ git/include/utmp.h 2013-01-21 16:40:56.987583099 -0800 | ||
20 | @@ -56,30 +56,37 @@ | ||
21 | /* Append entry UTMP to the wtmp-like file WTMP_FILE. */ | ||
22 | extern void updwtmp (const char *__wtmp_file, const struct utmp *__utmp) | ||
23 | __THROW; | ||
24 | +libc_hidden_proto(updwtmp) | ||
25 | |||
26 | /* Change name of the utmp file to be examined. */ | ||
27 | extern int utmpname (const char *__file) __THROW; | ||
28 | +libc_hidden_proto(utmpname) | ||
29 | |||
30 | /* Read next entry from a utmp-like file. */ | ||
31 | extern struct utmp *getutent (void) __THROW; | ||
32 | +libc_hidden_proto(getutent) | ||
33 | |||
34 | /* Reset the input stream to the beginning of the file. */ | ||
35 | extern void setutent (void) __THROW; | ||
36 | +libc_hidden_proto(setutent) | ||
37 | |||
38 | /* Close the current open file. */ | ||
39 | extern void endutent (void) __THROW; | ||
40 | +libc_hidden_proto(endutent) | ||
41 | |||
42 | /* Search forward from the current point in the utmp file until the | ||
43 | next entry with a ut_type matching ID->ut_type. */ | ||
44 | extern struct utmp *getutid (const struct utmp *__id) __THROW; | ||
45 | +libc_hidden_proto(getutid) | ||
46 | |||
47 | /* Search forward from the current point in the utmp file until the | ||
48 | next entry with a ut_line matching LINE->ut_line. */ | ||
49 | extern struct utmp *getutline (const struct utmp *__line) __THROW; | ||
50 | +libc_hidden_proto(getutline) | ||
51 | |||
52 | /* Write out entry pointed to by UTMP_PTR into the utmp file. */ | ||
53 | extern struct utmp *pututline (const struct utmp *__utmp_ptr) __THROW; | ||
54 | - | ||
55 | +libc_hidden_proto(pututline) | ||
56 | |||
57 | #if 0 /* def __USE_MISC */ | ||
58 | /* Reentrant versions of the file for handling utmp files. */ | ||
59 | Index: git/libc/misc/utmp/utent.c | ||
60 | =================================================================== | ||
61 | --- git.orig/libc/misc/utmp/utent.c 2013-01-21 16:37:18.000000000 -0800 | ||
62 | +++ git/libc/misc/utmp/utent.c 2013-01-21 16:38:14.035578638 -0800 | ||
63 | @@ -19,9 +19,6 @@ | ||
64 | #include <errno.h> | ||
65 | #include <string.h> | ||
66 | #include <utmp.h> | ||
67 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
68 | -# include <utmpx.h> | ||
69 | -#endif | ||
70 | #include <not-cancel.h> | ||
71 | |||
72 | #include <bits/uClibc_mutex.h> | ||
73 | @@ -34,7 +31,7 @@ | ||
74 | static const char *static_ut_name = default_file_name; | ||
75 | |||
76 | /* This function must be called with the LOCK held */ | ||
77 | -static void __setutent_unlocked(void) | ||
78 | +static void __setutent(void) | ||
79 | { | ||
80 | if (static_fd < 0) { | ||
81 | static_fd = open_not_cancel_2(static_ut_name, O_RDWR | O_CLOEXEC); | ||
82 | @@ -53,24 +50,19 @@ | ||
83 | lseek(static_fd, 0, SEEK_SET); | ||
84 | } | ||
85 | #if defined __UCLIBC_HAS_THREADS__ | ||
86 | -static void __setutent(void) | ||
87 | +void setutent(void) | ||
88 | { | ||
89 | __UCLIBC_MUTEX_LOCK(utmplock); | ||
90 | - __setutent_unlocked(); | ||
91 | + __setutent(); | ||
92 | __UCLIBC_MUTEX_UNLOCK(utmplock); | ||
93 | } | ||
94 | #else | ||
95 | -static void __setutent(void); | ||
96 | -strong_alias(__setutent_unlocked,__setutent) | ||
97 | -#endif | ||
98 | strong_alias(__setutent,setutent) | ||
99 | - | ||
100 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
101 | -strong_alias(__setutent,setutxent) | ||
102 | #endif | ||
103 | +libc_hidden_def(setutent) | ||
104 | |||
105 | /* This function must be called with the LOCK held */ | ||
106 | -static struct utmp *__getutent_unlocked(void) | ||
107 | +static struct utmp *__getutent(void) | ||
108 | { | ||
109 | if (static_fd < 0) { | ||
110 | __setutent(); | ||
111 | @@ -86,27 +78,19 @@ | ||
112 | return NULL; | ||
113 | } | ||
114 | #if defined __UCLIBC_HAS_THREADS__ | ||
115 | -static struct utmp *__getutent(void) | ||
116 | +struct utmp *getutent(void) | ||
117 | { | ||
118 | struct utmp *ret; | ||
119 | |||
120 | __UCLIBC_MUTEX_LOCK(utmplock); | ||
121 | - ret = __getutent_unlocked(); | ||
122 | + ret = __getutent(); | ||
123 | __UCLIBC_MUTEX_UNLOCK(utmplock); | ||
124 | return ret; | ||
125 | } | ||
126 | #else | ||
127 | -static struct utmp *__getutent(void); | ||
128 | -strong_alias(__getutent_unlocked,__getutent) | ||
129 | -#endif | ||
130 | strong_alias(__getutent,getutent) | ||
131 | - | ||
132 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
133 | -struct utmpx *getutxent(void) | ||
134 | -{ | ||
135 | - return (struct utmpx *) __getutent (); | ||
136 | -} | ||
137 | #endif | ||
138 | +libc_hidden_def(getutent) | ||
139 | |||
140 | static void __endutent(void) | ||
141 | { | ||
142 | @@ -117,13 +101,10 @@ | ||
143 | __UCLIBC_MUTEX_UNLOCK(utmplock); | ||
144 | } | ||
145 | strong_alias(__endutent,endutent) | ||
146 | - | ||
147 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
148 | -strong_alias(__endutent,endutxent) | ||
149 | -#endif | ||
150 | +libc_hidden_def(endutent) | ||
151 | |||
152 | /* This function must be called with the LOCK held */ | ||
153 | -static struct utmp *__getutid_unlocked(const struct utmp *utmp_entry) | ||
154 | +static struct utmp *__getutid(const struct utmp *utmp_entry) | ||
155 | { | ||
156 | struct utmp *lutmp; | ||
157 | unsigned type; | ||
158 | @@ -133,7 +114,7 @@ | ||
159 | type = utmp_entry->ut_type - 1; | ||
160 | type /= 4; | ||
161 | |||
162 | - while ((lutmp = __getutent_unlocked()) != NULL) { | ||
163 | + while ((lutmp = __getutent()) != NULL) { | ||
164 | if (type == 0 && lutmp->ut_type == utmp_entry->ut_type) { | ||
165 | /* one of RUN_LVL, BOOT_TIME, NEW_TIME, OLD_TIME */ | ||
166 | return lutmp; | ||
167 | @@ -147,34 +128,26 @@ | ||
168 | return NULL; | ||
169 | } | ||
170 | #if defined __UCLIBC_HAS_THREADS__ | ||
171 | -static struct utmp *__getutid(const struct utmp *utmp_entry) | ||
172 | +struct utmp *getutid(const struct utmp *utmp_entry) | ||
173 | { | ||
174 | struct utmp *ret; | ||
175 | |||
176 | __UCLIBC_MUTEX_LOCK(utmplock); | ||
177 | - ret = __getutid_unlocked(utmp_entry); | ||
178 | + ret = __getutid(utmp_entry); | ||
179 | __UCLIBC_MUTEX_UNLOCK(utmplock); | ||
180 | return ret; | ||
181 | } | ||
182 | #else | ||
183 | -static struct utmp *__getutid(const struct utmp *utmp_entry); | ||
184 | -strong_alias(__getutid_unlocked,__getutid) | ||
185 | -#endif | ||
186 | strong_alias(__getutid,getutid) | ||
187 | - | ||
188 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
189 | -struct utmpx *getutxid(const struct utmpx *utmp_entry) | ||
190 | -{ | ||
191 | - return (struct utmpx *) __getutid ((const struct utmp *) utmp_entry); | ||
192 | -} | ||
193 | #endif | ||
194 | +libc_hidden_def(getutid) | ||
195 | |||
196 | static struct utmp *__getutline(const struct utmp *utmp_entry) | ||
197 | { | ||
198 | struct utmp *lutmp; | ||
199 | |||
200 | __UCLIBC_MUTEX_LOCK(utmplock); | ||
201 | - while ((lutmp = __getutent_unlocked()) != NULL) { | ||
202 | + while ((lutmp = __getutent()) != NULL) { | ||
203 | if (lutmp->ut_type == USER_PROCESS || lutmp->ut_type == LOGIN_PROCESS) { | ||
204 | if (strncmp(lutmp->ut_line, utmp_entry->ut_line, sizeof(lutmp->ut_line)) == 0) { | ||
205 | break; | ||
206 | @@ -185,13 +158,7 @@ | ||
207 | return lutmp; | ||
208 | } | ||
209 | strong_alias(__getutline,getutline) | ||
210 | - | ||
211 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
212 | -struct utmpx *getutxline(const struct utmpx *utmp_entry) | ||
213 | -{ | ||
214 | - return (struct utmpx *) __getutline ((const struct utmp *) utmp_entry); | ||
215 | -} | ||
216 | -#endif | ||
217 | +libc_hidden_def(getutline) | ||
218 | |||
219 | static struct utmp *__pututline(const struct utmp *utmp_entry) | ||
220 | { | ||
221 | @@ -200,7 +167,7 @@ | ||
222 | the file pointer where they want it, everything will work out. */ | ||
223 | lseek(static_fd, (off_t) - sizeof(struct utmp), SEEK_CUR); | ||
224 | |||
225 | - if (__getutid_unlocked(utmp_entry) != NULL) | ||
226 | + if (__getutid(utmp_entry) != NULL) | ||
227 | lseek(static_fd, (off_t) - sizeof(struct utmp), SEEK_CUR); | ||
228 | else | ||
229 | lseek(static_fd, (off_t) 0, SEEK_END); | ||
230 | @@ -211,13 +178,7 @@ | ||
231 | return (struct utmp *)utmp_entry; | ||
232 | } | ||
233 | strong_alias(__pututline,pututline) | ||
234 | - | ||
235 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
236 | -struct utmpx *pututxline (const struct utmpx *utmp_entry) | ||
237 | -{ | ||
238 | - return (struct utmpx *) __pututline ((const struct utmp *) utmp_entry); | ||
239 | -} | ||
240 | -#endif | ||
241 | +libc_hidden_def(pututline) | ||
242 | |||
243 | static int __utmpname(const char *new_ut_name) | ||
244 | { | ||
245 | @@ -241,7 +202,4 @@ | ||
246 | return 0; /* or maybe return -(static_ut_name != new_ut_name)? */ | ||
247 | } | ||
248 | strong_alias(__utmpname,utmpname) | ||
249 | - | ||
250 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
251 | -strong_alias(__utmpname,utmpxname) | ||
252 | -#endif | ||
253 | +libc_hidden_def(utmpname) | ||
254 | Index: git/libc/misc/utmp/utxent.c | ||
255 | =================================================================== | ||
256 | --- git.orig/libc/misc/utmp/utxent.c 2013-01-21 16:37:18.000000000 -0800 | ||
257 | +++ git/libc/misc/utmp/utxent.c 2013-01-21 16:38:14.035578638 -0800 | ||
258 | @@ -13,7 +13,6 @@ | ||
259 | #include <utmpx.h> | ||
260 | #include <utmp.h> | ||
261 | |||
262 | -#if 0 /* moved to utent.c */ | ||
263 | void setutxent(void) | ||
264 | { | ||
265 | setutent (); | ||
266 | @@ -49,12 +48,10 @@ | ||
267 | return utmpname (new_ut_name); | ||
268 | } | ||
269 | |||
270 | -/* moved to wtent.c */ | ||
271 | void updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx) | ||
272 | { | ||
273 | updwtmp (wtmpx_file, (const struct utmp *) utmpx); | ||
274 | } | ||
275 | -#endif | ||
276 | |||
277 | /* Copy the information in UTMPX to UTMP. */ | ||
278 | void getutmp (const struct utmpx *utmpx, struct utmp *utmp) | ||
279 | @@ -107,3 +104,4 @@ | ||
280 | utmpx->ut_time = utmp->ut_time; | ||
281 | #endif | ||
282 | } | ||
283 | + | ||
284 | Index: git/libc/misc/utmp/wtent.c | ||
285 | =================================================================== | ||
286 | --- git.orig/libc/misc/utmp/wtent.c 2013-01-21 16:37:18.000000000 -0800 | ||
287 | +++ git/libc/misc/utmp/wtent.c 2013-01-21 16:38:14.035578638 -0800 | ||
288 | @@ -11,9 +11,6 @@ | ||
289 | #include <time.h> | ||
290 | #include <unistd.h> | ||
291 | #include <utmp.h> | ||
292 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
293 | -# include <utmpx.h> | ||
294 | -#endif | ||
295 | #include <fcntl.h> | ||
296 | #include <sys/file.h> | ||
297 | #include <not-cancel.h> | ||
298 | @@ -36,7 +33,7 @@ | ||
299 | } | ||
300 | #endif | ||
301 | |||
302 | -static void __updwtmp(const char *wtmp_file, const struct utmp *lutmp) | ||
303 | +void updwtmp(const char *wtmp_file, const struct utmp *lutmp) | ||
304 | { | ||
305 | int fd; | ||
306 | |||
307 | @@ -49,11 +46,4 @@ | ||
308 | } | ||
309 | } | ||
310 | } | ||
311 | -strong_alias(__updwtmp,updwtmp) | ||
312 | - | ||
313 | -#ifdef __UCLIBC_HAS_UTMPX__ | ||
314 | -void updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx) | ||
315 | -{ | ||
316 | - __updwtmp (wtmpx_file, (const struct utmp *) utmpx); | ||
317 | -} | ||
318 | -#endif | ||
319 | +libc_hidden_def(updwtmp) | ||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-atexit_old-Do-not-add-it-to-shared-libc.patch b/meta/recipes-core/uclibc/uclibc-git/0001-atexit_old-Do-not-add-it-to-shared-libc.patch deleted file mode 100644 index b6dfce483e..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0001-atexit_old-Do-not-add-it-to-shared-libc.patch +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | From 74667582526b39a1906228574d73a6528f4587eb Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 23 Jun 2012 13:26:30 -0700 | ||
4 | Subject: [PATCH] atexit_old: Do not add it to shared libc | ||
5 | |||
6 | atexit should only be in either uclibc_nonshared.a | ||
7 | shared libc case or libc.a in static build case | ||
8 | |||
9 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
10 | |||
11 | Upstream-Status: Pending | ||
12 | --- | ||
13 | libc/stdlib/Makefile.in | 4 ++-- | ||
14 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/libc/stdlib/Makefile.in b/libc/stdlib/Makefile.in | ||
17 | index 3166b8e..3d686d9 100644 | ||
18 | --- a/libc/stdlib/Makefile.in | ||
19 | +++ b/libc/stdlib/Makefile.in | ||
20 | @@ -60,7 +60,6 @@ CSRC-$(if $(findstring yyy,$(UCLIBC_HAS_FLOATS)$(UCLIBC_HAS_WCHAR)$(UCLIBC_HAS_X | ||
21 | |||
22 | # multi source _atexit.c | ||
23 | CSRC-y += __cxa_atexit.c __cxa_finalize.c __exit_handler.c exit.c on_exit.c | ||
24 | -CSRC-$(COMPAT_ATEXIT) += old_atexit.c | ||
25 | |||
26 | STDLIB_DIR := $(top_srcdir)libc/stdlib | ||
27 | STDLIB_OUT := $(top_builddir)libc/stdlib | ||
28 | @@ -70,11 +69,12 @@ STDLIB_OBJ := $(patsubst %.c,$(STDLIB_OUT)/%.o,$(CSRC-y)) | ||
29 | |||
30 | libc-y += $(STDLIB_OBJ) | ||
31 | libc-static-y += $(STDLIB_OUT)/atexit.o $(STDLIB_OUT)/system.o | ||
32 | +libc-static-$(COMPAT_ATEXIT) += $(STDLIB_OUT)/old_atexit.o | ||
33 | libc-shared-y += $(STDLIB_OUT)/system.oS | ||
34 | |||
35 | # this should always be the PIC version, because it could be used in shared libs | ||
36 | libc-nonshared-y += $(STDLIB_OUT)/atexit.os | ||
37 | - | ||
38 | +libc-nonshared-$(COMPAT_ATEXIT) += $(STDLIB_OUT)/old_atexit.os | ||
39 | libc-nomulti-y += $(STDLIB_OUT)/labs.o $(STDLIB_OUT)/atol.o $(STDLIB_OUT)/_stdlib_strto_l.o $(STDLIB_OUT)/_stdlib_strto_ll.o | ||
40 | libc-nomulti-$(UCLIBC_HAS_XLOCALE) += $(STDLIB_OUT)/_stdlib_strto_l_l.o $(STDLIB_OUT)/_stdlib_strto_ll_l.o | ||
41 | |||
42 | -- | ||
43 | 1.7.9.5 | ||
44 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-librt-Use-nodefaultlibs-instead-of-nostdlib.patch b/meta/recipes-core/uclibc/uclibc-git/0001-librt-Use-nodefaultlibs-instead-of-nostdlib.patch deleted file mode 100644 index ecb9d31645..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0001-librt-Use-nodefaultlibs-instead-of-nostdlib.patch +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | From 95f9b6f37152b8316735d3c86c0db963ff59e22d Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 23 Jun 2012 16:51:52 -0700 | ||
4 | Subject: [PATCH] librt: Use -nodefaultlibs instead of -nostdlib | ||
5 | |||
6 | nostdlib disables linking in startup files too which is not | ||
7 | what we want here since it needs to resolve __dso_handle | ||
8 | which comes from crtbeginS.o, otherwise librt has this | ||
9 | undefined reference to a weak undefined __dso_handle that | ||
10 | shows up as error (with gold linker) | ||
11 | when shared libraries are being built which are | ||
12 | linking in librt | ||
13 | |||
14 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
15 | Upstream-Status: Pending | ||
16 | --- | ||
17 | librt/Makefile.in | 1 + | ||
18 | 1 file changed, 1 insertion(+) | ||
19 | |||
20 | Index: git/librt/Makefile.in | ||
21 | =================================================================== | ||
22 | --- git.orig/librt/Makefile.in 2012-06-24 10:32:59.512653237 -0700 | ||
23 | +++ git/librt/Makefile.in 2012-06-24 11:31:00.660821666 -0700 | ||
24 | @@ -15,6 +15,9 @@ | ||
25 | ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y) | ||
26 | LIBS-librt.so += $(top_builddir)lib/libdl.so $(top_builddir)lib/libpthread.so | ||
27 | endif | ||
28 | +START_FILE-librt.so := $(SHARED_START_FILES) | ||
29 | +END_FILE-librt.so := $(SHARED_END_FILES) | ||
30 | + | ||
31 | |||
32 | librt_FULL_NAME := librt-$(VERSION).so | ||
33 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch b/meta/recipes-core/uclibc/uclibc-git/0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch deleted file mode 100644 index 7e7c5793f1..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0001-nptl-arm-Move-aeabi_read_tp-to-uclibc_nonshared.a.patch +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | From 714f543f4fa8fb3911449b6ce1517481359e0cff Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 23 Jun 2012 14:21:17 -0700 | ||
4 | Subject: [PATCH] nptl/arm: Move aeabi_read_tp to uclibc_nonshared.a | ||
5 | |||
6 | Otherwise it creates wrong references from shared libs | ||
7 | |||
8 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
9 | Upstream-Status: Pending | ||
10 | --- | ||
11 | libc/sysdeps/linux/arm/Makefile.arch | 4 +++- | ||
12 | 1 file changed, 3 insertions(+), 1 deletion(-) | ||
13 | |||
14 | Index: git/libc/sysdeps/linux/arm/Makefile.arch | ||
15 | =================================================================== | ||
16 | --- git.orig/libc/sysdeps/linux/arm/Makefile.arch 2013-05-23 11:13:32.000000000 -0700 | ||
17 | +++ git/libc/sysdeps/linux/arm/Makefile.arch 2013-05-23 11:16:18.304333131 -0700 | ||
18 | @@ -13,7 +13,9 @@ | ||
19 | vfork.S clone.S | ||
20 | |||
21 | SSRC-$(UCLIBC_HAS_LFS) += mmap64.S | ||
22 | -SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-aeabi_read_tp.S libc-thumb_atomics.S | ||
23 | +SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-thumb_atomics.S | ||
24 | +libc-nonshared-$(UCLIBC_HAS_THREADS_NATIVE) += $(ARCH_OUT)/libc-aeabi_read_tp.os | ||
25 | +libc-static-$(UCLIBC_HAS_THREADS_NATIVE) += $(ARCH_OUT)/libc-aeabi_read_tp.o | ||
26 | CSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.c | ||
27 | SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += getcontext.S setcontext.S swapcontext.S | ||
28 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch b/meta/recipes-core/uclibc/uclibc-git/0001-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch deleted file mode 100644 index 297a40bd04..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0001-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch +++ /dev/null | |||
@@ -1,74 +0,0 @@ | |||
1 | From d021e6252b33e779857846714fb1899a25c9965d Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 23 Jun 2012 15:59:01 -0700 | ||
4 | Subject: [PATCH] nptl/atfork: Hide pthread_atfork in shared versions | ||
5 | |||
6 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
7 | Upstream-Status: Pending | ||
8 | --- | ||
9 | libpthread/nptl/Makefile.in | 4 +++- | ||
10 | libpthread/nptl/pthread_atfork.c | 12 ++++++++++-- | ||
11 | 2 files changed, 13 insertions(+), 3 deletions(-) | ||
12 | |||
13 | diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in | ||
14 | index 158bcae..3ef7175 100644 | ||
15 | --- a/libpthread/nptl/Makefile.in | ||
16 | +++ b/libpthread/nptl/Makefile.in | ||
17 | @@ -16,6 +16,7 @@ libc-shared-routines-y = forward.c libc-cancellation.c | ||
18 | libc-static-routines-y = alloca_cutoff.c libc-cancellation.c | ||
19 | libpthread-shared-only-routines-y = version.c | ||
20 | libpthread-static-only-routines-y = pthread_atfork.c | ||
21 | + | ||
22 | libpthread-routines- += $(notdir $(wildcard $(libpthread_DIR)/gen_*.c)) # dummy generated files | ||
23 | libpthread-routines- += allocatestack.c # dummy included by pthread_create.c | ||
24 | libpthread-routines- += pthread_mutex_getprioceiling.c pthread_mutex_setprioceiling.c # XXX: delete those or use them! | ||
25 | @@ -208,7 +209,7 @@ CFLAGS-msgsnd.c = -fexceptions -fasynchronous-unwind-tables | ||
26 | CFLAGS-tcdrain.c = -fexceptions -fasynchronous-unwind-tables | ||
27 | |||
28 | CFLAGS-pt-system.c = -fexceptions -I$(top_srcdir)libc/stdlib | ||
29 | - | ||
30 | +CFLAGS-pthread_atfork.c = -DNOT_IN_libc | ||
31 | # | ||
32 | # The rest of this file is uClibc specific. | ||
33 | # | ||
34 | @@ -224,3 +225,4 @@ CFLAGS-OMIT-alloca_cutoff.c = $(CFLAGS-nptl) | ||
35 | CFLAGS-OMIT-forward.c = $(CFLAGS-nptl) | ||
36 | CFLAGS-OMIT-libc-lowlevelock.c = $(CFLAGS-nptl) | ||
37 | CFLAGS-OMIT-libc-cancellation.c = $(CFLAGS-nptl) | ||
38 | + | ||
39 | diff --git a/libpthread/nptl/pthread_atfork.c b/libpthread/nptl/pthread_atfork.c | ||
40 | index e607d49..6224c17 100644 | ||
41 | --- a/libpthread/nptl/pthread_atfork.c | ||
42 | +++ b/libpthread/nptl/pthread_atfork.c | ||
43 | @@ -38,13 +38,17 @@ | ||
44 | #include <fork.h> | ||
45 | |||
46 | /* This is defined by newer gcc version unique for each module. */ | ||
47 | -extern void *__dso_handle __attribute__ ((__weak__)); | ||
48 | - //,__visibility__ ("hidden"))); | ||
49 | +extern void *__dso_handle __attribute__ ((__weak__, | ||
50 | + __visibility__ ("hidden"))); | ||
51 | |||
52 | |||
53 | /* Hide the symbol so that no definition but the one locally in the | ||
54 | executable or DSO is used. */ | ||
55 | int | ||
56 | +#ifndef __pthread_atfork | ||
57 | +/* Don't mark the compatibility function as hidden. */ | ||
58 | +attribute_hidden | ||
59 | +#endif | ||
60 | __pthread_atfork ( | ||
61 | void (*prepare) (void), | ||
62 | void (*parent) (void), | ||
63 | @@ -53,4 +57,8 @@ __pthread_atfork ( | ||
64 | return __register_atfork (prepare, parent, child, | ||
65 | &__dso_handle == NULL ? NULL : __dso_handle); | ||
66 | } | ||
67 | +#ifndef __pthread_atfork | ||
68 | +extern int pthread_atfork (void (*prepare) (void), void (*parent) (void), | ||
69 | + void (*child) (void)) attribute_hidden; | ||
70 | strong_alias (__pthread_atfork, pthread_atfork) | ||
71 | +#endif | ||
72 | -- | ||
73 | 1.7.9.5 | ||
74 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-timex-Sync-with-glibc.patch b/meta/recipes-core/uclibc/uclibc-git/0001-timex-Sync-with-glibc.patch deleted file mode 100644 index 5d6a0a5366..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0001-timex-Sync-with-glibc.patch +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | From f489cc44a209f6c4370e94c9c788fc9cc4820be1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Mon, 25 Aug 2014 16:22:57 -0700 | ||
4 | Subject: [PATCH] timex: Sync with glibc | ||
5 | |||
6 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
7 | Upstream-status: Pending | ||
8 | --- | ||
9 | include/sys/timex.h | 8 ++++++-- | ||
10 | 1 file changed, 6 insertions(+), 2 deletions(-) | ||
11 | |||
12 | diff --git a/include/sys/timex.h b/include/sys/timex.h | ||
13 | index 9082a28..57059bd 100644 | ||
14 | --- a/include/sys/timex.h | ||
15 | +++ b/include/sys/timex.h | ||
16 | @@ -67,8 +67,12 @@ struct timex | ||
17 | #define ADJ_ESTERROR 0x0008 /* estimated time error */ | ||
18 | #define ADJ_STATUS 0x0010 /* clock status */ | ||
19 | #define ADJ_TIMECONST 0x0020 /* pll time constant */ | ||
20 | -#define ADJ_TICK 0x4000 /* tick value */ | ||
21 | -#define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */ | ||
22 | +#define ADJ_TAI 0x0080 /* set TAI offset */ | ||
23 | +#define ADJ_MICRO 0x1000 /* select microsecond resolution */ | ||
24 | +#define ADJ_NANO 0x2000 /* select nanosecond resolution */ | ||
25 | +#define ADJ_TICK 0x4000 /* tick value */ | ||
26 | +#define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */ | ||
27 | +#define ADJ_OFFSET_SS_READ 0xa001 /* read-only adjtime */ | ||
28 | |||
29 | /* xntp 3.4 compatibility names */ | ||
30 | #define MOD_OFFSET ADJ_OFFSET | ||
31 | -- | ||
32 | 2.1.0 | ||
33 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/powerpc_copysignl.patch b/meta/recipes-core/uclibc/uclibc-git/0002-Add-implementation-for-copysignl-for-ppc.patch index 2f014cd91e..d4275c997e 100644 --- a/meta/recipes-core/uclibc/uclibc-git/powerpc_copysignl.patch +++ b/meta/recipes-core/uclibc/uclibc-git/0002-Add-implementation-for-copysignl-for-ppc.patch | |||
@@ -1,13 +1,21 @@ | |||
1 | Add ppc copysignl implementation | 1 | From 5d362074e5975b150a35bcfa77eab1bfa4e30de7 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sun, 16 Aug 2015 20:50:56 -0700 | ||
4 | Subject: [PATCH 2/7] Add implementation for copysignl for ppc | ||
2 | 5 | ||
6 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
7 | --- | ||
3 | Upstream-Status: Pending | 8 | Upstream-Status: Pending |
4 | 9 | ||
5 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 10 | libc/sysdeps/linux/powerpc/Makefile.arch | 2 +- |
11 | libc/sysdeps/linux/powerpc/copysignl.c | 89 ++++++++++++++++++++++++++++++++ | ||
12 | 2 files changed, 90 insertions(+), 1 deletion(-) | ||
13 | create mode 100644 libc/sysdeps/linux/powerpc/copysignl.c | ||
6 | 14 | ||
7 | Index: git/libc/sysdeps/linux/powerpc/Makefile.arch | 15 | diff --git a/libc/sysdeps/linux/powerpc/Makefile.arch b/libc/sysdeps/linux/powerpc/Makefile.arch |
8 | =================================================================== | 16 | index 4fbcb11..7c09c87 100644 |
9 | --- git.orig/libc/sysdeps/linux/powerpc/Makefile.arch 2013-05-23 11:09:50.000000000 -0700 | 17 | --- a/libc/sysdeps/linux/powerpc/Makefile.arch |
10 | +++ git/libc/sysdeps/linux/powerpc/Makefile.arch 2013-05-23 11:12:06.072328399 -0700 | 18 | +++ b/libc/sysdeps/linux/powerpc/Makefile.arch |
11 | @@ -5,7 +5,7 @@ | 19 | @@ -5,7 +5,7 @@ |
12 | # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. | 20 | # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. |
13 | # | 21 | # |
@@ -17,10 +25,11 @@ Index: git/libc/sysdeps/linux/powerpc/Makefile.arch | |||
17 | 25 | ||
18 | SSRC-y := \ | 26 | SSRC-y := \ |
19 | __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \ | 27 | __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \ |
20 | Index: git/libc/sysdeps/linux/powerpc/copysignl.c | 28 | diff --git a/libc/sysdeps/linux/powerpc/copysignl.c b/libc/sysdeps/linux/powerpc/copysignl.c |
21 | =================================================================== | 29 | new file mode 100644 |
22 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 30 | index 0000000..000f653 |
23 | +++ git/libc/sysdeps/linux/powerpc/copysignl.c 2013-05-23 11:11:37.600327865 -0700 | 31 | --- /dev/null |
32 | +++ b/libc/sysdeps/linux/powerpc/copysignl.c | ||
24 | @@ -0,0 +1,89 @@ | 33 | @@ -0,0 +1,89 @@ |
25 | +/* s_copysignl.c -- long double version of s_copysign.c. | 34 | +/* s_copysignl.c -- long double version of s_copysign.c. |
26 | + * Conversion to long double by Ulrich Drepper, | 35 | + * Conversion to long double by Ulrich Drepper, |
@@ -111,3 +120,6 @@ Index: git/libc/sysdeps/linux/powerpc/copysignl.c | |||
111 | +} | 120 | +} |
112 | + | 121 | + |
113 | +libc_hidden_def(copysignl); | 122 | +libc_hidden_def(copysignl); |
123 | -- | ||
124 | 2.1.4 | ||
125 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0002-wire-setns-syscall.patch b/meta/recipes-core/uclibc/uclibc-git/0002-wire-setns-syscall.patch deleted file mode 100644 index 94c6f68571..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/0002-wire-setns-syscall.patch +++ /dev/null | |||
@@ -1,68 +0,0 @@ | |||
1 | From db575359d4b8164ad6c2ac5f36c7a50c065a2864 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Thu, 20 Feb 2014 00:44:34 -0800 | ||
4 | Subject: [PATCH 2/3] wire setns syscall | ||
5 | |||
6 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
7 | Upstream-Status: Pending | ||
8 | --- | ||
9 | libc/sysdeps/linux/common/Makefile.in | 1 + | ||
10 | libc/sysdeps/linux/common/bits/sched.h | 4 ++++ | ||
11 | libc/sysdeps/linux/common/setns.c | 18 ++++++++++++++++++ | ||
12 | 3 files changed, 23 insertions(+) | ||
13 | create mode 100644 libc/sysdeps/linux/common/setns.c | ||
14 | |||
15 | diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in | ||
16 | index 45d2e21..10d9884 100644 | ||
17 | --- a/libc/sysdeps/linux/common/Makefile.in | ||
18 | +++ b/libc/sysdeps/linux/common/Makefile.in | ||
19 | @@ -45,6 +45,7 @@ CSRC-$(UCLIBC_LINUX_SPECIFIC) += \ | ||
20 | sendfile.c \ | ||
21 | setfsgid.c \ | ||
22 | setfsuid.c \ | ||
23 | + setns.c \ | ||
24 | setresgid.c \ | ||
25 | setresuid.c \ | ||
26 | signalfd.c \ | ||
27 | diff --git a/libc/sysdeps/linux/common/bits/sched.h b/libc/sysdeps/linux/common/bits/sched.h | ||
28 | index a5eb6ee..9436f66 100644 | ||
29 | --- a/libc/sysdeps/linux/common/bits/sched.h | ||
30 | +++ b/libc/sysdeps/linux/common/bits/sched.h | ||
31 | @@ -85,6 +85,10 @@ extern int unshare (int __flags) __THROW; | ||
32 | |||
33 | /* Get index of currently used CPU. */ | ||
34 | extern int sched_getcpu (void) __THROW; | ||
35 | + | ||
36 | +/* Switch process to namespace of type NSTYPE indicated by FD. */ | ||
37 | +extern int setns (int __fd, int __nstype) __THROW; | ||
38 | + | ||
39 | #endif | ||
40 | |||
41 | __END_DECLS | ||
42 | diff --git a/libc/sysdeps/linux/common/setns.c b/libc/sysdeps/linux/common/setns.c | ||
43 | new file mode 100644 | ||
44 | index 0000000..376bf26 | ||
45 | --- /dev/null | ||
46 | +++ b/libc/sysdeps/linux/common/setns.c | ||
47 | @@ -0,0 +1,18 @@ | ||
48 | +/* vi: set sw=4 ts=4: */ | ||
49 | +/* | ||
50 | + * setns() for uClibc | ||
51 | + * | ||
52 | + * Copyright (C) 2014 Khem Raj <raj.khem@gmail.com> | ||
53 | + * | ||
54 | + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. | ||
55 | + */ | ||
56 | + | ||
57 | +#include <sys/syscall.h> | ||
58 | +#include <sched.h> | ||
59 | + | ||
60 | +/* | ||
61 | + * setns() | ||
62 | + */ | ||
63 | +#ifdef __NR_setns | ||
64 | +_syscall2(int, setns, int, fd, int, nstype) | ||
65 | +#endif | ||
66 | -- | ||
67 | 1.9.0 | ||
68 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/argp-support.patch b/meta/recipes-core/uclibc/uclibc-git/0003-Add-argp-implementation.patch index bcec6a593a..ee9448337c 100644 --- a/meta/recipes-core/uclibc/uclibc-git/argp-support.patch +++ b/meta/recipes-core/uclibc/uclibc-git/0003-Add-argp-implementation.patch | |||
@@ -1,31 +1,37 @@ | |||
1 | From: Salvatore Cro <salvatore.cro at st.com> | 1 | From eaae816fb22929469aa4cc3402b91b512fc69549 Mon Sep 17 00:00:00 2001 |
2 | From: Salvatore Cro <salvatore.cro@st.com> | ||
3 | Date: Sun, 16 Aug 2015 20:53:37 -0700 | ||
4 | Subject: [PATCH 3/7] Add argp implementation | ||
2 | 5 | ||
3 | Argp is an advanced support for parsing unix-style argument vectors. | 6 | Argp is an advanced support for parsing unix-style argument vectors. |
4 | In addition to the common getopt interface, it provides automatic response | 7 | In addition to the common getopt interface, it provides automatic |
5 | to `--help' and `--version' options and use of custom parser in conjunction | 8 | response |
9 | to `--help' and `--version' options and use of custom parser in | ||
10 | conjunction | ||
6 | with argp native option parser, among others. | 11 | with argp native option parser, among others. |
7 | Argp support is required by elfutils package and prelink. | 12 | Argp support is required by elfutils package and prelink. |
8 | 13 | ||
9 | In uClibc argp functionalities has been moved from C library to libuargp.so | 14 | In uClibc argp functionalities has been moved from C library to |
15 | libuargp.so | ||
10 | Further the libc.so linker script contains an AS_NEEDED entry so that | 16 | Further the libc.so linker script contains an AS_NEEDED entry so that |
11 | it doesn't need to link libuargp.so explicitely. | 17 | it doesn't need to link libuargp.so explicitely. |
12 | 18 | ||
13 | Signed-off-by: Salvatore Cro <salvatore.cro at st.com> | 19 | Signed-off-by: Salvatore Cro <salvatore.cro@st.com> |
14 | Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono at st.com> | 20 | Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com> |
15 | Signed-off-by: Carmelo Amoroso <carmelo.amoroso at st.com> | 21 | Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com> |
16 | 22 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | |
23 | --- | ||
17 | Upstream-Status: Pending | 24 | Upstream-Status: Pending |
18 | 25 | ||
19 | --- | 26 | Makefile.in | 9 + |
20 | Makefile.in | 8 + | 27 | Makerules | 7 +- |
21 | Makerules | 8 +- | 28 | Rules.mak | 13 + |
22 | Rules.mak | 7 + | ||
23 | extra/Configs/Config.in | 17 + | 29 | extra/Configs/Config.in | 17 + |
30 | include/argp.h | 566 ++++++++ | ||
24 | libc/sysdeps/linux/common/bits/getopt_int.h | 136 ++ | 31 | libc/sysdeps/linux/common/bits/getopt_int.h | 136 ++ |
25 | libc/unistd/getopt.c | 18 +- | 32 | libc/unistd/getopt.c | 19 +- |
26 | libc/unistd/getopt_int.h | 134 -- | ||
27 | libuargp/Makefile | 14 + | 33 | libuargp/Makefile | 14 + |
28 | libuargp/Makefile.in | 76 ++ | 34 | libuargp/Makefile.in | 73 ++ |
29 | libuargp/argp-ba.c | 26 + | 35 | libuargp/argp-ba.c | 26 + |
30 | libuargp/argp-eexst.c | 32 + | 36 | libuargp/argp-eexst.c | 32 + |
31 | libuargp/argp-fmtstream.c | 439 +++++++ | 37 | libuargp/argp-fmtstream.c | 439 +++++++ |
@@ -46,9 +52,9 @@ Upstream-Status: Pending | |||
46 | test/argp/bug-argp1.c | 26 + | 52 | test/argp/bug-argp1.c | 26 + |
47 | test/argp/tst-argp1.c | 118 ++ | 53 | test/argp/tst-argp1.c | 118 ++ |
48 | test/argp/tst-argp2.c | 101 ++ | 54 | test/argp/tst-argp2.c | 101 ++ |
49 | 29 files changed, 4911 insertions(+), 138 deletions(-) | 55 | 29 files changed, 5481 insertions(+), 4 deletions(-) |
56 | create mode 100644 include/argp.h | ||
50 | create mode 100644 libc/sysdeps/linux/common/bits/getopt_int.h | 57 | create mode 100644 libc/sysdeps/linux/common/bits/getopt_int.h |
51 | delete mode 100644 libc/unistd/getopt_int.h | ||
52 | create mode 100644 libuargp/Makefile | 58 | create mode 100644 libuargp/Makefile |
53 | create mode 100644 libuargp/Makefile.in | 59 | create mode 100644 libuargp/Makefile.in |
54 | create mode 100644 libuargp/argp-ba.c | 60 | create mode 100644 libuargp/argp-ba.c |
@@ -72,19 +78,19 @@ Upstream-Status: Pending | |||
72 | create mode 100644 test/argp/tst-argp1.c | 78 | create mode 100644 test/argp/tst-argp1.c |
73 | create mode 100644 test/argp/tst-argp2.c | 79 | create mode 100644 test/argp/tst-argp2.c |
74 | 80 | ||
75 | Index: git/Makefile.in | 81 | diff --git a/Makefile.in b/Makefile.in |
76 | =================================================================== | 82 | index 04671a4..a450af9 100644 |
77 | --- git.orig/Makefile.in 2012-06-18 13:10:12.000000000 -0700 | 83 | --- a/Makefile.in |
78 | +++ git/Makefile.in 2012-06-18 13:12:06.448829343 -0700 | 84 | +++ b/Makefile.in |
79 | @@ -48,6 +48,7 @@ | 85 | @@ -39,6 +39,7 @@ include $(top_srcdir)libresolv/Makefile.in |
80 | include $(top_srcdir)libutil/Makefile.in | 86 | include $(top_srcdir)libutil/Makefile.in |
81 | include $(top_srcdir)libpthread/Makefile.in | 87 | include $(top_srcdir)libpthread/Makefile.in |
82 | include $(top_srcdir)librt/Makefile.in | 88 | include $(top_srcdir)librt/Makefile.in |
83 | +include $(top_srcdir)libuargp/Makefile.in | 89 | +include $(top_srcdir)libuargp/Makefile.in |
84 | include $(top_srcdir)libubacktrace/Makefile.in | 90 | include $(top_srcdir)libubacktrace/Makefile.in |
85 | include $(top_srcdir)extra/locale/Makefile.in | ||
86 | 91 | ||
87 | @@ -250,6 +251,7 @@ | 92 | # last included to catch all the objects added by others (locales/threads) |
93 | @@ -262,6 +263,7 @@ HEADERS_RM- += sgtty.h | ||
88 | endif | 94 | endif |
89 | HEADERS_RM-$(HAVE_SHARED) += dlfcn.h bits/dlfcn.h | 95 | HEADERS_RM-$(HAVE_SHARED) += dlfcn.h bits/dlfcn.h |
90 | HEADERS_RM-$(PTHREADS_DEBUG_SUPPORT) += thread_db.h | 96 | HEADERS_RM-$(PTHREADS_DEBUG_SUPPORT) += thread_db.h |
@@ -92,24 +98,33 @@ Index: git/Makefile.in | |||
92 | HEADERS_RM-$(UCLIBC_HAS_BSD_ERR) += err.h | 98 | HEADERS_RM-$(UCLIBC_HAS_BSD_ERR) += err.h |
93 | HEADERS_RM-$(UCLIBC_HAS_CRYPT) += crypt.h | 99 | HEADERS_RM-$(UCLIBC_HAS_CRYPT) += crypt.h |
94 | HEADERS_RM-$(UCLIBC_HAS_EPOLL) += sys/epoll.h | 100 | HEADERS_RM-$(UCLIBC_HAS_EPOLL) += sys/epoll.h |
95 | @@ -368,6 +370,12 @@ | 101 | @@ -386,6 +388,13 @@ else |
96 | -$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/ | 102 | -$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/ |
97 | endif | 103 | endif |
98 | echo "$(UBACKTRACE_ASNEEDED)" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so | 104 | echo "$(UBACKTRACE_ASNEEDED)" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so |
99 | +ifeq ($(UCLIBC_HAS_ARGP),y) | 105 | +ifeq ($(UCLIBC_HAS_ARGP),y) |
100 | +# Add the AS_NEEDED entry for libuargp.so | 106 | +# Add the AS_NEEDED entry for libuargp.so |
101 | + if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) ] ; then \ | 107 | + if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_MAJORNAME) ] ; then \ |
102 | + echo "GROUP ( $(UARGP_ASNEEDED) )" >> $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \ | 108 | + echo "GROUP ( $(UARGP_ASNEEDED) )" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \ |
103 | + fi | 109 | + fi |
104 | +endif | 110 | +endif |
111 | + | ||
105 | ifeq ($(UCLIBC_HAS_THREADS),y) | 112 | ifeq ($(UCLIBC_HAS_THREADS),y) |
106 | ifneq ($(LINUXTHREADS_OLD),y) | 113 | ifneq ($(LINUXTHREADS_OLD),y) |
107 | ifeq ($(HARDWIRED_ABSPATH),y) | 114 | ifeq ($(HARDWIRED_ABSPATH),y) |
108 | Index: git/Makerules | 115 | diff --git a/Makerules b/Makerules |
109 | =================================================================== | 116 | index d6f7e24..e70050d 100644 |
110 | --- git.orig/Makerules 2012-06-18 13:10:12.000000000 -0700 | 117 | --- a/Makerules |
111 | +++ git/Makerules 2012-06-18 13:10:44.052825547 -0700 | 118 | +++ b/Makerules |
112 | @@ -32,12 +32,12 @@ | 119 | @@ -48,6 +48,7 @@ $(eval $(call add_IS_IN_lib,libresolv,$(libresolv-a-y) $(libresolv-so-y))) |
120 | $(eval $(call add_IS_IN_lib,librt,$(librt-a-y) $(librt-so-y))) | ||
121 | $(eval $(call add_IS_IN_lib,libutil,$(libutil-a-y) $(libutil-so-y))) | ||
122 | $(eval $(call add_IS_IN_lib,libubacktrace,$(libubacktrace-a-y) $(libubacktrace-so-y))) | ||
123 | +$(eval $(call add_IS_IN_lib,libuargp,$(libuargp-a-y) $(libuargp-so-y))) | ||
124 | |||
125 | shared_objs = $(libc-y:.o=.os) $(libc-shared-y) $(libc-nonshared-y) \ | ||
126 | $(libcrypt-so-y) $(libdl-so-y) \ | ||
127 | @@ -55,12 +56,12 @@ shared_objs = $(libc-y:.o=.os) $(libc-shared-y) $(libc-nonshared-y) \ | ||
113 | $(libpthread-so-y) $(libpthread-nonshared-y) $(libthread_db-so-y) \ | 128 | $(libpthread-so-y) $(libpthread-nonshared-y) $(libthread_db-so-y) \ |
114 | $(libresolv-so-y) $(librt-so-y) \ | 129 | $(libresolv-so-y) $(librt-so-y) \ |
115 | $(ldso-y) \ | 130 | $(ldso-y) \ |
@@ -124,7 +139,7 @@ Index: git/Makerules | |||
124 | ifeq ($(DOPIC),y) | 139 | ifeq ($(DOPIC),y) |
125 | ar_objs := $(ar_objs:.o=.os) | 140 | ar_objs := $(ar_objs:.o=.os) |
126 | endif | 141 | endif |
127 | @@ -472,7 +472,7 @@ | 142 | @@ -498,7 +499,7 @@ files.dep := $(libc-a-y) $(libc-so-y) $(libc-nonshared-y) \ |
128 | $(librt-a-y) $(librt-so-y) $(libresolv-a-y) $(libresolv-so-y) \ | 143 | $(librt-a-y) $(librt-so-y) $(libresolv-a-y) $(libresolv-so-y) \ |
129 | $(libcrypt-a-y) $(libcrypt-so-y) $(libutil-a-y) $(libutil-so-y) \ | 144 | $(libcrypt-a-y) $(libcrypt-so-y) $(libutil-a-y) $(libutil-so-y) \ |
130 | $(libnsl-a-y) $(libnsl-so-y) $(ldso-y) $(libdl-a-y) $(libdl-so-y) \ | 145 | $(libnsl-a-y) $(libnsl-so-y) $(ldso-y) $(libdl-a-y) $(libdl-so-y) \ |
@@ -133,30 +148,36 @@ Index: git/Makerules | |||
133 | .depends.dep := \ | 148 | .depends.dep := \ |
134 | $(patsubst %.s,%.s.dep,$(filter %.s,$(files.dep))) \ | 149 | $(patsubst %.s,%.s.dep,$(filter %.s,$(files.dep))) \ |
135 | $(patsubst %.o,%.o.dep,$(filter %.o,$(files.dep))) \ | 150 | $(patsubst %.o,%.o.dep,$(filter %.o,$(files.dep))) \ |
136 | Index: git/Rules.mak | 151 | diff --git a/Rules.mak b/Rules.mak |
137 | =================================================================== | 152 | index de9ffb3..a2baf58 100644 |
138 | --- git.orig/Rules.mak 2012-06-18 13:10:12.000000000 -0700 | 153 | --- a/Rules.mak |
139 | +++ git/Rules.mak 2012-06-18 13:10:44.056825544 -0700 | 154 | +++ b/Rules.mak |
140 | @@ -589,6 +589,13 @@ | 155 | @@ -602,6 +602,19 @@ export UBACKTRACE_ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -q -- -- |
141 | else | 156 | else |
142 | export UBACKTRACE_ASNEEDED:="" | 157 | export UBACKTRACE_ASNEEDED:="" |
143 | endif | 158 | endif |
144 | +ifeq ($(UCLIBC_HAS_ARGP),y) | 159 | +ifeq ($(UCLIBC_HAS_ARGP),y) |
160 | +ifeq ($(HARDWIRED_ABSPATH),y) | ||
145 | +# Only used in installed libc.so linker script | 161 | +# Only used in installed libc.so linker script |
146 | +UARGP_FULL_NAME := $(RUNTIME_PREFIX)lib/libuargp.so.$(MAJOR_VERSION) | 162 | +UARGP_FULL_NAME := $(subst //,/,$(RUNTIME_PREFIX)$(MULTILIB_DIR)/libuargp.so.$(MAJOR_VERSION)) |
147 | +export UARGP_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UARGP_FULL_NAME) )" || echo "$(UARGP_FULL_NAME)") | 163 | +else |
164 | +UARGP_FULL_NAME := libuargp.so.$(MAJOR_VERSION) | ||
165 | +endif | ||
166 | +export UARGP_ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -q -- --as-needed && \ | ||
167 | + echo "GROUP ( AS_NEEDED ( $(UARGP_FULL_NAME) ) )" || \ | ||
168 | + echo "GROUP ( $(UARGP_FULL_NAME) )") | ||
148 | +else | 169 | +else |
149 | +export UARGP_ASNEEDED:="" | 170 | +export UARGP_ASNEEDED:="" |
150 | +endif | 171 | +endif |
151 | endif | 172 | endif |
152 | 173 | ||
153 | # Add a bunch of extra pedantic annoyingly strict checks | 174 | # Add a bunch of extra pedantic annoyingly strict checks |
154 | Index: git/extra/Configs/Config.in | 175 | diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in |
155 | =================================================================== | 176 | index 242e45a..b36d4c9 100644 |
156 | --- git.orig/extra/Configs/Config.in 2012-06-18 13:10:12.000000000 -0700 | 177 | --- a/extra/Configs/Config.in |
157 | +++ git/extra/Configs/Config.in 2012-06-18 13:10:44.056825544 -0700 | 178 | +++ b/extra/Configs/Config.in |
158 | @@ -1853,6 +1853,23 @@ | 179 | @@ -1943,6 +1943,23 @@ config UCLIBC_HAS_GNU_GETSUBOPT |
159 | smaller SUSv3 compatible getsubopt(). | 180 | Answer Y if you want to include getsubopt(). |
160 | 181 | ||
161 | Most people will answer Y. | 182 | Most people will answer Y. |
162 | + | 183 | + |
@@ -179,10 +200,583 @@ Index: git/extra/Configs/Config.in | |||
179 | endmenu | 200 | endmenu |
180 | 201 | ||
181 | 202 | ||
182 | Index: git/libc/sysdeps/linux/common/bits/getopt_int.h | 203 | diff --git a/include/argp.h b/include/argp.h |
183 | =================================================================== | 204 | new file mode 100644 |
184 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 205 | index 0000000..9d53728 |
185 | +++ git/libc/sysdeps/linux/common/bits/getopt_int.h 2012-06-18 13:10:44.056825544 -0700 | 206 | --- /dev/null |
207 | +++ b/include/argp.h | ||
208 | @@ -0,0 +1,566 @@ | ||
209 | +/* Hierarchial argument parsing, layered over getopt. | ||
210 | + Copyright (C) 1995-1999, 2003, 2004, 2005, 2006, 2007, 2009 | ||
211 | + Free Software Foundation, Inc. | ||
212 | + This file is part of the GNU C Library. | ||
213 | + Written by Miles Bader <miles at gnu.ai.mit.edu>. | ||
214 | + | ||
215 | + The GNU C Library is free software; you can redistribute it and/or | ||
216 | + modify it under the terms of the GNU Lesser General Public | ||
217 | + License as published by the Free Software Foundation; either | ||
218 | + version 2.1 of the License, or (at your option) any later version. | ||
219 | + | ||
220 | + The GNU C Library is distributed in the hope that it will be useful, | ||
221 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
222 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
223 | + Lesser General Public License for more details. | ||
224 | + | ||
225 | + You should have received a copy of the GNU Lesser General Public | ||
226 | + License along with the GNU C Library; if not, write to the Free | ||
227 | + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||
228 | + 02111-1307 USA. | ||
229 | + | ||
230 | + Modified for uClibc by: Salvatore Cro <salvatore.cro at st.com> | ||
231 | +*/ | ||
232 | + | ||
233 | +#ifndef _ARGP_H | ||
234 | +#define _ARGP_H | ||
235 | + | ||
236 | +#include <stdio.h> | ||
237 | +#include <ctype.h> | ||
238 | +#include <limits.h> | ||
239 | + | ||
240 | +#define __need_error_t | ||
241 | +#include <errno.h> | ||
242 | + | ||
243 | +#ifndef __const | ||
244 | +# define __const const | ||
245 | +#endif | ||
246 | + | ||
247 | +#ifndef __THROW | ||
248 | +# define __THROW | ||
249 | +#endif | ||
250 | +#ifndef __NTH | ||
251 | +# define __NTH(fct) fct __THROW | ||
252 | +#endif | ||
253 | + | ||
254 | +#ifndef __attribute__ | ||
255 | +/* This feature is available in gcc versions 2.5 and later. */ | ||
256 | +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || defined(__STRICT_ANSI__) | ||
257 | +# define __attribute__(Spec) /* empty */ | ||
258 | +# endif | ||
259 | +/* The __-protected variants of `format' and `printf' attributes | ||
260 | + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ | ||
261 | +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || defined(__STRICT_ANSI__) | ||
262 | +# define __format__ format | ||
263 | +# define __printf__ printf | ||
264 | +# endif | ||
265 | +#endif | ||
266 | + | ||
267 | +/* GCC 2.95 and later have "__restrict"; C99 compilers have | ||
268 | + "restrict", and "configure" may have defined "restrict". */ | ||
269 | +#ifndef __restrict | ||
270 | +# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) | ||
271 | +# if defined restrict || 199901L <= __STDC_VERSION__ | ||
272 | +# define __restrict restrict | ||
273 | +# else | ||
274 | +# define __restrict | ||
275 | +# endif | ||
276 | +# endif | ||
277 | +#endif | ||
278 | + | ||
279 | +#ifndef __error_t_defined | ||
280 | +typedef int error_t; | ||
281 | +# define __error_t_defined | ||
282 | +#endif | ||
283 | + | ||
284 | +#ifdef __cplusplus | ||
285 | +extern "C" { | ||
286 | +#endif | ||
287 | + | ||
288 | +/* A description of a particular option. A pointer to an array of | ||
289 | + these is passed in the OPTIONS field of an argp structure. Each option | ||
290 | + entry can correspond to one long option and/or one short option; more | ||
291 | + names for the same option can be added by following an entry in an option | ||
292 | + array with options having the OPTION_ALIAS flag set. */ | ||
293 | +struct argp_option | ||
294 | +{ | ||
295 | + /* The long option name. For more than one name for the same option, you | ||
296 | + can use following options with the OPTION_ALIAS flag set. */ | ||
297 | + __const char *name; | ||
298 | + | ||
299 | + /* What key is returned for this option. If > 0 and printable, then it's | ||
300 | + also accepted as a short option. */ | ||
301 | + int key; | ||
302 | + | ||
303 | + /* If non-NULL, this is the name of the argument associated with this | ||
304 | + option, which is required unless the OPTION_ARG_OPTIONAL flag is set. */ | ||
305 | + __const char *arg; | ||
306 | + | ||
307 | + /* OPTION_ flags. */ | ||
308 | + int flags; | ||
309 | + | ||
310 | + /* The doc string for this option. If both NAME and KEY are 0, This string | ||
311 | + will be printed outdented from the normal option column, making it | ||
312 | + useful as a group header (it will be the first thing printed in its | ||
313 | + group); in this usage, it's conventional to end the string with a `:'. */ | ||
314 | + __const char *doc; | ||
315 | + | ||
316 | + /* The group this option is in. In a long help message, options are sorted | ||
317 | + alphabetically within each group, and the groups presented in the order | ||
318 | + 0, 1, 2, ..., n, -m, ..., -2, -1. Every entry in an options array with | ||
319 | + if this field 0 will inherit the group number of the previous entry, or | ||
320 | + zero if it's the first one, unless its a group header (NAME and KEY both | ||
321 | + 0), in which case, the previous entry + 1 is the default. Automagic | ||
322 | + options such as --help are put into group -1. */ | ||
323 | + int group; | ||
324 | +}; | ||
325 | + | ||
326 | +/* The argument associated with this option is optional. */ | ||
327 | +#define OPTION_ARG_OPTIONAL 0x1 | ||
328 | + | ||
329 | +/* This option isn't displayed in any help messages. */ | ||
330 | +#define OPTION_HIDDEN 0x2 | ||
331 | + | ||
332 | +/* This option is an alias for the closest previous non-alias option. This | ||
333 | + means that it will be displayed in the same help entry, and will inherit | ||
334 | + fields other than NAME and KEY from the aliased option. */ | ||
335 | +#define OPTION_ALIAS 0x4 | ||
336 | + | ||
337 | +/* This option isn't actually an option (and so should be ignored by the | ||
338 | + actual option parser), but rather an arbitrary piece of documentation that | ||
339 | + should be displayed in much the same manner as the options. If this flag | ||
340 | + is set, then the option NAME field is displayed unmodified (e.g., no `--' | ||
341 | + prefix is added) at the left-margin (where a *short* option would normally | ||
342 | + be displayed), and the documentation string in the normal place. For | ||
343 | + purposes of sorting, any leading whitespace and punctuation is ignored, | ||
344 | + except that if the first non-whitespace character is not `-', this entry | ||
345 | + is displayed after all options (and OPTION_DOC entries with a leading `-') | ||
346 | + in the same group. */ | ||
347 | +#define OPTION_DOC 0x8 | ||
348 | + | ||
349 | +/* This option shouldn't be included in `long' usage messages (but is still | ||
350 | + included in help messages). This is mainly intended for options that are | ||
351 | + completely documented in an argp's ARGS_DOC field, in which case including | ||
352 | + the option in the generic usage list would be redundant. For instance, | ||
353 | + if ARGS_DOC is "FOO BAR\n-x BLAH", and the `-x' option's purpose is to | ||
354 | + distinguish these two cases, -x should probably be marked | ||
355 | + OPTION_NO_USAGE. */ | ||
356 | +#define OPTION_NO_USAGE 0x10 | ||
357 | + | ||
358 | +struct argp; /* fwd declare this type */ | ||
359 | +struct argp_state; /* " */ | ||
360 | +struct argp_child; /* " */ | ||
361 | + | ||
362 | +/* The type of a pointer to an argp parsing function. */ | ||
363 | +typedef error_t (*argp_parser_t) (int __key, char *__arg, | ||
364 | + struct argp_state *__state); | ||
365 | + | ||
366 | +/* What to return for unrecognized keys. For special ARGP_KEY_ keys, such | ||
367 | + returns will simply be ignored. For user keys, this error will be turned | ||
368 | + into EINVAL (if the call to argp_parse is such that errors are propagated | ||
369 | + back to the user instead of exiting); returning EINVAL itself would result | ||
370 | + in an immediate stop to parsing in *all* cases. */ | ||
371 | +#define ARGP_ERR_UNKNOWN E2BIG /* Hurd should never need E2BIG. XXX */ | ||
372 | + | ||
373 | +/* Special values for the KEY argument to an argument parsing function. | ||
374 | + ARGP_ERR_UNKNOWN should be returned if they aren't understood. | ||
375 | + | ||
376 | + The sequence of keys to a parsing function is either (where each | ||
377 | + uppercased word should be prefixed by `ARGP_KEY_' and opt is a user key): | ||
378 | + | ||
379 | + INIT opt... NO_ARGS END SUCCESS -- No non-option arguments at all | ||
380 | + or INIT (opt | ARG)... END SUCCESS -- All non-option args parsed | ||
381 | + or INIT (opt | ARG)... SUCCESS -- Some non-option arg unrecognized | ||
382 | + | ||
383 | + The third case is where every parser returned ARGP_KEY_UNKNOWN for an | ||
384 | + argument, in which case parsing stops at that argument (returning the | ||
385 | + unparsed arguments to the caller of argp_parse if requested, or stopping | ||
386 | + with an error message if not). | ||
387 | + | ||
388 | + If an error occurs (either detected by argp, or because the parsing | ||
389 | + function returned an error value), then the parser is called with | ||
390 | + ARGP_KEY_ERROR, and no further calls are made. */ | ||
391 | + | ||
392 | +/* This is not an option at all, but rather a command line argument. If a | ||
393 | + parser receiving this key returns success, the fact is recorded, and the | ||
394 | + ARGP_KEY_NO_ARGS case won't be used. HOWEVER, if while processing the | ||
395 | + argument, a parser function decrements the NEXT field of the state it's | ||
396 | + passed, the option won't be considered processed; this is to allow you to | ||
397 | + actually modify the argument (perhaps into an option), and have it | ||
398 | + processed again. */ | ||
399 | +#define ARGP_KEY_ARG 0 | ||
400 | +/* There are remaining arguments not parsed by any parser, which may be found | ||
401 | + starting at (STATE->argv + STATE->next). If success is returned, but | ||
402 | + STATE->next left untouched, it's assumed that all arguments were consume, | ||
403 | + otherwise, the parser should adjust STATE->next to reflect any arguments | ||
404 | + consumed. */ | ||
405 | +#define ARGP_KEY_ARGS 0x1000006 | ||
406 | +/* There are no more command line arguments at all. */ | ||
407 | +#define ARGP_KEY_END 0x1000001 | ||
408 | +/* Because it's common to want to do some special processing if there aren't | ||
409 | + any non-option args, user parsers are called with this key if they didn't | ||
410 | + successfully process any non-option arguments. Called just before | ||
411 | + ARGP_KEY_END (where more general validity checks on previously parsed | ||
412 | + arguments can take place). */ | ||
413 | +#define ARGP_KEY_NO_ARGS 0x1000002 | ||
414 | +/* Passed in before any parsing is done. Afterwards, the values of each | ||
415 | + element of the CHILD_INPUT field, if any, in the state structure is | ||
416 | + copied to each child's state to be the initial value of the INPUT field. */ | ||
417 | +#define ARGP_KEY_INIT 0x1000003 | ||
418 | +/* Use after all other keys, including SUCCESS & END. */ | ||
419 | +#define ARGP_KEY_FINI 0x1000007 | ||
420 | +/* Passed in when parsing has successfully been completed (even if there are | ||
421 | + still arguments remaining). */ | ||
422 | +#define ARGP_KEY_SUCCESS 0x1000004 | ||
423 | +/* Passed in if an error occurs. */ | ||
424 | +#define ARGP_KEY_ERROR 0x1000005 | ||
425 | + | ||
426 | +/* An argp structure contains a set of options declarations, a function to | ||
427 | + deal with parsing one, documentation string, a possible vector of child | ||
428 | + argp's, and perhaps a function to filter help output. When actually | ||
429 | + parsing options, getopt is called with the union of all the argp | ||
430 | + structures chained together through their CHILD pointers, with conflicts | ||
431 | + being resolved in favor of the first occurrence in the chain. */ | ||
432 | +struct argp | ||
433 | +{ | ||
434 | + /* An array of argp_option structures, terminated by an entry with both | ||
435 | + NAME and KEY having a value of 0. */ | ||
436 | + __const struct argp_option *options; | ||
437 | + | ||
438 | + /* What to do with an option from this structure. KEY is the key | ||
439 | + associated with the option, and ARG is any associated argument (NULL if | ||
440 | + none was supplied). If KEY isn't understood, ARGP_ERR_UNKNOWN should be | ||
441 | + returned. If a non-zero, non-ARGP_ERR_UNKNOWN value is returned, then | ||
442 | + parsing is stopped immediately, and that value is returned from | ||
443 | + argp_parse(). For special (non-user-supplied) values of KEY, see the | ||
444 | + ARGP_KEY_ definitions below. */ | ||
445 | + argp_parser_t parser; | ||
446 | + | ||
447 | + /* A string describing what other arguments are wanted by this program. It | ||
448 | + is only used by argp_usage to print the `Usage:' message. If it | ||
449 | + contains newlines, the strings separated by them are considered | ||
450 | + alternative usage patterns, and printed on separate lines (lines after | ||
451 | + the first are prefix by ` or: ' instead of `Usage:'). */ | ||
452 | + __const char *args_doc; | ||
453 | + | ||
454 | + /* If non-NULL, a string containing extra text to be printed before and | ||
455 | + after the options in a long help message (separated by a vertical tab | ||
456 | + `\v' character). */ | ||
457 | + __const char *doc; | ||
458 | + | ||
459 | + /* A vector of argp_children structures, terminated by a member with a 0 | ||
460 | + argp field, pointing to child argps should be parsed with this one. Any | ||
461 | + conflicts are resolved in favor of this argp, or early argps in the | ||
462 | + CHILDREN list. This field is useful if you use libraries that supply | ||
463 | + their own argp structure, which you want to use in conjunction with your | ||
464 | + own. */ | ||
465 | + __const struct argp_child *children; | ||
466 | + | ||
467 | + /* If non-zero, this should be a function to filter the output of help | ||
468 | + messages. KEY is either a key from an option, in which case TEXT is | ||
469 | + that option's help text, or a special key from the ARGP_KEY_HELP_ | ||
470 | + defines, below, describing which other help text TEXT is. The function | ||
471 | + should return either TEXT, if it should be used as-is, a replacement | ||
472 | + string, which should be malloced, and will be freed by argp, or NULL, | ||
473 | + meaning `print nothing'. The value for TEXT is *after* any translation | ||
474 | + has been done, so if any of the replacement text also needs translation, | ||
475 | + that should be done by the filter function. INPUT is either the input | ||
476 | + supplied to argp_parse, or NULL, if argp_help was called directly. */ | ||
477 | + char *(*help_filter) (int __key, __const char *__text, void *__input); | ||
478 | + | ||
479 | + /* If non-zero the strings used in the argp library are translated using | ||
480 | + the domain described by this string. Otherwise the currently installed | ||
481 | + default domain is used. */ | ||
482 | + const char *argp_domain; | ||
483 | +}; | ||
484 | + | ||
485 | +/* Possible KEY arguments to a help filter function. */ | ||
486 | +#define ARGP_KEY_HELP_PRE_DOC 0x2000001 /* Help text preceeding options. */ | ||
487 | +#define ARGP_KEY_HELP_POST_DOC 0x2000002 /* Help text following options. */ | ||
488 | +#define ARGP_KEY_HELP_HEADER 0x2000003 /* Option header string. */ | ||
489 | +#define ARGP_KEY_HELP_EXTRA 0x2000004 /* After all other documentation; | ||
490 | + TEXT is NULL for this key. */ | ||
491 | +/* Explanatory note emitted when duplicate option arguments have been | ||
492 | + suppressed. */ | ||
493 | +#define ARGP_KEY_HELP_DUP_ARGS_NOTE 0x2000005 | ||
494 | +#define ARGP_KEY_HELP_ARGS_DOC 0x2000006 /* Argument doc string. */ | ||
495 | + | ||
496 | +/* When an argp has a non-zero CHILDREN field, it should point to a vector of | ||
497 | + argp_child structures, each of which describes a subsidiary argp. */ | ||
498 | +struct argp_child | ||
499 | +{ | ||
500 | + /* The child parser. */ | ||
501 | + __const struct argp *argp; | ||
502 | + | ||
503 | + /* Flags for this child. */ | ||
504 | + int flags; | ||
505 | + | ||
506 | + /* If non-zero, an optional header to be printed in help output before the | ||
507 | + child options. As a side-effect, a non-zero value forces the child | ||
508 | + options to be grouped together; to achieve this effect without actually | ||
509 | + printing a header string, use a value of "". */ | ||
510 | + __const char *header; | ||
511 | + | ||
512 | + /* Where to group the child options relative to the other (`consolidated') | ||
513 | + options in the parent argp; the values are the same as the GROUP field | ||
514 | + in argp_option structs, but all child-groupings follow parent options at | ||
515 | + a particular group level. If both this field and HEADER are zero, then | ||
516 | + they aren't grouped at all, but rather merged with the parent options | ||
517 | + (merging the child's grouping levels with the parents). */ | ||
518 | + int group; | ||
519 | +}; | ||
520 | + | ||
521 | +/* Parsing state. This is provided to parsing functions called by argp, | ||
522 | + which may examine and, as noted, modify fields. */ | ||
523 | +struct argp_state | ||
524 | +{ | ||
525 | + /* The top level ARGP being parsed. */ | ||
526 | + __const struct argp *root_argp; | ||
527 | + | ||
528 | + /* The argument vector being parsed. May be modified. */ | ||
529 | + int argc; | ||
530 | + char **argv; | ||
531 | + | ||
532 | + /* The index in ARGV of the next arg that to be parsed. May be modified. */ | ||
533 | + int next; | ||
534 | + | ||
535 | + /* The flags supplied to argp_parse. May be modified. */ | ||
536 | + unsigned flags; | ||
537 | + | ||
538 | + /* While calling a parsing function with a key of ARGP_KEY_ARG, this is the | ||
539 | + number of the current arg, starting at zero, and incremented after each | ||
540 | + such call returns. At all other times, this is the number of such | ||
541 | + arguments that have been processed. */ | ||
542 | + unsigned arg_num; | ||
543 | + | ||
544 | + /* If non-zero, the index in ARGV of the first argument following a special | ||
545 | + `--' argument (which prevents anything following being interpreted as an | ||
546 | + option). Only set once argument parsing has proceeded past this point. */ | ||
547 | + int quoted; | ||
548 | + | ||
549 | + /* An arbitrary pointer passed in from the user. */ | ||
550 | + void *input; | ||
551 | + /* Values to pass to child parsers. This vector will be the same length as | ||
552 | + the number of children for the current parser. */ | ||
553 | + void **child_inputs; | ||
554 | + | ||
555 | + /* For the parser's use. Initialized to 0. */ | ||
556 | + void *hook; | ||
557 | + | ||
558 | + /* The name used when printing messages. This is initialized to ARGV[0], | ||
559 | + or PROGRAM_INVOCATION_NAME if that is unavailable. */ | ||
560 | + char *name; | ||
561 | + | ||
562 | + /* Streams used when argp prints something. */ | ||
563 | + FILE *err_stream; /* For errors; initialized to stderr. */ | ||
564 | + FILE *out_stream; /* For information; initialized to stdout. */ | ||
565 | + | ||
566 | + void *pstate; /* Private, for use by argp. */ | ||
567 | +}; | ||
568 | + | ||
569 | +/* Flags for argp_parse (note that the defaults are those that are | ||
570 | + convenient for program command line parsing): */ | ||
571 | + | ||
572 | +/* Don't ignore the first element of ARGV. Normally (and always unless | ||
573 | + ARGP_NO_ERRS is set) the first element of the argument vector is | ||
574 | + skipped for option parsing purposes, as it corresponds to the program name | ||
575 | + in a command line. */ | ||
576 | +#define ARGP_PARSE_ARGV0 0x01 | ||
577 | + | ||
578 | +/* Don't print error messages for unknown options to stderr; unless this flag | ||
579 | + is set, ARGP_PARSE_ARGV0 is ignored, as ARGV[0] is used as the program | ||
580 | + name in the error messages. This flag implies ARGP_NO_EXIT (on the | ||
581 | + assumption that silent exiting upon errors is bad behaviour). */ | ||
582 | +#define ARGP_NO_ERRS 0x02 | ||
583 | + | ||
584 | +/* Don't parse any non-option args. Normally non-option args are parsed by | ||
585 | + calling the parse functions with a key of ARGP_KEY_ARG, and the actual arg | ||
586 | + as the value. Since it's impossible to know which parse function wants to | ||
587 | + handle it, each one is called in turn, until one returns 0 or an error | ||
588 | + other than ARGP_ERR_UNKNOWN; if an argument is handled by no one, the | ||
589 | + argp_parse returns prematurely (but with a return value of 0). If all | ||
590 | + args have been parsed without error, all parsing functions are called one | ||
591 | + last time with a key of ARGP_KEY_END. This flag needn't normally be set, | ||
592 | + as the normal behavior is to stop parsing as soon as some argument can't | ||
593 | + be handled. */ | ||
594 | +#define ARGP_NO_ARGS 0x04 | ||
595 | + | ||
596 | +/* Parse options and arguments in the same order they occur on the command | ||
597 | + line -- normally they're rearranged so that all options come first. */ | ||
598 | +#define ARGP_IN_ORDER 0x08 | ||
599 | + | ||
600 | +/* Don't provide the standard long option --help, which causes usage and | ||
601 | + option help information to be output to stdout, and exit (0) called. */ | ||
602 | +#define ARGP_NO_HELP 0x10 | ||
603 | + | ||
604 | +/* Don't exit on errors (they may still result in error messages). */ | ||
605 | +#define ARGP_NO_EXIT 0x20 | ||
606 | + | ||
607 | +/* Use the gnu getopt `long-only' rules for parsing arguments. */ | ||
608 | +#define ARGP_LONG_ONLY 0x40 | ||
609 | + | ||
610 | +/* Turns off any message-printing/exiting options. */ | ||
611 | +#define ARGP_SILENT (ARGP_NO_EXIT | ARGP_NO_ERRS | ARGP_NO_HELP) | ||
612 | + | ||
613 | +/* Parse the options strings in ARGC & ARGV according to the options in ARGP. | ||
614 | + FLAGS is one of the ARGP_ flags above. If ARG_INDEX is non-NULL, the | ||
615 | + index in ARGV of the first unparsed option is returned in it. If an | ||
616 | + unknown option is present, ARGP_ERR_UNKNOWN is returned; if some parser | ||
617 | + routine returned a non-zero value, it is returned; otherwise 0 is | ||
618 | + returned. This function may also call exit unless the ARGP_NO_HELP flag | ||
619 | + is set. INPUT is a pointer to a value to be passed in to the parser. */ | ||
620 | +extern error_t argp_parse (__const struct argp *__restrict __argp, | ||
621 | + int __argc, char **__restrict __argv, | ||
622 | + unsigned __flags, int *__restrict __arg_index, | ||
623 | + void *__restrict __input); | ||
624 | + | ||
625 | +/* Global variables. */ | ||
626 | + | ||
627 | +/* If defined or set by the user program to a non-zero value, then a default | ||
628 | + option --version is added (unless the ARGP_NO_HELP flag is used), which | ||
629 | + will print this string followed by a newline and exit (unless the | ||
630 | + ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ | ||
631 | +extern __const char *argp_program_version; | ||
632 | + | ||
633 | +/* If defined or set by the user program to a non-zero value, then a default | ||
634 | + option --version is added (unless the ARGP_NO_HELP flag is used), which | ||
635 | + calls this function with a stream to print the version to and a pointer to | ||
636 | + the current parsing state, and then exits (unless the ARGP_NO_EXIT flag is | ||
637 | + used). This variable takes precedent over ARGP_PROGRAM_VERSION. */ | ||
638 | +extern void (*argp_program_version_hook) (FILE *__restrict __stream, | ||
639 | + struct argp_state *__restrict | ||
640 | + __state); | ||
641 | + | ||
642 | +/* If defined or set by the user program, it should point to string that is | ||
643 | + the bug-reporting address for the program. It will be printed by | ||
644 | + argp_help if the ARGP_HELP_BUG_ADDR flag is set (as it is by various | ||
645 | + standard help messages), embedded in a sentence that says something like | ||
646 | + `Report bugs to ADDR.'. */ | ||
647 | +extern __const char *argp_program_bug_address; | ||
648 | + | ||
649 | +/* The exit status that argp will use when exiting due to a parsing error. | ||
650 | + If not defined or set by the user program, this defaults to EX_USAGE from | ||
651 | + <sysexits.h>. */ | ||
652 | +extern error_t argp_err_exit_status; | ||
653 | + | ||
654 | +/* Flags for argp_help. */ | ||
655 | +#define ARGP_HELP_USAGE 0x01 /* a Usage: message. */ | ||
656 | +#define ARGP_HELP_SHORT_USAGE 0x02 /* " but don't actually print options. */ | ||
657 | +#define ARGP_HELP_SEE 0x04 /* a `Try ... for more help' message. */ | ||
658 | +#define ARGP_HELP_LONG 0x08 /* a long help message. */ | ||
659 | +#define ARGP_HELP_PRE_DOC 0x10 /* doc string preceding long help. */ | ||
660 | +#define ARGP_HELP_POST_DOC 0x20 /* doc string following long help. */ | ||
661 | +#define ARGP_HELP_DOC (ARGP_HELP_PRE_DOC | ARGP_HELP_POST_DOC) | ||
662 | +#define ARGP_HELP_BUG_ADDR 0x40 /* bug report address */ | ||
663 | +#define ARGP_HELP_LONG_ONLY 0x80 /* modify output appropriately to | ||
664 | + reflect ARGP_LONG_ONLY mode. */ | ||
665 | + | ||
666 | +/* These ARGP_HELP flags are only understood by argp_state_help. */ | ||
667 | +#define ARGP_HELP_EXIT_ERR 0x100 /* Call exit(1) instead of returning. */ | ||
668 | +#define ARGP_HELP_EXIT_OK 0x200 /* Call exit(0) instead of returning. */ | ||
669 | + | ||
670 | +/* The standard thing to do after a program command line parsing error, if an | ||
671 | + error message has already been printed. */ | ||
672 | +#define ARGP_HELP_STD_ERR \ | ||
673 | + (ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR) | ||
674 | +/* The standard thing to do after a program command line parsing error, if no | ||
675 | + more specific error message has been printed. */ | ||
676 | +#define ARGP_HELP_STD_USAGE \ | ||
677 | + (ARGP_HELP_SHORT_USAGE | ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR) | ||
678 | +/* The standard thing to do in response to a --help option. */ | ||
679 | +#define ARGP_HELP_STD_HELP \ | ||
680 | + (ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG | ARGP_HELP_EXIT_OK \ | ||
681 | + | ARGP_HELP_DOC | ARGP_HELP_BUG_ADDR) | ||
682 | + | ||
683 | +/* Output a usage message for ARGP to STREAM. FLAGS are from the set | ||
684 | + ARGP_HELP_*. */ | ||
685 | +extern void argp_help (__const struct argp *__restrict __argp, | ||
686 | + FILE *__restrict __stream, | ||
687 | + unsigned __flags, char *__restrict __name); | ||
688 | + | ||
689 | +/* The following routines are intended to be called from within an argp | ||
690 | + parsing routine (thus taking an argp_state structure as the first | ||
691 | + argument). They may or may not print an error message and exit, depending | ||
692 | + on the flags in STATE -- in any case, the caller should be prepared for | ||
693 | + them *not* to exit, and should return an appropiate error after calling | ||
694 | + them. [argp_usage & argp_error should probably be called argp_state_..., | ||
695 | + but they're used often enough that they should be short] */ | ||
696 | + | ||
697 | +/* Output, if appropriate, a usage message for STATE to STREAM. FLAGS are | ||
698 | + from the set ARGP_HELP_*. */ | ||
699 | +extern void argp_state_help (__const struct argp_state *__restrict __state, | ||
700 | + FILE *__restrict __stream, | ||
701 | + unsigned int __flags); | ||
702 | +/* Possibly output the standard usage message for ARGP to stderr and exit. */ | ||
703 | +extern void argp_usage (__const struct argp_state *__state); | ||
704 | + | ||
705 | +/* If appropriate, print the printf string FMT and following args, preceded | ||
706 | + by the program name and `:', to stderr, and followed by a `Try ... --help' | ||
707 | + message, then exit (1). */ | ||
708 | +extern void argp_error (__const struct argp_state *__restrict __state, | ||
709 | + __const char *__restrict __fmt, ...) | ||
710 | + __attribute__ ((__format__ (__printf__, 2, 3))); | ||
711 | +/* Similar to the standard gnu error-reporting function error(), but will | ||
712 | + respect the ARGP_NO_EXIT and ARGP_NO_ERRS flags in STATE, and will print | ||
713 | + to STATE->err_stream. This is useful for argument parsing code that is | ||
714 | + shared between program startup (when exiting is desired) and runtime | ||
715 | + option parsing (when typically an error code is returned instead). The | ||
716 | + difference between this function and argp_error is that the latter is for | ||
717 | + *parsing errors*, and the former is for other problems that occur during | ||
718 | + parsing but don't reflect a (syntactic) problem with the input. */ | ||
719 | +extern void argp_failure (__const struct argp_state *__restrict __state, | ||
720 | + int __status, int __errnum, | ||
721 | + __const char *__restrict __fmt, ...) | ||
722 | + __attribute__ ((__format__ (__printf__, 4, 5))); | ||
723 | +/* Returns true if the option OPT is a valid short option. */ | ||
724 | +extern int _option_is_short (__const struct argp_option *__opt) __THROW; | ||
725 | +extern int __option_is_short (__const struct argp_option *__opt) __THROW; | ||
726 | + | ||
727 | +/* Returns true if the option OPT is in fact the last (unused) entry in an | ||
728 | + options array. */ | ||
729 | +extern int _option_is_end (__const struct argp_option *__opt) __THROW; | ||
730 | +extern int __option_is_end (__const struct argp_option *__opt) __THROW; | ||
731 | + | ||
732 | +/* Return the input field for ARGP in the parser corresponding to STATE; used | ||
733 | + by the help routines. */ | ||
734 | +/* We think this should not be exported */ | ||
735 | +extern void *__argp_input (__const struct argp *__restrict __argp, | ||
736 | + __const struct argp_state *__restrict __state) | ||
737 | + __THROW; | ||
738 | + | ||
739 | +#ifdef __USE_EXTERN_INLINES | ||
740 | + | ||
741 | +# ifndef ARGP_EI | ||
742 | +# define ARGP_EI __extern_inline | ||
743 | +# endif | ||
744 | + | ||
745 | +ARGP_EI void | ||
746 | +argp_usage (__const struct argp_state *__state) | ||
747 | +{ | ||
748 | + argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); | ||
749 | +} | ||
750 | + | ||
751 | +ARGP_EI int | ||
752 | +__NTH (__option_is_short (__const struct argp_option *__opt)) | ||
753 | +{ | ||
754 | + if (__opt->flags & OPTION_DOC) | ||
755 | + return 0; | ||
756 | + else | ||
757 | + { | ||
758 | + int __key = __opt->key; | ||
759 | + return __key > 0 && __key <= UCHAR_MAX && isprint (__key); | ||
760 | + } | ||
761 | +} | ||
762 | + | ||
763 | +ARGP_EI int | ||
764 | +__NTH (__option_is_end (__const struct argp_option *__opt)) | ||
765 | +{ | ||
766 | + return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; | ||
767 | +} | ||
768 | +#endif /* Use extern inlines. */ | ||
769 | + | ||
770 | +#ifdef __cplusplus | ||
771 | +} | ||
772 | +#endif | ||
773 | + | ||
774 | +#endif /* argp.h */ | ||
775 | diff --git a/libc/sysdeps/linux/common/bits/getopt_int.h b/libc/sysdeps/linux/common/bits/getopt_int.h | ||
776 | new file mode 100644 | ||
777 | index 0000000..291edfe | ||
778 | --- /dev/null | ||
779 | +++ b/libc/sysdeps/linux/common/bits/getopt_int.h | ||
186 | @@ -0,0 +1,136 @@ | 780 | @@ -0,0 +1,136 @@ |
187 | +/* Internal declarations for getopt. | 781 | +/* Internal declarations for getopt. |
188 | + Copyright (C) 1989-1994,1996-1999,2001,2003,2004 | 782 | + Copyright (C) 1989-1994,1996-1999,2001,2003,2004 |
@@ -320,11 +914,11 @@ Index: git/libc/sysdeps/linux/common/bits/getopt_int.h | |||
320 | +#endif | 914 | +#endif |
321 | +#endif | 915 | +#endif |
322 | +#endif /* getopt_int.h */ | 916 | +#endif /* getopt_int.h */ |
323 | Index: git/libc/unistd/getopt.c | 917 | diff --git a/libc/unistd/getopt.c b/libc/unistd/getopt.c |
324 | =================================================================== | 918 | index f63482b..db5e12c 100644 |
325 | --- git.orig/libc/unistd/getopt.c 2012-06-18 13:10:12.000000000 -0700 | 919 | --- a/libc/unistd/getopt.c |
326 | +++ git/libc/unistd/getopt.c 2012-06-18 13:10:44.056825544 -0700 | 920 | +++ b/libc/unistd/getopt.c |
327 | @@ -106,7 +106,7 @@ | 921 | @@ -105,7 +105,7 @@ |
328 | they can distinguish the relative order of options and other arguments. */ | 922 | they can distinguish the relative order of options and other arguments. */ |
329 | 923 | ||
330 | #include <getopt.h> | 924 | #include <getopt.h> |
@@ -333,7 +927,7 @@ Index: git/libc/unistd/getopt.c | |||
333 | 927 | ||
334 | 928 | ||
335 | /* For communication from `getopt' to the caller. | 929 | /* For communication from `getopt' to the caller. |
336 | @@ -1170,6 +1170,15 @@ | 930 | @@ -1170,6 +1170,15 @@ getopt_long (int argc, char *const *argv, const char *options, |
337 | return _getopt_internal (argc, argv, options, long_options, opt_index, 0); | 931 | return _getopt_internal (argc, argv, options, long_options, opt_index, 0); |
338 | } | 932 | } |
339 | 933 | ||
@@ -349,9 +943,9 @@ Index: git/libc/unistd/getopt.c | |||
349 | /* Like getopt_long, but '-' as well as '--' can indicate a long option. | 943 | /* Like getopt_long, but '-' as well as '--' can indicate a long option. |
350 | If an option that starts with '-' (not '--') doesn't match a long option, | 944 | If an option that starts with '-' (not '--') doesn't match a long option, |
351 | but does match a short option, it is parsed as a short option | 945 | but does match a short option, it is parsed as a short option |
352 | @@ -1182,4 +1191,12 @@ | 946 | @@ -1183,4 +1192,12 @@ getopt_long_only (int argc, char *const *argv, const char *options, |
353 | return _getopt_internal (argc, argv, options, long_options, opt_index, 1); | ||
354 | } | 947 | } |
948 | #endif /* __UCLIBC_HAS_GETOPT_LONG__ */ | ||
355 | 949 | ||
356 | +int | 950 | +int |
357 | +_getopt_long_only_r (int argc, char *const *argv, const char *options, | 951 | +_getopt_long_only_r (int argc, char *const *argv, const char *options, |
@@ -362,10 +956,11 @@ Index: git/libc/unistd/getopt.c | |||
362 | +} | 956 | +} |
363 | + | 957 | + |
364 | #endif /* Not ELIDE_CODE. */ | 958 | #endif /* Not ELIDE_CODE. */ |
365 | Index: git/libuargp/Makefile | 959 | diff --git a/libuargp/Makefile b/libuargp/Makefile |
366 | =================================================================== | 960 | new file mode 100644 |
367 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 961 | index 0000000..45acdd9 |
368 | +++ git/libuargp/Makefile 2012-06-18 13:10:44.056825544 -0700 | 962 | --- /dev/null |
963 | +++ b/libuargp/Makefile | ||
369 | @@ -0,0 +1,14 @@ | 964 | @@ -0,0 +1,14 @@ |
370 | +# Makefile for uClibc (libuargp) | 965 | +# Makefile for uClibc (libuargp) |
371 | +# | 966 | +# |
@@ -381,10 +976,11 @@ Index: git/libuargp/Makefile | |||
381 | +all: libs | 976 | +all: libs |
382 | +include Makefile.in | 977 | +include Makefile.in |
383 | +include $(top_srcdir)Makerules | 978 | +include $(top_srcdir)Makerules |
384 | Index: git/libuargp/Makefile.in | 979 | diff --git a/libuargp/Makefile.in b/libuargp/Makefile.in |
385 | =================================================================== | 980 | new file mode 100644 |
386 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 981 | index 0000000..1498abb |
387 | +++ git/libuargp/Makefile.in 2012-06-18 13:10:44.056825544 -0700 | 982 | --- /dev/null |
983 | +++ b/libuargp/Makefile.in | ||
388 | @@ -0,0 +1,73 @@ | 984 | @@ -0,0 +1,73 @@ |
389 | +# Makefile for uClibc (libuargp) | 985 | +# Makefile for uClibc (libuargp) |
390 | +# | 986 | +# |
@@ -459,10 +1055,11 @@ Index: git/libuargp/Makefile.in | |||
459 | + | 1055 | + |
460 | +CLEAN_libuargp: | 1056 | +CLEAN_libuargp: |
461 | + $(do_rm) $(addprefix $(libuargp_OUT)/*., o os oS a) | 1057 | + $(do_rm) $(addprefix $(libuargp_OUT)/*., o os oS a) |
462 | Index: git/libuargp/argp-ba.c | 1058 | diff --git a/libuargp/argp-ba.c b/libuargp/argp-ba.c |
463 | =================================================================== | 1059 | new file mode 100644 |
464 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 1060 | index 0000000..3522b02 |
465 | +++ git/libuargp/argp-ba.c 2012-06-18 13:10:44.056825544 -0700 | 1061 | --- /dev/null |
1062 | +++ b/libuargp/argp-ba.c | ||
466 | @@ -0,0 +1,26 @@ | 1063 | @@ -0,0 +1,26 @@ |
467 | +/* Default definition for ARGP_PROGRAM_BUG_ADDRESS. | 1064 | +/* Default definition for ARGP_PROGRAM_BUG_ADDRESS. |
468 | + Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. | 1065 | + Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. |
@@ -490,10 +1087,11 @@ Index: git/libuargp/argp-ba.c | |||
490 | + messages), embedded in a sentence that says something like `Report bugs to | 1087 | + messages), embedded in a sentence that says something like `Report bugs to |
491 | + ADDR.'. */ | 1088 | + ADDR.'. */ |
492 | +const char *argp_program_bug_address; | 1089 | +const char *argp_program_bug_address; |
493 | Index: git/libuargp/argp-eexst.c | 1090 | diff --git a/libuargp/argp-eexst.c b/libuargp/argp-eexst.c |
494 | =================================================================== | 1091 | new file mode 100644 |
495 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 1092 | index 0000000..445b68d |
496 | +++ git/libuargp/argp-eexst.c 2012-06-18 13:10:44.056825544 -0700 | 1093 | --- /dev/null |
1094 | +++ b/libuargp/argp-eexst.c | ||
497 | @@ -0,0 +1,32 @@ | 1095 | @@ -0,0 +1,32 @@ |
498 | +/* Default definition for ARGP_ERR_EXIT_STATUS | 1096 | +/* Default definition for ARGP_ERR_EXIT_STATUS |
499 | + Copyright (C) 1997 Free Software Foundation, Inc. | 1097 | + Copyright (C) 1997 Free Software Foundation, Inc. |
@@ -527,10 +1125,11 @@ Index: git/libuargp/argp-eexst.c | |||
527 | + If not defined or set by the user program, this defaults to EX_USAGE from | 1125 | + If not defined or set by the user program, this defaults to EX_USAGE from |
528 | + <sysexits.h>. */ | 1126 | + <sysexits.h>. */ |
529 | +error_t argp_err_exit_status = EX_USAGE; | 1127 | +error_t argp_err_exit_status = EX_USAGE; |
530 | Index: git/libuargp/argp-fmtstream.c | 1128 | diff --git a/libuargp/argp-fmtstream.c b/libuargp/argp-fmtstream.c |
531 | =================================================================== | 1129 | new file mode 100644 |
532 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 1130 | index 0000000..75227f9 |
533 | +++ git/libuargp/argp-fmtstream.c 2012-06-18 13:10:44.056825544 -0700 | 1131 | --- /dev/null |
1132 | +++ b/libuargp/argp-fmtstream.c | ||
534 | @@ -0,0 +1,439 @@ | 1133 | @@ -0,0 +1,439 @@ |
535 | +/* Word-wrapping and line-truncating streams | 1134 | +/* Word-wrapping and line-truncating streams |
536 | + Copyright (C) 1997-1999,2001,2002,2003,2005 Free Software Foundation, Inc. | 1135 | + Copyright (C) 1997-1999,2001,2002,2003,2005 Free Software Foundation, Inc. |
@@ -971,10 +1570,11 @@ Index: git/libuargp/argp-fmtstream.c | |||
971 | +#endif | 1570 | +#endif |
972 | + | 1571 | + |
973 | +#endif /* !ARGP_FMTSTREAM_USE_LINEWRAP */ | 1572 | +#endif /* !ARGP_FMTSTREAM_USE_LINEWRAP */ |
974 | Index: git/libuargp/argp-fmtstream.h | 1573 | diff --git a/libuargp/argp-fmtstream.h b/libuargp/argp-fmtstream.h |
975 | =================================================================== | 1574 | new file mode 100644 |
976 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 1575 | index 0000000..ca7c834 |
977 | +++ git/libuargp/argp-fmtstream.h 2012-06-18 13:10:44.056825544 -0700 | 1576 | --- /dev/null |
1577 | +++ b/libuargp/argp-fmtstream.h | ||
978 | @@ -0,0 +1,314 @@ | 1578 | @@ -0,0 +1,314 @@ |
979 | +/* Word-wrapping and line-truncating streams. | 1579 | +/* Word-wrapping and line-truncating streams. |
980 | + Copyright (C) 1997 Free Software Foundation, Inc. | 1580 | + Copyright (C) 1997 Free Software Foundation, Inc. |
@@ -1290,10 +1890,11 @@ Index: git/libuargp/argp-fmtstream.h | |||
1290 | +#endif /* ARGP_FMTSTREAM_USE_LINEWRAP */ | 1890 | +#endif /* ARGP_FMTSTREAM_USE_LINEWRAP */ |
1291 | + | 1891 | + |
1292 | +#endif /* argp-fmtstream.h */ | 1892 | +#endif /* argp-fmtstream.h */ |
1293 | Index: git/libuargp/argp-fs-xinl.c | 1893 | diff --git a/libuargp/argp-fs-xinl.c b/libuargp/argp-fs-xinl.c |
1294 | =================================================================== | 1894 | new file mode 100644 |
1295 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 1895 | index 0000000..473cbbd |
1296 | +++ git/libuargp/argp-fs-xinl.c 2012-06-18 13:10:44.056825544 -0700 | 1896 | --- /dev/null |
1897 | +++ b/libuargp/argp-fs-xinl.c | ||
1297 | @@ -0,0 +1,44 @@ | 1898 | @@ -0,0 +1,44 @@ |
1298 | +/* Real definitions for extern inline functions in argp-fmtstream.h | 1899 | +/* Real definitions for extern inline functions in argp-fmtstream.h |
1299 | + Copyright (C) 1997, 2003, 2004 Free Software Foundation, Inc. | 1900 | + Copyright (C) 1997, 2003, 2004 Free Software Foundation, Inc. |
@@ -1339,10 +1940,11 @@ Index: git/libuargp/argp-fs-xinl.c | |||
1339 | + | 1940 | + |
1340 | +#endif | 1941 | +#endif |
1341 | +#endif | 1942 | +#endif |
1342 | Index: git/libuargp/argp-help.c | 1943 | diff --git a/libuargp/argp-help.c b/libuargp/argp-help.c |
1343 | =================================================================== | 1944 | new file mode 100644 |
1344 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 1945 | index 0000000..58a5e6e |
1345 | +++ git/libuargp/argp-help.c 2012-06-18 13:10:44.060825542 -0700 | 1946 | --- /dev/null |
1947 | +++ b/libuargp/argp-help.c | ||
1346 | @@ -0,0 +1,1882 @@ | 1948 | @@ -0,0 +1,1882 @@ |
1347 | +/* Hierarchial argument parsing help output | 1949 | +/* Hierarchial argument parsing help output |
1348 | + Copyright (C) 1995-2003, 2004, 2005, 2006, 2007 | 1950 | + Copyright (C) 1995-2003, 2004, 2005, 2006, 2007 |
@@ -3226,10 +3828,11 @@ Index: git/libuargp/argp-help.c | |||
3226 | + } | 3828 | + } |
3227 | + } | 3829 | + } |
3228 | +} | 3830 | +} |
3229 | Index: git/libuargp/argp-parse.c | 3831 | diff --git a/libuargp/argp-parse.c b/libuargp/argp-parse.c |
3230 | =================================================================== | 3832 | new file mode 100644 |
3231 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 3833 | index 0000000..86b2b24 |
3232 | +++ git/libuargp/argp-parse.c 2012-06-18 13:10:44.060825542 -0700 | 3834 | --- /dev/null |
3835 | +++ b/libuargp/argp-parse.c | ||
3233 | @@ -0,0 +1,949 @@ | 3836 | @@ -0,0 +1,949 @@ |
3234 | +/* Hierarchial argument parsing, layered over getopt | 3837 | +/* Hierarchial argument parsing, layered over getopt |
3235 | + Copyright (C) 1995-2000, 2002, 2003, 2004 Free Software Foundation, Inc. | 3838 | + Copyright (C) 1995-2000, 2002, 2003, 2004 Free Software Foundation, Inc. |
@@ -4180,10 +4783,11 @@ Index: git/libuargp/argp-parse.c | |||
4180 | + | 4783 | + |
4181 | + return 0; | 4784 | + return 0; |
4182 | +} | 4785 | +} |
4183 | Index: git/libuargp/argp-pv.c | 4786 | diff --git a/libuargp/argp-pv.c b/libuargp/argp-pv.c |
4184 | =================================================================== | 4787 | new file mode 100644 |
4185 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 4788 | index 0000000..f1227b5 |
4186 | +++ git/libuargp/argp-pv.c 2012-06-18 13:10:44.060825542 -0700 | 4789 | --- /dev/null |
4790 | +++ b/libuargp/argp-pv.c | ||
4187 | @@ -0,0 +1,25 @@ | 4791 | @@ -0,0 +1,25 @@ |
4188 | +/* Default definition for ARGP_PROGRAM_VERSION. | 4792 | +/* Default definition for ARGP_PROGRAM_VERSION. |
4189 | + Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. | 4793 | + Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. |
@@ -4210,10 +4814,11 @@ Index: git/libuargp/argp-pv.c | |||
4210 | + print this this string followed by a newline and exit (unless the | 4814 | + print this this string followed by a newline and exit (unless the |
4211 | + ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ | 4815 | + ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ |
4212 | +const char *argp_program_version; | 4816 | +const char *argp_program_version; |
4213 | Index: git/libuargp/argp-pvh.c | 4817 | diff --git a/libuargp/argp-pvh.c b/libuargp/argp-pvh.c |
4214 | =================================================================== | 4818 | new file mode 100644 |
4215 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 4819 | index 0000000..1f1d962 |
4216 | +++ git/libuargp/argp-pvh.c 2012-06-18 13:10:44.060825542 -0700 | 4820 | --- /dev/null |
4821 | +++ b/libuargp/argp-pvh.c | ||
4217 | @@ -0,0 +1,32 @@ | 4822 | @@ -0,0 +1,32 @@ |
4218 | +/* Default definition for ARGP_PROGRAM_VERSION_HOOK. | 4823 | +/* Default definition for ARGP_PROGRAM_VERSION_HOOK. |
4219 | + Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. | 4824 | + Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. |
@@ -4247,10 +4852,11 @@ Index: git/libuargp/argp-pvh.c | |||
4247 | + current parsing state, and then exits (unless the ARGP_NO_EXIT flag is | 4852 | + current parsing state, and then exits (unless the ARGP_NO_EXIT flag is |
4248 | + used). This variable takes precedent over ARGP_PROGRAM_VERSION. */ | 4853 | + used). This variable takes precedent over ARGP_PROGRAM_VERSION. */ |
4249 | +void (*argp_program_version_hook) (FILE *stream, struct argp_state *state); | 4854 | +void (*argp_program_version_hook) (FILE *stream, struct argp_state *state); |
4250 | Index: git/libuargp/argp-xinl.c | 4855 | diff --git a/libuargp/argp-xinl.c b/libuargp/argp-xinl.c |
4251 | =================================================================== | 4856 | new file mode 100644 |
4252 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 4857 | index 0000000..f1d3000 |
4253 | +++ git/libuargp/argp-xinl.c 2012-06-18 13:10:44.060825542 -0700 | 4858 | --- /dev/null |
4859 | +++ b/libuargp/argp-xinl.c | ||
4254 | @@ -0,0 +1,35 @@ | 4860 | @@ -0,0 +1,35 @@ |
4255 | +/* Real definitions for extern inline functions in argp.h | 4861 | +/* Real definitions for extern inline functions in argp.h |
4256 | + Copyright (C) 1997, 1998, 2004 Free Software Foundation, Inc. | 4862 | + Copyright (C) 1997, 1998, 2004 Free Software Foundation, Inc. |
@@ -4287,10 +4893,11 @@ Index: git/libuargp/argp-xinl.c | |||
4287 | +#undef __OPTIMIZE__ | 4893 | +#undef __OPTIMIZE__ |
4288 | +#define __OPTIMIZE__ 1 | 4894 | +#define __OPTIMIZE__ 1 |
4289 | +#include <argp.h> | 4895 | +#include <argp.h> |
4290 | Index: git/test/argp/Makefile | 4896 | diff --git a/test/argp/Makefile b/test/argp/Makefile |
4291 | =================================================================== | 4897 | new file mode 100644 |
4292 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 4898 | index 0000000..616fe71 |
4293 | +++ git/test/argp/Makefile 2012-06-18 13:10:44.060825542 -0700 | 4899 | --- /dev/null |
4900 | +++ b/test/argp/Makefile | ||
4294 | @@ -0,0 +1,7 @@ | 4901 | @@ -0,0 +1,7 @@ |
4295 | +# uClibc argp tests | 4902 | +# uClibc argp tests |
4296 | +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. | 4903 | +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. |
@@ -4299,10 +4906,11 @@ Index: git/test/argp/Makefile | |||
4299 | +include ../Rules.mak | 4906 | +include ../Rules.mak |
4300 | +-include Makefile.in | 4907 | +-include Makefile.in |
4301 | +include ../Test.mak | 4908 | +include ../Test.mak |
4302 | Index: git/test/argp/Makefile.in | 4909 | diff --git a/test/argp/Makefile.in b/test/argp/Makefile.in |
4303 | =================================================================== | 4910 | new file mode 100644 |
4304 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 4911 | index 0000000..d81b359 |
4305 | +++ git/test/argp/Makefile.in 2012-06-18 13:10:44.060825542 -0700 | 4912 | --- /dev/null |
4913 | +++ b/test/argp/Makefile.in | ||
4306 | @@ -0,0 +1,12 @@ | 4914 | @@ -0,0 +1,12 @@ |
4307 | +# uClibc argp tests | 4915 | +# uClibc argp tests |
4308 | +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. | 4916 | +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. |
@@ -4316,10 +4924,11 @@ Index: git/test/argp/Makefile.in | |||
4316 | +OPTS_argp-ex4 = ARG1 string1 string2 string3 | 4924 | +OPTS_argp-ex4 = ARG1 string1 string2 string3 |
4317 | +OPTS_bug-argp1 = -- --help | 4925 | +OPTS_bug-argp1 = -- --help |
4318 | + | 4926 | + |
4319 | Index: git/test/argp/argp-ex1.c | 4927 | diff --git a/test/argp/argp-ex1.c b/test/argp/argp-ex1.c |
4320 | =================================================================== | 4928 | new file mode 100644 |
4321 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 4929 | index 0000000..7bb5f22 |
4322 | +++ git/test/argp/argp-ex1.c 2012-06-18 13:10:44.060825542 -0700 | 4930 | --- /dev/null |
4931 | +++ b/test/argp/argp-ex1.c | ||
4323 | @@ -0,0 +1,15 @@ | 4932 | @@ -0,0 +1,15 @@ |
4324 | +/* Argp example #1 -- a minimal program using argp */ | 4933 | +/* Argp example #1 -- a minimal program using argp */ |
4325 | + | 4934 | + |
@@ -4336,10 +4945,11 @@ Index: git/test/argp/argp-ex1.c | |||
4336 | + argp_parse (0, argc, argv, 0, 0, 0); | 4945 | + argp_parse (0, argc, argv, 0, 0, 0); |
4337 | + exit (0); | 4946 | + exit (0); |
4338 | +} | 4947 | +} |
4339 | Index: git/test/argp/argp-ex2.c | 4948 | diff --git a/test/argp/argp-ex2.c b/test/argp/argp-ex2.c |
4340 | =================================================================== | 4949 | new file mode 100644 |
4341 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 4950 | index 0000000..c49fbac |
4342 | +++ git/test/argp/argp-ex2.c 2012-06-18 13:10:44.060825542 -0700 | 4951 | --- /dev/null |
4952 | +++ b/test/argp/argp-ex2.c | ||
4343 | @@ -0,0 +1,45 @@ | 4953 | @@ -0,0 +1,45 @@ |
4344 | +/* Argp example #2 -- a pretty minimal program using argp */ | 4954 | +/* Argp example #2 -- a pretty minimal program using argp */ |
4345 | + | 4955 | + |
@@ -4386,10 +4996,11 @@ Index: git/test/argp/argp-ex2.c | |||
4386 | + argp_parse (&argp, argc, argv, 0, 0, 0); | 4996 | + argp_parse (&argp, argc, argv, 0, 0, 0); |
4387 | + exit (0); | 4997 | + exit (0); |
4388 | +} | 4998 | +} |
4389 | Index: git/test/argp/argp-ex3.c | 4999 | diff --git a/test/argp/argp-ex3.c b/test/argp/argp-ex3.c |
4390 | =================================================================== | 5000 | new file mode 100644 |
4391 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 5001 | index 0000000..24d5c50 |
4392 | +++ git/test/argp/argp-ex3.c 2012-06-18 13:10:44.060825542 -0700 | 5002 | --- /dev/null |
5003 | +++ b/test/argp/argp-ex3.c | ||
4393 | @@ -0,0 +1,153 @@ | 5004 | @@ -0,0 +1,153 @@ |
4394 | +/* Argp example #3 -- a program with options and arguments using argp */ | 5005 | +/* Argp example #3 -- a program with options and arguments using argp */ |
4395 | + | 5006 | + |
@@ -4544,10 +5155,11 @@ Index: git/test/argp/argp-ex3.c | |||
4544 | + | 5155 | + |
4545 | + exit (0); | 5156 | + exit (0); |
4546 | +} | 5157 | +} |
4547 | Index: git/test/argp/argp-ex4.c | 5158 | diff --git a/test/argp/argp-ex4.c b/test/argp/argp-ex4.c |
4548 | =================================================================== | 5159 | new file mode 100644 |
4549 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 5160 | index 0000000..c77c7ef |
4550 | +++ git/test/argp/argp-ex4.c 2012-06-18 13:10:44.060825542 -0700 | 5161 | --- /dev/null |
5162 | +++ b/test/argp/argp-ex4.c | ||
4551 | @@ -0,0 +1,167 @@ | 5163 | @@ -0,0 +1,167 @@ |
4552 | +/* Argp example #4 -- a program with somewhat more complicated options */ | 5164 | +/* Argp example #4 -- a program with somewhat more complicated options */ |
4553 | + | 5165 | + |
@@ -4716,10 +5328,11 @@ Index: git/test/argp/argp-ex4.c | |||
4716 | + | 5328 | + |
4717 | + exit (0); | 5329 | + exit (0); |
4718 | +} | 5330 | +} |
4719 | Index: git/test/argp/argp-test.c | 5331 | diff --git a/test/argp/argp-test.c b/test/argp/argp-test.c |
4720 | =================================================================== | 5332 | new file mode 100644 |
4721 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 5333 | index 0000000..b3d573b |
4722 | +++ git/test/argp/argp-test.c 2012-06-18 13:10:44.060825542 -0700 | 5334 | --- /dev/null |
5335 | +++ b/test/argp/argp-test.c | ||
4723 | @@ -0,0 +1,209 @@ | 5336 | @@ -0,0 +1,209 @@ |
4724 | +/* Test program for argp argument parser | 5337 | +/* Test program for argp argument parser |
4725 | + Copyright (C) 1997 Free Software Foundation, Inc. | 5338 | + Copyright (C) 1997 Free Software Foundation, Inc. |
@@ -4930,10 +5543,11 @@ Index: git/test/argp/argp-test.c | |||
4930 | + printf ("After parsing: foonly = %x\n", params.foonly); | 5543 | + printf ("After parsing: foonly = %x\n", params.foonly); |
4931 | + return 0; | 5544 | + return 0; |
4932 | +} | 5545 | +} |
4933 | Index: git/test/argp/bug-argp1.c | 5546 | diff --git a/test/argp/bug-argp1.c b/test/argp/bug-argp1.c |
4934 | =================================================================== | 5547 | new file mode 100644 |
4935 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 5548 | index 0000000..a28cf4b |
4936 | +++ git/test/argp/bug-argp1.c 2012-06-18 13:10:44.060825542 -0700 | 5549 | --- /dev/null |
5550 | +++ b/test/argp/bug-argp1.c | ||
4937 | @@ -0,0 +1,26 @@ | 5551 | @@ -0,0 +1,26 @@ |
4938 | +#include <argp.h> | 5552 | +#include <argp.h> |
4939 | + | 5553 | + |
@@ -4961,10 +5575,11 @@ Index: git/test/argp/bug-argp1.c | |||
4961 | + | 5575 | + |
4962 | +#define TEST_FUNCTION do_test (argc, argv) | 5576 | +#define TEST_FUNCTION do_test (argc, argv) |
4963 | +#include "../test-skeleton.c" | 5577 | +#include "../test-skeleton.c" |
4964 | Index: git/test/argp/tst-argp1.c | 5578 | diff --git a/test/argp/tst-argp1.c b/test/argp/tst-argp1.c |
4965 | =================================================================== | 5579 | new file mode 100644 |
4966 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 5580 | index 0000000..827daca |
4967 | +++ git/test/argp/tst-argp1.c 2012-06-18 13:10:44.060825542 -0700 | 5581 | --- /dev/null |
5582 | +++ b/test/argp/tst-argp1.c | ||
4968 | @@ -0,0 +1,118 @@ | 5583 | @@ -0,0 +1,118 @@ |
4969 | +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. | 5584 | +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. |
4970 | + This file is part of the GNU C Library. | 5585 | + This file is part of the GNU C Library. |
@@ -5084,10 +5699,11 @@ Index: git/test/argp/tst-argp1.c | |||
5084 | + | 5699 | + |
5085 | +#define TEST_FUNCTION do_test () | 5700 | +#define TEST_FUNCTION do_test () |
5086 | +#include "../test-skeleton.c" | 5701 | +#include "../test-skeleton.c" |
5087 | Index: git/test/argp/tst-argp2.c | 5702 | diff --git a/test/argp/tst-argp2.c b/test/argp/tst-argp2.c |
5088 | =================================================================== | 5703 | new file mode 100644 |
5089 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 5704 | index 0000000..705cdca |
5090 | +++ git/test/argp/tst-argp2.c 2012-06-18 13:10:44.064825538 -0700 | 5705 | --- /dev/null |
5706 | +++ b/test/argp/tst-argp2.c | ||
5091 | @@ -0,0 +1,101 @@ | 5707 | @@ -0,0 +1,101 @@ |
5092 | +/* Copyright (C) 2007 Free Software Foundation, Inc. | 5708 | +/* Copyright (C) 2007 Free Software Foundation, Inc. |
5093 | + This file is part of the GNU C Library. | 5709 | + This file is part of the GNU C Library. |
@@ -5190,3 +5806,6 @@ Index: git/test/argp/tst-argp2.c | |||
5190 | + | 5806 | + |
5191 | +#define TEST_FUNCTION do_test () | 5807 | +#define TEST_FUNCTION do_test () |
5192 | +#include "../test-skeleton.c" | 5808 | +#include "../test-skeleton.c" |
5809 | -- | ||
5810 | 2.1.4 | ||
5811 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0004-Dont-support-localised-optimizations-this-helps-to-h.patch b/meta/recipes-core/uclibc/uclibc-git/0004-Dont-support-localised-optimizations-this-helps-to-h.patch new file mode 100644 index 0000000000..629e13c762 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-git/0004-Dont-support-localised-optimizations-this-helps-to-h.patch | |||
@@ -0,0 +1,30 @@ | |||
1 | From 31785c544abe8b215dbb2264fb11ee7051515797 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sun, 16 Aug 2015 20:58:59 -0700 | ||
4 | Subject: [PATCH 4/7] Dont support localised optimizations this helps to have a | ||
5 | global -O level | ||
6 | |||
7 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
8 | --- | ||
9 | Upstream-Status: Pending | ||
10 | |||
11 | libpthread/nptl/pthread_mutex_timedlock.c | 2 ++ | ||
12 | 1 file changed, 2 insertions(+) | ||
13 | |||
14 | diff --git a/libpthread/nptl/pthread_mutex_timedlock.c b/libpthread/nptl/pthread_mutex_timedlock.c | ||
15 | index 04187f6..f56f6c5 100644 | ||
16 | --- a/libpthread/nptl/pthread_mutex_timedlock.c | ||
17 | +++ b/libpthread/nptl/pthread_mutex_timedlock.c | ||
18 | @@ -28,7 +28,9 @@ | ||
19 | * error: can't find a register in class ‘GENERAL_REGS’ while reloading ‘asm’ | ||
20 | */ | ||
21 | int | ||
22 | +#ifndef __OPTIMIZE__ | ||
23 | attribute_optimize("Os") | ||
24 | +#endif | ||
25 | pthread_mutex_timedlock ( | ||
26 | pthread_mutex_t *mutex, | ||
27 | const struct timespec *abstime) | ||
28 | -- | ||
29 | 2.1.4 | ||
30 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0005-Always-use-O2-for-compiling-fork.c.patch b/meta/recipes-core/uclibc/uclibc-git/0005-Always-use-O2-for-compiling-fork.c.patch new file mode 100644 index 0000000000..ad9b246ab5 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-git/0005-Always-use-O2-for-compiling-fork.c.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 883debc22e30a947fe5858cc07ee5aebd3d07a2e Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sun, 16 Aug 2015 20:59:56 -0700 | ||
4 | Subject: [PATCH 5/7] Always use -O2 for compiling fork.c | ||
5 | |||
6 | When compiling in thumb mode for arm with -Os gcc gives up since it can | ||
7 | not find registers to spill. So we use -O2 option for compiling fork.c | ||
8 | It may be addressable in gcc. | ||
9 | |||
10 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
11 | --- | ||
12 | Upstream-Status: Pending | ||
13 | |||
14 | libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch | 6 ++++++ | ||
15 | 1 file changed, 6 insertions(+) | ||
16 | |||
17 | diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch | ||
18 | index 0ea0b29..0767e9c 100644 | ||
19 | --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch | ||
20 | +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch | ||
21 | @@ -21,3 +21,9 @@ ASFLAGS-pt-vfork.S = -marm | ||
22 | CFLAGS-OMIT-pt-vfork.S = -mthumb | ||
23 | ASFLAGS-vfork.S = -marm | ||
24 | CFLAGS-OMIT-vfork.S = -mthumb | ||
25 | + | ||
26 | +# For arm fork.c does not compile with -Os when compiling | ||
27 | +# in thumb1 mode | ||
28 | +ifeq ($(COMPILE_IN_THUMB_MODE),y) | ||
29 | +CFLAGS-fork.c = -O2 | ||
30 | +endif | ||
31 | -- | ||
32 | 2.1.4 | ||
33 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0001-ldso-limited-support-for-ORIGIN-in-rpath.patch b/meta/recipes-core/uclibc/uclibc-git/0006-ldso-limited-support-for-ORIGIN-in-rpath.patch index 7479ec35e1..f0d87371bc 100644 --- a/meta/recipes-core/uclibc/uclibc-git/0001-ldso-limited-support-for-ORIGIN-in-rpath.patch +++ b/meta/recipes-core/uclibc/uclibc-git/0006-ldso-limited-support-for-ORIGIN-in-rpath.patch | |||
@@ -1,7 +1,7 @@ | |||
1 | From 32eaf738faafad2b16e1f3f5beb91736b3c27a3b Mon Sep 17 00:00:00 2001 | 1 | From b40c129ed2d53b69463883a5422dd4a012a398f9 Mon Sep 17 00:00:00 2001 |
2 | From: Junling Zheng <zhengjunling@huawei.com> | 2 | From: Junling Zheng <zhengjunling@huawei.com> |
3 | Date: Fri, 3 Apr 2015 05:02:27 +0000 | 3 | Date: Fri, 3 Apr 2015 05:02:27 +0000 |
4 | Subject: [PATCH] ldso: limited support for $ORIGIN in rpath | 4 | Subject: [PATCH 6/7] ldso: limited support for $ORIGIN in rpath |
5 | MIME-Version: 1.0 | 5 | MIME-Version: 1.0 |
6 | Content-Type: text/plain; charset=UTF-8 | 6 | Content-Type: text/plain; charset=UTF-8 |
7 | Content-Transfer-Encoding: 8bit | 7 | Content-Transfer-Encoding: 8bit |
@@ -26,7 +26,10 @@ Upstream-Status: Submitted | |||
26 | 26 | ||
27 | Signed-off-by: Timo Teräs <timo.teras at iki.fi> | 27 | Signed-off-by: Timo Teräs <timo.teras at iki.fi> |
28 | Signed-off-by: Junling Zheng <zhengjunling@huawei.com> | 28 | Signed-off-by: Junling Zheng <zhengjunling@huawei.com> |
29 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
29 | --- | 30 | --- |
31 | Upstream-Status: Pending | ||
32 | |||
30 | ldso/include/dl-string.h | 2 ++ | 33 | ldso/include/dl-string.h | 2 ++ |
31 | ldso/ldso/dl-elf.c | 79 +++++++++++++++++++++++++----------------------- | 34 | ldso/ldso/dl-elf.c | 79 +++++++++++++++++++++++++----------------------- |
32 | ldso/ldso/ldso.c | 18 +++++++++-- | 35 | ldso/ldso/ldso.c | 18 +++++++++-- |
@@ -47,7 +50,7 @@ index aacad10..14ae617 100644 | |||
47 | # define _dl_memcmp memcmp | 50 | # define _dl_memcmp memcmp |
48 | # define _dl_memset memset | 51 | # define _dl_memset memset |
49 | diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c | 52 | diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c |
50 | index 1b06bc1..b323c90 100644 | 53 | index 5631905..6ab7afe 100644 |
51 | --- a/ldso/ldso/dl-elf.c | 54 | --- a/ldso/ldso/dl-elf.c |
52 | +++ b/ldso/ldso/dl-elf.c | 55 | +++ b/ldso/ldso/dl-elf.c |
53 | @@ -133,56 +133,60 @@ _dl_protect_relro (struct elf_resolve *l) | 56 | @@ -133,56 +133,60 @@ _dl_protect_relro (struct elf_resolve *l) |
@@ -190,7 +193,7 @@ index 1b06bc1..b323c90 100644 | |||
190 | return tpnt1; | 193 | return tpnt1; |
191 | 194 | ||
192 | diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c | 195 | diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c |
193 | index 5619629..73bcc41 100644 | 196 | index f38f9e3..3812908 100644 |
194 | --- a/ldso/ldso/ldso.c | 197 | --- a/ldso/ldso/ldso.c |
195 | +++ b/ldso/ldso/ldso.c | 198 | +++ b/ldso/ldso/ldso.c |
196 | @@ -402,6 +402,20 @@ static ptrdiff_t _dl_build_local_scope (struct elf_resolve **list, | 199 | @@ -402,6 +402,20 @@ static ptrdiff_t _dl_build_local_scope (struct elf_resolve **list, |
@@ -226,5 +229,5 @@ index 5619629..73bcc41 100644 | |||
226 | #ifdef __DSBT__ | 229 | #ifdef __DSBT__ |
227 | _dl_ldso_dsbt = (void *)tpnt->dynamic_info[DT_DSBT_BASE_IDX]; | 230 | _dl_ldso_dsbt = (void *)tpnt->dynamic_info[DT_DSBT_BASE_IDX]; |
228 | -- | 231 | -- |
229 | 1.8.3.4 | 232 | 2.1.4 |
230 | 233 | ||
diff --git a/meta/recipes-core/uclibc/uclibc-git/0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch b/meta/recipes-core/uclibc/uclibc-git/0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch new file mode 100644 index 0000000000..ee932c3803 --- /dev/null +++ b/meta/recipes-core/uclibc/uclibc-git/0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 90516af9f776f9c2835b47fc52775dcb307a85ac Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 23 Jun 2012 15:59:01 -0700 | ||
4 | Subject: [PATCH 7/7] nptl/atfork: Hide pthread_atfork in shared versions | ||
5 | |||
6 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
7 | Upstream-Status: Pending | ||
8 | --- | ||
9 | libpthread/nptl/Makefile.in | 3 ++- | ||
10 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
11 | |||
12 | diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in | ||
13 | index 55eeba2..8cb8fa9 100644 | ||
14 | --- a/libpthread/nptl/Makefile.in | ||
15 | +++ b/libpthread/nptl/Makefile.in | ||
16 | @@ -16,6 +16,7 @@ libc-shared-routines-y = forward.c libc-cancellation.c | ||
17 | libc-static-routines-y = alloca_cutoff.c libc-cancellation.c | ||
18 | libpthread-shared-only-routines-y = version.c | ||
19 | libpthread-static-only-routines-y = pthread_atfork.c | ||
20 | + | ||
21 | libpthread-routines- += $(notdir $(wildcard $(libpthread_DIR)/gen_*.c)) # dummy generated files | ||
22 | libpthread-routines- += allocatestack.c # dummy included by pthread_create.c | ||
23 | libpthread-routines- += pthread_mutex_getprioceiling.c pthread_mutex_setprioceiling.c # XXX: delete those or use them! | ||
24 | @@ -201,7 +202,7 @@ CFLAGS-msgsnd.c = -fexceptions -fasynchronous-unwind-tables | ||
25 | CFLAGS-tcdrain.c = -fexceptions -fasynchronous-unwind-tables | ||
26 | |||
27 | CFLAGS-pt-system.c = -fexceptions -I$(top_srcdir)libc/stdlib | ||
28 | - | ||
29 | +CFLAGS-pthread_atfork.c = -DNOT_IN_libc | ||
30 | # | ||
31 | # The rest of this file is uClibc specific. | ||
32 | # | ||
33 | -- | ||
34 | 2.1.4 | ||
35 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/argp-headers.patch b/meta/recipes-core/uclibc/uclibc-git/argp-headers.patch deleted file mode 100644 index b31b991846..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/argp-headers.patch +++ /dev/null | |||
@@ -1,583 +0,0 @@ | |||
1 | Added headers file needed by argp sources. | ||
2 | |||
3 | Signed-off-by: Salvatore Cro <salvatore.cro at st.com> | ||
4 | --- | ||
5 | include/argp.h | 566 ++++++++++++++++++++++++++++++++++++++++++++ | ||
6 | libc/argp/argp-fmtstream.h | 314 ++++++++++++++++++++++++ | ||
7 | 2 files changed, 880 insertions(+), 0 deletions(-) | ||
8 | create mode 100644 include/argp.h | ||
9 | create mode 100644 libc/argp/argp-fmtstream.h | ||
10 | |||
11 | Upstream-Status: Pending | ||
12 | |||
13 | Index: git/include/argp.h | ||
14 | =================================================================== | ||
15 | --- /dev/null | ||
16 | +++ git/include/argp.h | ||
17 | @@ -0,0 +1,566 @@ | ||
18 | +/* Hierarchial argument parsing, layered over getopt. | ||
19 | + Copyright (C) 1995-1999, 2003, 2004, 2005, 2006, 2007, 2009 | ||
20 | + Free Software Foundation, Inc. | ||
21 | + This file is part of the GNU C Library. | ||
22 | + Written by Miles Bader <miles at gnu.ai.mit.edu>. | ||
23 | + | ||
24 | + The GNU C Library is free software; you can redistribute it and/or | ||
25 | + modify it under the terms of the GNU Lesser General Public | ||
26 | + License as published by the Free Software Foundation; either | ||
27 | + version 2.1 of the License, or (at your option) any later version. | ||
28 | + | ||
29 | + The GNU C Library is distributed in the hope that it will be useful, | ||
30 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
31 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
32 | + Lesser General Public License for more details. | ||
33 | + | ||
34 | + You should have received a copy of the GNU Lesser General Public | ||
35 | + License along with the GNU C Library; if not, write to the Free | ||
36 | + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||
37 | + 02111-1307 USA. | ||
38 | + | ||
39 | + Modified for uClibc by: Salvatore Cro <salvatore.cro at st.com> | ||
40 | +*/ | ||
41 | + | ||
42 | +#ifndef _ARGP_H | ||
43 | +#define _ARGP_H | ||
44 | + | ||
45 | +#include <stdio.h> | ||
46 | +#include <ctype.h> | ||
47 | +#include <limits.h> | ||
48 | + | ||
49 | +#define __need_error_t | ||
50 | +#include <errno.h> | ||
51 | + | ||
52 | +#ifndef __const | ||
53 | +# define __const const | ||
54 | +#endif | ||
55 | + | ||
56 | +#ifndef __THROW | ||
57 | +# define __THROW | ||
58 | +#endif | ||
59 | +#ifndef __NTH | ||
60 | +# define __NTH(fct) fct __THROW | ||
61 | +#endif | ||
62 | + | ||
63 | +#ifndef __attribute__ | ||
64 | +/* This feature is available in gcc versions 2.5 and later. */ | ||
65 | +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || defined(__STRICT_ANSI__) | ||
66 | +# define __attribute__(Spec) /* empty */ | ||
67 | +# endif | ||
68 | +/* The __-protected variants of `format' and `printf' attributes | ||
69 | + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ | ||
70 | +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || defined(__STRICT_ANSI__) | ||
71 | +# define __format__ format | ||
72 | +# define __printf__ printf | ||
73 | +# endif | ||
74 | +#endif | ||
75 | + | ||
76 | +/* GCC 2.95 and later have "__restrict"; C99 compilers have | ||
77 | + "restrict", and "configure" may have defined "restrict". */ | ||
78 | +#ifndef __restrict | ||
79 | +# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) | ||
80 | +# if defined restrict || 199901L <= __STDC_VERSION__ | ||
81 | +# define __restrict restrict | ||
82 | +# else | ||
83 | +# define __restrict | ||
84 | +# endif | ||
85 | +# endif | ||
86 | +#endif | ||
87 | + | ||
88 | +#ifndef __error_t_defined | ||
89 | +typedef int error_t; | ||
90 | +# define __error_t_defined | ||
91 | +#endif | ||
92 | + | ||
93 | +#ifdef __cplusplus | ||
94 | +extern "C" { | ||
95 | +#endif | ||
96 | + | ||
97 | +/* A description of a particular option. A pointer to an array of | ||
98 | + these is passed in the OPTIONS field of an argp structure. Each option | ||
99 | + entry can correspond to one long option and/or one short option; more | ||
100 | + names for the same option can be added by following an entry in an option | ||
101 | + array with options having the OPTION_ALIAS flag set. */ | ||
102 | +struct argp_option | ||
103 | +{ | ||
104 | + /* The long option name. For more than one name for the same option, you | ||
105 | + can use following options with the OPTION_ALIAS flag set. */ | ||
106 | + __const char *name; | ||
107 | + | ||
108 | + /* What key is returned for this option. If > 0 and printable, then it's | ||
109 | + also accepted as a short option. */ | ||
110 | + int key; | ||
111 | + | ||
112 | + /* If non-NULL, this is the name of the argument associated with this | ||
113 | + option, which is required unless the OPTION_ARG_OPTIONAL flag is set. */ | ||
114 | + __const char *arg; | ||
115 | + | ||
116 | + /* OPTION_ flags. */ | ||
117 | + int flags; | ||
118 | + | ||
119 | + /* The doc string for this option. If both NAME and KEY are 0, This string | ||
120 | + will be printed outdented from the normal option column, making it | ||
121 | + useful as a group header (it will be the first thing printed in its | ||
122 | + group); in this usage, it's conventional to end the string with a `:'. */ | ||
123 | + __const char *doc; | ||
124 | + | ||
125 | + /* The group this option is in. In a long help message, options are sorted | ||
126 | + alphabetically within each group, and the groups presented in the order | ||
127 | + 0, 1, 2, ..., n, -m, ..., -2, -1. Every entry in an options array with | ||
128 | + if this field 0 will inherit the group number of the previous entry, or | ||
129 | + zero if it's the first one, unless its a group header (NAME and KEY both | ||
130 | + 0), in which case, the previous entry + 1 is the default. Automagic | ||
131 | + options such as --help are put into group -1. */ | ||
132 | + int group; | ||
133 | +}; | ||
134 | + | ||
135 | +/* The argument associated with this option is optional. */ | ||
136 | +#define OPTION_ARG_OPTIONAL 0x1 | ||
137 | + | ||
138 | +/* This option isn't displayed in any help messages. */ | ||
139 | +#define OPTION_HIDDEN 0x2 | ||
140 | + | ||
141 | +/* This option is an alias for the closest previous non-alias option. This | ||
142 | + means that it will be displayed in the same help entry, and will inherit | ||
143 | + fields other than NAME and KEY from the aliased option. */ | ||
144 | +#define OPTION_ALIAS 0x4 | ||
145 | + | ||
146 | +/* This option isn't actually an option (and so should be ignored by the | ||
147 | + actual option parser), but rather an arbitrary piece of documentation that | ||
148 | + should be displayed in much the same manner as the options. If this flag | ||
149 | + is set, then the option NAME field is displayed unmodified (e.g., no `--' | ||
150 | + prefix is added) at the left-margin (where a *short* option would normally | ||
151 | + be displayed), and the documentation string in the normal place. For | ||
152 | + purposes of sorting, any leading whitespace and punctuation is ignored, | ||
153 | + except that if the first non-whitespace character is not `-', this entry | ||
154 | + is displayed after all options (and OPTION_DOC entries with a leading `-') | ||
155 | + in the same group. */ | ||
156 | +#define OPTION_DOC 0x8 | ||
157 | + | ||
158 | +/* This option shouldn't be included in `long' usage messages (but is still | ||
159 | + included in help messages). This is mainly intended for options that are | ||
160 | + completely documented in an argp's ARGS_DOC field, in which case including | ||
161 | + the option in the generic usage list would be redundant. For instance, | ||
162 | + if ARGS_DOC is "FOO BAR\n-x BLAH", and the `-x' option's purpose is to | ||
163 | + distinguish these two cases, -x should probably be marked | ||
164 | + OPTION_NO_USAGE. */ | ||
165 | +#define OPTION_NO_USAGE 0x10 | ||
166 | + | ||
167 | +struct argp; /* fwd declare this type */ | ||
168 | +struct argp_state; /* " */ | ||
169 | +struct argp_child; /* " */ | ||
170 | + | ||
171 | +/* The type of a pointer to an argp parsing function. */ | ||
172 | +typedef error_t (*argp_parser_t) (int __key, char *__arg, | ||
173 | + struct argp_state *__state); | ||
174 | + | ||
175 | +/* What to return for unrecognized keys. For special ARGP_KEY_ keys, such | ||
176 | + returns will simply be ignored. For user keys, this error will be turned | ||
177 | + into EINVAL (if the call to argp_parse is such that errors are propagated | ||
178 | + back to the user instead of exiting); returning EINVAL itself would result | ||
179 | + in an immediate stop to parsing in *all* cases. */ | ||
180 | +#define ARGP_ERR_UNKNOWN E2BIG /* Hurd should never need E2BIG. XXX */ | ||
181 | + | ||
182 | +/* Special values for the KEY argument to an argument parsing function. | ||
183 | + ARGP_ERR_UNKNOWN should be returned if they aren't understood. | ||
184 | + | ||
185 | + The sequence of keys to a parsing function is either (where each | ||
186 | + uppercased word should be prefixed by `ARGP_KEY_' and opt is a user key): | ||
187 | + | ||
188 | + INIT opt... NO_ARGS END SUCCESS -- No non-option arguments at all | ||
189 | + or INIT (opt | ARG)... END SUCCESS -- All non-option args parsed | ||
190 | + or INIT (opt | ARG)... SUCCESS -- Some non-option arg unrecognized | ||
191 | + | ||
192 | + The third case is where every parser returned ARGP_KEY_UNKNOWN for an | ||
193 | + argument, in which case parsing stops at that argument (returning the | ||
194 | + unparsed arguments to the caller of argp_parse if requested, or stopping | ||
195 | + with an error message if not). | ||
196 | + | ||
197 | + If an error occurs (either detected by argp, or because the parsing | ||
198 | + function returned an error value), then the parser is called with | ||
199 | + ARGP_KEY_ERROR, and no further calls are made. */ | ||
200 | + | ||
201 | +/* This is not an option at all, but rather a command line argument. If a | ||
202 | + parser receiving this key returns success, the fact is recorded, and the | ||
203 | + ARGP_KEY_NO_ARGS case won't be used. HOWEVER, if while processing the | ||
204 | + argument, a parser function decrements the NEXT field of the state it's | ||
205 | + passed, the option won't be considered processed; this is to allow you to | ||
206 | + actually modify the argument (perhaps into an option), and have it | ||
207 | + processed again. */ | ||
208 | +#define ARGP_KEY_ARG 0 | ||
209 | +/* There are remaining arguments not parsed by any parser, which may be found | ||
210 | + starting at (STATE->argv + STATE->next). If success is returned, but | ||
211 | + STATE->next left untouched, it's assumed that all arguments were consume, | ||
212 | + otherwise, the parser should adjust STATE->next to reflect any arguments | ||
213 | + consumed. */ | ||
214 | +#define ARGP_KEY_ARGS 0x1000006 | ||
215 | +/* There are no more command line arguments at all. */ | ||
216 | +#define ARGP_KEY_END 0x1000001 | ||
217 | +/* Because it's common to want to do some special processing if there aren't | ||
218 | + any non-option args, user parsers are called with this key if they didn't | ||
219 | + successfully process any non-option arguments. Called just before | ||
220 | + ARGP_KEY_END (where more general validity checks on previously parsed | ||
221 | + arguments can take place). */ | ||
222 | +#define ARGP_KEY_NO_ARGS 0x1000002 | ||
223 | +/* Passed in before any parsing is done. Afterwards, the values of each | ||
224 | + element of the CHILD_INPUT field, if any, in the state structure is | ||
225 | + copied to each child's state to be the initial value of the INPUT field. */ | ||
226 | +#define ARGP_KEY_INIT 0x1000003 | ||
227 | +/* Use after all other keys, including SUCCESS & END. */ | ||
228 | +#define ARGP_KEY_FINI 0x1000007 | ||
229 | +/* Passed in when parsing has successfully been completed (even if there are | ||
230 | + still arguments remaining). */ | ||
231 | +#define ARGP_KEY_SUCCESS 0x1000004 | ||
232 | +/* Passed in if an error occurs. */ | ||
233 | +#define ARGP_KEY_ERROR 0x1000005 | ||
234 | + | ||
235 | +/* An argp structure contains a set of options declarations, a function to | ||
236 | + deal with parsing one, documentation string, a possible vector of child | ||
237 | + argp's, and perhaps a function to filter help output. When actually | ||
238 | + parsing options, getopt is called with the union of all the argp | ||
239 | + structures chained together through their CHILD pointers, with conflicts | ||
240 | + being resolved in favor of the first occurrence in the chain. */ | ||
241 | +struct argp | ||
242 | +{ | ||
243 | + /* An array of argp_option structures, terminated by an entry with both | ||
244 | + NAME and KEY having a value of 0. */ | ||
245 | + __const struct argp_option *options; | ||
246 | + | ||
247 | + /* What to do with an option from this structure. KEY is the key | ||
248 | + associated with the option, and ARG is any associated argument (NULL if | ||
249 | + none was supplied). If KEY isn't understood, ARGP_ERR_UNKNOWN should be | ||
250 | + returned. If a non-zero, non-ARGP_ERR_UNKNOWN value is returned, then | ||
251 | + parsing is stopped immediately, and that value is returned from | ||
252 | + argp_parse(). For special (non-user-supplied) values of KEY, see the | ||
253 | + ARGP_KEY_ definitions below. */ | ||
254 | + argp_parser_t parser; | ||
255 | + | ||
256 | + /* A string describing what other arguments are wanted by this program. It | ||
257 | + is only used by argp_usage to print the `Usage:' message. If it | ||
258 | + contains newlines, the strings separated by them are considered | ||
259 | + alternative usage patterns, and printed on separate lines (lines after | ||
260 | + the first are prefix by ` or: ' instead of `Usage:'). */ | ||
261 | + __const char *args_doc; | ||
262 | + | ||
263 | + /* If non-NULL, a string containing extra text to be printed before and | ||
264 | + after the options in a long help message (separated by a vertical tab | ||
265 | + `\v' character). */ | ||
266 | + __const char *doc; | ||
267 | + | ||
268 | + /* A vector of argp_children structures, terminated by a member with a 0 | ||
269 | + argp field, pointing to child argps should be parsed with this one. Any | ||
270 | + conflicts are resolved in favor of this argp, or early argps in the | ||
271 | + CHILDREN list. This field is useful if you use libraries that supply | ||
272 | + their own argp structure, which you want to use in conjunction with your | ||
273 | + own. */ | ||
274 | + __const struct argp_child *children; | ||
275 | + | ||
276 | + /* If non-zero, this should be a function to filter the output of help | ||
277 | + messages. KEY is either a key from an option, in which case TEXT is | ||
278 | + that option's help text, or a special key from the ARGP_KEY_HELP_ | ||
279 | + defines, below, describing which other help text TEXT is. The function | ||
280 | + should return either TEXT, if it should be used as-is, a replacement | ||
281 | + string, which should be malloced, and will be freed by argp, or NULL, | ||
282 | + meaning `print nothing'. The value for TEXT is *after* any translation | ||
283 | + has been done, so if any of the replacement text also needs translation, | ||
284 | + that should be done by the filter function. INPUT is either the input | ||
285 | + supplied to argp_parse, or NULL, if argp_help was called directly. */ | ||
286 | + char *(*help_filter) (int __key, __const char *__text, void *__input); | ||
287 | + | ||
288 | + /* If non-zero the strings used in the argp library are translated using | ||
289 | + the domain described by this string. Otherwise the currently installed | ||
290 | + default domain is used. */ | ||
291 | + const char *argp_domain; | ||
292 | +}; | ||
293 | + | ||
294 | +/* Possible KEY arguments to a help filter function. */ | ||
295 | +#define ARGP_KEY_HELP_PRE_DOC 0x2000001 /* Help text preceeding options. */ | ||
296 | +#define ARGP_KEY_HELP_POST_DOC 0x2000002 /* Help text following options. */ | ||
297 | +#define ARGP_KEY_HELP_HEADER 0x2000003 /* Option header string. */ | ||
298 | +#define ARGP_KEY_HELP_EXTRA 0x2000004 /* After all other documentation; | ||
299 | + TEXT is NULL for this key. */ | ||
300 | +/* Explanatory note emitted when duplicate option arguments have been | ||
301 | + suppressed. */ | ||
302 | +#define ARGP_KEY_HELP_DUP_ARGS_NOTE 0x2000005 | ||
303 | +#define ARGP_KEY_HELP_ARGS_DOC 0x2000006 /* Argument doc string. */ | ||
304 | + | ||
305 | +/* When an argp has a non-zero CHILDREN field, it should point to a vector of | ||
306 | + argp_child structures, each of which describes a subsidiary argp. */ | ||
307 | +struct argp_child | ||
308 | +{ | ||
309 | + /* The child parser. */ | ||
310 | + __const struct argp *argp; | ||
311 | + | ||
312 | + /* Flags for this child. */ | ||
313 | + int flags; | ||
314 | + | ||
315 | + /* If non-zero, an optional header to be printed in help output before the | ||
316 | + child options. As a side-effect, a non-zero value forces the child | ||
317 | + options to be grouped together; to achieve this effect without actually | ||
318 | + printing a header string, use a value of "". */ | ||
319 | + __const char *header; | ||
320 | + | ||
321 | + /* Where to group the child options relative to the other (`consolidated') | ||
322 | + options in the parent argp; the values are the same as the GROUP field | ||
323 | + in argp_option structs, but all child-groupings follow parent options at | ||
324 | + a particular group level. If both this field and HEADER are zero, then | ||
325 | + they aren't grouped at all, but rather merged with the parent options | ||
326 | + (merging the child's grouping levels with the parents). */ | ||
327 | + int group; | ||
328 | +}; | ||
329 | + | ||
330 | +/* Parsing state. This is provided to parsing functions called by argp, | ||
331 | + which may examine and, as noted, modify fields. */ | ||
332 | +struct argp_state | ||
333 | +{ | ||
334 | + /* The top level ARGP being parsed. */ | ||
335 | + __const struct argp *root_argp; | ||
336 | + | ||
337 | + /* The argument vector being parsed. May be modified. */ | ||
338 | + int argc; | ||
339 | + char **argv; | ||
340 | + | ||
341 | + /* The index in ARGV of the next arg that to be parsed. May be modified. */ | ||
342 | + int next; | ||
343 | + | ||
344 | + /* The flags supplied to argp_parse. May be modified. */ | ||
345 | + unsigned flags; | ||
346 | + | ||
347 | + /* While calling a parsing function with a key of ARGP_KEY_ARG, this is the | ||
348 | + number of the current arg, starting at zero, and incremented after each | ||
349 | + such call returns. At all other times, this is the number of such | ||
350 | + arguments that have been processed. */ | ||
351 | + unsigned arg_num; | ||
352 | + | ||
353 | + /* If non-zero, the index in ARGV of the first argument following a special | ||
354 | + `--' argument (which prevents anything following being interpreted as an | ||
355 | + option). Only set once argument parsing has proceeded past this point. */ | ||
356 | + int quoted; | ||
357 | + | ||
358 | + /* An arbitrary pointer passed in from the user. */ | ||
359 | + void *input; | ||
360 | + /* Values to pass to child parsers. This vector will be the same length as | ||
361 | + the number of children for the current parser. */ | ||
362 | + void **child_inputs; | ||
363 | + | ||
364 | + /* For the parser's use. Initialized to 0. */ | ||
365 | + void *hook; | ||
366 | + | ||
367 | + /* The name used when printing messages. This is initialized to ARGV[0], | ||
368 | + or PROGRAM_INVOCATION_NAME if that is unavailable. */ | ||
369 | + char *name; | ||
370 | + | ||
371 | + /* Streams used when argp prints something. */ | ||
372 | + FILE *err_stream; /* For errors; initialized to stderr. */ | ||
373 | + FILE *out_stream; /* For information; initialized to stdout. */ | ||
374 | + | ||
375 | + void *pstate; /* Private, for use by argp. */ | ||
376 | +}; | ||
377 | + | ||
378 | +/* Flags for argp_parse (note that the defaults are those that are | ||
379 | + convenient for program command line parsing): */ | ||
380 | + | ||
381 | +/* Don't ignore the first element of ARGV. Normally (and always unless | ||
382 | + ARGP_NO_ERRS is set) the first element of the argument vector is | ||
383 | + skipped for option parsing purposes, as it corresponds to the program name | ||
384 | + in a command line. */ | ||
385 | +#define ARGP_PARSE_ARGV0 0x01 | ||
386 | + | ||
387 | +/* Don't print error messages for unknown options to stderr; unless this flag | ||
388 | + is set, ARGP_PARSE_ARGV0 is ignored, as ARGV[0] is used as the program | ||
389 | + name in the error messages. This flag implies ARGP_NO_EXIT (on the | ||
390 | + assumption that silent exiting upon errors is bad behaviour). */ | ||
391 | +#define ARGP_NO_ERRS 0x02 | ||
392 | + | ||
393 | +/* Don't parse any non-option args. Normally non-option args are parsed by | ||
394 | + calling the parse functions with a key of ARGP_KEY_ARG, and the actual arg | ||
395 | + as the value. Since it's impossible to know which parse function wants to | ||
396 | + handle it, each one is called in turn, until one returns 0 or an error | ||
397 | + other than ARGP_ERR_UNKNOWN; if an argument is handled by no one, the | ||
398 | + argp_parse returns prematurely (but with a return value of 0). If all | ||
399 | + args have been parsed without error, all parsing functions are called one | ||
400 | + last time with a key of ARGP_KEY_END. This flag needn't normally be set, | ||
401 | + as the normal behavior is to stop parsing as soon as some argument can't | ||
402 | + be handled. */ | ||
403 | +#define ARGP_NO_ARGS 0x04 | ||
404 | + | ||
405 | +/* Parse options and arguments in the same order they occur on the command | ||
406 | + line -- normally they're rearranged so that all options come first. */ | ||
407 | +#define ARGP_IN_ORDER 0x08 | ||
408 | + | ||
409 | +/* Don't provide the standard long option --help, which causes usage and | ||
410 | + option help information to be output to stdout, and exit (0) called. */ | ||
411 | +#define ARGP_NO_HELP 0x10 | ||
412 | + | ||
413 | +/* Don't exit on errors (they may still result in error messages). */ | ||
414 | +#define ARGP_NO_EXIT 0x20 | ||
415 | + | ||
416 | +/* Use the gnu getopt `long-only' rules for parsing arguments. */ | ||
417 | +#define ARGP_LONG_ONLY 0x40 | ||
418 | + | ||
419 | +/* Turns off any message-printing/exiting options. */ | ||
420 | +#define ARGP_SILENT (ARGP_NO_EXIT | ARGP_NO_ERRS | ARGP_NO_HELP) | ||
421 | + | ||
422 | +/* Parse the options strings in ARGC & ARGV according to the options in ARGP. | ||
423 | + FLAGS is one of the ARGP_ flags above. If ARG_INDEX is non-NULL, the | ||
424 | + index in ARGV of the first unparsed option is returned in it. If an | ||
425 | + unknown option is present, ARGP_ERR_UNKNOWN is returned; if some parser | ||
426 | + routine returned a non-zero value, it is returned; otherwise 0 is | ||
427 | + returned. This function may also call exit unless the ARGP_NO_HELP flag | ||
428 | + is set. INPUT is a pointer to a value to be passed in to the parser. */ | ||
429 | +extern error_t argp_parse (__const struct argp *__restrict __argp, | ||
430 | + int __argc, char **__restrict __argv, | ||
431 | + unsigned __flags, int *__restrict __arg_index, | ||
432 | + void *__restrict __input); | ||
433 | + | ||
434 | +/* Global variables. */ | ||
435 | + | ||
436 | +/* If defined or set by the user program to a non-zero value, then a default | ||
437 | + option --version is added (unless the ARGP_NO_HELP flag is used), which | ||
438 | + will print this string followed by a newline and exit (unless the | ||
439 | + ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ | ||
440 | +extern __const char *argp_program_version; | ||
441 | + | ||
442 | +/* If defined or set by the user program to a non-zero value, then a default | ||
443 | + option --version is added (unless the ARGP_NO_HELP flag is used), which | ||
444 | + calls this function with a stream to print the version to and a pointer to | ||
445 | + the current parsing state, and then exits (unless the ARGP_NO_EXIT flag is | ||
446 | + used). This variable takes precedent over ARGP_PROGRAM_VERSION. */ | ||
447 | +extern void (*argp_program_version_hook) (FILE *__restrict __stream, | ||
448 | + struct argp_state *__restrict | ||
449 | + __state); | ||
450 | + | ||
451 | +/* If defined or set by the user program, it should point to string that is | ||
452 | + the bug-reporting address for the program. It will be printed by | ||
453 | + argp_help if the ARGP_HELP_BUG_ADDR flag is set (as it is by various | ||
454 | + standard help messages), embedded in a sentence that says something like | ||
455 | + `Report bugs to ADDR.'. */ | ||
456 | +extern __const char *argp_program_bug_address; | ||
457 | + | ||
458 | +/* The exit status that argp will use when exiting due to a parsing error. | ||
459 | + If not defined or set by the user program, this defaults to EX_USAGE from | ||
460 | + <sysexits.h>. */ | ||
461 | +extern error_t argp_err_exit_status; | ||
462 | + | ||
463 | +/* Flags for argp_help. */ | ||
464 | +#define ARGP_HELP_USAGE 0x01 /* a Usage: message. */ | ||
465 | +#define ARGP_HELP_SHORT_USAGE 0x02 /* " but don't actually print options. */ | ||
466 | +#define ARGP_HELP_SEE 0x04 /* a `Try ... for more help' message. */ | ||
467 | +#define ARGP_HELP_LONG 0x08 /* a long help message. */ | ||
468 | +#define ARGP_HELP_PRE_DOC 0x10 /* doc string preceding long help. */ | ||
469 | +#define ARGP_HELP_POST_DOC 0x20 /* doc string following long help. */ | ||
470 | +#define ARGP_HELP_DOC (ARGP_HELP_PRE_DOC | ARGP_HELP_POST_DOC) | ||
471 | +#define ARGP_HELP_BUG_ADDR 0x40 /* bug report address */ | ||
472 | +#define ARGP_HELP_LONG_ONLY 0x80 /* modify output appropriately to | ||
473 | + reflect ARGP_LONG_ONLY mode. */ | ||
474 | + | ||
475 | +/* These ARGP_HELP flags are only understood by argp_state_help. */ | ||
476 | +#define ARGP_HELP_EXIT_ERR 0x100 /* Call exit(1) instead of returning. */ | ||
477 | +#define ARGP_HELP_EXIT_OK 0x200 /* Call exit(0) instead of returning. */ | ||
478 | + | ||
479 | +/* The standard thing to do after a program command line parsing error, if an | ||
480 | + error message has already been printed. */ | ||
481 | +#define ARGP_HELP_STD_ERR \ | ||
482 | + (ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR) | ||
483 | +/* The standard thing to do after a program command line parsing error, if no | ||
484 | + more specific error message has been printed. */ | ||
485 | +#define ARGP_HELP_STD_USAGE \ | ||
486 | + (ARGP_HELP_SHORT_USAGE | ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR) | ||
487 | +/* The standard thing to do in response to a --help option. */ | ||
488 | +#define ARGP_HELP_STD_HELP \ | ||
489 | + (ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG | ARGP_HELP_EXIT_OK \ | ||
490 | + | ARGP_HELP_DOC | ARGP_HELP_BUG_ADDR) | ||
491 | + | ||
492 | +/* Output a usage message for ARGP to STREAM. FLAGS are from the set | ||
493 | + ARGP_HELP_*. */ | ||
494 | +extern void argp_help (__const struct argp *__restrict __argp, | ||
495 | + FILE *__restrict __stream, | ||
496 | + unsigned __flags, char *__restrict __name); | ||
497 | + | ||
498 | +/* The following routines are intended to be called from within an argp | ||
499 | + parsing routine (thus taking an argp_state structure as the first | ||
500 | + argument). They may or may not print an error message and exit, depending | ||
501 | + on the flags in STATE -- in any case, the caller should be prepared for | ||
502 | + them *not* to exit, and should return an appropiate error after calling | ||
503 | + them. [argp_usage & argp_error should probably be called argp_state_..., | ||
504 | + but they're used often enough that they should be short] */ | ||
505 | + | ||
506 | +/* Output, if appropriate, a usage message for STATE to STREAM. FLAGS are | ||
507 | + from the set ARGP_HELP_*. */ | ||
508 | +extern void argp_state_help (__const struct argp_state *__restrict __state, | ||
509 | + FILE *__restrict __stream, | ||
510 | + unsigned int __flags); | ||
511 | +/* Possibly output the standard usage message for ARGP to stderr and exit. */ | ||
512 | +extern void argp_usage (__const struct argp_state *__state); | ||
513 | + | ||
514 | +/* If appropriate, print the printf string FMT and following args, preceded | ||
515 | + by the program name and `:', to stderr, and followed by a `Try ... --help' | ||
516 | + message, then exit (1). */ | ||
517 | +extern void argp_error (__const struct argp_state *__restrict __state, | ||
518 | + __const char *__restrict __fmt, ...) | ||
519 | + __attribute__ ((__format__ (__printf__, 2, 3))); | ||
520 | +/* Similar to the standard gnu error-reporting function error(), but will | ||
521 | + respect the ARGP_NO_EXIT and ARGP_NO_ERRS flags in STATE, and will print | ||
522 | + to STATE->err_stream. This is useful for argument parsing code that is | ||
523 | + shared between program startup (when exiting is desired) and runtime | ||
524 | + option parsing (when typically an error code is returned instead). The | ||
525 | + difference between this function and argp_error is that the latter is for | ||
526 | + *parsing errors*, and the former is for other problems that occur during | ||
527 | + parsing but don't reflect a (syntactic) problem with the input. */ | ||
528 | +extern void argp_failure (__const struct argp_state *__restrict __state, | ||
529 | + int __status, int __errnum, | ||
530 | + __const char *__restrict __fmt, ...) | ||
531 | + __attribute__ ((__format__ (__printf__, 4, 5))); | ||
532 | +/* Returns true if the option OPT is a valid short option. */ | ||
533 | +extern int _option_is_short (__const struct argp_option *__opt) __THROW; | ||
534 | +extern int __option_is_short (__const struct argp_option *__opt) __THROW; | ||
535 | + | ||
536 | +/* Returns true if the option OPT is in fact the last (unused) entry in an | ||
537 | + options array. */ | ||
538 | +extern int _option_is_end (__const struct argp_option *__opt) __THROW; | ||
539 | +extern int __option_is_end (__const struct argp_option *__opt) __THROW; | ||
540 | + | ||
541 | +/* Return the input field for ARGP in the parser corresponding to STATE; used | ||
542 | + by the help routines. */ | ||
543 | +/* We think this should not be exported */ | ||
544 | +extern void *__argp_input (__const struct argp *__restrict __argp, | ||
545 | + __const struct argp_state *__restrict __state) | ||
546 | + __THROW; | ||
547 | + | ||
548 | +#ifdef __USE_EXTERN_INLINES | ||
549 | + | ||
550 | +# ifndef ARGP_EI | ||
551 | +# define ARGP_EI __extern_inline | ||
552 | +# endif | ||
553 | + | ||
554 | +ARGP_EI void | ||
555 | +argp_usage (__const struct argp_state *__state) | ||
556 | +{ | ||
557 | + argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); | ||
558 | +} | ||
559 | + | ||
560 | +ARGP_EI int | ||
561 | +__NTH (__option_is_short (__const struct argp_option *__opt)) | ||
562 | +{ | ||
563 | + if (__opt->flags & OPTION_DOC) | ||
564 | + return 0; | ||
565 | + else | ||
566 | + { | ||
567 | + int __key = __opt->key; | ||
568 | + return __key > 0 && __key <= UCHAR_MAX && isprint (__key); | ||
569 | + } | ||
570 | +} | ||
571 | + | ||
572 | +ARGP_EI int | ||
573 | +__NTH (__option_is_end (__const struct argp_option *__opt)) | ||
574 | +{ | ||
575 | + return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; | ||
576 | +} | ||
577 | +#endif /* Use extern inlines. */ | ||
578 | + | ||
579 | +#ifdef __cplusplus | ||
580 | +} | ||
581 | +#endif | ||
582 | + | ||
583 | +#endif /* argp.h */ | ||
diff --git a/meta/recipes-core/uclibc/uclibc-git/compile-arm-fork-with-O2.patch b/meta/recipes-core/uclibc/uclibc-git/compile-arm-fork-with-O2.patch deleted file mode 100644 index 15ee0ca156..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/compile-arm-fork-with-O2.patch +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | When compiling in thumb mode for arm with -Os gcc gives up since it can not find registers | ||
2 | to spill. So we use -O2 option for compiling fork.c It may be addressable in gcc. | ||
3 | |||
4 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
5 | |||
6 | Upstream-Status: Pending | ||
7 | |||
8 | diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch | ||
9 | index 329d8a9..41e3646 100644 | ||
10 | --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch | ||
11 | +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch | ||
12 | @@ -30,3 +30,9 @@ CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread | ||
13 | # This macro should be alternatively implemented in THUMB | ||
14 | # assembly. | ||
15 | ASFLAGS-vfork.S = -marm | ||
16 | + | ||
17 | +# For arm fork.c does not compile with -Os when in compiling | ||
18 | +# in thumb1 mode | ||
19 | +ifeq ($(COMPILE_IN_THUMB_MODE),y) | ||
20 | +CFLAGS-fork.c = -O2 | ||
21 | +endif | ||
diff --git a/meta/recipes-core/uclibc/uclibc-git/ldso-mark-_dl_exit-as-noreturn.patch b/meta/recipes-core/uclibc/uclibc-git/ldso-mark-_dl_exit-as-noreturn.patch deleted file mode 100644 index 5279f8a759..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/ldso-mark-_dl_exit-as-noreturn.patch +++ /dev/null | |||
@@ -1,48 +0,0 @@ | |||
1 | From 2c8a7766681b704e710f51c0817534e3f9a952d1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | ||
3 | Date: Thu, 26 Mar 2015 00:02:58 +0100 | ||
4 | Subject: [PATCH] ldso: mark _dl_exit as noreturn | ||
5 | |||
6 | Otherwise gcc might not understand that oom() ended control-flow and | ||
7 | might emit an (untaken) reference to abort() in _dl_update_slotinfo() | ||
8 | on e.g. SH4 which breaks linking ld-uClibc.so. | ||
9 | Arguably -ffreestanding should prevent GCC from emitting this | ||
10 | '.global abort' but alas, it does not, which is another bug.. | ||
11 | |||
12 | Also mark the function cold to further lower the incoming frequency and | ||
13 | branch probability. | ||
14 | |||
15 | Upstream-Status: Backport | ||
16 | |||
17 | http://git.uclibc.org/uClibc/commit/?id=2c8a7766681b704e710f51c0817534e3f9a952d1 | ||
18 | |||
19 | Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | ||
20 | Signed-off-by: Andre McCurdy <armccurdy@gmail.com> | ||
21 | --- | ||
22 | ldso/include/dl-syscall.h | 10 +++++++++- | ||
23 | 1 file changed, 9 insertions(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/ldso/include/dl-syscall.h b/ldso/include/dl-syscall.h | ||
26 | index 675b93a..e556f7b 100644 | ||
27 | --- a/ldso/include/dl-syscall.h | ||
28 | +++ b/ldso/include/dl-syscall.h | ||
29 | @@ -52,7 +52,15 @@ extern int _dl_errno; | ||
30 | dynamic linking at all, so we cannot return any error codes. | ||
31 | We just punt if there is an error. */ | ||
32 | #define __NR__dl_exit __NR_exit | ||
33 | -static __always_inline _syscall1(void, _dl_exit, int, status) | ||
34 | +static __always_inline attribute_noreturn __cold void _dl_exit(int status) | ||
35 | +{ | ||
36 | + INLINE_SYSCALL(_dl_exit, 1, status); | ||
37 | +#if defined __GNUC__ | ||
38 | + __builtin_unreachable(); /* shut up warning: 'noreturn' function does return*/ | ||
39 | +#else | ||
40 | + while (1); | ||
41 | +#endif | ||
42 | +} | ||
43 | |||
44 | #define __NR__dl_close __NR_close | ||
45 | static __always_inline _syscall1(int, _dl_close, int, fd) | ||
46 | -- | ||
47 | 1.9.1 | ||
48 | |||
diff --git a/meta/recipes-core/uclibc/uclibc-git/remove_attribute_optimize_Os.patch b/meta/recipes-core/uclibc/uclibc-git/remove_attribute_optimize_Os.patch deleted file mode 100644 index fb52faa7a0..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/remove_attribute_optimize_Os.patch +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | Dont support localised optimizations this helps to have a global -O level | ||
2 | |||
3 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
4 | Upstream-Status: Pending | ||
5 | |||
6 | Index: git/libpthread/nptl/pthread_mutex_timedlock.c | ||
7 | =================================================================== | ||
8 | --- git.orig/libpthread/nptl/pthread_mutex_timedlock.c 2014-08-25 10:58:06.000000000 -0700 | ||
9 | +++ git/libpthread/nptl/pthread_mutex_timedlock.c 2014-08-25 11:00:42.078242266 -0700 | ||
10 | @@ -28,7 +28,9 @@ | ||
11 | * error: can't find a register in class ‘GENERAL_REGS’ while reloading ‘asm’ | ||
12 | */ | ||
13 | int | ||
14 | +#ifndef __OPTIMIZE__ | ||
15 | attribute_optimize("Os") | ||
16 | +#endif | ||
17 | pthread_mutex_timedlock ( | ||
18 | pthread_mutex_t *mutex, | ||
19 | const struct timespec *abstime) | ||
diff --git a/meta/recipes-core/uclibc/uclibc-git/uclibc_enable_log2_test.patch b/meta/recipes-core/uclibc/uclibc-git/uclibc_enable_log2_test.patch deleted file mode 100644 index 37a59884b8..0000000000 --- a/meta/recipes-core/uclibc/uclibc-git/uclibc_enable_log2_test.patch +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | uclibc now has log2 so enable the tests | ||
2 | |||
3 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
4 | Upstream-Status: Pending | ||
5 | |||
6 | Index: uClibc/test/math/libm-test.inc | ||
7 | =================================================================== | ||
8 | --- uClibc/test/math/libm-test.inc (revision 23784) | ||
9 | +++ uClibc/test/math/libm-test.inc (working copy) | ||
10 | @@ -3414,7 +3414,6 @@ | ||
11 | } | ||
12 | |||
13 | |||
14 | -#if 0 | ||
15 | static void | ||
16 | log2_test (void) | ||
17 | { | ||
18 | @@ -3444,7 +3443,6 @@ | ||
19 | |||
20 | END (log2); | ||
21 | } | ||
22 | -#endif | ||
23 | |||
24 | |||
25 | static void | ||
26 | @@ -4967,9 +4965,7 @@ | ||
27 | log_test (); | ||
28 | log10_test (); | ||
29 | log1p_test (); | ||
30 | -#if 0 | ||
31 | log2_test (); | ||
32 | -#endif | ||
33 | logb_test (); | ||
34 | modf_test (); | ||
35 | ilogb_test (); | ||
diff --git a/meta/recipes-core/uclibc/uclibc.inc b/meta/recipes-core/uclibc/uclibc.inc index c4832289bf..533aa3d95e 100644 --- a/meta/recipes-core/uclibc/uclibc.inc +++ b/meta/recipes-core/uclibc/uclibc.inc | |||
@@ -21,7 +21,7 @@ PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:" | |||
21 | TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}" | 21 | TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}" |
22 | 22 | ||
23 | # siteconfig.bbclass runs configure which needs a working compiler | 23 | # siteconfig.bbclass runs configure which needs a working compiler |
24 | # For the compiler to work we need a working libc yet libc isn't | 24 | # For the compiler to work we need a working libc yet libc isn't |
25 | # in the sysroots directory at this point. This means the libc.so | 25 | # in the sysroots directory at this point. This means the libc.so |
26 | # linker script won't work as the --sysroot setting isn't correct. | 26 | # linker script won't work as the --sysroot setting isn't correct. |
27 | # Here we create a hacked up libc linker script and pass in the right | 27 | # Here we create a hacked up libc linker script and pass in the right |