Message ID | 20101125202030.GA5610@bromo.med.uc.edu |
---|---|
State | New |
Headers | show |
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
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