This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.24-456-gc030737


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 "GNU C Library master sources".

The branch, master has been updated
       via  c03073774f915fe7841c2b551fe304544143470f (commit)
      from  3d6bfcace17a479c2e006a33567af80e6070583f (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 -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c03073774f915fe7841c2b551fe304544143470f

commit c03073774f915fe7841c2b551fe304544143470f
Author: Zack Weinberg <zackw@panix.com>
Date:   Tue Dec 6 10:14:42 2016 -0500

    Make _REENTRANT and _THREAD_SAFE aliases for _POSIX_C_SOURCE=199506L.
    
    For many years, the only effect of these macros has been to make
    unistd.h declare getlogin_r.  _POSIX_C_SOURCE >= 199506L also causes
    this function to be declared.  However, people who don't carefully
    read all the headers might be confused into thinking they need to
    define _REENTRANT for any threaded code (as was indeed the case a long
    time ago).
    
    Therefore, remove __USE_REENTRANT, and make _REENTRANT and _THREAD_SAFE
    into synonyms for _POSIX_C_SOURCE=199506L.  This will only affect
    programs that don't select a higher conformance level some other way.
    For instance, -std=c89 -D_REENTRANT will see a change in visible
    declarations, but -std=c99 -D_POSIX_C_SOURCE=200809L -D_REENTRANT won't,
    and -D_REENTRANT all by itself also won't, because _DEFAULT_SOURCE
    implies _POSIX_C_SOURCE > 199506.
    
    	* include/features.h: Remove __USE_REENTRANT.  Treat _REENTRANT
    	and _THREAD_SAFE the same as _POSIX_C_SOURCE=199506L, if a higher
    	POSIX conformance level has not been selected by other macros.
    	* NEWS, manual/creature.texi: Document this change.
    
    	* posix/unistd.h, posix/bits/unistd.h: Don't check __USE_REENTRANT.
    	* include/libc-symbols.h: Don't define _REENTRANT.
    	* scripts/check-installed-headers.sh: Don't undefine _REENTRANT.

diff --git a/NEWS b/NEWS
index 922a500..4fe8886 100644
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,19 @@ Version 2.25
   from that TS.  Note that most features from that TS are not supported by
   the GNU C Library.
 
+* The nonstandard feature selection macros _REENTRANT and _THREAD_SAFE are
+  now treated as compatibility synonyms for _POSIX_C_SOURCE=199506L.
+  Since the GNU C Library defaults to a much newer revision of POSIX, this
+  will only affect programs that specifically request an old conformance
+  mode.  For instance, a program compiled with -std=c89 -D_REENTRANT will
+  see a change in the visible declarations, but a program compiled with
+  just -D_REENTRANT, or -std=c99 -D_POSIX_C_SOURCE=200809L -D_REENTRANT,
+  will not.
+
+  Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+  defined by all multithreaded code, but glibc has not required this for
+  many years.
+
 * The inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.  This
   means that in a future release, the macros â??majorâ??, â??minorâ??, and â??makedevâ??
   will only be available from <sys/sysmacros.h>.
diff --git a/include/features.h b/include/features.h
index 650d4c5..4d8bda1 100644
--- a/include/features.h
+++ b/include/features.h
@@ -24,10 +24,13 @@
    __STRICT_ANSI__	ISO Standard C.
    _ISOC99_SOURCE	Extensions to ISO C89 from ISO C99.
    _ISOC11_SOURCE	Extensions to ISO C99 from ISO C11.
-   __STDC_WANT_LIB_EXT2__ Extensions to ISO C99 from TR 27431-2:2010.
-   __STDC_WANT_IEC_60559_BFP_EXT__ Extensions to ISO C11 from TS 18661-1:2014.
-   __STDC_WANT_IEC_60559_FUNCS_EXT__ Extensions to ISO C11 from
-			TS 18661-4:2015.
+   __STDC_WANT_LIB_EXT2__
+			Extensions to ISO C99 from TR 27431-2:2010.
+   __STDC_WANT_IEC_60559_BFP_EXT__
+			Extensions to ISO C11 from TS 18661-1:2014.
+   __STDC_WANT_IEC_60559_FUNCS_EXT__
+			Extensions to ISO C11 from TS 18661-4:2015.
+
    _POSIX_SOURCE	IEEE Std 1003.1.
    _POSIX_C_SOURCE	If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
 			if >=199309L, add IEEE Std 1003.1b-1993;
@@ -45,10 +48,12 @@
    _GNU_SOURCE		All of the above, plus GNU extensions.
    _DEFAULT_SOURCE	The default set of features (taking precedence over
 			__STRICT_ANSI__).
-   _REENTRANT		Select additionally reentrant object.
-   _THREAD_SAFE		Same as _REENTRANT, often used by other systems.
-   _FORTIFY_SOURCE	If set to numeric value > 0 additional security
-			measures are defined, according to level.
+
+   _FORTIFY_SOURCE	Add security hardening to many library functions.
+			Set to 1 or 2; 2 performs stricter checks than 1.
+
+   _REENTRANT, _THREAD_SAFE
+			Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
 
    The `-ansi' switch to the GNU C compiler, and standards conformance
    options such as `-std=c99', define __STRICT_ANSI__.  If none of
@@ -86,7 +91,6 @@
    __USE_MISC		Define things from 4.3BSD or System V Unix.
    __USE_ATFILE		Define *at interfaces and AT_* constants for them.
    __USE_GNU		Define GNU extensions.
-   __USE_REENTRANT	Define reentrant/thread-safe *_r functions.
    __USE_FORTIFY_LEVEL	Additional security measures used, according to level.
 
    The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
@@ -130,7 +134,6 @@
 #undef	__USE_MISC
 #undef	__USE_ATFILE
 #undef	__USE_GNU
-#undef	__USE_REENTRANT
 #undef	__USE_FORTIFY_LEVEL
 #undef	__KERNEL_STRICT_NAMES
 
@@ -253,6 +256,7 @@
 # undef  _POSIX_C_SOURCE
 # define _POSIX_C_SOURCE	200809L
 #endif
+
 #if ((!defined __STRICT_ANSI__					\
       || (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500))	\
      && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
@@ -269,6 +273,19 @@
 # define __USE_POSIX_IMPLICITLY	1
 #endif
 
+/* Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
+   defined in all multithreaded code.  GNU libc has not required this
+   for many years.  We now treat them as compatibility synonyms for
+   _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
+   comprehensive support for multithreaded code.  Using them never
+   lowers the selected level of POSIX conformance, only raises it.  */
+#if ((!defined _POSIX_C_SOURCE || (_POSIX_C_SOURCE - 0) < 199506L) \
+     && (defined _REENTRANT || defined _THREAD_SAFE))
+# define _POSIX_SOURCE   1
+# undef  _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE 199506L
+#endif
+
 #if (defined _POSIX_SOURCE					\
      || (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1)	\
      || defined _XOPEN_SOURCE)
@@ -351,10 +368,6 @@
 # define __USE_GNU	1
 #endif
 
-#if defined _REENTRANT || defined _THREAD_SAFE
-# define __USE_REENTRANT	1
-#endif
-
 #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0
 # if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
 #  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 1c91f2e..4238d79 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -52,8 +52,6 @@
 
 /* Enable declarations of GNU extensions, since we are compiling them.  */
 #define _GNU_SOURCE	1
-/* And we also need the data for the reentrant functions.  */
-#define _REENTRANT	1
 
 #include <config.h>
 
diff --git a/manual/creature.texi b/manual/creature.texi
index 257f871..5048886 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -219,15 +219,11 @@ cause them to be disabled.
 @comment GNU
 @defvr Macro _REENTRANT
 @defvrx Macro _THREAD_SAFE
-If you define one of these macros, reentrant versions of several functions get
-declared.  Some of the functions are specified in POSIX.1c but many others
-are only available on a few other systems or are unique to @theglibc{}.
-The problem is the delay in the standardization of the thread safe C library
-interface.
-
-Unlike on some other systems, no special version of the C library must be
-used for linking.  There is only one version but while compiling this
-it must have been specified to compile as thread safe.
+These macros are obsolete.  They have the same effect as defining
+@code{_POSIX_C_SOURCE} with the value @code{199506L}.
+
+Some very old C libraries required one of these macros to be defined
+for basic functionality (e.g.@: @code{getchar}) to be thread-safe.
 @end defvr
 
 We recommend you use @code{_GNU_SOURCE} in new programs.  If you don't
diff --git a/posix/bits/unistd.h b/posix/bits/unistd.h
index 0105f04..4a5f42e 100644
--- a/posix/bits/unistd.h
+++ b/posix/bits/unistd.h
@@ -302,7 +302,7 @@ __NTH (ttyname_r (int __fd, char *__buf, size_t __buflen))
 }
 
 
-#if defined __USE_REENTRANT || defined __USE_POSIX199506
+#ifdef __USE_POSIX199506
 extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
      __nonnull ((1));
 extern int __REDIRECT (__getlogin_r_alias, (char *__buf, size_t __buflen),
diff --git a/posix/unistd.h b/posix/unistd.h
index 625ba77..392dc0e 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -849,7 +849,7 @@ extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW;
    This function is a possible cancellation point and therefore not
    marked with __THROW.  */
 extern char *getlogin (void);
-#if defined __USE_REENTRANT || defined __USE_POSIX199506
+#ifdef __USE_POSIX199506
 /* Return at most NAME_LEN characters of the login name of the user in NAME.
    If it cannot be determined or some other error occurred, return the error
    code.  Otherwise return 0.
diff --git a/scripts/check-installed-headers.sh b/scripts/check-installed-headers.sh
index a245fe6..89e1514 100644
--- a/scripts/check-installed-headers.sh
+++ b/scripts/check-installed-headers.sh
@@ -143,7 +143,6 @@ EOF
    inappropriate for this test.  */
 #undef _LIBC
 #undef _GNU_SOURCE
-#undef _REENTRANT
 /* The library mode is selected here rather than on the command line to
    ensure that this selection wins. */
 $expanded_lib_mode

-----------------------------------------------------------------------

Summary of changes:
 NEWS                               |   13 +++++++++++
 include/features.h                 |   41 +++++++++++++++++++++++------------
 include/libc-symbols.h             |    2 -
 manual/creature.texi               |   14 ++++--------
 posix/bits/unistd.h                |    2 +-
 posix/unistd.h                     |    2 +-
 scripts/check-installed-headers.sh |    1 -
 7 files changed, 47 insertions(+), 28 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]