public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Make cstddef / cstdarg more robust (PR 69881)
@ 2016-02-23  7:15 Bernd Edlinger
  2016-02-23  9:42 ` Jonathan Wakely
  0 siblings, 1 reply; 6+ messages in thread
From: Bernd Edlinger @ 2016-02-23  7:15 UTC (permalink / raw)
  To: gcc-patches, libstdc++; +Cc: Jonathan Wakely

[-- Attachment #1: Type: text/plain, Size: 925 bytes --]

Hi,


as described in the PR 69881 it happens quite often that cstddef is
called with __need_size_t because we still support gmp-4.3.2 which
is installed by contrib/download_prerequisites.  This causes a kind
of undefined behavior.  It is just by chance that this does not cause
the gcc-6 boot-strap to fail, but it causes gcc-4.9 bootstrap to fail
when the gcc-6 version of cstddef is around.  So it looks like a
regression, because the new cstddef is more fragile than before.

As it looks like, neither c/* nor c_std/* headers will compile without
major bug-fixing first, and they are likely not in use by anybody.
Therefore I think it is best not to touch these at all, because it is
hard to test anything there.

So I propose to undefine all problematic __need_* that may cause
cstddef or cstdarg fail to compile.

Boot-strapped and reg-tested on x86_64-pc-linux-gnu
OK for trunk?


Thanks
Bernd.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: patch-pr69881.diff --]
[-- Type: text/x-patch; name="patch-pr69881.diff", Size: 995 bytes --]

2016-02-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	PR libstdc++/69881
	* include/c_global/cstdarg: Undefine __need___va_list.
	* include/c_global/cstddef: Undefine all kinds of __need_*.

Index: libstdc++-v3/include/c_global/cstdarg
===================================================================
--- libstdc++-v3/include/c_global/cstdarg	(revision 233604)
+++ libstdc++-v3/include/c_global/cstdarg	(working copy)
@@ -38,6 +38,7 @@
 
 #pragma GCC system_header
 
+#undef __need___va_list
 #include <bits/c++config.h>
 #include <stdarg.h>
 
Index: libstdc++-v3/include/c_global/cstddef
===================================================================
--- libstdc++-v3/include/c_global/cstddef	(revision 233604)
+++ libstdc++-v3/include/c_global/cstddef	(working copy)
@@ -41,6 +41,11 @@
 
 #pragma GCC system_header
 
+#undef __need_wchar_t
+#undef __need_ptrdiff_t
+#undef __need_size_t
+#undef __need_NULL
+#undef __need_wint_t
 #include <bits/c++config.h>
 #include <stddef.h>
 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-02-23 10:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-23  7:15 [PATCH] Make cstddef / cstdarg more robust (PR 69881) Bernd Edlinger
2016-02-23  9:42 ` Jonathan Wakely
2016-02-23 10:01   ` Bernd Edlinger
2016-02-23 10:09     ` Jakub Jelinek
2016-02-23 10:20       ` Jonathan Wakely
2016-02-23 10:16     ` Jonathan Wakely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).