newlib/newlib/libc
Yaakov Selkowitz 6ba26630e0 Feature test macros overhaul: sys/features.h
This is the complete rework of the feature tests macros for better
compatibility with GNU libc, primarily based on the Linux man pages
documentation:

http://man7.org/linux/man-pages/man7/feature_test_macros.7.html

The previous implementation was flawed in its approach that macros were
often used to hide symbols if defined (e.g. !defined __STRICT_ANSI__ or
!defined _POSIX_SOURCE), whereas the approach of glibc is that these macros
make symbols available when defined (e.g. defined _BSD_SOURCE, or as used
internally, #if __BSD_VISIBLE).  As much open-source software is written
with glibc in mind, this necessitated patching numerous packages just to
compile.

In particular, __STRICT_ANSI__ (which is defined by gcc -ansi or -std=c*)
was given too much importance.  This implementation limits the influence
of __STRICT_ANSI__ to controlling the default when no other feature test
macros are defined, and to the inclusion of <alloca.h> in <stdlib.h> as
documented.  These are the only places where __STRICT_ANSI__ should be
tested.

The following macros are now accepted: _ATFILE_SOURCE, _BSD_SOURCE,
_DEFAULT_SOURCE, _ISOC99_SOURCE, _ISOC11_SOURCE, _LARGEFILE_SOURCE,
_SVID_SOURCE, _XOPEN_SOURCE_EXTENDED.

The existing __*_VISIBLE internal macros have been kept mostly
compatible with the original BSD implementation, with some changes to
the criteria which controls them.  Several more macros in this style
have been added where needed for concision or accuracy.

Enabling C++11 or newer in the compiler also enables C99 and C11
functions.  Doing so should help move away from the need to define
_GNU_SOURCE in g++ for _GLIBCXX_USE_C99 support as on Linux:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51749

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-03-17 21:06:40 -05:00
..
argz Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
ctype Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
errno Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
iconv Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
include Feature test macros overhaul: sys/features.h 2016-03-17 21:06:40 -05:00
locale Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
machine Enable HW interrupt setup on x86/x86_64 systems by default 2016-02-26 18:52:46 +01:00
misc Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
posix Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
reent Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
search Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
signal Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
stdio setvbuf: Drop setting reent->__cleanup 2016-03-13 12:03:03 +01:00
stdio64 Fix compile with GCC 5 -Werror 2016-02-12 10:16:06 -06:00
stdlib Fix compile with GCC 5 -Werror 2016-02-12 10:16:06 -06:00
string Fix compile with GCC 5 -Werror 2016-02-12 10:16:06 -06:00
sys Enable HW interrupt setup on x86/x86_64 systems by default 2016-02-26 18:52:46 +01:00
syscalls Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
time Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
unix Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
xdr Move duplicated documentation rules to Makefile.shared 2015-11-02 18:02:39 -05:00
Makefile.am 2011-01-05 Ralf Corsepius <ralf.corsepius@rtems.org> 2011-01-05 17:18:16 +00:00
Makefile.in 2012-12-20 Jeff Johnston <jjohnstn@redhat.com> 2012-12-20 21:10:27 +00:00
aclocal.m4 Fix up errors in regenerated files for 2.3.0 release. 2016-01-04 12:57:31 -05:00
configure Fix up errors in regenerated files for 2.3.0 release. 2016-01-04 12:57:31 -05:00
configure.in 2014-07-04 Bin Cheng <bin.cheng@arm.com> 2014-07-04 17:21:45 +00:00
libc.texinfo Fix newlib texinfo source so 'info libc' and 'info libm' work 2015-03-16 15:02:22 +00:00
saber
sys.tex Don't include stdio64 functions in reentrant syscalls menu when not bulding stdio64. 2015-08-03 09:54:33 +01:00