diff mbox

[PR46650] Fix --enable-build-with-cxx bootstrap failure

Message ID 20101125202030.GA5610@bromo.med.uc.edu
State New
Headers show

Commit Message

Jack Howarth Nov. 25, 2010, 8:20 p.m. UTC
Currently the --enable-build-with-cxx bootstrap is broken due to r167010
which poisoned the strerror macro. The attached patch implements the proposed
solution of including the cstring c++ header instead of string.h and/or strings.h
when __cplusplus is defined. Bootstrap and regression tested on x86_64-apple-darwin10.

http://gcc.gnu.org/ml/gcc-testresults/2010-11/msg02099.html

Okay for gcc trunk?
           Jack

2010-11-25  Jack Howarth <howarth@bromo.med.uc.edu>
            Joseph Myers <joseph@codesourcery.com>

	PR bootstrap/46650
	* gcc/system.h: Include cstring for cxx bootstrap.

Comments

Ralf Wildenhues Nov. 27, 2010, 8:45 a.m. UTC | #1
Hello Jack,

* Jack Howarth wrote on Thu, Nov 25, 2010 at 09:20:30PM CET:
>   Currently the --enable-build-with-cxx bootstrap is broken due to r167010
> which poisoned the strerror macro. The attached patch implements the proposed
> solution of including the cstring c++ header instead of string.h and/or strings.h
> when __cplusplus is defined. Bootstrap and regression tested on x86_64-apple-darwin10.

> 2010-11-25  Jack Howarth <howarth@bromo.med.uc.edu>
>             Joseph Myers <joseph@codesourcery.com>
> 
> 	PR bootstrap/46650
> 	* gcc/system.h: Include cstring for cxx bootstrap.

> --- gcc/system.h	(revision 167136)
> +++ gcc/system.h	(working copy)
> @@ -194,15 +194,19 @@
>     rely on (and therefore test) GCC's string builtins.  */
>  #define __NO_STRING_INLINES
>  
> -#ifdef STRING_WITH_STRINGS
> -# include <string.h>
> -# include <strings.h>
> +#ifdef __cplusplus
> +# include <cstring>

I'm not sure I understand why you can leave out strings.h in this case.
For example, Posix states that strcasecmp is declared in that header, we
use that function, and the cstring header implementation from
libstdc++-v3 does not include strings.h.

>  #else
> -# ifdef HAVE_STRING_H
> +# ifdef STRING_WITH_STRINGS
>  #  include <string.h>
> +#  include <strings.h>
>  # else
> -#  ifdef HAVE_STRINGS_H
> -#   include <strings.h>
> +#  ifdef HAVE_STRING_H
> +#   include <string.h>
> +#  else
> +#   ifdef HAVE_STRINGS_H
> +#    include <strings.h>
> +#   endif
>  #  endif
>  # endif
>  #endif

Cheers,
Ralf
diff mbox

Patch

Index: gcc/system.h
===================================================================
--- gcc/system.h	(revision 167136)
+++ gcc/system.h	(working copy)
@@ -194,15 +194,19 @@ 
    rely on (and therefore test) GCC's string builtins.  */
 #define __NO_STRING_INLINES
 
-#ifdef STRING_WITH_STRINGS
-# include <string.h>
-# include <strings.h>
+#ifdef __cplusplus
+# include <cstring>
 #else
-# ifdef HAVE_STRING_H
+# ifdef STRING_WITH_STRINGS
 #  include <string.h>
+#  include <strings.h>
 # else
-#  ifdef HAVE_STRINGS_H
-#   include <strings.h>
+#  ifdef HAVE_STRING_H
+#   include <string.h>
+#  else
+#   ifdef HAVE_STRINGS_H
+#    include <strings.h>
+#   endif
 #  endif
 # endif
 #endif