Commit Graph

2335 Commits

Author SHA1 Message Date
Sebastian Huber 3156cdcc80 Move kernel dependent parts of <sys/time.h>
Move the kernel dependent parts of <sys/time.h> to new system-specific
header file <machine/_time.h>.  Provide an empty default implementation.
Add a specialized implementation for RTEMS.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-08 11:34:42 +02:00
Yaakov Selkowitz 3fc46dc562 math: fix isinf/isnan on SPU after move to math.h
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-07 10:18:22 -05:00
Sebastian Huber 9672033c63 Drop <unistd.h> include from RTEMS <sys/param.h>
This include is not present in default Newlib, glibc and FreeBSD
<sys/param.h>.  With it there is now a conflict with <sys/libkern.h>
introduced by ecf453f963.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-04-07 17:13:47 +02:00
Yaakov Selkowitz cd84d1c2d0 math: update isinf/isnan function comments after move to math.h
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-05 08:49:44 -05:00
Yaakov Selkowitz 722e363c4d math: guard BSD finite/isinf/isnan functions properly in math.h
Now that we have properly functioning feature test macros, the BSD
floating-point classification functions can go into math.h instead of
the non-standard ieeefp.h, and not under the C99 guard:

http://man7.org/linux/man-pages/man3/finite.3.html

The isnan function was in earlier versions of SUS but removed starting with
POSIX.1-2001, compare:

http://pubs.opengroup.org/onlinepubs/007908799/xsh/math.h.html
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/math.h.html

Note that the isinf and isnan functions (but not the variants) conflict
with functions by the same name in C++11, hence they (and only they)
need to be hidden:

https://sourceware.org/git/?p=glibc.git;a=commit;h=d9b965fa56350d6eea9f7f438a0714c7ffbb183f
https://sourceware.org/git/?p=glibc.git;a=commit;h=3c47c83a9730c20e602694505b9278c25637b0d0

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-04 14:13:21 -05:00
Yaakov Selkowitz 9e277154ab Feature test macros overhaul: tar.h
TSVTX was marked XSI beginning with SUSv3, compare:

http://pubs.opengroup.org/onlinepubs/007908799/xsh/tar.h.html
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/tar.h.html
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/tar.h.html

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-04 10:25:29 -05:00
Yaakov Selkowitz 3f00f4f9fc Add cpio.h
This header dates back to XPG3:

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/cpio.h.html

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-04 10:25:27 -05:00
Yaakov Selkowitz d55d03a87d cygwin: make POSIX/XSI version macros dependent on feature test macros
Each version of SUS specifies a different value for _POSIX_VERSION,
_POSIX2_VERSION, and _XOPEN_VERSION.  glibc also changes the value
of the other _POSIX2_ variables but not the _POSIX_* variables.

_POSIX_TIMERS should be set to a version number, not just 1.

The _POSIX_V7_* macros were missing, which was not noticed because
the V6 values were aliased in sysconf (<unistd.h>).

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-04-04 10:25:25 -05:00
Igor Venevtsev 5d3ad3b123 Add Intel MCU target
Intel MCU System V ABI are incompartible with i386 System V ABI:
    o Minimum instruction set is Intel Pentium ISA minus x87 instructions
    o No x87 or vector registers
    o First three args are passed in %eax, %edx and %ecx
    o Full specification available here:
      https://github.com/hjl-tools/x86-psABI/wiki/iamcu-psABI-0.7.pdf

newlib/
    * configure.host: Add new ix86-*-elfiamcu target

newlib/libc/include/
    * setjmp.h: Change _JBLEN for Intel MCU target

newlib/libc/machine/i386/
    * memchr.S:  (memchr)  Target-specific size-optimized version
    * memcmp.S:  (memcmp)  Likewise
    * memcpy.S:  (memcpy)  Likewise
    * memmove.S: (memmove) Likewise
    * memset.S:  (memset)  Likewise
    * setjmp.S:  (setjmp)  Likewise
    * strchr.S:  (strchr)  Likewise
    * strlen.S:  (strlen)  Likewise

newlib/libc/stdlib/
    * srtold.c:  (__flt_rounds) Disable for Intel MCU
2016-04-04 16:32:07 +02:00
Jeff Johnston fbc4a0827b Bump up newlib version to 2.4.0 due to feature test refactoring 2016-03-29 17:33:42 -04:00
Corinna Vinschen 792e51b721 Add missing long double functions to Cygwin
This patch adds the long double functions missing in newlib to Cygwin.
Apart from some self-written additions (exp10l, finite{f,l}, isinf{f,l},
isnan{f,l}, pow10l) the files are taken from the Mingw-w64 math lib.
Minor changes were required, e.g. substitue _WIN64 with __x86_64__ and
fixing __FLT_RPT_DOMAIN/__FLT_RPT_ERANGE for Cygwin.

Cygwin:
	* math: New subdir with math functions.
	* Makefile.in (VPATH): Add math subdir.
	(MATH_OFILES): List of object files collected from building files in
	math subdir.
	(DLL_OFILES): Add $(MATH_OFILES).
	${CURDIR}/libm.a: Add $(MATH_OFILES) to build.
	* common.din: Add new functions from math subdir.
	* i686.din: Align to new math subdir.  Remove functions now commonly
	available.
	* x86_64.din: Ditto.
	* math.h: math.h wrapper to define mingw structs used in some files in
	math subdir.
	* include/cygwin/version.h: Bump API minor version.

newlib:
	* libc/include/complex.h: Add prototypes for complex long double
	functions.  Only define for Cygwin.
	* libc/include/math.h: Additionally enable prototypes of long double
	functions for Cygwin.  Add Cygwin-only prototypes for dreml, sincosl,
	exp10l and pow10l.  Explain why we don't add them to newlib.
	* libc/include/tgmath.h: Enable long double handling on Cygwin.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-29 14:43:55 +02:00
Joel Sherrill ecf453f963 Add simple versions of random() and srandom()
Prototypes also added for initstate() and setstate() but they
were not implemented in the shared newlib code.

	* newlib/libc/include/cygwin/stdlib.h: Prototypes added.
	* winsup/cygwin/include/cygwin/stdlib.h: Prototypes removed.
	* newlib/libc/stdlib/random.c: New file.
	* newlib/libc/machine/epiphany/machine/stdlib.h: Removed
	* newlib/libc/stdlib/Makefile.am: Added random.c.
	* newlib/libc/stdlib/stdlib.tex: Added random.def.
	* newlib/libc/stdlib/Makefile.in: Regenerated.
2016-03-28 22:39:50 -05:00
Corinna Vinschen 799fdda4d2 math.h: Use GCC builtins for C99 macros where available
GCCs builtin functions are mostly type agnostic and architecture
indepedent.  Prefer to use them if available.

	* libc/include/math.h (fpclassify, isfinite, isinf, isnan,
	isnormal): Use matching GCC builtin functions if built with
	GCC 4.4 or later.
	(signbit): Use matching GCC builtin functions if built with
	GCC 4.0 or later.
	(isgreater, isgreaterequal, isless, islessequal, islessgreater,
	isunordered): Use matching GCC builtin functions if built with
	GCC 2.97 or later.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-26 20:33:46 +01:00
Corinna Vinschen 373f81d17c finitel: Use correct GCC builtin
__builtin_isinf_sign doesn't reflect the correct return value for NaN
to emulate finite function.  Use __builtin_isfinite instead whichg is available
since GCC 4.4 just as __builtin_isinf_sign.

	* libm/common/sl_finite.c (finitel): Use __builtin_isfinite.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-26 20:29:20 +01:00
Corinna Vinschen 3e446e9723 strtold: Fix Infinity value.
Infinity returned from strtold is recognized as NaN by GCC builtin
functions.  The reason is that ULtox is missing to set a bit.

	* libc/stdlib/strtorx.c (ULtox): Set high bit in second word
	to create valid Infinity value.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-26 20:27:18 +01:00
Corinna Vinschen b1b46d4580 Drop usage of old-age BSD types in generically used Cygwin headers
u_char, u_short, u_int, u_long are BSD-only types.  Remove them from
Cygwin headers which are supposed to be used in a non-BSD scenario.
Drop special Cygwin handling of those types in sys/types.h.

newlib:
	* libc/include/sys/types.h (u_char,u_short,u_int,u_long): Drop
	Cygwin exception.

cygwin:
	* fhandler_socket.cc (fhandler_socket::ioctl): Accommodate change
	in include/asm/socket.h.  Continue using u_long since that's the
	MS type here.
	* include/asm/socket.h: Since the type given in _IOR/_IOW macros
	is only used for its sizeof, replace u_long with equivalent long.
	* netdb.h (getnetbyaddr): Fix prototype.
	* netinet/ip.h: Replace old BSD-only types with generically defined
	old BSD types (u_char -> u_int8_t, etc).
	* netinet/tcp.h: Ditto.
	* netinet/udp.h: Ditto.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 15:55:25 +01:00
Corinna Vinschen db5bfdbd8a Define BSD u_intN_t types indiscriminately
The u_intN_t types are BSD types but sanctioned by POSIX.  They are
always defined when using Glibc headers so we follow suit.

newlib:
	* libc/include/sys/types.h: Drop outdated __INTTYPES_DEFINED__
	macro.  Always define u_intN_t types.

cygwin:
	* include/cygwin/types.h: Remove definition of u_intN_t types.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 15:51:14 +01:00
Corinna Vinschen 08fdddea3d Fix coverity CID 143502: Null pointer dereference
* libc/locale/ldpart.c (split_lines): Don't dereference result
	of strchr without checking for NULL pointer first.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-24 10:06:50 +01:00
Yaakov Selkowitz b9bbe1bccb Feature test macros overhaul: C++ TR1
While C++11 was the first version of the standard to use C99 functionality,
TR1 (for C++03) also does, and G++ does not distinguish between C++98 and
C++03, or when TR1 is in use.  Therefore, while not strictly correct for
"pure" C++98, enabling C99 for all C++ usage is the simplest solution (and
much better than always using -D_GNU_SOURCE as on Linux).

See thread starting: https://sourceware.org/ml/newlib/2016/msg00297.html

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-23 16:14:00 -05:00
Corinna Vinschen 3737bc4e98 Drop Cygwin-only posix_memalign prototype
newlib:
	* libc/include/stdlib.h (posix_memalign): Drop __rtmes__ guards.

cygwin:
	* include/cygwin/stdlib.h (posix_memalign): Drop prototype.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-23 11:50:27 +01:00
Konrad Schwarz 5ec2d62bea Target/Host configuration elucidated 2016-03-23 11:18:50 +01:00
Corinna Vinschen 3f258ada43 Guard u_char,u_short,u_int,u_long with __MISC_VISIBLE
These types are available in SVID as well.

	* libc/include/sys/types.h (u_char,u_short,u_int,u_long): Replace
	__BSD_VISIBLE with __MISC_VISIBLE.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-23 11:17:59 +01:00
Sebastian Huber 98b615106d Fix "/*" within comment warning
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2016-03-22 22:39:22 +01:00
Yaakov Selkowitz 1e6205b1ae stdio: fseeko/ftello are also POSIX.1-2001
_LARGEFILE_SOURCE, which controls only these two functions, is implicitly
defined by _XOPEN_SOURCE >= 500.  However, they are also later added to
POSIX.1-2001 (and therefore available by default).

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-22 10:50:31 -05:00
Joel Sherrill 1f9599f3a7 pthread.h: Mark pthread_exit() as not returning 2016-03-22 09:48:26 -05:00
Joel Sherrill 13707ae933 epiphany/machine/stdlib.h: Disable epiphany unique random wrappers for RTEMS 2016-03-22 09:47:00 -05:00
Joel Sherrill 4db48d17eb newlib/configure.host: Turn off sti/cli for i386 setjmp for i386-rtems*
When running RTEMS paravirtualized in user space, the cli/sti instructions
can't be used. But I can't see why they are needed in either user or
supervisor state. Turning the use of them off for RTEMS.

This code is unmodified since the beginning of the repository, so I have
no insight into why it was done. I may even have been the one to add them.
Absolutely no idea except they aren't necessary.
2016-03-22 09:45:08 -05:00
Peter Foley 3ba2c39fb2 Add nonnull annotation to posix_memalign.
GCC 6.0+ asserts that the memptr argument to the builtin function
posix_memalign is nonnull.
Add the necessary annotation to the prototype and
remove the now unnecessary check to fix a warning.

newlib/Changelog
newlib/libc/include/stdlib.h: Annotate arg to posix_memalign as
non-null.

winsup/cygwin/ChangeLog
malloc_wrapper.cc (posix_memalign): Remove always true nonnull check.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-21 20:27:16 +01:00
Sebastian Huber 08537d88f6 Move arc4random Cygwin only code to Cygwin
Keep the Newlib arc4random.c identical to the OpenBSD upstream version.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>.
2016-03-21 11:12:19 +01:00
Corinna Vinschen f7f26f65ab Allow machine-dependent arc4 locking
newlib:
	* libc/stdlib/arc4random.h: Remove Cygwin-specific locking code.
	Conditionalize arc4 locking.  Check for _ARC4_LOCK_INIT being
	undefined to fall back to default implementation.

cygwin:
	* include/machine/_arc4random.h: New file.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-20 21:30:08 +01:00
Jeff Johnston d17977ccc7 Regenerate configure script. 2016-03-19 00:27:59 -04:00
Yaakov Selkowitz 97d1536d17 sparc64: move struct timeval to <sys/_timeval.h>
commit bb01594897 moved the struct timeval
declaration from <sys/time.h> to <sys/_timeval.h>, and commit
01885f533d changed <sys/select.h> to include
<sys/_timeval.h>.  Therefore, sparc64's own struct timeval needs to be
moved accordingly in order to avoid a conflict from the generic type.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
Acked-by: Corinna Vinschen <vinschen@redhat.com>
2016-03-18 15:29:13 -05:00
Yaakov Selkowitz f049607eb0 Feature test macros overhaul: sparc64
sparc64 has a number of its own headers which override the generic ones.
These too need to use feature test macros properly.

These changes correspond to the generic fcntl.h and sys/stat.h changes
in commit d2df6d381b and
commit 069e400c91.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
Acked-by: Corinna Vinschen <vinschen@redhat.com>
2016-03-18 15:29:05 -05:00
Howland, Craig D 19879c03c5 Cleanup macros in chacha_private.h to be target-type independent
* libc/stdlib/chacha_private.h (U8C, U32C): Remove un-necessary macros.
	(U8V, U32V): Drop masking.
2016-03-18 21:20:06 +01:00
Corinna Vinschen 8e2b2adb3d Only export arc4random_stir and arc4random_addrandom on Cygwin
Export to maintain backward compatibility, but don't let
	them do anything useful.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-18 21:12:12 +01:00
Yaakov Selkowitz d3f203d091 Feature test macros overhaul: signal.h (part 2)
Move the sig*set macros following the functions inside their feature
test macro conditional.

This fixes the build on bare-metal targets following
commit 5c78499ae2.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
Acked-by: Corinna Vinschen <vinschen@redhat.com>
2016-03-18 11:22:32 -05:00
Yaakov Selkowitz f3ec63771b arm: fix build with newlib supplied syscalls enabled
In file included from libc/sys/arm/crt0.S:2:0:
libc/sys/arm/arm.h:32:25: fatal error: acle-compat.h: No such file or directory

acle-compat.h is libc/machine/arm.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-18 11:22:32 -05:00
Corinna Vinschen 7c96d6059c Arc4random locking: Check for threaded application on Cygwin
libc/stdlib/arc4random.h (_ARC4_LOCK): Special case Cygwin.
        (_ARC4_UNLOCK): Ditto.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-18 14:40:26 +01:00
Corinna Vinschen 5ccdcf0219 Add arc4random_stir and arc4random_addrandom for OpenBSD compatibility
* libc/stdlib/arc4random.c (arc4random_stir): New function.
        (arc4random_addrandom): Ditto.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-18 14:39:58 +01:00
Sebastian Huber f74cf1350e Add arc4random() etc. from OpenBSD 5.8
According to the OpenBSD man page, "A Replacement Call for Random".  It
offers high quality random numbers derived from input data obtained by
the OpenBSD specific getentropy() system call which is declared in
<unistd.h> and must be implemented for each Newlib port externally.  The
arc4random() functions are used for example in LibreSSL and OpenSSH.

Cygwin provides currently its own implementation of the arc4random
family.  Maybe it makes sense to use this getentropy() implementation:

http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libcrypto/crypto/getentropy_win.c?rev=1.4&content-type=text/x-cvsweb-markup

	* libc/include/stdlib.h (arc4random): Declare if __BSD_VISIBLE.
	(arc4random_buf): Likewise.
	(arc4random_uniform): Likewise.
	* libc/include/sys/unistd.h (getentropy): Likewise.
	* libc/include/machine/_arc4random.h: New file.
	* libc/stdlib/arc4random.c: Likewise.
	* libc/stdlib/arc4random.h: Likewise.
	* libc/stdlib/arc4random_uniform.c: Likewise.
	* libc/stdlib/chacha_private.h: Likewise.
	* libc/sys/rtems/include/machine/_arc4random.h: Likewise.
	* libc/stdlib/Makefile.am (EXTENDED_SOURCES): Add arc4random.c
	and arc4random_uniform.c.
	* libc/stdlib/Makefile.in: Regenerate.
2016-03-18 12:33:41 +01:00
Sebastian Huber 55c239d834 Add timingsafe_memcmp()
This function is used by LibreSSL and OpenSSH and is provided by the
OpenBSD libc.

	* libc/include/string.h (timingsafe_memcmp): Declare.
	* libc/string/timingsafe_memcmp.c: New file.
	* libc/string/Makefile.am: Add new file.
	* libc/string/Makefile.in: Regenerate.
2016-03-18 12:33:40 +01:00
Sebastian Huber 559fd77dda Add timingsafe_bcmp()
This function is used by LibreSSL and OpenSSH and is provided by the
OpenBSD libc.

	* libc/include/string.h (timingsafe_bcmp): Declare.
	* libc/string/timingsafe_bcmp.c: New file.
	* libc/string/Makefile.am: Add new file.
	* libc/string/Makefile.in: Regenerate.
2016-03-18 12:33:40 +01:00
Sebastian Huber 8740fa7fd0 Add explicit_bzero()
This function is used by LibreSSL and OpenSSH and is provided by the
OpenBSD libc.

	* libc/include/string.h (explicit_bzero): Declare.
	* libc/string/explicit_bzero.c: New file.
	* libc/string/Makefile.am: Add new file.
	* libc/string/Makefile.in: Regenerate.
2016-03-18 12:33:40 +01:00
Sebastian Huber a10dacbdac Guard ssize_t definition by _SSIZE_T_DECLARED
This guard is used by FreeBSD <sys/socket.h> for example.  The FreeBSD
network stack is used in RTEMS.

	* newlib/libc/include/sys/types.h (ssize_t): Guard by
	_SSIZE_T_DECLARED.
2016-03-18 12:28:55 +01:00
Yaakov Selkowitz 396942b0b5 Feature test macros overhaul: sys/types.h
The u_int/u_char/etc. BSD types are needed by Cygwin's netinet/*.h
headers, so they always need to be available.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-17 21:09:21 -05:00
Yaakov Selkowitz ee97c4b224 Revert "Remove inclusion of sys/select.h in sys/types.h for backward compat"
This BSDism is still in use (e.g. putty).

This reverts commit 088f7a7239.
2016-03-17 21:09:19 -05:00
Yaakov Selkowitz 04f288851a Feature test macros overhaul: sys/time.h
The inclusion of <sys/select.h> is required also by POSIX.1-2001.
setitimer is XSI, and futimesat is GNU.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-17 21:09:18 -05:00
Yaakov Selkowitz 069e400c91 Feature test macros overhaul: sys/stat.h
Replace all !_POSIX_SOURCE with BSD.  All *at functions depend on
ATFILE; futimens is POSIX.1-2008.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-17 21:09:16 -05:00
Yaakov Selkowitz 03c4ef1c51 Feature test macros overhaul: sys/select.h
Remove !_POSIX_SOURCE conditional; pselect is POSIX.1-2001.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-17 21:09:15 -05:00
Yaakov Selkowitz 73e2f46419 Feature test macros overhaul: wchar.h
open_wmemstream is POSIX.1-2008.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-17 21:09:13 -05:00