]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Don't include <bits/stdio-lock.h> from installed <libio.h>.
authorJoseph Myers <joseph@codesourcery.com>
Thu, 3 Sep 2015 20:24:54 +0000 (20:24 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 3 Sep 2015 20:24:54 +0000 (20:24 +0000)
Every so often someone gets confused by the fact that the installed
<bits/stdio-lock.h> header includes the non-installed <lowlevellock.h>
header.

This inclusion is not in fact a bug, because <bits/stdio-lock.h> only
gets included by any header that users should include directly if
_IO_MTSAFE_IO is defined, and that's an internal define used when
building libio, not a feature test macro it's valid for users to
define.  However, on general principles it's best to have as little as
possible in the installed headers that is inapplicable for valid uses
of the installed glibc.

This patch moves the include of <bits/stdio-lock.h> to the internal
header include/libio.h, so that even if someone defines _IO_MTSAFE_IO
it won't get included.  This is intended as preparation for stopping
<bits/stdio-lock.h> and <bits/libc-lock.h> from being installed at all
(after this patch they aren't used in any installed header; formally
of course they don't need to be installed even before this patch, but
stopping them being installed before removing the #include would just
exacerbate the confusion described above), and then moving those out
of the bits/ namespace in accordance with the principle that that
namespace is only for installed headers.

The tests scanf15.c and scanf17.c avoid the internal headers; after
this patch that means they need to undefine _IO_MTSAFE_IO as well as
_LIBC so as to get a working _IO_lock_t definition for libio.h.  This
brings them closer to using the headers as an installed program would,
which clearly accords with the intent of those tests.

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).

* libio/libio.h [_IO_MTSAFE_IO]: Remove include of
<bits/stdio-lock.h> and commented-out include of <comthread.h>.
* include/libio.h [!_ISOMAC && _IO_MTSAFE_IO]: Include
<bits/stdio-lock.h>.
* stdio-common/scanf15.c (_IO_MTSAFE_IO): Undefine.
* stdio-common/scanf17.c (_IO_MTSAFE_IO): Likewise.

ChangeLog
include/libio.h
libio/libio.h
stdio-common/scanf15.c
stdio-common/scanf17.c

index cbcccac6e08ac2e4560e24bfc096932fad5b0474..bd2152e58cf63d6d7d324f924217748584d5b319 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2015-09-03  Joseph Myers  <joseph@codesourcery.com>
+
+       * libio/libio.h [_IO_MTSAFE_IO]: Remove include of
+       <bits/stdio-lock.h> and commented-out include of <comthread.h>.
+       * include/libio.h [!_ISOMAC && _IO_MTSAFE_IO]: Include
+       <bits/stdio-lock.h>.
+       * stdio-common/scanf15.c (_IO_MTSAFE_IO): Undefine.
+       * stdio-common/scanf17.c (_IO_MTSAFE_IO): Likewise.
+
 2015-09-01  Paul Pluzhnikov  <ppluzhnikov@google.com>
 
        [BZ #18757]
index 735941d23078f99b7d11a9c5f2a9116b2918b9ec..f8a346a09a64c9ec132f2232589ca11579ad334e 100644 (file)
@@ -1,3 +1,6 @@
+#if !defined _ISOMAC && defined _IO_MTSAFE_IO
+# include <bits/stdio-lock.h>
+#endif
 #include <libio/libio.h>
 
 #ifndef _ISOMAC
index 08e03471471bf5c73ad1d3d717cd5d9a403cb38a..bddfd8dd9be1ed4a71deb8b313dca23916eff328 100644 (file)
@@ -145,11 +145,7 @@ struct _IO_jump_t;  struct _IO_FILE;
 
 /* Handle lock.  */
 #ifdef _IO_MTSAFE_IO
-# if defined __GLIBC__ && __GLIBC__ >= 2
-#  include <bits/stdio-lock.h>
-# else
-/*# include <comthread.h>*/
-# endif
+/* _IO_lock_t defined in internal headers during the glibc build.  */
 #else
 typedef void _IO_lock_t;
 #endif
index 851466b3a9b1c49c383d598a09dd353ed92dfcd9..a3ab15dea224d66e02eeb0306f6843d0b2117ae4 100644 (file)
@@ -1,6 +1,7 @@
 #undef _GNU_SOURCE
 #define _XOPEN_SOURCE 600
 #undef _LIBC
+#undef _IO_MTSAFE_IO
 /* The following macro definitions are a hack.  They word around disabling
    the GNU extension while still using a few internal headers.  */
 #define u_char unsigned char
index 4478a7022f34be60ff1745552cbf8b4b99e7932f..b6c0e63ab0252ca627a74538d58294076984885a 100644 (file)
@@ -1,6 +1,7 @@
 #undef _GNU_SOURCE
 #define _XOPEN_SOURCE 600
 #undef _LIBC
+#undef _IO_MTSAFE_IO
 /* The following macro definitions are a hack.  They word around disabling
    the GNU extension while still using a few internal headers.  */
 #define u_char unsigned char