summaryrefslogtreecommitdiffstats
path: root/newlib/libc
Commit message (Collapse)AuthorAgeFilesLines
...
* Feature test macros overhaul: string.h and strings.h overlapsYaakov Selkowitz2016-04-132-7/+12
| | | | | | | | | | | strings.h is the header mandated for these functions in POSIX.1 prior to 2008 (when most of these were removed). The declarations in string.h are only for BSD compatibility. But when both headers are included, avoid duplicate declarations. Also, mark stpcpy and stpncpy as POSIX.1-2008. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Get rid of some special cases for Cygwin in sys/types.hCorinna Vinschen2016-04-132-4/+7
| | | | | | | | | Remove off_t typedef from cygwin/types.h thus relying on sys/types.h. Introduce winsup/cygwin/machine/_types.h and move some types shared with newlib into it. Get rid of their definition in cygwin/types.h. Add same handling for __key_t/key_t as for the other types. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add BSD guards for off_t, dev_t, uid_t, and gid_tSebastian Huber2016-04-131-4/+16
| | | | | | | Copy definitions of off_t, dev_t, uid_t, and gid_t verbatim from latest FreeBSD <sys/types.h>. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Eliminate use of Newlib-specific <machine/types.h>Sebastian Huber2016-04-1313-40/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change solves a glibc/BSD compatibility problem. glibc and BSD use double underscore types for internal types. The Linux port of Newlib uses some glibc provided internal type definitions which are not protected by guard defines, e.g. __off_t. To avoid a conflict Newlib uses single underscore types for some internal types, e.g. _off_t. However, for BSD compatibility we have to define the internal types with double underscore names in <sys/_types.h>. The header file <machine/types.h> is Newlib-specific. It was used instead of <sys/_types.h> to provide the internal type definitions _CLOCK_T, _TIME_T_, _CLOCKID_T_, _TIMER_T_, and __suseconds_t. Move these definitions to <sys/_types.h> (there exist two instances of this file, one for Linux and one for all other targets). This makes the _HAVE_SYSTYPES configuration define obsolete (could possibly break the __RDOS__ target). Use the standard <sys/_types.h> include throughout. Move __loff_t defintion to default (non-Linux) <sys/_types.h>. Define it via _off64_t to avoid a dependency on the compiler. Provide the __off_t definition via default (non-Linux) <sys/_types.h> based on _off_t for all systems except Cygwin. For Cygwin use _off64_t. Define off_t via __off_t. Provide the __pid_t definition via default (non-Linux) <sys/_types.h>. This prevents a potential __pid_t and pid_t incompatibility. Add BSD guard defines for pid_t. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Move kernel dependent parts of <sys/time.h>cygwin-2_5_0-releaseSebastian Huber2016-04-083-149/+204
| | | | | | | | 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>
* Drop <unistd.h> include from RTEMS <sys/param.h>Sebastian Huber2016-04-071-2/+0
| | | | | | | | 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 ecf453f9635fb278cff4d4bae21a1e249313b817. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* math: update isinf/isnan function comments after move to math.hYaakov Selkowitz2016-04-051-1/+1
| | | | Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* math: guard BSD finite/isinf/isnan functions properly in math.hYaakov Selkowitz2016-04-042-19/+19
| | | | | | | | | | | | | | | | | | | | | | | 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>
* Feature test macros overhaul: tar.hYaakov Selkowitz2016-04-041-0/+4
| | | | | | | | | | 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>
* Add cpio.hYaakov Selkowitz2016-04-041-0/+30
| | | | | | | | This header dates back to XPG3: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/cpio.h.html Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* cygwin: make POSIX/XSI version macros dependent on feature test macrosYaakov Selkowitz2016-04-041-10/+37
| | | | | | | | | | | | | 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>
* Add Intel MCU targetIgor Venevtsev2016-04-0410-3/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Bump up newlib version to 2.4.0 due to feature test refactoringnewlib-2_4_0Jeff Johnston2016-03-2990-952/+967
|
* Add missing long double functions to CygwinCorinna Vinschen2016-03-293-9/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Add simple versions of random() and srandom()Joel Sherrill2016-03-286-31/+116
| | | | | | | | | | | | | 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.
* math.h: Use GCC builtins for C99 macros where availableCorinna Vinschen2016-03-261-19/+55
| | | | | | | | | | | | | | | | 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>
* strtold: Fix Infinity value.Corinna Vinschen2016-03-261-1/+2
| | | | | | | | | | 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>
* Drop usage of old-age BSD types in generically used Cygwin headersCorinna Vinschen2016-03-241-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* Define BSD u_intN_t types indiscriminatelyCorinna Vinschen2016-03-241-17/+14
| | | | | | | | | | | | | | 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>
* Fix coverity CID 143502: Null pointer dereferenceCorinna Vinschen2016-03-241-0/+2
| | | | | | | * 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>
* Feature test macros overhaul: C++ TR1Yaakov Selkowitz2016-03-231-5/+5
| | | | | | | | | | | | 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>
* Drop Cygwin-only posix_memalign prototypeCorinna Vinschen2016-03-231-2/+0
| | | | | | | | | | 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>
* Guard u_char,u_short,u_int,u_long with __MISC_VISIBLECorinna Vinschen2016-03-231-1/+1
| | | | | | | | | 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>
* Fix "/*" within comment warningSebastian Huber2016-03-221-1/+1
| | | | Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* stdio: fseeko/ftello are also POSIX.1-2001Yaakov Selkowitz2016-03-221-1/+1
| | | | | | | | _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>
* pthread.h: Mark pthread_exit() as not returningJoel Sherrill2016-03-221-1/+1
|
* epiphany/machine/stdlib.h: Disable epiphany unique random wrappers for RTEMSJoel Sherrill2016-03-221-0/+2
|
* Add nonnull annotation to posix_memalign.Peter Foley2016-03-211-1/+1
| | | | | | | | | | | | | | | | 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>
* Move arc4random Cygwin only code to CygwinSebastian Huber2016-03-211-15/+0
| | | | | | Keep the Newlib arc4random.c identical to the OpenBSD upstream version. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>.
* Allow machine-dependent arc4 lockingCorinna Vinschen2016-03-201-18/+5
| | | | | | | | | | | | 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>
* sparc64: move struct timeval to <sys/_timeval.h>Yaakov Selkowitz2016-03-181-1/+6
| | | | | | | | | | | commit bb0159489785d577ad0b8061a1ba7956ee0f89d0 moved the struct timeval declaration from <sys/time.h> to <sys/_timeval.h>, and commit 01885f533de81ff73e9da1519a4b5f2316b49f86 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>
* Feature test macros overhaul: sparc64Yaakov Selkowitz2016-03-182-15/+16
| | | | | | | | | | | | 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 d2df6d381b36f3f76420bc3bab965fbbdc3c3a8c and commit 069e400c913659432c5d1953c4fa9a696b06e340. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com> Acked-by: Corinna Vinschen <vinschen@redhat.com>
* Cleanup macros in chacha_private.h to be target-type independentHowland, Craig D2016-03-181-5/+2
| | | | | * libc/stdlib/chacha_private.h (U8C, U32C): Remove un-necessary macros. (U8V, U32V): Drop masking.
* Only export arc4random_stir and arc4random_addrandom on CygwinCorinna Vinschen2016-03-181-8/+5
| | | | | | | Export to maintain backward compatibility, but don't let them do anything useful. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Feature test macros overhaul: signal.h (part 2)Yaakov Selkowitz2016-03-181-16/+12
| | | | | | | | | | | Move the sig*set macros following the functions inside their feature test macro conditional. This fixes the build on bare-metal targets following commit 5c78499ae2ae6ac28854b43a1ad73d917b40c62d. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com> Acked-by: Corinna Vinschen <vinschen@redhat.com>
* arm: fix build with newlib supplied syscalls enabledYaakov Selkowitz2016-03-182-2/+2
| | | | | | | | | 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>
* Arc4random locking: Check for threaded application on CygwinCorinna Vinschen2016-03-181-0/+19
| | | | | | | libc/stdlib/arc4random.h (_ARC4_LOCK): Special case Cygwin. (_ARC4_UNLOCK): Ditto. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add arc4random_stir and arc4random_addrandom for OpenBSD compatibilityCorinna Vinschen2016-03-181-0/+18
| | | | | | | * libc/stdlib/arc4random.c (arc4random_stir): New function. (arc4random_addrandom): Ditto. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add arc4random() etc. from OpenBSD 5.8Sebastian Huber2016-03-1810-7/+626
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Add timingsafe_memcmp()Sebastian Huber2016-03-184-18/+74
| | | | | | | | | | 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.
* Add timingsafe_bcmp()Sebastian Huber2016-03-184-21/+59
| | | | | | | | | | 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.
* Add explicit_bzero()Sebastian Huber2016-03-184-46/+75
| | | | | | | | | | 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.
* Guard ssize_t definition by _SSIZE_T_DECLAREDSebastian Huber2016-03-181-0/+4
| | | | | | | | 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.
* Feature test macros overhaul: sys/types.hYaakov Selkowitz2016-03-171-4/+7
| | | | | | | 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>
* Revert "Remove inclusion of sys/select.h in sys/types.h for backward compat"Yaakov Selkowitz2016-03-171-0/+2
| | | | | | This BSDism is still in use (e.g. putty). This reverts commit 088f7a723962dd18dcae09e8e8fa168bbea6ed0b.
* Feature test macros overhaul: sys/time.hYaakov Selkowitz2016-03-171-5/+8
| | | | | | | 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>
* Feature test macros overhaul: sys/stat.hYaakov Selkowitz2016-03-171-10/+6
| | | | | | | 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>
* Feature test macros overhaul: sys/select.hYaakov Selkowitz2016-03-171-4/+5
| | | | | | Remove !_POSIX_SOURCE conditional; pselect is POSIX.1-2001. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: wchar.hYaakov Selkowitz2016-03-171-0/+2
| | | | | | open_wmemstream is POSIX.1-2008. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: unistd.hYaakov Selkowitz2016-03-171-35/+41
| | | | | | | Throughout, use proper internal macros for functions, including those marked as target-specific. Use ATFILE for all *at functions. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>