Message ID | 87k396qs7u.fsf@kepler.schwinge.homeip.net |
---|---|
State | New |
Headers | show |
> Hi! > > On Mon, 26 May 2014 02:16:35 -0700, Andrew Pinski <pinskia@gmail.com> wrote: > > On Mon, May 26, 2014 at 1:59 AM, Dominique Dhumieres <dominiq@lps.ens.fr> wrote: > > > r210901 breaks bootstrap on targets not supporting strnlen, e.g., darwin10. > > > > > > ../../_clean/gcc/lto-cgraph.c:976:68: error: 'strnlen' was not declared in this scope > > I'm seeing the same on MinGW, which also doesn't have strnlen (which is a > GNU extension). > > > strnlen should be declared in include/libiberty.h if there is no > > declaration as libiberty support is already there. That should be a > > simple fix. > > Like this? This looks good to me (thoguh strnlen is posix). I can not approve the patch but I would preffer it over just hand implementing strnlen there (that is easy, too) Honza > > --- gcc/config.in > +++ gcc/config.in > [Regenerate.] > --- gcc/configure > +++ gcc/configure > [Regenerate.] > --- gcc/configure.ac > +++ gcc/configure.ac > @@ -1136,7 +1136,7 @@ CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" > saved_CXXFLAGS="$CXXFLAGS" > CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" > gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \ > - strsignal strstr stpcpy strverscmp \ > + stpcpy strnlen strsignal strstr strverscmp \ > errno snprintf vsnprintf vasprintf malloc realloc calloc \ > free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[ > #include "ansidecl.h" > diff --git include/libiberty.h include/libiberty.h > index 7fd0703..56b8b43 100644 > --- include/libiberty.h > +++ include/libiberty.h > @@ -636,6 +636,10 @@ extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3; > extern int vsnprintf (char *, size_t, const char *, va_list) ATTRIBUTE_PRINTF(3,0); > #endif > > +#if defined (HAVE_DECL_STRNLEN) && !HAVE_DECL_STRNLEN > +extern size_t strnlen (const char *, size_t); > +#endif > + > #if defined(HAVE_DECL_STRVERSCMP) && !HAVE_DECL_STRVERSCMP > /* Compare version strings. */ > extern int strverscmp (const char *, const char *); > > > Grüße, > Thomas
Hi! Ping -- OK to commit to trunk? On Wed, 28 May 2014 23:55:31 +0200, Jan Hubicka <hubicka@ucw.cz> wrote: > > On Mon, 26 May 2014 02:16:35 -0700, Andrew Pinski <pinskia@gmail.com> wrote: > > > On Mon, May 26, 2014 at 1:59 AM, Dominique Dhumieres <dominiq@lps.ens.fr> wrote: > > > > r210901 breaks bootstrap on targets not supporting strnlen, e.g., darwin10. > > > > > > > > ../../_clean/gcc/lto-cgraph.c:976:68: error: 'strnlen' was not declared in this scope > > > > I'm seeing the same on MinGW, which also doesn't have strnlen (which is a > > GNU extension). > > > > > strnlen should be declared in include/libiberty.h if there is no > > > declaration as libiberty support is already there. That should be a > > > simple fix. > > > > Like this? > > This looks good to me (thoguh strnlen is posix). I can not approve the patch > but I would preffer it over just hand implementing strnlen there (that is easy, > too) Patch is also considered good by testers in <https://gcc.gnu.org/PR61334>. > > --- gcc/config.in > > +++ gcc/config.in > > [Regenerate.] > > --- gcc/configure > > +++ gcc/configure > > [Regenerate.] > > --- gcc/configure.ac > > +++ gcc/configure.ac > > @@ -1136,7 +1136,7 @@ CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" > > saved_CXXFLAGS="$CXXFLAGS" > > CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" > > gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \ > > - strsignal strstr stpcpy strverscmp \ > > + stpcpy strnlen strsignal strstr strverscmp \ > > errno snprintf vsnprintf vasprintf malloc realloc calloc \ > > free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[ > > #include "ansidecl.h" > > diff --git include/libiberty.h include/libiberty.h > > index 7fd0703..56b8b43 100644 > > --- include/libiberty.h > > +++ include/libiberty.h > > @@ -636,6 +636,10 @@ extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3; > > extern int vsnprintf (char *, size_t, const char *, va_list) ATTRIBUTE_PRINTF(3,0); > > #endif > > > > +#if defined (HAVE_DECL_STRNLEN) && !HAVE_DECL_STRNLEN > > +extern size_t strnlen (const char *, size_t); > > +#endif > > + > > #if defined(HAVE_DECL_STRVERSCMP) && !HAVE_DECL_STRVERSCMP > > /* Compare version strings. */ > > extern int strverscmp (const char *, const char *); Grüße, Thomas
Hi! On Tue, 3 Jun 2014 11:55:44 +0200, I wrote: > Ping -- OK to commit to trunk? Even though several of those who I'd consider regular GCC developers do agree with this patch (see also <https://gcc.gnu.org/PR61334>), that is not enough "consensus" to consider this patch approved, right? Wouldn't it be a good idea for GCC to move to a more "liberal" policy in this regard? (That seems to work nicely for glibc.) Ping. > On Wed, 28 May 2014 23:55:31 +0200, Jan Hubicka <hubicka@ucw.cz> wrote: > > > On Mon, 26 May 2014 02:16:35 -0700, Andrew Pinski <pinskia@gmail.com> wrote: > > > > On Mon, May 26, 2014 at 1:59 AM, Dominique Dhumieres <dominiq@lps.ens.fr> wrote: > > > > > r210901 breaks bootstrap on targets not supporting strnlen, e.g., darwin10. > > > > > > > > > > ../../_clean/gcc/lto-cgraph.c:976:68: error: 'strnlen' was not declared in this scope > > > > > > I'm seeing the same on MinGW, which also doesn't have strnlen (which is a > > > GNU extension). > > > > > > > strnlen should be declared in include/libiberty.h if there is no > > > > declaration as libiberty support is already there. That should be a > > > > simple fix. > > > > > > Like this? > > > > This looks good to me (thoguh strnlen is posix). I can not approve the patch > > but I would preffer it over just hand implementing strnlen there (that is easy, > > too) > > Patch is also considered good by testers in > <https://gcc.gnu.org/PR61334>. > > > > --- gcc/config.in > > > +++ gcc/config.in > > > [Regenerate.] > > > --- gcc/configure > > > +++ gcc/configure > > > [Regenerate.] > > > --- gcc/configure.ac > > > +++ gcc/configure.ac > > > @@ -1136,7 +1136,7 @@ CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" > > > saved_CXXFLAGS="$CXXFLAGS" > > > CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" > > > gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \ > > > - strsignal strstr stpcpy strverscmp \ > > > + stpcpy strnlen strsignal strstr strverscmp \ > > > errno snprintf vsnprintf vasprintf malloc realloc calloc \ > > > free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[ > > > #include "ansidecl.h" > > > diff --git include/libiberty.h include/libiberty.h > > > index 7fd0703..56b8b43 100644 > > > --- include/libiberty.h > > > +++ include/libiberty.h > > > @@ -636,6 +636,10 @@ extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3; > > > extern int vsnprintf (char *, size_t, const char *, va_list) ATTRIBUTE_PRINTF(3,0); > > > #endif > > > > > > +#if defined (HAVE_DECL_STRNLEN) && !HAVE_DECL_STRNLEN > > > +extern size_t strnlen (const char *, size_t); > > > +#endif > > > + > > > #if defined(HAVE_DECL_STRVERSCMP) && !HAVE_DECL_STRVERSCMP > > > /* Compare version strings. */ > > > extern int strverscmp (const char *, const char *); > > > Grüße, > Thomas
On Mon, Jun 9, 2014 at 11:47 PM, Thomas Schwinge <thomas@codesourcery.com> wrote: > Hi! > > On Tue, 3 Jun 2014 11:55:44 +0200, I wrote: >> Ping -- OK to commit to trunk? > > Even though several of those who I'd consider regular GCC developers do > agree with this patch (see also <https://gcc.gnu.org/PR61334>), that is > not enough "consensus" to consider this patch approved, right? Wouldn't > it be a good idea for GCC to move to a more "liberal" policy in this > regard? (That seems to work nicely for glibc.) Really I think this is an obvious patch and would be the exact same patch I would have came up with. Thanks, Andrew Pinski > > > Ping. > > >> On Wed, 28 May 2014 23:55:31 +0200, Jan Hubicka <hubicka@ucw.cz> wrote: >> > > On Mon, 26 May 2014 02:16:35 -0700, Andrew Pinski <pinskia@gmail.com> wrote: >> > > > On Mon, May 26, 2014 at 1:59 AM, Dominique Dhumieres <dominiq@lps.ens.fr> wrote: >> > > > > r210901 breaks bootstrap on targets not supporting strnlen, e.g., darwin10. >> > > > > >> > > > > ../../_clean/gcc/lto-cgraph.c:976:68: error: 'strnlen' was not declared in this scope >> > > >> > > I'm seeing the same on MinGW, which also doesn't have strnlen (which is a >> > > GNU extension). >> > > >> > > > strnlen should be declared in include/libiberty.h if there is no >> > > > declaration as libiberty support is already there. That should be a >> > > > simple fix. >> > > >> > > Like this? >> > >> > This looks good to me (thoguh strnlen is posix). I can not approve the patch >> > but I would preffer it over just hand implementing strnlen there (that is easy, >> > too) >> >> Patch is also considered good by testers in >> <https://gcc.gnu.org/PR61334>. >> >> > > --- gcc/config.in >> > > +++ gcc/config.in >> > > [Regenerate.] >> > > --- gcc/configure >> > > +++ gcc/configure >> > > [Regenerate.] >> > > --- gcc/configure.ac >> > > +++ gcc/configure.ac >> > > @@ -1136,7 +1136,7 @@ CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" >> > > saved_CXXFLAGS="$CXXFLAGS" >> > > CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" >> > > gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \ >> > > - strsignal strstr stpcpy strverscmp \ >> > > + stpcpy strnlen strsignal strstr strverscmp \ >> > > errno snprintf vsnprintf vasprintf malloc realloc calloc \ >> > > free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[ >> > > #include "ansidecl.h" >> > > diff --git include/libiberty.h include/libiberty.h >> > > index 7fd0703..56b8b43 100644 >> > > --- include/libiberty.h >> > > +++ include/libiberty.h >> > > @@ -636,6 +636,10 @@ extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3; >> > > extern int vsnprintf (char *, size_t, const char *, va_list) ATTRIBUTE_PRINTF(3,0); >> > > #endif >> > > >> > > +#if defined (HAVE_DECL_STRNLEN) && !HAVE_DECL_STRNLEN >> > > +extern size_t strnlen (const char *, size_t); >> > > +#endif >> > > + >> > > #if defined(HAVE_DECL_STRVERSCMP) && !HAVE_DECL_STRVERSCMP >> > > /* Compare version strings. */ >> > > extern int strverscmp (const char *, const char *); >> >> >> Grüße, >> Thomas
On Tue, Jun 10, 2014 at 8:47 AM, Thomas Schwinge <thomas@codesourcery.com> wrote: > Hi! > > On Tue, 3 Jun 2014 11:55:44 +0200, I wrote: >> Ping -- OK to commit to trunk? > > Even though several of those who I'd consider regular GCC developers do > agree with this patch (see also <https://gcc.gnu.org/PR61334>), that is > not enough "consensus" to consider this patch approved, right? Wouldn't > it be a good idea for GCC to move to a more "liberal" policy in this > regard? (That seems to work nicely for glibc.) Ok. Thanks, Richard. > > Ping. > > >> On Wed, 28 May 2014 23:55:31 +0200, Jan Hubicka <hubicka@ucw.cz> wrote: >> > > On Mon, 26 May 2014 02:16:35 -0700, Andrew Pinski <pinskia@gmail.com> wrote: >> > > > On Mon, May 26, 2014 at 1:59 AM, Dominique Dhumieres <dominiq@lps.ens.fr> wrote: >> > > > > r210901 breaks bootstrap on targets not supporting strnlen, e.g., darwin10. >> > > > > >> > > > > ../../_clean/gcc/lto-cgraph.c:976:68: error: 'strnlen' was not declared in this scope >> > > >> > > I'm seeing the same on MinGW, which also doesn't have strnlen (which is a >> > > GNU extension). >> > > >> > > > strnlen should be declared in include/libiberty.h if there is no >> > > > declaration as libiberty support is already there. That should be a >> > > > simple fix. >> > > >> > > Like this? >> > >> > This looks good to me (thoguh strnlen is posix). I can not approve the patch >> > but I would preffer it over just hand implementing strnlen there (that is easy, >> > too) >> >> Patch is also considered good by testers in >> <https://gcc.gnu.org/PR61334>. >> >> > > --- gcc/config.in >> > > +++ gcc/config.in >> > > [Regenerate.] >> > > --- gcc/configure >> > > +++ gcc/configure >> > > [Regenerate.] >> > > --- gcc/configure.ac >> > > +++ gcc/configure.ac >> > > @@ -1136,7 +1136,7 @@ CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" >> > > saved_CXXFLAGS="$CXXFLAGS" >> > > CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" >> > > gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \ >> > > - strsignal strstr stpcpy strverscmp \ >> > > + stpcpy strnlen strsignal strstr strverscmp \ >> > > errno snprintf vsnprintf vasprintf malloc realloc calloc \ >> > > free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[ >> > > #include "ansidecl.h" >> > > diff --git include/libiberty.h include/libiberty.h >> > > index 7fd0703..56b8b43 100644 >> > > --- include/libiberty.h >> > > +++ include/libiberty.h >> > > @@ -636,6 +636,10 @@ extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3; >> > > extern int vsnprintf (char *, size_t, const char *, va_list) ATTRIBUTE_PRINTF(3,0); >> > > #endif >> > > >> > > +#if defined (HAVE_DECL_STRNLEN) && !HAVE_DECL_STRNLEN >> > > +extern size_t strnlen (const char *, size_t); >> > > +#endif >> > > + >> > > #if defined(HAVE_DECL_STRVERSCMP) && !HAVE_DECL_STRVERSCMP >> > > /* Compare version strings. */ >> > > extern int strverscmp (const char *, const char *); >> >> >> Grüße, >> Thomas
--- gcc/configure.ac +++ gcc/configure.ac @@ -1136,7 +1136,7 @@ CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" saved_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC" gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \ - strsignal strstr stpcpy strverscmp \ + stpcpy strnlen strsignal strstr strverscmp \ errno snprintf vsnprintf vasprintf malloc realloc calloc \ free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[ #include "ansidecl.h" diff --git include/libiberty.h include/libiberty.h index 7fd0703..56b8b43 100644 --- include/libiberty.h +++ include/libiberty.h @@ -636,6 +636,10 @@ extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3; extern int vsnprintf (char *, size_t, const char *, va_list) ATTRIBUTE_PRINTF(3,0); #endif +#if defined (HAVE_DECL_STRNLEN) && !HAVE_DECL_STRNLEN +extern size_t strnlen (const char *, size_t); +#endif + #if defined(HAVE_DECL_STRVERSCMP) && !HAVE_DECL_STRVERSCMP /* Compare version strings. */ extern int strverscmp (const char *, const char *);