summaryrefslogtreecommitdiffstats
path: root/newlib/libc/include
Commit message (Collapse)AuthorAgeFilesLines
...
* Rename <sys/_locale.h> to <xlocale.h>Yaakov Selkowitz2017-03-2210-12/+12
| | | | | | | | | The locale_t type is provided by <xlocale.h> on Linux, FreeBSD, and Darwin. While, like on some of those systems, it is automatically included by <locale.h> with the proper feature test macros, its presence under this particular name is still presumed in real-world software. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Allow locking routine to be retargetedThomas Preud'homme2017-02-131-2/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | At the moment when targeting bare-metal targets or systems without definition for the locking primitives newlib, uses dummy empty macros. This has the advantage of reduced size and faster implementation but does not allow the application to retarget the locking routines. Retargeting is useful for a single toolchain to support multiple systems since then it's only at link time that you know which system you are targeting. This patch adds a new configure option --enable-newlib-retargetable-locking to use dummy empty functions instead of dummy empty macros. The default is to keep the current behavior to not have any size or speed impact on targets not interested in this feature. To allow for any size of lock, the _LOCK_T type is changed into pointer to struct _lock and the _init function are tasked with allocating the locks. The platform being targeted must provide the static locks. A dummy implementation of the locking routines and static lock is provided for single-threaded applications to link successfully out of the box. To ensure that the behavior is consistent (either no locking whatsoever or working locking), the dummy implementation is strongly defined such that a partial retargeting will cause a doubly defined link error. Indeed, the linker will only pull in the file providing the dummy implementation if it cannot find an implementation for one of the routine or lock.
* devctl.h: Fix typo and include proper headerSebastian Huber2017-01-251-6/+6
| | | | | | | Remove stray commas. Include <sys/cdefs.h> for __restrict (includes <stddef.h> indirectly). Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* nl_langinfo: Add NL_LOCALE_NAME macroEric Blake2017-01-201-1/+9
| | | | | | | | | | | | | | | | | | | | | Provide an extension NL_LOCALE_NAME() macro, with semantics matching glibc, which can be used as: nl_langinfo_l(NL_LOCALE_NAME(LC_MESSAGES), locale); to get back the locale string that locale was originally created with during newlocale(). This in turn allows a library (such as gettext) to determine what thread-local locale settings it has inherited from the main program without having to be told what parameters were passed to newlocale(), for less overall coupling between parts of the program. gnulib is set up to use the extension: https://lists.gnu.org/archive/html/bug-gnulib/2017-01/msg00129.html * libc/include/langinfo.h (NL_LOCALE_NAME): New macro * libc/locale/nl_langinfo.c (nl_langinfo_l): Expose locale names of a locale_t's category components. Signed-off-by: Eric Blake <eblake@redhat.com>
* devctl.h: Use __restrict not restrictJoel Sherrill2017-01-171-5/+5
|
* Add _POSIX_SHARED_MEMORY_OBJECTSGedare Bloom2017-01-131-1/+1
|
* Fix sys/reent.h to remove use of DEBUG flag.Jeff Johnston2017-01-101-2/+2
| | | | | | | | - use of DEBUG flag is non-standard and interferes with other project's using same flag - change to be _REENT_CHECK_DEBUG which means the flag is allowing debugging of _REENT_CHECK macros - use #ifdef instead of #if
* Add pthread_setname_np() and pthread_getname_np()Sebastian Huber2017-01-091-0/+6
| | | | | | | The pthread_setname_np() and pthread_getname_np() are GNU extensions and provided by glibc. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Add <devctl.h> per POSIX 1003.26-2003Joel Sherrill2016-12-053-0/+55
|
* Provide <memory.h>Sebastian Huber2016-11-221-0/+4
| | | | | | | | Provide <memory.h> for all standard Newlib targets and remove Cygwin-specific header. Most POSIX like systems provide this historic header. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Declare non-standard pthread_yield()Sebastian Huber2016-11-221-0/+4
| | | | | | | The non-standard pthread_yield() function is available at least on Cygwin, FreeBSD and glibc. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Move pthread types to <sys/_pthreadtypes.h>Sebastian Huber2016-11-173-230/+238
| | | | | | | | | | This makes it possible provide operating system specific types for <pthread.h>. It is in line with the FreeBSD header file structure and allows a future cleanup of <pthread.h> to not expose unrelated things via <sys/types.h> and <unistd.h>. Glibc uses the similar <bits/pthreadtypes.h> for this purpose. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* sys/cdefs.h: Define __hidden as empty on CygwinCorinna Vinschen2016-11-081-0/+5
| | | | | | | Non-default visibility attributes are unsupported on PE/COFF, so don't use in __hidden definition for Cygwin. Add comment. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Provide __intmax_t and __uintmax_tSebastian Huber2016-10-254-33/+40
| | | | | | | | Provide __intmax_t and __uintmax_t via <machine/_default_types.h> and define intmax_t and uintmax_t in <sys/_stdint.h> for FreeBSD compatibility. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Fix typo in <sys/_stdint.h>Sebastian Huber2016-10-251-1/+1
| | | | Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Add _PC_CASE_INSENSITIVE to [f]pathconfKen Brown2016-10-211-0/+1
| | | | | | | | Update the getconf utility to support the new flag as well as _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY. These were previously unsupported, probably as an oversight. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix off_t typedef on Cygwin64Yaakov Selkowitz2016-08-291-1/+1
| | | | | | | | | | While both long and long long are 64-bits on x86_64, they are distinct types, and long was used prior to commit 477463a2011ba81907a753df9ce7a71b6563db54. Changing this breaks the linking of previously compiled C++ functions with off_t arguments on 64-bit Cygwin with newly compiled code, as the mangling of long (l) and long long (x) differ. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Change return type from locale_t to struct __locale_t * as wellCorinna Vinschen2016-08-251-3/+4
| | | | | | Complements commit 14228e2. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Use struct __locale_t * for reentrent locale functionsCorinna Vinschen2016-08-251-4/+4
| | | | | | | This fixes a build problem since locale_t is only defined if __POSIX_VISIBLE >= 200809. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add strerror_l prototype, change str[n]casecmp_l feature testsBrian Inglis2016-08-252-10/+15
| | | | | strerror_l prototype was missing. str[n]casecmp_l feature tests in string.h vs. strings.h were transposed.
* Use #if __GNU_VISIBLE, not #ifdef __GNU_VISIBLECorinna Vinschen2016-08-241-2/+2
| | | | | | sys/features.h always defines __GNU_VISIBLE, either as 0 or 1. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement GNU extension strptime_lCorinna Vinschen2016-08-231-0/+5
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement GNU extension wcsftime_lCorinna Vinschen2016-08-231-0/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add missing declarations of str{n}casecmp_l to strings.h.Corinna Vinschen2016-08-231-0/+5
| | | | | | Per glibc, both funcs are defined as GNU visible in strings.h. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Remove erroneous POSIX guards for reentrant locale functionsCorinna Vinschen2016-08-231-2/+0
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement missing POSIX function nl_langinfo_lCorinna Vinschen2016-08-201-1/+7
| | | | | | | | | | | | Change nl_langinfo to nl_langinfo_l using locale given as argument. Remove outdated TRANSITION_PERIOD_HACK. The codeset is stored in the locale for quite some time now. For !MB_CAPABLE targets, just return "US_ASCII" as codeset. Implement nl_langinfo by calling nl_langinfo_l. Export nl_langinfo_l from Cygwin DLL and bump minor API version number. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Constify __locale_ctype_ptr and __locale_ctype_ptr_lCorinna Vinschen2016-08-171-5/+2
| | | | | | Remove _MB_CAPABLE-only _CONST in ctype.h Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement strto[dflu]_l/wcsto[dflu]_lCorinna Vinschen2016-08-152-0/+32
| | | | | | | | | | Implement GNU extensions strtod_l, strtof_l, strtol_l, strtold_l, strtoll_l, strtoul_l, strtoull_l, wcstod_l, wcstof_l, wcstol_l, wcstold_l, wcstoll_l, wcstoul_l, wcstoull_l. Export from Cygwin, fix posix.xml. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* setlocale/localeconv are *not* POSIX-1.2008Corinna Vinschen2016-08-151-3/+3
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* setlocale.h: Fix current locale handling for !__HAVE_LOCALE_INFO__ targetsCorinna Vinschen2016-08-151-5/+0
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Fix _REENT_INIT initialization of _localeCorinna Vinschen2016-08-151-3/+2
| | | | | | | Initializing a pointer to struct __locale_t to point to a string "C" is not such a bright idea in the long run... Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Add sys/_locale.h header and fix up headersCorinna Vinschen2016-08-158-21/+35
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Implement per-locale string functionsCorinna Vinschen2016-08-152-0/+26
| | | | | | | | | | | | strcasecmp_l, strcoll_l, strncasecmp_l, strxfrm_l, wcscasecmp_l, wcscoll_l, wcstrncasecmp_l, wcstrxfrm_l, strftime_l. Add missing CHEWOUT_FILES from previous patch. TODO: strfmon_l. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Implement all per-locale ctype functionsCorinna Vinschen2016-08-152-6/+90
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Move localeconv, duplocale, freelocale, newlocale, uselocale into separate filesCorinna Vinschen2016-08-151-0/+1
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* include/locale.h: Fix POSIX guardsCorinna Vinschen2016-08-151-2/+10
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Implement newlocale, freelocale, duplocale, uselocaleCorinna Vinschen2016-08-151-5/+15
| | | | | | | | Add global const __C_locale for reference purposes. Bump Cygwin API minor number and DLL major version number to 2.6.0. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Change loadlocale to fill a __locale_t given as parameterCorinna Vinschen2016-08-152-6/+6
| | | | | | | | | | | | Don't use global variables. This allows to call loadlocale from the yet to be created newlocale(). Rename _thr_locale_t to __locale_t (these locales are not restricted to threads so the name is misleading). Along these lines, fix _set_ctype to take a __locale_t as parameter. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* POSIX-1.2008 per-thread locales, groundwork part 1Corinna Vinschen2016-08-152-5/+26
| | | | | | | | | | | | | | | | Introduce first cut of struct _thr_locale_t used for the locale_t definition. Introduce global instance called __global_locale used by default. Introduce internal inline functions __get_global_locale, __get_locale_r, __get_current_locale. Remove usage of global variables in favor of accessor functions pointing to __global_locale for now. Include all local headers in locale subdir from setlocale.h to get single include for internal locale access. Introduce __CTYPE_PTR macro to replace direct access to __ctype_ptr__ and use throughout in isxxx functions. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Do not include wctype.h in wchar.h with _GNU_SOURCEYaakov Selkowitz2016-08-121-1/+1
| | | | | | | _GNU_SOURCE generally enables all features, but in this case the POSIX requirement to #include <wctype.h> for these is preferred. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Define va_list in stdio.h and wchar.hYaakov Selkowitz2016-08-122-3/+31
| | | | | | | | | This typedef, along with that of FILE in wchar.h, were XSI prior to inclusion in POSIX.1-2008. Fixes: https://sourceware.org/ml/newlib/2016/msg00640.html Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Include wctype.h in wchar.h as an XSI extensionYaakov Selkowitz2016-08-111-0/+4
| | | | | | | | | However, note that this inclusion is obsolescent in SUSv4 and therefore may be removed in the next revision. http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: wctype.hYaakov Selkowitz2016-08-111-0/+2
| | | | | | iswblank was first introduced in C99. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: wchar.h, part 2Yaakov Selkowitz2016-08-111-0/+30
| | | | | | | Many wchar.h functions were never properly guarded; these changes should make the header fully compliant. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* rtems: define _POSIX_CLOCK_SELECTION featureGedare Bloom2016-08-081-0/+1
| | | | | | Enable definition of clock_nanosleep() since it was added to RTEMS. Signed-off-by: Joel Sherrill <joelemail@rtems.org>
* math.h: fix guards on basic M_ constantsYaakov Selkowitz2016-07-151-1/+1
| | | | | | | MAXFLOAT, M_PI, and friends date back to at least XPG4v2, so this guard was incorrect even prior to the feature test macros overhaul. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Fix typo in comment added by previous commitCorinna Vinschen2016-07-061-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Redefine locale info in struct _reent for per-thread localesCorinna Vinschen2016-07-061-6/+11
| | | | | | | | | | | | | The _reent members _current_category and _current_locale are not used at all. _current_locale is set to "C" in various points of the code but its value is just as unused as _current_category. This patch redefines these members without changing the size of the structure to allow for an implementation of per-thread locales per POSIX-1.2008 (i.e. uselocale and usage of the per-thread locale in subsequent function calls). Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* sys/time.h: Change visibility of gettimeofday.Corinna Vinschen2016-06-201-1/+2
| | | | | | | gettimeofday is currently guarded with __MISC_VISIBLE || __XSI_VISIBLE. However, gettimeofday should be always visible, as in GLibc. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Declare crypt, encrypt, and setkey per PosixKen Brown2016-06-092-0/+9
|