This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "uClibc-ng - small C library for embedded systems".
The branch, upstream has been updated
via 39206e01eb5d27b61410a05f2ccf6051a305db02 (commit)
via be61486447ab447ac24892845af92489fe0b7148 (commit)
via 85cfbc035370d2a3715ea9de3e590ba83fae52d1 (commit)
via 6c4538905e65ceb203f59aaa9a61728e81c6bc0a (commit)
via 78e6494c2cf677d170a5c4ce0f46d152d478abc0 (commit)
via 5d3c0cc2aa60da804c9c981ffd5edcd2f02f1977 (commit)
via 6f4d5a7f53ee7f277b31bbff638bbccecf22f66f (commit)
via 8d15cd677df7e5bc6a1a01e482a33ecc2d271337 (commit)
via 75d9bf2dc57f89532a25ab9942b8bea468585199 (commit)
via f334556476cd9c33d3a9d8df9af0dfae798dc9ae (commit)
via 8ee422cffbfd3e2a16265fe6680a8dde2f5e58fe (commit)
via 21cbb6fe887a30f0777521ec10f0d0d9c2a7da7e (commit)
via 8c66e0a6c7987cda9df8c88e84b3d50d573c1dbb (commit)
via c3ddc18409b71db9e2fc863a7ff94a89b3c316ce (commit)
from 8e5113112ae7d3402e2afb01c8cee18d3beb0f2e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 39206e01eb5d27b61410a05f2ccf6051a305db02
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Wed Mar 18 23:12:58 2015 +0100
malloc.h: Add missing feature guard
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit be61486447ab447ac24892845af92489fe0b7148
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Wed Mar 18 23:11:39 2015 +0100
malloc-standard: Add locking to malloc_trim
Closes bugzilla #4586
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 85cfbc035370d2a3715ea9de3e590ba83fae52d1
Author: Zhiqiang Zhang <zhangzhiqiang.zhang(a)huawei.com>
Date: Wed Mar 18 18:44:50 2015 +0800
malloc: checked_request2size failure deadlocks
For some rarely cases(almost App bugs), calling malloc with
a very largre size, checked_request2size check will fail,set
ENOMEM, and return 0 to caller.
But this will let __malloc_lock futex locked and owned by the
caller. In multithread circumstance, other thread calling
malloc/calloc will NOT succeed and get locked.
Signed-off-by: Zhiqiang Zhang <zhangzhiqiang.zhang(a)huawei.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 6c4538905e65ceb203f59aaa9a61728e81c6bc0a
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Wed Mar 18 22:32:22 2015 +0100
libm: Add missing C99 float/ld wrappers
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 78e6494c2cf677d170a5c4ce0f46d152d478abc0
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Wed Mar 18 22:32:13 2015 +0100
test: skip arc4random on glibc
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 5d3c0cc2aa60da804c9c981ffd5edcd2f02f1977
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Wed Mar 18 22:31:53 2015 +0100
buildsys: fix IS_IN_lib* for .i
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 6f4d5a7f53ee7f277b31bbff638bbccecf22f66f
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Tue Mar 17 21:19:10 2015 +0100
libc: update strverscmp
Closes bugzilla #7936
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 8d15cd677df7e5bc6a1a01e482a33ecc2d271337
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Tue Mar 17 20:56:17 2015 +0100
nptl: fix exclusion of pthread_setconcurrency.c
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 75d9bf2dc57f89532a25ab9942b8bea468585199
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Tue Mar 17 20:54:58 2015 +0100
include: silence __leaf warning
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit f334556476cd9c33d3a9d8df9af0dfae798dc9ae
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Tue Mar 17 20:54:38 2015 +0100
test: Tweak arc4random exclusion
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 8ee422cffbfd3e2a16265fe6680a8dde2f5e58fe
Author: Alexey Brodkin <Alexey.Brodkin(a)synopsys.com>
Date: Thu Mar 12 02:21:12 2015 +0300
resolv: fix unaligned tmp buffer corner-case
On execution of "inet/gethost_r-align" test I noticed failure due
to unaligned access (instaed of 4-byte aligned 1-byte aligned
address was attempted to be accessed).
Further investigation confirmed this nice and helpful test failure.
Following commit removed usage of ALIGN_BUFFER_OFFSET on entry to
__read_etc_hosts_r():
http://git.uclibc.org/uClibc/commit/?id=f65e66078b9f4d2d7f0fc336dee36e78fc4…
So indeed if target architecture doesn't allow unaligned access
and provided tmp buffer is not word aligned (and we will deal with pointers
which means word-sized data units), then CPU will fail during execution.
In case of ARC we'll see "Unaligned access" exception like this:
--->8---
# potentially unexpected fatal signal 7.
Path: /root/uClibc/test/inet/gethost_r-align
CPU: 0 PID: 5514 Comm: gethost_r-align Not tainted 3.13.11 #2
task: 8f42a580 ti: 8f40e000 task.ti: 8f40e000
[ECR ]: 0x00230400 => Misaligned r/w from 0x5fdab341
[EFA ]: 0x5fdab341
[BLINK ]: 0x20032a18
[ERET ]: 0x20032a3c
@off 0x12a3c in [/lib/libuClibc-0.9.34-git.so]
VMA: 0x20020000 to 0x20062000
[STAT32]: 0x00000086 : U E2 E1
BTA: 0x20046014 SP: 0x5fdab260 FP: 0x00000000
LPS: 0x20046064 LPE: 0x20046068 LPC: 0x00000000
r00: 0x5fdab341 r01: 0x00000005 r02: 0x00000015
r03: 0x00000000 r04: 0x5fdab358 r05: 0x00000000
r06: 0x0a0a0a00 r07: 0x00000000 r08: 0x0000003f
r09: 0x20067050 r10: 0x00000000 r11: 0x00000014
r12: 0x00000001 r13: 0x00000000 r14: 0x20060660
r15: 0x20060661 r16: 0x00000006 r17: 0x5fdab371
r18: 0x00000018 r19: 0x5fdab2b4 r20: 0x00020000
r21: 0x00000000 r22: 0x00029068 r23: 0x5fdab371
r24: 0x00010000 r25: 0x00000000
--->8---
To fix this problem we'll re-introduce tmp buffer force alignment
before config parser invocation.
Signed-off-by: Alexey Brodkin <Alexey.Brodkin(a)synopsys.com>
Cc: Vineet Gupta <vgupta(a)synopsys.com>
Cc: Waldemar Brodkorb <wbx(a)openadk.org>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 21cbb6fe887a30f0777521ec10f0d0d9c2a7da7e
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Fri Mar 13 21:03:10 2015 +0100
unistd.h: put getppid under XOPEN2K8
Add __LEAF to all __THROW, introduce non-leaf __THROWNL
Adjust affected spots accordingly.
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit 8c66e0a6c7987cda9df8c88e84b3d50d573c1dbb
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Wed Mar 11 22:59:51 2015 +0100
buildsys: create linker script with proper flags
We were not passing the correct use-ld and -m{32,64,...} when creating
the linker script. Revisit for gold later on anyway.
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
commit c3ddc18409b71db9e2fc863a7ff94a89b3c316ce
Author: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
Date: Wed Mar 11 22:58:32 2015 +0100
spawn.h: Fix !_GNU_SOURCE compilation
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop(a)gmail.com>
-----------------------------------------------------------------------
Summary of changes:
Makerules | 9 +--
TODO | 1 +
include/complex.h | 2 +
include/dlfcn.h | 6 +-
include/fcntl.h | 2 +-
include/iconv.h | 4 +-
include/malloc.h | 4 ++
include/math.h | 2 +
include/setjmp.h | 19 ++---
include/spawn.h | 24 ++++---
include/stdio.h | 51 +++++++------
include/stdlib.h | 2 +-
include/sys/cdefs.h | 24 ++++++-
include/sys/sysmacros.h | 29 ++++----
include/sys/wait.h | 18 +++--
include/ucontext.h | 6 +-
include/unistd.h | 75 +++++++++++---------
include/wchar.h | 8 +--
libc/inet/resolv.c | 6 +-
libc/stdlib/malloc-standard/free.c | 6 +-
libc/stdlib/malloc-standard/malloc.c | 5 +-
libc/stdlib/malloc-standard/memalign.c | 2 +-
libc/stdlib/malloc-standard/realloc.c | 2 +-
libc/string/strverscmp.c | 69 ++++++++----------
libc/sysdeps/linux/common/bits/mathcalls.h | 23 ++++++
libc/sysdeps/linux/common/getrusage.c | 1 +
.../aeabi_unwind_cpp_pr1.c => common/makedev.c} | 31 ++++----
libm/Makefile.in | 41 +++++++++--
libm/float_wrappers.c | 62 ++++++++++------
libm/ldouble_wrappers.c | 58 +++++++++++++--
libm/s_fdim.c | 17 +++--
libm/s_fmax.c | 6 +-
libm/s_fmin.c | 6 +-
libm/s_nextafter.c | 4 +-
libpthread/linuxthreads.old/semaphore.h | 4 +-
.../linuxthreads.old/sysdeps/pthread/pthread.h | 36 +++++-----
libpthread/linuxthreads/semaphore.h | 4 +-
libpthread/linuxthreads/sysdeps/pthread/pthread.h | 36 +++++-----
libpthread/nptl/Makefile.in | 2 +-
libpthread/nptl/semaphore.h | 4 +-
libpthread/nptl/sysdeps/pthread/pthread.h | 64 ++++++++---------
test/math/compile_test.c | 20 +++---
test/math/libm-test.inc | 56 +++++++--------
test/stdlib/Makefile.in | 7 +-
test/stdlib/testarc4random.c | 2 -
45 files changed, 526 insertions(+), 334 deletions(-)
copy libc/sysdeps/linux/{arm/aeabi_unwind_cpp_pr1.c => common/makedev.c} (51%)
diff --git a/Makerules b/Makerules
index 1596988..a60338a 100644
--- a/Makerules
+++ b/Makerules
@@ -29,7 +29,7 @@ objs: all_objs
# apply unconditional per-directory flags
define add_IS_IN_lib
ifneq ($(strip $(2)),)
-__add_IS_IN_lib := $(2)
+__add_IS_IN_lib := $(2) $(2:.o=.i) $(2:.os=.i) $(2:.oS=.i)
$$(__add_IS_IN_lib): CFLAGS-for-library-members:=$(CFLAGS-$(1)) -DIN_LIB=$(word 1,$(subst /, ,$(1)))
endif
endef
@@ -326,9 +326,10 @@ cmd_hcompile.o = $(HOSTCC) $(filter-out $(PHONY),$<) $(DEPS-$(notdir $@)) -c -o
define create-lds
$(Q)$(RM) $@.lds
- $(Q)$(CC) -nostdlib -nostartfiles -shared -Wl,-z,combreloc \
- -Wl,-z,relro -Wl,--hash-style=gnu -Wl,-z,defs \
- -Wl,--verbose 2>&1 | LC_ALL=C \
+ $(Q)$(CC) $(LDFLAG-fuse-ld) $(CPU_LDFLAGS-y) \
+ -nostdlib -nostartfiles -shared -Wl,-z,combreloc \
+ -Wl,-z,relro $(CFLAG_-Wl--hash-style=gnu) -Wl,-z,defs \
+ -x c /dev/null -Wl,--verbose 2>&1 | LC_ALL=C \
$(SED) -e '/^=========/,/^=========/!d;/^=========/d' \
-e 's/^\([ ]*\)\. = .* + SIZEOF_HEADERS;/&\n\1$(SYMBOL_PREFIX)_begin = . - SIZEOF_HEADERS;/' > $@.lds
endef
diff --git a/TODO b/TODO
index c6ad7bf..5f897b7 100644
--- a/TODO
+++ b/TODO
@@ -93,6 +93,7 @@ TODO list for the uClibc 1.0.0 release:
ugetrlimit, it seems, else use the modern variant)
*) simplify exec*() in the light of execvpe (perhaps single internal
impl); USE_GNU for execvpe (and other GNU extensions, see psm).
+ *) Remove unused math complex hidden protos throughout
TODO list for AFTER the uClibc 1.0.0 release:
diff --git a/include/complex.h b/include/complex.h
index 91efc0d..ed7e502 100644
--- a/include/complex.h
+++ b/include/complex.h
@@ -79,6 +79,7 @@ __BEGIN_DECLS
#endif
#include <bits/cmathcalls.h>
#undef _Mdouble_
+#undef _Mfloat_
#undef __MATH_PRECNAME
/* And the long double versions. It is non-critical to define them
@@ -97,6 +98,7 @@ __BEGIN_DECLS
# include <bits/cmathcalls.h>
#endif
#undef _Mdouble_
+#undef _Mlong_double_
#undef __MATH_PRECNAME
#undef __MATHDECL_1
#undef __MATHDECL
diff --git a/include/dlfcn.h b/include/dlfcn.h
index 41d0d6f..241ec54 100644
--- a/include/dlfcn.h
+++ b/include/dlfcn.h
@@ -55,11 +55,11 @@ __BEGIN_DECLS
/* Open the shared object FILE and map it in; return a handle that can be
passed to `dlsym' to get symbol values from it. */
-extern void *dlopen (const char *__file, int __mode) __THROW;
+extern void *dlopen (const char *__file, int __mode) __THROWNL;
/* Unmap and close a shared object opened by `dlopen'.
The handle cannot be used again after calling `dlclose'. */
-extern int dlclose (void *__handle) __THROW __nonnull ((1));
+extern int dlclose (void *__handle) __THROWNL __nonnull ((1));
/* Find the run-time address in the shared object HANDLE refers to
of the symbol called NAME. */
@@ -68,7 +68,7 @@ extern void *dlsym (void *__restrict __handle,
#if 0 /*def __USE_GNU*/
/* Like `dlopen', but request object to be allocated in a new namespace. */
-extern void *dlmopen (Lmid_t __nsid, const char *__file, int __mode) __THROW;
+extern void *dlmopen (Lmid_t __nsid, const char *__file, int __mode) __THROWNL;
/* Find the run-time address in the shared object HANDLE refers to
of the symbol called NAME with VERSION. */
diff --git a/include/fcntl.h b/include/fcntl.h
index 04fc2c0..11000dd 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -221,7 +221,7 @@ extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
/* Reserve storage for the data of the file associated with FD.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
# ifndef __USE_FILE_OFFSET64
extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
diff --git a/include/iconv.h b/include/iconv.h
index d850de5..5ab4c6c 100644
--- a/include/iconv.h
+++ b/include/iconv.h
@@ -36,7 +36,7 @@ typedef void *iconv_t;
/* Allocate descriptor for code conversion from codeset FROMCODE to
codeset TOCODE.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern iconv_t iconv_open (const char *__tocode, const char *__fromcode);
@@ -50,7 +50,7 @@ extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
/* Free resources allocated for descriptor CD for code conversion.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern int iconv_close (iconv_t __cd);
diff --git a/include/malloc.h b/include/malloc.h
index 3209fb0..a289c93 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -132,6 +132,7 @@ extern __malloc_ptr_t valloc __MALLOC_P ((size_t __size)) __attribute_malloc__;
#ifdef __MALLOC_STANDARD__
+# ifdef __USE_SVID
/* SVID2/XPG mallinfo structure */
struct mallinfo {
int arena; /* total space allocated from system */
@@ -149,10 +150,13 @@ struct mallinfo {
/* Returns a copy of the updated current mallinfo. */
extern struct mallinfo mallinfo __MALLOC_P ((void));
libc_hidden_proto(mallinfo)
+# endif /* __USE_SVID */
+# ifdef __USE_GNU
/* Release all but __pad bytes of freed top-most memory back to the
system. Return 1 if successful, else 0. */
extern int malloc_trim(size_t pad);
+# endif /* __USE_GNU */
#include <stdio.h>
/* Prints brief summary statistics to the specified file.
diff --git a/include/math.h b/include/math.h
index ecb9aa6..1b54c9e 100644
--- a/include/math.h
+++ b/include/math.h
@@ -129,6 +129,7 @@ __BEGIN_DECLS
# undef _Mdouble_
# undef _Mdouble_BEGIN_NAMESPACE
# undef _Mdouble_END_NAMESPACE
+# undef _Mfloat_
# undef __MATH_PRECNAME
# undef __MATH_maybe_libm_hidden_proto
@@ -176,6 +177,7 @@ extern long double __REDIRECT_NTH (nexttowardl, (long double __x, long double __
# undef _Mdouble_
# undef _Mdouble_BEGIN_NAMESPACE
# undef _Mdouble_END_NAMESPACE
+# undef _Mlong_double_
# undef __MATH_PRECNAME
# undef __MATH_maybe_libm_hidden_proto
diff --git a/include/setjmp.h b/include/setjmp.h
index c950137..71c1d35 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -49,19 +49,20 @@ typedef struct __jmp_buf_tag jmp_buf[1];
/* Store the calling environment in ENV, also saving the signal mask.
Return 0. */
-extern int setjmp (jmp_buf __env) __THROW;
+extern int setjmp (jmp_buf __env) __THROWNL;
__END_NAMESPACE_STD
/* Store the calling environment in ENV, also saving the
signal mask if SAVEMASK is nonzero. Return 0.
This is the internal name for `sigsetjmp'. */
-extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROW;
+extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask)
+ __THROWNL;
#ifndef __FAVOR_BSD
/* Store the calling environment in ENV, not saving the signal mask.
Return 0. */
-extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROW;
+extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL;
/* Do not save the signal mask. This is equivalent to the `_setjmp'
BSD function. */
@@ -79,7 +80,7 @@ __BEGIN_NAMESPACE_STD
/* Jump to the environment saved in ENV, making the
`setjmp' call there return VAL, or 1 if VAL is 0. */
extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
- __THROW __attribute__ ((__noreturn__));
+ __THROWNL __attribute__ ((__noreturn__));
__END_NAMESPACE_STD
@@ -88,7 +89,7 @@ __END_NAMESPACE_STD
the signal mask. But it is how ENV was saved that determines whether
`longjmp' restores the mask; `_longjmp' is just an alias. */
extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
- __THROW __attribute__ ((__noreturn__));
+ __THROWNL __attribute__ ((__noreturn__));
#endif
@@ -107,16 +108,16 @@ typedef struct __jmp_buf_tag sigjmp_buf[1];
Restore the signal mask if that sigsetjmp call saved it.
This is just an alias `longjmp'. */
extern void siglongjmp (sigjmp_buf __env, int __val)
- __THROW __attribute__ ((__noreturn__));
+ __THROWNL __attribute__ ((__noreturn__));
#endif /* Use POSIX. */
__END_DECLS
#ifdef _LIBC
-extern void __longjmp(__jmp_buf __env, int __val) attribute_noreturn;
+extern void __longjmp(__jmp_buf __env, int __val) __THROWNL attribute_noreturn;
libc_hidden_proto(__longjmp)
-extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
-extern __typeof(siglongjmp) __libc_siglongjmp attribute_noreturn;
+extern __typeof(longjmp) __libc_longjmp __THROWNL attribute_noreturn;
+extern __typeof(siglongjmp) __libc_siglongjmp __THROWNL attribute_noreturn;
extern void _longjmp_unwind(jmp_buf __env, int __val);
libc_hidden_proto(_longjmp_unwind)
extern int __sigjmp_save(sigjmp_buf __env, int __savemask) attribute_hidden;
diff --git a/include/spawn.h b/include/spawn.h
index 95fff35..3de375b 100644
--- a/include/spawn.h
+++ b/include/spawn.h
@@ -66,15 +66,6 @@ typedef struct
# define POSIX_SPAWN_USEVFORK 0x40
#endif
-
-#define __POSIX_SPAWN_MASK (POSIX_SPAWN_RESETIDS \
- | POSIX_SPAWN_SETPGROUP \
- | POSIX_SPAWN_SETSIGDEF \
- | POSIX_SPAWN_SETSIGMASK \
- | POSIX_SPAWN_SETSCHEDPARAM \
- | POSIX_SPAWN_SETSCHEDULER \
- | POSIX_SPAWN_USEVFORK)
-
__BEGIN_DECLS
/* Spawn a new process executing PATH with the attributes describes in *ATTRP.
@@ -170,12 +161,27 @@ static inline
int posix_spawnattr_setflags (posix_spawnattr_t *_attr,
short int __flags)
{
+#ifdef POSIX_SPAWN_USEVFORK
+# define __POSIX_SPAWN_USEVFORK POSIX_SPAWN_USEVFORK
+#else
+# define __POSIX_SPAWN_USEVFORK 0
+#endif
+#define __POSIX_SPAWN_MASK (POSIX_SPAWN_RESETIDS \
+ | POSIX_SPAWN_SETPGROUP \
+ | POSIX_SPAWN_SETSIGDEF \
+ | POSIX_SPAWN_SETSIGMASK \
+ | POSIX_SPAWN_SETSCHEDPARAM \
+ | POSIX_SPAWN_SETSCHEDULER \
+ | __POSIX_SPAWN_USEVFORK)
+
/* Check no invalid bits are set. */
if (__flags & ~__POSIX_SPAWN_MASK)
return EINVAL;
_attr->__flags = __flags;
return 0;
+#undef __POSIX_SPAWN_USEVFORK
+#undef __POSIX_SPAWN_MASK
}
/* Get process group ID from the attribute structure. */
diff --git a/include/stdio.h b/include/stdio.h
index 75c1464..9aae5ab 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -157,7 +157,7 @@ libc_hidden_proto(renameat)
__BEGIN_NAMESPACE_STD
/* Create a temporary file and open it read/write.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
#ifndef __USE_FILE_OFFSET64
extern FILE *tmpfile (void) __wur;
@@ -345,8 +345,8 @@ extern int printf (const char *__restrict __format, ...);
libc_hidden_proto(printf)
/* Write formatted output to S. */
extern int sprintf (char *__restrict __s,
- const char *__restrict __format, ...)
- __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
+ const char *__restrict __format, ...) __THROWNL
+ __attribute__ ((__format__ (__printf__, 2, 3)));
libc_hidden_proto(sprintf)
/* Write formatted output to S from argument list ARG.
@@ -363,8 +363,8 @@ libc_hidden_proto(vfprintf)
extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
/* Write formatted output to S from argument list ARG. */
extern int vsprintf (char *__restrict __s, const char *__restrict __format,
- __gnuc_va_list __arg)
- __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
+ __gnuc_va_list __arg) __THROWNL
+ __attribute__ ((__format__ (__printf__, 2, 0)));
__END_NAMESPACE_STD
#if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
@@ -372,12 +372,12 @@ __BEGIN_NAMESPACE_C99
/* Maximum chars of output to write in MAXLEN. */
extern int snprintf (char *__restrict __s, size_t __maxlen,
const char *__restrict __format, ...)
- __THROW __attribute__ ((__format__ (__printf__, 3, 4)));
+ __THROWNL __attribute__ ((__format__ (__printf__, 3, 4)));
libc_hidden_proto(snprintf)
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
const char *__restrict __format, __gnuc_va_list __arg)
- __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
+ __THROWNL __attribute__ ((__format__ (__printf__, 3, 0)));
libc_hidden_proto(vsnprintf)
__END_NAMESPACE_C99
#endif
@@ -387,26 +387,24 @@ __END_NAMESPACE_C99
Store the address of the string in *PTR. */
extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
__gnuc_va_list __arg)
- __THROW __attribute__ ((__format__ (__printf__, 2, 0))) __wur;
+ __THROWNL __attribute__ ((__format__ (__printf__, 2, 0))) __wur;
libc_hidden_proto(vasprintf)
#if 0 /* uClibc: disabled */
extern int __asprintf (char **__restrict __ptr,
const char *__restrict __fmt, ...)
- __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
+ __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
#endif
extern int asprintf (char **__restrict __ptr,
const char *__restrict __fmt, ...)
- __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
+ __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
libc_hidden_proto(asprintf)
#endif
#ifdef __USE_XOPEN2K8
/* Write formatted output to a file descriptor.
- These functions are not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation they are cancellation points and
- therefore not marked with __THROW. */
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
extern int vdprintf (int __fd, const char *__restrict __fmt,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 2, 0)));
@@ -570,12 +568,21 @@ extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
__wur;
libc_hidden_proto(fgets)
+#if !defined __USE_ISOC11 \
+ || (defined __cplusplus && __cplusplus <= 201103L)
/* Get a newline-terminated string from stdin, removing the newline.
DO NOT USE THIS FUNCTION!! There is no limit on how much it will read.
+ The function has been officially removed in ISO C11. This opportunity
+ is used to also remove it from the GNU feature list. It is now only
+ available when explicitly using an old ISO C, Unix, or POSIX standard.
+ GCC defines _GNU_SOURCE when building C++ code and the function is still
+ in C++11, so it is also available for C++.
+
This function is a possible cancellation point and therefore not
marked with __THROW. */
-extern char *gets (char *__s) __wur;
+extern char *gets (char *__s) __wur __attribute_deprecated__;
+#endif
__END_NAMESPACE_STD
#ifdef __USE_GNU
@@ -628,21 +635,21 @@ libc_hidden_proto(getline)
__BEGIN_NAMESPACE_STD
/* Write a string to STREAM.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
libc_hidden_proto(fputs)
/* Write a string, followed by a newline, to stdout.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern int puts (const char *__s);
/* Push a character back onto the input buffer of STREAM.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern int ungetc (int __c, FILE *__stream);
libc_hidden_proto(ungetc)
@@ -650,14 +657,14 @@ libc_hidden_proto(ungetc)
/* Read chunks of generic data from STREAM.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern size_t fread (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) __wur;
libc_hidden_proto(fread)
/* Write chunks of generic data to STREAM.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern size_t fwrite (const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s) __wur;
@@ -860,11 +867,11 @@ struct obstack; /* See <obstack.h>. */
/* Write formatted output to an obstack. */
extern int obstack_printf (struct obstack *__restrict __obstack,
const char *__restrict __format, ...)
- __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
+ __THROWNL __attribute__ ((__format__ (__printf__, 2, 3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
const char *__restrict __format,
__gnuc_va_list __args)
- __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
+ __THROWNL __attribute__ ((__format__ (__printf__, 2, 0)));
libc_hidden_proto(obstack_vprintf)
#endif /* USE_GNU && UCLIBC_HAS_OBSTACK. */
diff --git a/include/stdlib.h b/include/stdlib.h
index b2d7020..2065dfa 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -38,7 +38,7 @@ __BEGIN_DECLS
#ifndef __need_malloc_and_calloc
#define _STDLIB_H 1
-#if defined __USE_XOPEN && !defined _SYS_WAIT_H
+#if (defined __USE_XOPEN || defined __USE_XOPEN2K8) && !defined _SYS_WAIT_H
/* XPG requires a few symbols from <sys/wait.h> being defined. */
# include <bits/waitflags.h>
# include <bits/waitstatus.h>
diff --git a/include/sys/cdefs.h b/include/sys/cdefs.h
index 6f81b6a..4da981f 100644
--- a/include/sys/cdefs.h
+++ b/include/sys/cdefs.h
@@ -37,20 +37,33 @@
#ifdef __GNUC__
+/* All functions, except those with callbacks or those that
+ synchronize memory, are leaf functions. */
+# if __GNUC_PREREQ (4, 6) && !defined _LIBC
+# define __LEAF , __leaf__
+# define __LEAF_ATTR __attribute__ ((__leaf__))
+# else
+# define __LEAF
+# define __LEAF_ATTR
+# endif
+
/* GCC can always grok prototypes. For C++ programs we add throw()
to help it optimize the function calls. But this works only with
gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
as non-throwing using a function attribute since programs can use
the -fexceptions options for C code as well. */
# if !defined __cplusplus && __GNUC_PREREQ (3, 3)
-# define __THROW __attribute__ ((__nothrow__))
-# define __NTH(fct) __attribute__ ((__nothrow__)) fct
+# define __THROW __attribute__ ((__nothrow__ __LEAF))
+# define __THROWNL __attribute__ ((__nothrow__))
+# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
# else
# if defined __cplusplus && __GNUC_PREREQ (2,8)
# define __THROW throw ()
-# define __NTH(fct) fct throw ()
+# define __THROWNL throw ()
+# define __NTH(fct) __LEAF_ATTR fct throw ()
# else
# define __THROW
+# define __THROWNL
# define __NTH(fct) fct
# endif
# endif
@@ -60,6 +73,7 @@
# define __inline /* No inline functions. */
# define __THROW
+# define __THROWNL
# define __NTH(fct) fct
#endif /* GCC. */
@@ -165,9 +179,13 @@
# ifdef __cplusplus
# define __REDIRECT_NTH(name, proto, alias) \
name proto __THROW __asm__ (__ASMNAME (#alias))
+# define __REDIRECT_NTHNL(name, proto, alias) \
+ name proto __THROWNL __asm__ (__ASMNAME (#alias))
# else
# define __REDIRECT_NTH(name, proto, alias) \
name proto __asm__ (__ASMNAME (#alias)) __THROW
+# define __REDIRECT_NTHNL(name, proto, alias) \
+ name proto __asm__ (__ASMNAME (#alias)) __THROWNL
# endif
# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
# define __ASMNAME2(prefix, cname) __STRING (prefix) cname
diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h
index 7a5635e..3addb75 100644
--- a/include/sys/sysmacros.h
+++ b/include/sys/sysmacros.h
@@ -21,35 +21,39 @@
#include <features.h>
+__BEGIN_DECLS
+
/* If the compiler does not know long long it is out of luck. We are
not going to hack weird hacks to support the dev_t representation
they need. */
-#if 1 /*def __GLIBC_HAVE_LONG_LONG uClibc note: always enable */
+
__extension__
-static __inline unsigned int gnu_dev_major (unsigned long long int __dev)
- __THROW;
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __THROW __attribute__ ((__const__));
+libc_hidden_proto(gnu_dev_major)
__extension__
-static __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
- __THROW;
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __THROW __attribute__ ((__const__));
+libc_hidden_proto(gnu_dev_minor)
__extension__
-static __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
unsigned int __minor)
- __THROW;
+ __THROW __attribute__ ((__const__));
-# if defined __GNUC__ && __GNUC__ >= 2
-__extension__ static __inline unsigned int
+# ifdef __USE_EXTERN_INLINES
+__extension__ __extern_inline __attribute__ ((__const__)) unsigned int
__NTH (gnu_dev_major (unsigned long long int __dev))
{
return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}
-__extension__ static __inline unsigned int
+__extension__ __extern_inline __attribute__ ((__const__)) unsigned int
__NTH (gnu_dev_minor (unsigned long long int __dev))
{
return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}
-__extension__ static __inline unsigned long long int
+__extension__ __extern_inline __attribute__ ((__const__)) unsigned long long int
__NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor))
{
return ((__minor & 0xff) | ((__major & 0xfff) << 8)
@@ -57,12 +61,11 @@ __NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor))
| (((unsigned long long int) (__major & ~0xfff)) << 32));
}
# endif
-
+__END_DECLS
/* Access the functions with their traditional names. */
# define major(dev) gnu_dev_major (dev)
# define minor(dev) gnu_dev_minor (dev)
# define makedev(maj, min) gnu_dev_makedev (maj, min)
-#endif
#endif /* sys/sysmacros.h */
diff --git a/include/sys/wait.h b/include/sys/wait.h
index b3c2b97..f7a420b 100644
--- a/include/sys/wait.h
+++ b/include/sys/wait.h
@@ -28,10 +28,9 @@
__BEGIN_DECLS
#include <signal.h>
-#include <sys/resource.h>
/* These macros could also be defined in <stdlib.h>. */
-#if !defined _STDLIB_H || !defined __USE_XOPEN
+#if !defined _STDLIB_H || (!defined __USE_XOPEN && !defined __USE_XOPEN2K8)
/* This will define the `W*' macros for the flag
bits to `waitpid', `wait3', and `wait4'. */
# include <bits/waitflags.h>
@@ -97,7 +96,7 @@ typedef union
#endif
/* The following values are used by the `waitid' function. */
-#if defined __USE_SVID || defined __USE_XOPEN
+#if defined __USE_SVID || defined __USE_XOPEN || defined __USE_XOPEN2K8
typedef enum
{
P_ALL, /* Wait for any child. */
@@ -141,9 +140,15 @@ extern __typeof(waitpid) __waitpid_nocancel attribute_hidden;
libc_hidden_proto(waitpid)
#endif
-#if defined __USE_SVID || defined __USE_XOPEN
+#if defined __USE_SVID || defined __USE_XOPEN || defined __USE_XOPEN2K8
+# ifndef __id_t_defined
+# include <bits/types.h>
+ typedef __id_t id_t;
+# define __id_t_defined
+# endif
# define __need_siginfo_t
# include <bits/siginfo.h>
+
/* Wait for a childing matching IDTYPE and ID to change the status and
place appropriate information in *INFOP.
If IDTYPE is P_PID, match any process whose process ID is ID.
@@ -160,19 +165,20 @@ extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop,
#endif
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+struct rusage;
/* Wait for a child to exit. When one does, put its status in *STAT_LOC and
return its process ID. For errors return (pid_t) -1. If USAGE is not
nil, store information about the child's resource usage there. If the
WUNTRACED bit is set in OPTIONS, return status for stopped children;
otherwise don't. */
extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options,
- struct rusage * __usage) __THROW;
+ struct rusage * __usage) __THROWNL;
#endif
#ifdef __USE_BSD
/* PID is like waitpid. Other args are like wait3. */
extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options,
- struct rusage *__usage) __THROW;
+ struct rusage *__usage) __THROWNL;
#endif /* Use BSD. */
#ifdef _LIBC
diff --git a/include/ucontext.h b/include/ucontext.h
index f11db77..4ce114e 100644
--- a/include/ucontext.h
+++ b/include/ucontext.h
@@ -31,15 +31,15 @@
__BEGIN_DECLS
/* Get user context and store it in variable pointed to by UCP. */
-extern int getcontext (ucontext_t *__ucp) __THROW;
+extern int getcontext (ucontext_t *__ucp) __THROWNL;
/* Set user context from information of variable pointed to by UCP. */
-extern int setcontext (const ucontext_t *__ucp) __THROW;
+extern int setcontext (const ucontext_t *__ucp) __THROWNL;
/* Save current context in context variable pointed to by OUCP and set
context from variable pointed to by UCP. */
extern int swapcontext (ucontext_t *__restrict __oucp,
- const ucontext_t *__restrict __ucp) __THROW;
+ const ucontext_t *__restrict __ucp) __THROWNL;
/* Manipulate user context UCP to continue with calling functions FUNC
and the ARGC-1 parameters following ARGC when the context is used
diff --git a/include/unistd.h b/include/unistd.h
index 967e058..3793d2d 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -206,7 +206,7 @@ __BEGIN_DECLS
#include <bits/uClibc_posix_opt.h>
/* Get the environment definitions from Unix98. */
-#ifdef __USE_UNIX98
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K
# include <bits/environments.h>
#endif
@@ -266,7 +266,7 @@ typedef __pid_t pid_t;
# endif
#endif /* X/Open */
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
+#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
# ifndef __intptr_t_defined
typedef __intptr_t intptr_t;
# define __intptr_t_defined
@@ -387,7 +387,7 @@ extern __typeof(write) __write_nocancel attribute_hidden;
libc_hidden_proto(write)
#endif
-#ifdef __USE_UNIX98
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
# ifndef __USE_FILE_OFFSET64
/* Read NBYTES into BUF from FD at the given position OFFSET without
changing the file pointer. Return the number read, -1 for errors
@@ -469,8 +469,9 @@ libc_hidden_proto(alarm)
extern unsigned int sleep (unsigned int __seconds);
libc_hidden_proto(sleep)
-#if (defined __USE_BSD || defined __USE_XOPEN_EXTENDED) \
- && defined __UCLIBC_SUSV3_LEGACY__
+#if (defined __USE_BSD \
+ || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
+ ) && defined __UCLIBC_SUSV3_LEGACY__
/* Set an alarm to go off (generating a SIGALRM signal) in VALUE
microseconds. If INTERVAL is nonzero, when the alarm goes off, the
timer is reset to go off every INTERVAL microseconds thereafter.
@@ -500,7 +501,7 @@ extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
__THROW __nonnull ((1)) __wur;
libc_hidden_proto(chown)
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
/* Change the owner and group of the file that FD is open on. */
extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW __wur;
@@ -525,7 +526,7 @@ libc_hidden_proto(fchownat)
extern int chdir (const char *__path) __THROW __nonnull ((1)) __wur;
libc_hidden_proto(chdir)
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
/* Change the process's working directory to the one FD is open on. */
extern int fchdir (int __fd) __THROW __wur;
libc_hidden_proto(fchdir)
@@ -548,7 +549,7 @@ libc_hidden_proto(getcwd)
extern char *get_current_dir_name (void) __THROW;
#endif
-#if 0 /*defined __USE_BSD || defined __USE_XOPEN_EXTENDED*/
+#if 0 /*defined __USE_BSD || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8)*/
/* Put the absolute pathname of the current working directory in BUF.
If successful, return BUF. If not, put an error message in
BUF and return NULL. BUF should be at least PATH_MAX bytes long. */
@@ -581,52 +582,53 @@ extern char **environ;
/* Replace the current process, executing PATH with arguments ARGV and
environment ENVP. ARGV and ENVP are terminated by NULL pointers. */
extern int execve (const char *__path, char *const __argv[],
- char *const __envp[]) __THROW __nonnull ((1));
+ char *const __envp[]) __THROW __nonnull ((1, 2));
libc_hidden_proto(execve)
#if 0 /*def __USE_XOPEN2K8*/
/* Execute the file FD refers to, overlaying the running program image.
ARGV and ENVP are passed to the new program, as for `execve'. */
extern int fexecve (int __fd, char *const __argv[], char *const __envp[])
- __THROW;
+ __THROW __nonnull ((2));
#endif
/* Execute PATH with arguments ARGV and environment from `environ'. */
extern int execv (const char *__path, char *const __argv[])
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
libc_hidden_proto(execv)
/* Execute PATH with all arguments after PATH until a NULL pointer,
and the argument after that for environment. */
extern int execle (const char *__path, const char *__arg, ...)
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
libc_hidden_proto(execle)
/* Execute PATH with all arguments after PATH until
a NULL pointer and environment from `environ'. */
extern int execl (const char *__path, const char *__arg, ...)
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
libc_hidden_proto(execl)
/* Execute FILE, searching in the `PATH' environment variable if it contains
no slashes, with arguments ARGV and environment from `environ'. */
extern int execvp (const char *__file, char *const __argv[])
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
libc_hidden_proto(execvp)
/* Execute FILE, searching in the `PATH' environment variable if
it contains no slashes, with all arguments after FILE until a
NULL pointer and environment from `environ'. */
extern int execlp (const char *__file, const char *__arg, ...)
- __THROW __nonnull ((1));
+ __THROW __nonnull ((1, 2));
libc_hidden_proto(execlp)
#ifdef __USE_GNU
/* Execute FILE, searching in the `PATH' environment variable if it contains
no slashes, with arguments ARGV and environment from a pointer */
-extern int execvpe (__const char *__file, char *__const __argv[], char *__const __envp[])
- __THROW __nonnull ((1));
+extern int execvpe (const char *__file, char *const __argv[],
+ char *const __envp[])
+ __THROW __nonnull ((1, 2));
libc_hidden_proto(execvpe)
#endif
@@ -685,7 +687,7 @@ extern __pid_t __REDIRECT_NTH (getpgrp, (__pid_t __pid), __getpgid);
/* Get the process group ID of process PID. */
extern __pid_t __getpgid (__pid_t __pid) __THROW;
-#ifdef __USE_XOPEN_EXTENDED
+#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
extern __pid_t getpgid (__pid_t __pid) __THROW;
#endif
@@ -731,7 +733,7 @@ extern int __REDIRECT_NTH (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid);
extern __pid_t setsid (void) __THROW;
libc_hidden_proto(setsid)
-#ifdef __USE_XOPEN_EXTENDED
+#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
/* Return the session ID of the given process. */
extern __pid_t getsid (__pid_t __pid) __THROW;
libc_hidden_proto(getsid)
@@ -768,37 +770,37 @@ extern int group_member (__gid_t __gid) __THROW;
If the calling process is the super-user, set the real
and effective user IDs, and the saved set-user-ID to UID;
if not, the effective user ID is set to UID. */
-extern int setuid (__uid_t __uid) __THROW;
+extern int setuid (__uid_t __uid) __THROW __wur;
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
/* Set the real user ID of the calling process to RUID,
and the effective user ID of the calling process to EUID. */
-extern int setreuid (__uid_t __ruid, __uid_t __euid) __THROW;
+extern int setreuid (__uid_t __ruid, __uid_t __euid) __THROW __wur;
libc_hidden_proto(setreuid)
#endif
#if defined __USE_BSD || defined __USE_XOPEN2K
/* Set the effective user ID of the calling process to UID. */
-extern int seteuid (__uid_t __uid) __THROW;
+extern int seteuid (__uid_t __uid) __THROW __wur;
libc_hidden_proto(seteuid)
-#endif /* Use BSD. */
+#endif
/* Set the group ID of the calling process to GID.
If the calling process is the super-user, set the real
and effective group IDs, and the saved set-group-ID to GID;
if not, the effective group ID is set to GID. */
-extern int setgid (__gid_t __gid) __THROW;
+extern int setgid (__gid_t __gid) __THROW __wur;
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
/* Set the real group ID of the calling process to RGID,
and the effective group ID of the calling process to EGID. */
-extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW;
+extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW __wur;
libc_hidden_proto(setregid)
#endif
#if defined __USE_BSD || defined __USE_XOPEN2K
/* Set the effective group ID of the calling process to GID. */
-extern int setegid (__gid_t __gid) __THROW;
+extern int setegid (__gid_t __gid) __THROW __wur;
#endif /* Use BSD. */
#ifdef __USE_GNU
@@ -816,14 +818,14 @@ extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
/* Set the real user ID, effective user ID, and saved-set user ID,
of the calling process to RUID, EUID, and SUID, respectively. */
extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
- __THROW;
+ __THROW __wur;
libc_hidden_proto(setresuid)
#endif
/* Set the real group ID, effective group ID, and saved-set group ID,
of the calling process to RGID, EGID, and SGID, respectively. */
extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
- __THROW;
+ __THROW __wur;
libc_hidden_proto(setresgid)
#endif
@@ -832,7 +834,7 @@ libc_hidden_proto(setresgid)
/* Clone the calling process, creating an exact copy.
Return -1 for errors, 0 to the new process,
and the process ID of the new process to the old process. */
-extern __pid_t fork (void) __THROW;
+extern __pid_t fork (void) __THROWNL;
# ifdef _LIBC
# ifdef __UCLIBC_HAS_THREADS__
extern __typeof(fork) __libc_fork;
@@ -903,7 +905,7 @@ extern ssize_t readlink (const char *__restrict __path,
char *__restrict __buf, size_t __len)
__THROW __nonnull ((1, 2)) __wur;
libc_hidden_proto(readlink)
-#endif /* Use BSD. */
+#endif /* Use POSIX.1-2001. */
#ifdef __USE_ATFILE
/* Like symlink but a relative path in TO is interpreted relative to TOFD. */
@@ -944,7 +946,7 @@ extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW;
/* Return the login name of the user.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern char *getlogin (void);
libc_hidden_proto(getlogin)
@@ -953,7 +955,7 @@ libc_hidden_proto(getlogin)
If it cannot be determined or some other error occurred, return the error
code. Otherwise return 0.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1));
#endif
@@ -974,7 +976,7 @@ extern int setlogin (const char *__name) __THROW __nonnull ((1));
#endif
-#if defined __USE_BSD || defined __USE_UNIX98
+#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K
/* Put the name of the current host in no more than LEN bytes of NAME.
The result is null-terminated if LEN is large enough for the full
name and the terminator. */
@@ -1071,6 +1073,11 @@ extern char *getpass (const char *__prompt) __nonnull ((1));
extern int fsync (int __fd);
#endif /* Use BSD || X/Open || Unix98. */
+#if 0 /*def __USE_GNU */
+/* Make all changes done to all files on the file system associated
+ * with FD actually appear on disk. */
+extern int syncfs (int __fd) __THROW;
+#endif
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
@@ -1263,7 +1270,7 @@ extern void swab (const void *__restrict __from, void *__restrict __to,
/* The Single Unix specification demands this prototype to be here.
It is also found in <stdio.h>. */
-#ifdef __USE_XOPEN
+#if defined __USE_XOPEN && !defined __USE_XOPEN2K
/* Return the name of the controlling terminal. */
extern char *ctermid (char *__s) __THROW;
#endif
diff --git a/include/wchar.h b/include/wchar.h
index 4ddd258..67f44b7 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -660,7 +660,7 @@ extern wint_t putwc (wchar_t __wc, __FILE *__stream);
/* Write a character to stdout.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern wint_t putwchar (wchar_t __wc);
@@ -668,14 +668,14 @@ extern wint_t putwchar (wchar_t __wc);
/* Get a newline-terminated wide character string of finite length
from STREAM.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
__FILE *__restrict __stream);
/* Write a string to STREAM.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern int fputws (const wchar_t *__restrict __ws,
__FILE *__restrict __stream);
@@ -684,7 +684,7 @@ libc_hidden_proto(fputws)
/* Push a character back onto the input buffer of STREAM.
- This function is a possible cancellation points and therefore not
+ This function is a possible cancellation point and therefore not
marked with __THROW. */
extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
libc_hidden_proto(ungetwc)
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
index cfc1eee..31e6381 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -1615,9 +1615,13 @@ int __read_etc_hosts_r(
#endif
;
int ret = HOST_NOT_FOUND;
+ /* make sure pointer is aligned */
+ int i = ALIGN_BUFFER_OFFSET(buf);
+ buf += i;
+ buflen -= i;
*h_errnop = NETDB_INTERNAL;
- if (buflen < aliaslen
+ if (/* (ssize_t)buflen < 0 || */ buflen < aliaslen
|| (buflen - aliaslen) < BUFSZ + 1)
return ERANGE;
if (parser == NULL)
diff --git a/libc/stdlib/malloc-standard/free.c b/libc/stdlib/malloc-standard/free.c
index 39e54d6..8b7a81f 100644
--- a/libc/stdlib/malloc-standard/free.c
+++ b/libc/stdlib/malloc-standard/free.c
@@ -104,9 +104,13 @@ static int __malloc_trim(size_t pad, mstate av)
*/
int malloc_trim(size_t pad)
{
+ int r;
+ __MALLOC_LOCK;
mstate av = get_malloc_state();
__malloc_consolidate(av);
- return __malloc_trim(pad, av);
+ r = __malloc_trim(pad, av);
+ __MALLOC_UNLOCK;
+ return r;
}
/*
diff --git a/libc/stdlib/malloc-standard/malloc.c b/libc/stdlib/malloc-standard/malloc.c
index 2abb5bb..fd33b50 100644
--- a/libc/stdlib/malloc-standard/malloc.c
+++ b/libc/stdlib/malloc-standard/malloc.c
@@ -832,8 +832,6 @@ void* malloc(size_t bytes)
}
#endif
- __MALLOC_LOCK;
- av = get_malloc_state();
/*
Convert request size to internal form by adding (sizeof(size_t)) bytes
overhead plus possibly more to obtain necessary alignment and/or
@@ -845,6 +843,9 @@ void* malloc(size_t bytes)
checked_request2size(bytes, nb);
+ __MALLOC_LOCK;
+ av = get_malloc_state();
+
/*
Bypass search if no frees yet
*/
diff --git a/libc/stdlib/malloc-standard/memalign.c b/libc/stdlib/malloc-standard/memalign.c
index 6303c1d..e9ae5a7 100644
--- a/libc/stdlib/malloc-standard/memalign.c
+++ b/libc/stdlib/malloc-standard/memalign.c
@@ -52,8 +52,8 @@ void* memalign(size_t alignment, size_t bytes)
alignment = a;
}
- __MALLOC_LOCK;
checked_request2size(bytes, nb);
+ __MALLOC_LOCK;
/* Strategy: find a spot within that chunk that meets the alignment
* request, and then possibly free the leading and trailing space. */
diff --git a/libc/stdlib/malloc-standard/realloc.c b/libc/stdlib/malloc-standard/realloc.c
index e060b70..e49d111 100644
--- a/libc/stdlib/malloc-standard/realloc.c
+++ b/libc/stdlib/malloc-standard/realloc.c
@@ -54,9 +54,9 @@ void* realloc(void* oldmem, size_t bytes)
return NULL;
}
+ checked_request2size(bytes, nb);
__MALLOC_LOCK;
av = get_malloc_state();
- checked_request2size(bytes, nb);
oldp = mem2chunk(oldmem);
oldsize = chunksize(oldp);
diff --git a/libc/string/strverscmp.c b/libc/string/strverscmp.c
index 714f4ed..7818a91 100644
--- a/libc/string/strverscmp.c
+++ b/libc/string/strverscmp.c
@@ -1,13 +1,8 @@
-/* GNU's strverscmp() function, taken from glibc 2.3.2 sources
- */
-
/* Compare strings while treating digits characters numerically.
- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jean-Fran�ois Bignolles <bignolle(a)ecoledoc.ibp.fr>, 1997.
- Derived work for uClibc by Hai Zaar, Codefidence Ltd <haizaar(a)codefidence.com>
-
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
@@ -22,63 +17,54 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <stdint.h>
#include <string.h>
#include <ctype.h>
-#include <stdint.h>
-
/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
- fractional parts, S_Z: idem but with leading Zeroes only */
+ fractionnal parts, S_Z: idem but with leading Zeroes only */
#define S_N 0x0
-#define S_I 0x4
-#define S_F 0x8
-#define S_Z 0xC
+#define S_I 0x3
+#define S_F 0x6
+#define S_Z 0x9
/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
#define CMP 2
#define LEN 3
-/* using more efficient isdigit() */
-#undef isdigit
-#define isdigit(a) ((unsigned)((a) - '0') <= 9)
/* Compare S1 and S2 as strings holding indices/version numbers,
returning less than, equal to or greater than zero if S1 is less than,
equal to or greater than S2 (for more info, see the texinfo doc).
*/
+
int strverscmp (const char *s1, const char *s2)
{
const unsigned char *p1 = (const unsigned char *) s1;
const unsigned char *p2 = (const unsigned char *) s2;
- unsigned char c1, c2;
- int state;
- int diff;
- /* Symbol(s) 0 [1-9] others (padding)
- Transition (10) 0 (01) d (00) x (11) - */
+ /* Symbol(s) 0 [1-9] others
+ Transition (10) 0 (01) d (00) x */
static const uint8_t next_state[] =
{
- /* state x d 0 - */
- /* S_N */ S_N, S_I, S_Z, S_N,
- /* S_I */ S_N, S_I, S_I, S_I,
- /* S_F */ S_N, S_F, S_F, S_F,
- /* S_Z */ S_N, S_F, S_Z, S_Z
+ /* state x d 0 */
+ /* S_N */ S_N, S_I, S_Z,
+ /* S_I */ S_N, S_I, S_I,
+ /* S_F */ S_N, S_F, S_F,
+ /* S_Z */ S_N, S_F, S_Z
};
static const int8_t result_type[] =
{
- /* state x/x x/d x/0 x/- d/x d/d d/0 d/-
- 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */
-
- /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
- CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
- /* S_I */ CMP, -1, -1, CMP, +1, LEN, LEN, CMP,
- +1, LEN, LEN, CMP, CMP, CMP, CMP, CMP,
- /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
- CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
- /* S_Z */ CMP, +1, +1, CMP, -1, CMP, CMP, CMP,
- -1, CMP, CMP, CMP
+ /* state x/x x/d x/0 d/x d/d d/0 0/x 0/d 0/0 */
+
+ /* S_N */ CMP, CMP, CMP, CMP, LEN, CMP, CMP, CMP, CMP,
+ /* S_I */ CMP, -1, -1, +1, LEN, LEN, +1, LEN, LEN,
+ /* S_F */ CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
+ /* S_Z */ CMP, +1, +1, -1, CMP, CMP, -1, CMP, CMP
};
+ unsigned char c1, c2;
+ int state, diff;
if (p1 == p2)
return 0;
@@ -86,17 +72,20 @@ int strverscmp (const char *s1, const char *s2)
c1 = *p1++;
c2 = *p2++;
/* Hint: '0' is a digit too. */
- state = S_N | ((c1 == '0') + (isdigit (c1) != 0));
+ state = S_N + ((c1 == '0') + (isdigit (c1) != 0));
- while ((diff = c1 - c2) == 0 && c1 != '\0')
+ while ((diff = c1 - c2) == 0)
{
+ if (c1 == '\0')
+ return diff;
+
state = next_state[state];
c1 = *p1++;
c2 = *p2++;
- state |= (c1 == '0') + (isdigit (c1) != 0);
+ state += (c1 == '0') + (isdigit (c1) != 0);
}
- state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))];
+ state = result_type[state * 3 + (((c2 == '0') + (isdigit (c2) != 0)))];
switch (state)
{
diff --git a/libc/sysdeps/linux/common/bits/mathcalls.h b/libc/sysdeps/linux/common/bits/mathcalls.h
index 84b793c..9bebb51 100644
--- a/libc/sysdeps/linux/common/bits/mathcalls.h
+++ b/libc/sysdeps/linux/common/bits/mathcalls.h
@@ -74,8 +74,22 @@ __MATHCALLI (atan2,, (_Mdouble_ __y, _Mdouble_ __x))
/* Cosine of X. */
__MATHCALLI (cos,, (_Mdouble_ __x))
+# if defined _LIBC && defined _Mlong_double_
+libm_hidden_proto(cosl)
+# endif
+# if defined _LIBC && defined _Mfloat_
+libm_hidden_proto(cosf)
+# endif
+
/* Sine of X. */
__MATHCALLI (sin,, (_Mdouble_ __x))
+# if defined _LIBC && defined _Mlong_double_
+libm_hidden_proto(sinl)
+# endif
+# if defined _LIBC && defined _Mfloat_
+libm_hidden_proto(sinf)
+# endif
+
/* Tangent of X. */
__MATHCALLI (tan,, (_Mdouble_ __x))
@@ -111,6 +125,9 @@ __END_NAMESPACE_C99
_Mdouble_BEGIN_NAMESPACE
/* Exponential function of X. */
__MATHCALLI (exp,, (_Mdouble_ __x))
+# if defined _LIBC && defined _Mlong_double_
+libm_hidden_proto(expl)
+# endif
/* Break VALUE into a normalized fraction and an integral power of 2. */
__MATHCALLI (frexp,, (_Mdouble_ __x, int *__exponent))
@@ -173,6 +190,9 @@ _Mdouble_END_NAMESPACE
__BEGIN_NAMESPACE_C99
/* Return `sqrt(X*X + Y*Y)'. */
__MATHCALLI (hypot,, (_Mdouble_ __x, _Mdouble_ __y))
+# if defined _LIBC && defined _Mlong_double_
+libm_hidden_proto(hypotl)
+# endif
__END_NAMESPACE_C99
#endif
@@ -298,6 +318,9 @@ __MATHCALLI (rint,, (_Mdouble_ __x))
/* Return X + epsilon if X < Y, X - epsilon if X > Y. */
__MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__))
+# if defined _LIBC && defined _Mlong_double_
+libm_hidden_proto(nextafterl)
+# endif
# if defined __USE_ISOC99 && !defined __LDBL_COMPAT
__MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__))
# endif
diff --git a/libc/sysdeps/linux/common/getrusage.c b/libc/sysdeps/linux/common/getrusage.c
index 3e719f2..fb7614b 100644
--- a/libc/sysdeps/linux/common/getrusage.c
+++ b/libc/sysdeps/linux/common/getrusage.c
@@ -10,4 +10,5 @@
#include <sys/syscall.h>
#include <unistd.h>
#include <wait.h>
+#include <sys/resource.h>
_syscall2(int, getrusage, __rusage_who_t, who, struct rusage *, usage)
diff --git a/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c b/libc/sysdeps/linux/common/makedev.c
similarity index 51%
copy from libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c
copy to libc/sysdeps/linux/common/makedev.c
index a5cd73f..d776167 100644
--- a/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c
+++ b/libc/sysdeps/linux/common/makedev.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Definitions of functions to access `dev_t' values.
+ Copyright (C) 2003-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -15,25 +16,27 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-/* Because some objects in ld.so and libc.so are built with
- -fexceptions, we end up with references to this personality
- routine. However, these libraries are not linked against
- libgcc_eh.a, so we need a dummy definition. This routine will
- never actually be called. */
+#include <endian.h>
+#include <sys/sysmacros.h>
-#include <stdlib.h>
-
-attribute_hidden void __aeabi_unwind_cpp_pr0 (void);
-attribute_hidden void __aeabi_unwind_cpp_pr0 (void)
+unsigned int
+gnu_dev_major (unsigned long long int dev)
{
+ return ((dev >> 8) & 0xfff) | ((unsigned int) (dev >> 32) & ~0xfff);
}
+libc_hidden_def(gnu_dev_major)
-attribute_hidden void __aeabi_unwind_cpp_pr1 (void);
-attribute_hidden void __aeabi_unwind_cpp_pr1 (void)
+unsigned int
+gnu_dev_minor (unsigned long long int dev)
{
+ return (dev & 0xff) | ((unsigned int) (dev >> 12) & ~0xff);
}
+libc_hidden_def(gnu_dev_minor)
-attribute_hidden void __aeabi_unwind_cpp_pr2 (void);
-attribute_hidden void __aeabi_unwind_cpp_pr2 (void)
+unsigned long long int
+gnu_dev_makedev (unsigned int major, unsigned int minor)
{
+ return ((minor & 0xff) | ((major & 0xfff) << 8)
+ | (((unsigned long long int) (minor & ~0xff)) << 12)
+ | (((unsigned long long int) (major & ~0xfff)) << 32));
}
diff --git a/libm/Makefile.in b/libm/Makefile.in
index 7511706..d886cdb 100644
--- a/libm/Makefile.in
+++ b/libm/Makefile.in
@@ -75,9 +75,6 @@ libm_CSRC := \
s_remquo.c w_exp2.c \
cexp.c sincos.c
-# Not implemented [yet?], see comment in float_wrappers.c:
-# fdimf.o fmaf.o fmaxf.o fminf.o
-# nearbyintf.o remquof.o scalblnf.o tgammaf.o
FL_MOBJ := \
acosf.o \
acoshf.o \
@@ -98,7 +95,11 @@ FL_MOBJ := \
expf.o \
expm1f.o \
fabsf.o \
+ fdimf.o \
floorf.o \
+ fmaf.o \
+ fmaxf.o \
+ fminf.o \
fmodf.o \
frexpf.o \
gammaf.o \
@@ -116,11 +117,14 @@ FL_MOBJ := \
lrintf.o \
lroundf.o \
modff.o \
+ nearbyintf.o \
+ nexttowardf.o \
powf.o \
remainderf.o \
+ remquof.o \
rintf.o \
roundf.o \
- scalbf.o \
+ scalblnf.o \
scalbnf.o \
significandf.o \
sinf.o \
@@ -128,9 +132,24 @@ FL_MOBJ := \
sqrtf.o \
tanf.o \
tanhf.o \
+ tgammaf.o \
truncf.o \
-# Not implemented [yet?]: nexttowardl.o
+ifeq ($(UCLIBC_SUSV3_LEGACY),y)
+FL_MOBJ += scalbf.o
+endif
+
+# Do not (yet?) implement the float variants of bessel functions
+ifeq (not-yet-implemented-$(DO_XSI_MATH),y)
+FL_MOBJ += \
+ j0f.o \
+ j1f.o \
+ jnf.o \
+ y0f.o \
+ y1f.o \
+ ynf.o
+endif
+
LD_MOBJ := \
__finitel.o \
__fpclassifyl.o \
@@ -180,6 +199,7 @@ LD_MOBJ := \
modfl.o \
nearbyintl.o \
nextafterl.o \
+ nexttowardl.o \
powl.o \
remainderl.o \
remquol.o \
@@ -196,6 +216,17 @@ LD_MOBJ := \
tgammal.o \
truncl.o \
+# Do not (yet?) implement the long double variants of bessel functions
+ifeq (not-yet-implemented-$(DO_XSI_MATH),y)
+LD_MOBJ += \
+ j0l.o \
+ j1l.o \
+ jnl.o \
+ y0l.o \
+ y1l.o \
+ ynl.o
+endif
+
else
# This list of math functions was taken from POSIX/IEEE 1003.1b-1993
diff --git a/libm/float_wrappers.c b/libm/float_wrappers.c
index 82b7963..105486e 100644
--- a/libm/float_wrappers.c
+++ b/libm/float_wrappers.c
@@ -38,19 +38,14 @@ long long func##f (float x) \
return func((double)x); \
}
-
-/* For the time being, do _NOT_ implement these functions
- * that are defined by SuSv3 [because we don't need them
- * and nobody asked to include them] */
-#undef L_fdimf /*float fdimf(float, float);*/
-#undef L_fmaf /*float fmaf(float, float, float);*/
-#undef L_fmaxf /*float fmaxf(float, float);*/
-#undef L_fminf /*float fminf(float, float);*/
-#undef L_nearbyintf /*float nearbyintf(float);*/
-#undef L_nexttowardf /*float nexttowardf(float, long double);*/
-#undef L_remquof /*float remquof(float, float, int *);*/
-#undef L_scalblnf /*float scalblnf(float, long);*/
-#undef L_tgammaf /*float tgammaf(float);*/
+#ifndef __DO_XSI_MATH__
+# undef L_j0f /* float j0f(float x); */
+# undef L_j1f /* float j1f(float x); */
+# undef L_jnf /* float jnf(int n, float x); */
+# undef L_y0f /* float y0f(float x); */
+# undef L_y1f /* float y1f(float x); */
+# undef L_ynf /* float ynf(int n, float x); */
+#endif
/* Implement the following, as defined by SuSv3 */
#if 0
@@ -155,6 +150,7 @@ float copysignf (float x, float y)
#ifdef L_cosf
WRAPPER1(cos)
+libm_hidden_def(cosf)
#endif
#ifdef L_coshf
@@ -242,6 +238,21 @@ float hypotf (float x, float y)
int_WRAPPER1(ilogb)
#endif
+#ifdef L_j0f
+WRAPPER1(j0)
+#endif
+
+#ifdef L_j1f
+WRAPPER1(j1)
+#endif
+
+#ifdef L_jnf
+float jnf(int n, float x)
+{
+ return (float) jn(n, (double)x);
+}
+#endif
+
#ifdef L_ldexpf
float ldexpf (float x, int _exp)
{
@@ -306,7 +317,7 @@ WRAPPER1(nearbyint)
#ifdef L_nexttowardf
float nexttowardf (float x, long double y)
{
- return (float) nexttoward( (double)x, (double)y );
+ return (float) nexttoward( (double)x, (long double)y );
}
#endif
@@ -355,6 +366,7 @@ float scalbnf (float x, int _exp)
#ifdef L_sinf
WRAPPER1(sin)
+libm_hidden_def(sinf)
#endif
#ifdef L_sinhf
@@ -381,13 +393,6 @@ WRAPPER1(tgamma)
WRAPPER1(trunc)
#endif
-#ifdef L_fmaf
-float fmaf (float x, float y, float z)
-{
- return (float) fma( (double)x, (double)y, (double)z );
-}
-#endif
-
#if defined L_scalbf && defined __UCLIBC_SUSV3_LEGACY__
float scalbf (float x, float y)
{
@@ -402,3 +407,18 @@ WRAPPER1(gamma)
#ifdef L_significandf
WRAPPER1(significand)
#endif
+
+#ifdef L_y0f
+WRAPPER1(y0)
+#endif
+
+#ifdef L_y1f
+WRAPPER1(y1)
+#endif
+
+#ifdef L_ynf
+float ynf(int n, float x)
+{
+ return (float) yn(n, (double)x);
+}
+#endif
diff --git a/libm/ldouble_wrappers.c b/libm/ldouble_wrappers.c
index 118a78f..b4215cb 100644
--- a/libm/ldouble_wrappers.c
+++ b/libm/ldouble_wrappers.c
@@ -42,6 +42,15 @@ long long func##l(long double x) \
return func((double) x); \
}
+#ifndef __DO_XSI_MATH__
+# undef L_j0l /* long double j0l(long double x); */
+# undef L_j1l /* long double j1l(long double x); */
+# undef L_jnl /* long double jnl(int n, long double x); */
+# undef L_y0l /* long double y0l(long double x); */
+# undef L_y1l /* long double y1l(long double x); */
+# undef L_ynl /* long double ynl(int n, long double x); */
+#endif
+
/* Implement the following, as defined by SuSv3 */
#if 0
long double acoshl(long double);
@@ -156,6 +165,7 @@ WRAPPER1(cosh)
#ifdef L_cosl
WRAPPER1(cos)
+libm_hidden_def(cosl)
#endif
#ifdef L_erfcl
@@ -172,6 +182,7 @@ WRAPPER1(exp2)
#ifdef L_expl
WRAPPER1(exp)
+libm_hidden_def(expl)
#endif
#ifdef L_expm1l
@@ -222,12 +233,28 @@ WRAPPER1(gamma)
#ifdef L_hypotl
WRAPPER2(hypot)
+libm_hidden_def(hypotl)
#endif
#ifdef L_ilogbl
int_WRAPPER1(ilogb)
#endif
+#ifdef L_j0l
+ WRAPPER1(j0)
+#endif
+
+#ifdef L_j1l
+ WRAPPER1(j1)
+#endif
+
+#ifdef L_jnl
+long double jnl(int n, long double x)
+{
+ return (long double) jn(n, (double)x);
+}
+#endif
+
#ifdef L_ldexpl
long double ldexpl (long double x, int ex)
{
@@ -291,12 +318,18 @@ WRAPPER1(nearbyint)
#ifdef L_nextafterl
WRAPPER2(nextafter)
+libm_hidden_def(nextafterl)
#endif
-/* Disabled in Makefile.in */
-#if 0 /* def L_nexttowardl */
-WRAPPER2(nexttoward)
-libm_hidden_def(nexttowardl)
+#ifdef L_nexttowardl
+# if 0 /* TODO */
+strong_alias(nextafterl, nexttowardl)
+# else
+long double nexttowardl(long double x, long double y)
+{
+ return nextafterl(x, y);
+}
+#endif
#endif
#ifdef L_powl
@@ -344,6 +377,7 @@ WRAPPER1(sinh)
#ifdef L_sinl
WRAPPER1(sin)
+libm_hidden_def(sinl)
#endif
#ifdef L_sqrtl
@@ -370,6 +404,22 @@ WRAPPER1(trunc)
WRAPPER1(significand)
#endif
+#ifdef L_y0l
+WRAPPER1(y0)
+#endif
+
+#ifdef L_y1l
+WRAPPER1(y1)
+#endif
+
+#ifdef L_ynl
+long double ynl(int n, long double x)
+{
+ return (long double) yn(n, (double)x);
+}
+#endif
+
+
#if defined __DO_C99_MATH__ && !defined __NO_LONG_DOUBLE_MATH
# ifdef L___fpclassifyl
diff --git a/libm/s_fdim.c b/libm/s_fdim.c
index 6249219..6ed695c 100644
--- a/libm/s_fdim.c
+++ b/libm/s_fdim.c
@@ -6,13 +6,22 @@
#include "math.h"
#include "math_private.h"
+#include <errno.h>
double fdim(double x, double y)
{
- int c = __fpclassify(x);
- if (c == FP_NAN || c == FP_INFINITE)
- return HUGE_VAL;
+ int cx = __fpclassify(x); /* need both NAN and INF */
+ int cy = __fpclassify(y); /* need both NAN and INF */
+ if (cx == FP_NAN || cy == NAN)
+ return x - y;
- return x > y ? x - y : 0.0;
+ if (x <= y)
+ return .0;
+
+ double z = x - y;
+ if (isinf(z) && cx != FP_INFINITE && cy != FP_INFINITE)
+ __set_errno(ERANGE);
+
+ return z;
}
libm_hidden_def(fdim)
diff --git a/libm/s_fmax.c b/libm/s_fmax.c
index 21dfaa9..5f29ad8 100644
--- a/libm/s_fmax.c
+++ b/libm/s_fmax.c
@@ -9,10 +9,10 @@
double fmax(double x, double y)
{
- if (__fpclassify(x) == FP_NAN)
- return x;
- if (__fpclassify(y) == FP_NAN)
+ if (isnan(x))
return y;
+ if (isnan(y))
+ return x;
return x > y ? x : y;
}
diff --git a/libm/s_fmin.c b/libm/s_fmin.c
index 674d9a5..a549678 100644
--- a/libm/s_fmin.c
+++ b/libm/s_fmin.c
@@ -9,10 +9,10 @@
double fmin(double x, double y)
{
- if (__fpclassify(x) == FP_NAN)
- return x;
- if (__fpclassify(y) == FP_NAN)
+ if (isnan(x))
return y;
+ if (isnan(y))
+ return x;
return x < y ? x : y;
}
diff --git a/libm/s_nextafter.c b/libm/s_nextafter.c
index ee4621c..73a8ab2 100644
--- a/libm/s_nextafter.c
+++ b/libm/s_nextafter.c
@@ -32,7 +32,7 @@ double nextafter(double x, double y)
if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || /* x is nan */
((iy>=0x7ff00000)&&((iy-0x7ff00000)|ly)!=0)) /* y is nan */
return x+y;
- if(x==y) return x; /* x=y, return x */
+ if(x==y) return y; /* x=y, return y */
if((ix|lx)==0) { /* x == 0 */
INSERT_WORDS(x,hy&0x80000000,1); /* return +-minsubnormal */
y = x*x;
@@ -68,3 +68,5 @@ double nextafter(double x, double y)
return x;
}
libm_hidden_def(nextafter)
+strong_alias_untyped(nextafter, nexttoward)
+libm_hidden_def(nexttoward)
diff --git a/libpthread/linuxthreads.old/semaphore.h b/libpthread/linuxthreads.old/semaphore.h
index 9a9b72c..3924a47 100644
--- a/libpthread/linuxthreads.old/semaphore.h
+++ b/libpthread/linuxthreads.old/semaphore.h
@@ -82,10 +82,10 @@ extern int sem_timedwait (sem_t *__restrict __sem,
#endif
/* Test whether SEM is posted. */
-extern int sem_trywait (sem_t *__sem) __THROW;
+extern int sem_trywait (sem_t *__sem) __THROWNL;
/* Post SEM. */
-extern int sem_post (sem_t *__sem) __THROW;
+extern int sem_post (sem_t *__sem) __THROWNL;
/* Get current value of SEM and store it in *SVAL. */
extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
diff --git a/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h b/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h
index 46c1010..879bcea 100644
--- a/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h
+++ b/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h
@@ -163,7 +163,7 @@ enum
extern int pthread_create (pthread_t *__restrict __threadp,
const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
- void *__restrict __arg) __THROW;
+ void *__restrict __arg) __THROWNL;
/* Obtain the identifier of the current thread. */
extern pthread_t pthread_self (void) __THROW;
@@ -340,20 +340,20 @@ extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) __THROW;
/* Try to lock MUTEX. */
-extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) __THROW;
+extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) __THROWNL;
/* Wait until lock for MUTEX becomes available and lock it. */
-extern int pthread_mutex_lock (pthread_mutex_t *__mutex) __THROW;
+extern int pthread_mutex_lock (pthread_mutex_t *__mutex) __THROWNL;
#ifdef __USE_XOPEN2K
/* Wait until lock becomes available, or specified time passes. */
extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict
- __abstime) __THROW;
+ __abstime) __THROWNL;
#endif
/* Unlock MUTEX. */
-extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) __THROW;
+extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) __THROWNL;
/* Functions for handling mutex attributes. */
@@ -401,11 +401,11 @@ extern int pthread_cond_destroy (pthread_cond_t *__cond) __THROW;
libpthread_hidden_proto(pthread_cond_destroy)
/* Wake up one thread waiting for condition variable COND. */
-extern int pthread_cond_signal (pthread_cond_t *__cond) __THROW;
+extern int pthread_cond_signal (pthread_cond_t *__cond) __THROWNL;
libpthread_hidden_proto(pthread_cond_signal)
/* Wake up all threads waiting for condition variables COND. */
-extern int pthread_cond_broadcast (pthread_cond_t *__cond) __THROW;
+extern int pthread_cond_broadcast (pthread_cond_t *__cond) __THROWNL;
libpthread_hidden_proto(pthread_cond_broadcast)
/* Wait for condition variable COND to be signaled or broadcast.
@@ -457,33 +457,33 @@ extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) __THROW;
/* Acquire read lock for RWLOCK. */
-extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) __THROWNL;
/* Try to acquire read lock for RWLOCK. */
-extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) __THROWNL;
# ifdef __USE_XOPEN2K
/* Try to acquire read lock for RWLOCK or return after specfied time. */
extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
- __abstime) __THROW;
+ __abstime) __THROWNL;
# endif
/* Acquire write lock for RWLOCK. */
-extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) __THROWNL;
/* Try to acquire write lock for RWLOCK. */
-extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) __THROWNL;
# ifdef __USE_XOPEN2K
/* Try to acquire write lock for RWLOCK or return after specfied time. */
extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
- __abstime) __THROW;
+ __abstime) __THROWNL;
# endif
/* Unlock RWLOCK. */
-extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) __THROWNL;
/* Functions for handling read-write lock attributes. */
@@ -528,13 +528,13 @@ extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
extern int pthread_spin_destroy (pthread_spinlock_t *__lock) __THROW;
/* Wait until spinlock LOCK is retrieved. */
-extern int pthread_spin_lock (pthread_spinlock_t *__lock) __THROW;
+extern int pthread_spin_lock (pthread_spinlock_t *__lock) __THROWNL;
/* Try to lock spinlock LOCK. */
-extern int pthread_spin_trylock (pthread_spinlock_t *__lock) __THROW;
+extern int pthread_spin_trylock (pthread_spinlock_t *__lock) __THROWNL;
/* Release spinlock LOCK. */
-extern int pthread_spin_unlock (pthread_spinlock_t *__lock) __THROW;
+extern int pthread_spin_unlock (pthread_spinlock_t *__lock) __THROWNL;
/* Barriers are a also a new feature in 1003.1j-2000. */
@@ -556,7 +556,7 @@ extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
int __pshared) __THROW;
-extern int pthread_barrier_wait (pthread_barrier_t *__barrier) __THROW;
+extern int pthread_barrier_wait (pthread_barrier_t *__barrier) __THROWNL;
#endif
#endif
diff --git a/libpthread/linuxthreads/semaphore.h b/libpthread/linuxthreads/semaphore.h
index 7f3dbad..7ab772b 100644
--- a/libpthread/linuxthreads/semaphore.h
+++ b/libpthread/linuxthreads/semaphore.h
@@ -82,10 +82,10 @@ extern int sem_timedwait (sem_t *__restrict __sem,
#endif
/* Test whether SEM is posted. */
-extern int sem_trywait (sem_t *__sem) __THROW;
+extern int sem_trywait (sem_t *__sem) __THROWNL;
/* Post SEM. */
-extern int sem_post (sem_t *__sem) __THROW;
+extern int sem_post (sem_t *__sem) __THROWNL;
/* Get current value of SEM and store it in *SVAL. */
extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
diff --git a/libpthread/linuxthreads/sysdeps/pthread/pthread.h b/libpthread/linuxthreads/sysdeps/pthread/pthread.h
index 94ed95c..df01c11 100644
--- a/libpthread/linuxthreads/sysdeps/pthread/pthread.h
+++ b/libpthread/linuxthreads/sysdeps/pthread/pthread.h
@@ -163,7 +163,7 @@ enum
extern int pthread_create (pthread_t *__restrict __threadp,
const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
- void *__restrict __arg) __THROW;
+ void *__restrict __arg) __THROWNL;
/* Obtain the identifier of the current thread. */
extern pthread_t pthread_self (void) __THROW;
@@ -331,20 +331,20 @@ extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) __THROW;
/* Try to lock MUTEX. */
-extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) __THROW;
+extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) __THROWNL;
/* Wait until lock for MUTEX becomes available and lock it. */
-extern int pthread_mutex_lock (pthread_mutex_t *__mutex) __THROW;
+extern int pthread_mutex_lock (pthread_mutex_t *__mutex) __THROWNL;
#ifdef __USE_XOPEN2K
/* Wait until lock becomes available, or specified time passes. */
extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict
- __abstime) __THROW;
+ __abstime) __THROWNL;
#endif
/* Unlock MUTEX. */
-extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) __THROW;
+extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) __THROWNL;
/* Functions for handling mutex attributes. */
@@ -390,10 +390,10 @@ extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
extern int pthread_cond_destroy (pthread_cond_t *__cond) __THROW;
/* Wake up one thread waiting for condition variable COND. */
-extern int pthread_cond_signal (pthread_cond_t *__cond) __THROW;
+extern int pthread_cond_signal (pthread_cond_t *__cond) __THROWNL;
/* Wake up all threads waiting for condition variables COND. */
-extern int pthread_cond_broadcast (pthread_cond_t *__cond) __THROW;
+extern int pthread_cond_broadcast (pthread_cond_t *__cond) __THROWNL;
/* Wait for condition variable COND to be signaled or broadcast.
MUTEX is assumed to be locked before. */
@@ -440,33 +440,33 @@ extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) __THROW;
/* Acquire read lock for RWLOCK. */
-extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) __THROWNL;
/* Try to acquire read lock for RWLOCK. */
-extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) __THROWNL;
# ifdef __USE_XOPEN2K
/* Try to acquire read lock for RWLOCK or return after specfied time. */
extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
- __abstime) __THROW;
+ __abstime) __THROWNL;
# endif
/* Acquire write lock for RWLOCK. */
-extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) __THROWNL;
/* Try to acquire write lock for RWLOCK. */
-extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) __THROWNL;
# ifdef __USE_XOPEN2K
/* Try to acquire write lock for RWLOCK or return after specfied time. */
extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
- __abstime) __THROW;
+ __abstime) __THROWNL;
# endif
/* Unlock RWLOCK. */
-extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) __THROW;
+extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) __THROWNL;
/* Functions for handling read-write lock attributes. */
@@ -508,13 +508,13 @@ extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
extern int pthread_spin_destroy (pthread_spinlock_t *__lock) __THROW;
/* Wait until spinlock LOCK is retrieved. */
-extern int pthread_spin_lock (pthread_spinlock_t *__lock) __THROW;
+extern int pthread_spin_lock (pthread_spinlock_t *__lock) __THROWNL;
/* Try to lock spinlock LOCK. */
-extern int pthread_spin_trylock (pthread_spinlock_t *__lock) __THROW;
+extern int pthread_spin_trylock (pthread_spinlock_t *__lock) __THROWNL;
/* Release spinlock LOCK. */
-extern int pthread_spin_unlock (pthread_spinlock_t *__lock) __THROW;
+extern int pthread_spin_unlock (pthread_spinlock_t *__lock) __THROWNL;
/* Barriers are a also a new feature in 1003.1j-2000. */
@@ -536,7 +536,7 @@ extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
int __pshared) __THROW;
-extern int pthread_barrier_wait (pthread_barrier_t *__barrier) __THROW;
+extern int pthread_barrier_wait (pthread_barrier_t *__barrier) __THROWNL;
#endif
diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in
index cdf07cf..0a981cd 100644
--- a/libpthread/nptl/Makefile.in
+++ b/libpthread/nptl/Makefile.in
@@ -21,7 +21,7 @@ libpthread-routines- += allocatestack.c # dummy included by pthread_create.c
libpthread-routines- += pthread_mutex_getprioceiling.c pthread_mutex_setprioceiling.c # XXX: delete those or use them!
libpthread-routines-$(UCLIBC_HAS_RESOLVER_SUPPORT) += res.c
libpthread-routines-$(UCLIBC_SUSV4_LEGACY) += pthread_getconcurrency.c \
- pthread_setconcurrency
+ pthread_setconcurrency.c
libpthread_CSRC = $(filter-out $(libpthread-routines-) \
$(libc-shared-routines-y) \
$(libc-static-routines-y) \
diff --git a/libpthread/nptl/semaphore.h b/libpthread/nptl/semaphore.h
index aa0f929..c7f195b 100644
--- a/libpthread/nptl/semaphore.h
+++ b/libpthread/nptl/semaphore.h
@@ -63,10 +63,10 @@ extern int sem_timedwait (sem_t *__restrict __sem,
#endif
/* Test whether SEM is posted. */
-extern int sem_trywait (sem_t *__sem) __THROW;
+extern int sem_trywait (sem_t *__sem) __THROWNL;
/* Post SEM. */
-extern int sem_post (sem_t *__sem) __THROW;
+extern int sem_post (sem_t *__sem) __THROWNL;
/* Get current value of SEM and store it in *SVAL. */
extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
diff --git a/libpthread/nptl/sysdeps/pthread/pthread.h b/libpthread/nptl/sysdeps/pthread/pthread.h
index 896fb1b..4103a06 100644
--- a/libpthread/nptl/sysdeps/pthread/pthread.h
+++ b/libpthread/nptl/sysdeps/pthread/pthread.h
@@ -229,7 +229,7 @@ __BEGIN_DECLS
extern int pthread_create (pthread_t *__restrict __newthread,
const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
- void *__restrict __arg) __THROW __nonnull ((1, 3));
+ void *__restrict __arg) __THROWNL __nonnull ((1, 3));
/* Terminate calling thread.
@@ -271,7 +271,8 @@ extern int pthread_detach (pthread_t __th) __THROW;
extern pthread_t pthread_self (void) __THROW __attribute__ ((__const__));
/* Compare two thread identifiers. */
-extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __THROW;
+extern int pthread_equal (pthread_t __thread1, pthread_t __thread2)
+ __THROW __attribute__ ((__const__));
/* Thread attribute handling. */
@@ -308,8 +309,7 @@ extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
/* Return in *PARAM the scheduling parameters of *ATTR. */
-extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict
- __attr,
+extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr,
struct sched_param *__restrict __param)
__THROW __nonnull ((1, 2));
@@ -643,9 +643,9 @@ __pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame)
__pthread_unwind_buf_t __cancel_buf; \
void (*__cancel_routine) (void *) = (routine); \
void *__cancel_arg = (arg); \
- int not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *) \
+ int __not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *) \
__cancel_buf.__cancel_jmp_buf, 0); \
- if (__builtin_expect (not_first_call, 0)) \
+ if (__builtin_expect (__not_first_call, 0)) \
{ \
__cancel_routine (__cancel_arg); \
__pthread_unwind_next (&__cancel_buf); \
@@ -678,9 +678,9 @@ extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
__pthread_unwind_buf_t __cancel_buf; \
void (*__cancel_routine) (void *) = (routine); \
void *__cancel_arg = (arg); \
- int not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *) \
+ int __not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *) \
__cancel_buf.__cancel_jmp_buf, 0); \
- if (__builtin_expect (not_first_call, 0)) \
+ if (__builtin_expect (__not_first_call, 0)) \
{ \
__cancel_routine (__cancel_arg); \
__pthread_unwind_next (&__cancel_buf); \
@@ -717,7 +717,7 @@ extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
/* Function used in the macros. */
struct __jmp_buf_tag;
-extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __THROW;
+extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __THROWNL;
/* Mutex handling. */
@@ -733,22 +733,22 @@ extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
/* Try locking a mutex. */
extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Lock a mutex. */
extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
#ifdef __USE_XOPEN2K
/* Wait until lock becomes available, or specified time passes. */
extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict
- __abstime) __THROW __nonnull ((1, 2));
+ __abstime) __THROWNL __nonnull ((1, 2));
#endif
/* Unlock a mutex. */
extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Get the priority ceiling of MUTEX. */
@@ -872,37 +872,37 @@ extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
/* Acquire read lock for RWLOCK. */
extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Try to acquire read lock for RWLOCK. */
extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
# ifdef __USE_XOPEN2K
/* Try to acquire read lock for RWLOCK or return after specfied time. */
extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
- __abstime) __THROW __nonnull ((1, 2));
+ __abstime) __THROWNL __nonnull ((1, 2));
# endif
/* Acquire write lock for RWLOCK. */
extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Try to acquire write lock for RWLOCK. */
extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
# ifdef __USE_XOPEN2K
/* Try to acquire write lock for RWLOCK or return after specfied time. */
extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
- __abstime) __THROW __nonnull ((1, 2));
+ __abstime) __THROWNL __nonnull ((1, 2));
# endif
/* Unlock RWLOCK. */
extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Functions for handling read-write lock attributes. */
@@ -943,8 +943,8 @@ extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
/* Initialize condition variable COND using attributes ATTR, or use
the default values if later is NULL. */
extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
- const pthread_condattr_t *__restrict
- __cond_attr) __THROW __nonnull ((1));
+ const pthread_condattr_t *__restrict __cond_attr)
+ __THROW __nonnull ((1));
/* Destroy condition variable COND. */
extern int pthread_cond_destroy (pthread_cond_t *__cond)
@@ -952,11 +952,11 @@ extern int pthread_cond_destroy (pthread_cond_t *__cond)
/* Wake up one thread waiting for condition variable COND. */
extern int pthread_cond_signal (pthread_cond_t *__cond)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Wake up all threads waiting for condition variables COND. */
extern int pthread_cond_broadcast (pthread_cond_t *__cond)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Wait for condition variable COND to be signaled or broadcast.
MUTEX is assumed to be locked before.
@@ -976,8 +976,8 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
__THROW. */
extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
pthread_mutex_t *__restrict __mutex,
- const struct timespec *__restrict
- __abstime) __nonnull ((1, 2, 3));
+ const struct timespec *__restrict __abstime)
+ __nonnull ((1, 2, 3));
/* Functions for handling condition variable attributes. */
@@ -1000,13 +1000,13 @@ extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
int __pshared) __THROW __nonnull ((1));
#ifdef __USE_XOPEN2K
-/* Get the clock selected for the conditon variable attribute ATTR. */
+/* Get the clock selected for the condition variable attribute ATTR. */
extern int pthread_condattr_getclock (const pthread_condattr_t *
__restrict __attr,
__clockid_t *__restrict __clock_id)
__THROW __nonnull ((1, 2));
-/* Set the clock selected for the conditon variable attribute ATTR. */
+/* Set the clock selected for the condition variable attribute ATTR. */
extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
__clockid_t __clock_id)
__THROW __nonnull ((1));
@@ -1027,15 +1027,15 @@ extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
/* Wait until spinlock LOCK is retrieved. */
extern int pthread_spin_lock (pthread_spinlock_t *__lock)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Try to lock spinlock LOCK. */
extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Release spinlock LOCK. */
extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Functions to handle barriers. */
@@ -1053,7 +1053,7 @@ extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
/* Wait on barrier BARRIER. */
extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
- __THROW __nonnull ((1));
+ __THROWNL __nonnull ((1));
/* Initialize barrier attribute ATTR. */
diff --git a/test/math/compile_test.c b/test/math/compile_test.c
index ab8c40c..aedfde6 100644
--- a/test/math/compile_test.c
+++ b/test/math/compile_test.c
@@ -22,11 +22,11 @@ r += exp2f(float_x);
r += expf(float_x);
r += expm1f(float_x);
r += fabsf(float_x);
-/*r += fdimf(float_x, float_x); - uclibc does not have it (yet?) */
+r += fdimf(float_x, float_x);
r += floorf(float_x);
-/*r += fmaf(float_x, float_x, float_x); - uclibc does not have it (yet?) */
-/*r += fmaxf(float_x, float_x); - uclibc does not have it (yet?) */
-/*r += fminf(float_x, float_x); - uclibc does not have it (yet?) */
+r += fmaf(float_x, float_x, float_x);
+r += fmaxf(float_x, float_x);
+r += fminf(float_x, float_x);
r += fmodf(float_x, float_x);
r += frexpf(float_x, &int_x);
r += gammaf(float_x);
@@ -44,17 +44,17 @@ r += logf(float_x);
r += lrintf(float_x);
r += lroundf(float_x);
r += modff(float_x, &float_x);
-/*r += nearbyintf(float_x); - uclibc does not have it (yet?) */
-/*r += nexttowardf(float_x, long_double_x); - uclibc does not have it (yet?) */
+r += nearbyintf(float_x);
+r += nexttowardf(float_x, long_double_x);
r += powf(float_x, float_x);
r += remainderf(float_x, float_x);
-/*r += remquof(float_x, float_x, &int_x); - uclibc does not have it (yet?) */
+r += remquof(float_x, float_x, &int_x);
r += rintf(float_x);
r += roundf(float_x);
#ifdef __UCLIBC_SUSV3_LEGACY__
r += scalbf(float_x, float_x);
#endif
-/*r += scalblnf(float_x, long_x); - uclibc does not have it (yet?) */
+r += scalblnf(float_x, long_x);
r += scalbnf(float_x, int_x);
r += significandf(float_x);
r += sinf(float_x);
@@ -62,7 +62,7 @@ r += sinhf(float_x);
r += sqrtf(float_x);
r += tanf(float_x);
r += tanhf(float_x);
-/*r += tgammaf(float_x); - uclibc does not have it (yet?) */
+r += tgammaf(float_x);
r += truncf(float_x);
return r;
}
@@ -116,7 +116,7 @@ r += lroundl(long_double_x);
r += modfl(long_double_x, &long_double_x);
r += nearbyintl(long_double_x);
r += nextafterl(long_double_x, long_double_x);
-/* r += nexttowardl(long_double_x, long_double_x); - uclibc doesn't provide this [yet?] */
+r += nexttowardl(long_double_x, long_double_x);
r += powl(long_double_x, long_double_x);
r += remainderl(long_double_x, long_double_x);
r += remquol(long_double_x, long_double_x, &int_x);
diff --git a/test/math/libm-test.inc b/test/math/libm-test.inc
index d0f0a0c..8f0db3c 100644
--- a/test/math/libm-test.inc
+++ b/test/math/libm-test.inc
@@ -115,6 +115,9 @@
# define _GNU_SOURCE
#endif
+#undef __CHK_COMPLEX_STUFF
+#define __CHK_COMPLEX_STUFF 0
+
#include "libm-test-ulps.h"
#include <complex.h>
#include <math.h>
@@ -1120,8 +1123,10 @@ cacosh_test (void)
END (cacosh, complex);
}
+#endif
+#if __CHK_COMPLEX_STUFF
static void
carg_test (void)
{
@@ -1188,7 +1193,9 @@ carg_test (void)
END (carg);
}
+#endif /* __CHK_COMPLEX_STUFF */
+#if 0
static void
casin_test (void)
{
@@ -1683,7 +1690,7 @@ ceil_test (void)
}
-#if 0
+#if __CHK_COMPLEX_STUFF
static void
cexp_test (void)
{
@@ -1746,8 +1753,9 @@ cexp_test (void)
END (cexp, complex);
}
+#endif /* __CHK_COMPLEX_STUFF */
-
+#if 0
static void
cimag_test (void)
{
@@ -2588,7 +2596,6 @@ fabs_test (void)
}
-#if 0
static void
fdim_test (void)
{
@@ -2624,7 +2631,6 @@ fdim_test (void)
END (fdim);
}
-#endif
static void
@@ -2694,7 +2700,6 @@ floor_test (void)
}
-#if 0
static void
fma_test (void)
{
@@ -2797,7 +2802,6 @@ fmin_test (void)
END (fmin);
}
-#endif
static void
@@ -3002,7 +3006,7 @@ isnormal_test (void)
END (isnormal);
}
-#if defined __DO_XSI_MATH__
+#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT)
static void
j0_test (void)
{
@@ -3629,7 +3633,6 @@ modf_test (void)
}
-#if 0
static void
nearbyint_test (void)
{
@@ -3710,7 +3713,6 @@ nexttoward_test (void)
END (nexttoward);
}
-#endif
static void
@@ -3950,7 +3952,6 @@ remainder_test (void)
END (remainder);
}
-#if 0
static void
remquo_test (void)
{
@@ -3981,7 +3982,6 @@ remquo_test (void)
END (remquo);
}
-#endif
static void
rint_test (void)
@@ -4229,12 +4229,12 @@ round_test (void)
#endif
+#ifdef __UCLIBC_SUSV3_LEGACY__
static void
scalb_test (void)
{
START (scalb);
#ifndef TEST_LDOUBLE /* uclibc doesn't have scalbl */
-#ifdef __UCLIBC_SUSV3_LEGACY__ /* scalbf is susv3 legacy */
TEST_ff_f (scalb, 2.0, 0.5, nan_value, INVALID_EXCEPTION);
TEST_ff_f (scalb, 3.0, -2.5, nan_value, INVALID_EXCEPTION);
@@ -4285,11 +4285,10 @@ scalb_test (void)
TEST_ff_f (scalb, 0.8L, 4, 12.8L);
TEST_ff_f (scalb, -0.854375L, 5, -27.34L);
-#endif /* __UCLIBC_SUSV3_LEGACY__ */
#endif /* TEST_LDOUBLE */
END (scalb);
}
-
+#endif
static void
scalbn_test (void)
@@ -4313,7 +4312,6 @@ scalbn_test (void)
}
-#if 0
static void
scalbln_test (void)
{
@@ -4334,7 +4332,6 @@ scalbln_test (void)
END (scalbn);
}
-#endif
static void
@@ -4539,7 +4536,6 @@ tanh_test (void)
END (tanh);
}
-#if 0
static void
tgamma_test (void)
{
@@ -4571,7 +4567,6 @@ tgamma_test (void)
END (tgamma);
}
-#endif
#if 0
@@ -4651,7 +4646,7 @@ trunc_test (void)
}
#endif
-#if defined __DO_XSI_MATH__
+#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT)
static void
y0_test (void)
{
@@ -4979,11 +4974,11 @@ main (int argc, char **argv)
logb_test ();
modf_test ();
ilogb_test ();
+#ifdef __UCLIBC_SUSV3_LEGACY__
scalb_test ();
+#endif
scalbn_test ();
-#if 0
scalbln_test ();
-#endif
significand_test ();
/* Power and absolute value functions: */
@@ -4998,16 +4993,12 @@ main (int argc, char **argv)
erfc_test ();
gamma_test ();
lgamma_test ();
-#if 0
tgamma_test ();
-#endif
/* Nearest integer functions: */
ceil_test ();
floor_test ();
-#if 0
nearbyint_test ();
-#endif
rint_test ();
#if 0
rint_test_tonearest ();
@@ -5025,13 +5016,10 @@ main (int argc, char **argv)
/* Remainder functions: */
fmod_test ();
remainder_test ();
-#if 0
remquo_test ();
-#endif
/* Manipulation functions: */
copysign_test ();
-#if 0
nextafter_test ();
nexttoward_test ();
@@ -5043,24 +5031,29 @@ main (int argc, char **argv)
/* Multiply and add: */
fma_test ();
+
/* Complex functions: */
cabs_test ();
+#if __CHK_COMPLEX_STUFF
+#if 0
cacos_test ();
cacosh_test ();
+#endif
carg_test ();
+#if 0
casin_test ();
casinh_test ();
catan_test ();
catanh_test ();
ccos_test ();
ccosh_test ();
+#endif
cexp_test ();
+#if 0
cimag_test ();
clog10_test ();
clog_test ();
-#if 0
conj_test ();
-#endif
cpow_test ();
cproj_test ();
creal_test ();
@@ -5070,9 +5063,10 @@ main (int argc, char **argv)
ctan_test ();
ctanh_test ();
#endif
+#endif /* __CHK_COMPLEX_STUFF */
/* Bessel functions: */
-#if defined __DO_XSI_MATH__
+#if defined __DO_XSI_MATH__ && !(defined TEST_LDOUBLE || defined TEST_FLOAT)
j0_test ();
j1_test ();
jn_test ();
diff --git a/test/stdlib/Makefile.in b/test/stdlib/Makefile.in
index 53e5a72..df3440a 100644
--- a/test/stdlib/Makefile.in
+++ b/test/stdlib/Makefile.in
@@ -7,7 +7,12 @@ DODIFF_teston_exit := 1
DODIFF_teststrtol := 1
TESTS_DISABLED :=
+GLIBC_TESTS_DISABLED :=
ifeq ($(UCLIBC_HAS_PTY),)
TESTS_DISABLED += ptytest
endif
-
+ifeq ($(UCLIBC_HAS_ARC4RANDOM),)
+TESTS_DISABLED += testarc4random
+else
+GLIBC_TESTS_DISABLED += testarc4random
+endif
diff --git a/test/stdlib/testarc4random.c b/test/stdlib/testarc4random.c
index 4d773aa..14ff1cc 100644
--- a/test/stdlib/testarc4random.c
+++ b/test/stdlib/testarc4random.c
@@ -3,10 +3,8 @@
int main(void)
{
-#ifdef __UCLIBC_HAS_ARC4RANDOM__
int random_number;
random_number = arc4random() % 65536;
printf("%d\n", random_number);
-#endif
return 0;
}
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "uClibc-ng - small C library for embedded systems".
The branch, master has been updated
via 4ad33b2f16f3c537226698c961b488162b8fc548 (commit)
from 100a45b62db50be0a621ff7b0f38b2d8f5d0341b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 4ad33b2f16f3c537226698c961b488162b8fc548
Author: Max Filippov <jcmvbkbc(a)gmail.com>
Date: Sun Mar 8 15:15:13 2015 +0300
Makefile.in: add missing dependency on bits/sysnum.h to $(pregen-headers-y)
This fixes the following build error:
GEN include/bits/sysnum.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/structsem.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/structsem.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.h
In file included from ./libpthread/nptl/pthreadP.h:25:0,
from <stdin>:2:
./include/sys/syscall.h:24:25: fatal error: bits/sysnum.h: No such file or directory
#include <bits/sysnum.h>
^
compilation terminated.
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.h
make[1]: *** [libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h] Error 1
Signed-off-by: Max Filippov <jcmvbkbc(a)gmail.com>
-----------------------------------------------------------------------
Summary of changes:
Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.in b/Makefile.in
index 6dd473a..4dc3cd6 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -167,7 +167,7 @@ $(ALL_HEADERS_SYS_ARCH):
$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/sys/$(@F) $@
endif
-$(target-headers-sysdep) $(pregen-headers-y): | $(top_builddir)include/bits $(top_builddir)include/sys
+$(target-headers-sysdep) $(pregen-headers-y): | $(top_builddir)include/bits $(top_builddir)include/sys $(top_builddir)include/bits/sysnum.h
HEADERCLEAN_common:
$(do_rm) $(ALL_HEADERS_COMMON)
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "uClibc-ng - small C library for embedded systems".
The branch, master has been updated
via 633d9a3da5f6a1fed7defd93022a93a2cfd28f9a (commit)
from 9053b90bf3ab2f6f176c2e334db8010efd0d47ca (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 633d9a3da5f6a1fed7defd93022a93a2cfd28f9a
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Wed Mar 11 23:35:36 2015 -0500
resolve bfin with binfmt flat compile errors
gcc for bfin does not support -msoft-float.
Do not enable FDPIC stuff, when compiling FLAT binaries.
-----------------------------------------------------------------------
Summary of changes:
Rules.mak | 8 +-------
ldso/ldso/bfin/dl-sysdep.h | 12 +++---------
2 files changed, 4 insertions(+), 16 deletions(-)
diff --git a/Rules.mak b/Rules.mak
index 146ea72..d13604f 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -294,9 +294,7 @@ CPU_CFLAGS-y += $(CFLAG_-fno-asm)
LDADD_LIBFLOAT=
ifeq ($(UCLIBC_HAS_SOFT_FLOAT),y)
-# If -msoft-float isn't supported, we want an error anyway.
-# Hmm... might need to revisit this for arm since it has 2 different
-# soft float encodings.
+ifneq ($(TARGET_ARCH),bfin)
ifneq ($(TARGET_ARCH),nios2)
ifneq ($(TARGET_ARCH),sh)
ifneq ($(TARGET_ARCH),c6x)
@@ -304,10 +302,6 @@ CPU_CFLAGS-y += -msoft-float
endif
endif
endif
-ifeq ($(TARGET_ARCH),arm)
-# No longer needed with current toolchains, but leave it here for now.
-# If anyone is actually still using gcc 2.95 (say), they can uncomment it.
-# LDADD_LIBFLOAT=-lfloat
endif
endif
diff --git a/ldso/ldso/bfin/dl-sysdep.h b/ldso/ldso/bfin/dl-sysdep.h
index c965263..a026b64 100644
--- a/ldso/ldso/bfin/dl-sysdep.h
+++ b/ldso/ldso/bfin/dl-sysdep.h
@@ -79,6 +79,7 @@ while (0)
#define DL_MAP_SEGMENT(EPNT, PPNT, INFILE, FLAGS) \
__dl_map_segment (EPNT, PPNT, INFILE, FLAGS)
+#if defined(__FDPIC__)
#include "../fdpic/dl-sysdep.h"
static __always_inline Elf32_Addr
@@ -92,13 +93,6 @@ static __always_inline void
elf_machine_relative (DL_LOADADDR_TYPE load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
-#if 0
- Elf32_Rel * rpnt = (void *) rel_addr;
- --rpnt;
- do {
- Elf32_Addr *const reloc_addr = (void *) (load_off + (++rpnt)->r_offset);
-
- *reloc_addr = DL_RELOC_ADDR (load_off, *reloc_addr);
- } while (--relative_count);
-#endif
+ return 0;
}
+#endif
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "uClibc-ng - small C library for embedded systems".
The branch, master has been updated
via 9053b90bf3ab2f6f176c2e334db8010efd0d47ca (commit)
via 0484bf398b5bd5f4cefa09af7c63c7d63e0e4465 (commit)
via 140b3134bc74b2b486c2ae7b45d15a33214f2149 (commit)
from 65c8575fc44b7ac0fd58e3bbfb0a31975eaa1d10 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 9053b90bf3ab2f6f176c2e334db8010efd0d47ca
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Sun Mar 8 17:58:44 2015 -0500
remove duplicate entries
commit 0484bf398b5bd5f4cefa09af7c63c7d63e0e4465
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Mon Mar 9 01:48:19 2015 -0500
remove NAN selection, better do it in your build system
With older gcc than 4.9.x, this breaks the build.
These specific compiler flags belongs better to your
favorite build system.
commit 140b3134bc74b2b486c2ae7b45d15a33214f2149
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Wed Mar 11 20:33:38 2015 +0100
add defines from GNU libc to fix ltrace compile
Closes ticket #4.
http://www.uclibc-ng.org/trac/ticket/4
-----------------------------------------------------------------------
Summary of changes:
Rules.mak | 4 ----
extra/Configs/Config.arc | 17 -----------------
extra/Configs/Config.mips | 15 ---------------
include/elf.h | 5 +++++
4 files changed, 5 insertions(+), 36 deletions(-)
diff --git a/Rules.mak b/Rules.mak
index 720aca3..146ea72 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -402,10 +402,6 @@ ifeq ($(TARGET_ARCH),mips)
CPU_CFLAGS-$(CONFIG_MIPS_N64_ABI)+=-mabi=64
CPU_CFLAGS-$(CONFIG_MIPS_O32_ABI)+=-mabi=32
CPU_CFLAGS-$(CONFIG_MIPS_N32_ABI)+=-mabi=n32
-
- CPU_CFLAGS-$(CONFIG_MIPS_NAN_LEGACY)+=-mnan=legacy
- CPU_CFLAGS-$(CONFIG_MIPS_NAN_2008)+=-mnan=2008
-
CPU_LDFLAGS-y += $(CPU_CFLAGS)
endif
diff --git a/extra/Configs/Config.arc b/extra/Configs/Config.arc
index c5406c4..0c0bc71 100644
--- a/extra/Configs/Config.arc
+++ b/extra/Configs/Config.arc
@@ -44,20 +44,3 @@ config CONFIG_ARC_PAGE_SIZE_4K
bool "4KB"
endchoice
-
-choice
- prompt "MMU Page Size"
- default CONFIG_ARC_PAGE_SIZE_8K
-
-config CONFIG_ARC_PAGE_SIZE_8K
- bool "8KB"
- help
- Choose between 4k, 8k (default) or 16k
-
-config CONFIG_ARC_PAGE_SIZE_16K
- bool "16KB"
-
-config CONFIG_ARC_PAGE_SIZE_4K
- bool "4KB"
-
-endchoice
diff --git a/extra/Configs/Config.mips b/extra/Configs/Config.mips
index 76b10c6..4d30d31 100644
--- a/extra/Configs/Config.mips
+++ b/extra/Configs/Config.mips
@@ -33,21 +33,6 @@ config CONFIG_MIPS_N64_ABI
endchoice
choice
- prompt "Target NAN Encoding"
- default CONFIG_MIPS_NAN_LEGACY
- help
- This is the NAN Encoding you want to use. Chose either Legacy
- or 2008.
-
-config CONFIG_MIPS_NAN_LEGACY
- bool "LEGACY"
-
-config CONFIG_MIPS_NAN_2008
- bool "2008"
-
-endchoice
-
-choice
prompt "Target Processor Architecture"
default CONFIG_MIPS_ISA_1 if CONFIG_MIPS_O32_ABI
default CONFIG_MIPS_ISA_3 if CONFIG_MIPS_N32_ABI
diff --git a/include/elf.h b/include/elf.h
index 68ec7d7..18d286b 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -2350,6 +2350,11 @@ typedef Elf32_Addr Elf32_Conflict;
#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined
in the input to a link step */
+#define SHT_ARM_EXIDX (SHT_LOPROC + 1) /* ARM unwind section. */
+#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) /* Preemption details. */
+#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* ARM attributes section. */
+
+
/* ARM-specific program header flags */
#define PF_ARM_SB 0x10000000 /* Segment contains the location
addressed by the static base */
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "uClibc-ng - small C library for embedded systems".
The branch, 1.0 has been updated
via a8ef24af00206f92061753782e15f773f9bd135e (commit)
from 65aa786d3f6282da02d35b600e82408b47e0a3fe (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a8ef24af00206f92061753782e15f773f9bd135e
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Wed Mar 11 20:33:38 2015 +0100
add defines from GNU libc to fix ltrace compile
Closes ticket #4.
http://www.uclibc-ng.org/trac/ticket/4
-----------------------------------------------------------------------
Summary of changes:
include/elf.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/include/elf.h b/include/elf.h
index 68ec7d7..18d286b 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -2350,6 +2350,11 @@ typedef Elf32_Addr Elf32_Conflict;
#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined
in the input to a link step */
+#define SHT_ARM_EXIDX (SHT_LOPROC + 1) /* ARM unwind section. */
+#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) /* Preemption details. */
+#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* ARM attributes section. */
+
+
/* ARM-specific program header flags */
#define PF_ARM_SB 0x10000000 /* Segment contains the location
addressed by the static base */
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "uClibc-ng - small C library for embedded systems".
The branch, 1.0 has been updated
via 65aa786d3f6282da02d35b600e82408b47e0a3fe (commit)
via 1f70feb1b063a77c46fcc9427e77b1764d7e12a7 (commit)
via 184cb20881e080aafdac3076ef65c8a86ec49675 (commit)
from 3b8d53ecf756a2352227b6c12eefb63847318005 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 65aa786d3f6282da02d35b600e82408b47e0a3fe
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Mon Mar 9 01:48:19 2015 -0500
remove NAN selection, better do it in your build system
With older gcc than 4.9.x, this breaks the build.
These specific compiler flags belongs better to your
favorite build system.
commit 1f70feb1b063a77c46fcc9427e77b1764d7e12a7
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Sun Mar 8 17:59:34 2015 -0500
mark as git version
commit 184cb20881e080aafdac3076ef65c8a86ec49675
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Sun Mar 8 17:58:44 2015 -0500
remove duplicate entries
-----------------------------------------------------------------------
Summary of changes:
Rules.mak | 6 +-----
extra/Configs/Config.arc | 17 -----------------
extra/Configs/Config.mips | 15 ---------------
3 files changed, 1 insertion(+), 37 deletions(-)
diff --git a/Rules.mak b/Rules.mak
index 56ea7fb..5217004 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -127,7 +127,7 @@ export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS MULTILIB_DIR
MAJOR_VERSION := 1
MINOR_VERSION := 0
SUBLEVEL := 1
-EXTRAVERSION :=
+EXTRAVERSION :=-git
VERSION := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
ABI_VERSION := $(MAJOR_VERSION)
ifneq ($(EXTRAVERSION),)
@@ -404,10 +404,6 @@ ifeq ($(TARGET_ARCH),mips)
CPU_CFLAGS-$(CONFIG_MIPS_N64_ABI)+=-mabi=64
CPU_CFLAGS-$(CONFIG_MIPS_O32_ABI)+=-mabi=32
CPU_CFLAGS-$(CONFIG_MIPS_N32_ABI)+=-mabi=n32
-
- CPU_CFLAGS-$(CONFIG_MIPS_NAN_LEGACY)+=-mnan=legacy
- CPU_CFLAGS-$(CONFIG_MIPS_NAN_2008)+=-mnan=2008
-
CPU_LDFLAGS-y += $(CPU_CFLAGS)
endif
diff --git a/extra/Configs/Config.arc b/extra/Configs/Config.arc
index c5406c4..0c0bc71 100644
--- a/extra/Configs/Config.arc
+++ b/extra/Configs/Config.arc
@@ -44,20 +44,3 @@ config CONFIG_ARC_PAGE_SIZE_4K
bool "4KB"
endchoice
-
-choice
- prompt "MMU Page Size"
- default CONFIG_ARC_PAGE_SIZE_8K
-
-config CONFIG_ARC_PAGE_SIZE_8K
- bool "8KB"
- help
- Choose between 4k, 8k (default) or 16k
-
-config CONFIG_ARC_PAGE_SIZE_16K
- bool "16KB"
-
-config CONFIG_ARC_PAGE_SIZE_4K
- bool "4KB"
-
-endchoice
diff --git a/extra/Configs/Config.mips b/extra/Configs/Config.mips
index 76b10c6..4d30d31 100644
--- a/extra/Configs/Config.mips
+++ b/extra/Configs/Config.mips
@@ -33,21 +33,6 @@ config CONFIG_MIPS_N64_ABI
endchoice
choice
- prompt "Target NAN Encoding"
- default CONFIG_MIPS_NAN_LEGACY
- help
- This is the NAN Encoding you want to use. Chose either Legacy
- or 2008.
-
-config CONFIG_MIPS_NAN_LEGACY
- bool "LEGACY"
-
-config CONFIG_MIPS_NAN_2008
- bool "2008"
-
-endchoice
-
-choice
prompt "Target Processor Architecture"
default CONFIG_MIPS_ISA_1 if CONFIG_MIPS_O32_ABI
default CONFIG_MIPS_ISA_3 if CONFIG_MIPS_N32_ABI
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
This fixes the following build error:
GEN include/bits/sysnum.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/structsem.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/structsem.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelbarrier.h
GEN libpthread/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.h
In file included from ./libpthread/nptl/pthreadP.h:25:0,
from <stdin>:2:
./include/sys/syscall.h:24:25: fatal error: bits/sysnum.h: No such file or directory
#include <bits/sysnum.h>
^
compilation terminated.
GEN libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelcond.h
make[1]: *** [libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.h] Error 1
Signed-off-by: Max Filippov <jcmvbkbc(a)gmail.com>
---
Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.in b/Makefile.in
index 6dd473a..4dc3cd6 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -167,7 +167,7 @@ $(ALL_HEADERS_SYS_ARCH):
$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/sys/$(@F) $@
endif
-$(target-headers-sysdep) $(pregen-headers-y): | $(top_builddir)include/bits $(top_builddir)include/sys
+$(target-headers-sysdep) $(pregen-headers-y): | $(top_builddir)include/bits $(top_builddir)include/sys $(top_builddir)include/bits/sysnum.h
HEADERCLEAN_common:
$(do_rm) $(ALL_HEADERS_COMMON)
--
1.8.1.4
Hi Embedded Hackers,
I released 1.0.1 (Codename Pauwel Kwak) today.
Most important changes:
- fix non-MMU build on ARM (see #2)
- fix non-threading build on XTENSA
- fix static linking of some applications using threads (see #3)
- fix parallel building (thx Max Filippov)
- fix non-threading build on SPARC (thx Gustavo Zacarias)
- fix compilation for SH and XTENSA with GCC 4.9.2
- sync with uClibc changes including all ARC improvements
happy hacking,
Waldemar