* [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h @ 2018-05-21 12:16 H.J. Lu 2018-05-21 13:10 ` [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION H.J. Lu ` (4 more replies) 0 siblings, 5 replies; 23+ messages in thread From: H.J. Lu @ 2018-05-21 12:16 UTC (permalink / raw) To: binutils; +Cc: gdb-patches Move gdb/common/diagnostics.h to include/diagnostics.h so that it can be used in binutils. gdb/ * ada-lex.l: Include "diagnostics.h" instead of "common/diagnostics.h". * unittests/environ-selftests.c: Likewise. * common/diagnostics.h: Moved to ../include. include/ * diagnostics.h: Moved from ../gdb/common/diagnostics.h. --- gdb/ada-lex.l | 2 +- gdb/unittests/environ-selftests.c | 2 +- {gdb/common => include}/diagnostics.h | 10 +++------- 3 files changed, 5 insertions(+), 9 deletions(-) rename {gdb/common => include}/diagnostics.h (92%) diff --git a/gdb/ada-lex.l b/gdb/ada-lex.l index c83a619833..621ebb2a95 100644 --- a/gdb/ada-lex.l +++ b/gdb/ada-lex.l @@ -41,7 +41,7 @@ POSEXP (e"+"?{NUM10}) %{ -#include "common/diagnostics.h" +#include "diagnostics.h" /* Some old versions of flex generate code that uses the "register" keyword, which clang warns about. This was observed for example with flex 2.5.35, diff --git a/gdb/unittests/environ-selftests.c b/gdb/unittests/environ-selftests.c index a66e8c7a48..31b7ebf9c1 100644 --- a/gdb/unittests/environ-selftests.c +++ b/gdb/unittests/environ-selftests.c @@ -20,7 +20,7 @@ #include "defs.h" #include "selftest.h" #include "common/environ.h" -#include "common/diagnostics.h" +#include "diagnostics.h" static const char gdb_selftest_env_var[] = "GDB_SELFTEST_ENVIRON"; diff --git a/gdb/common/diagnostics.h b/include/diagnostics.h similarity index 92% rename from gdb/common/diagnostics.h rename to include/diagnostics.h index e631f506de..0725664177 100644 --- a/gdb/common/diagnostics.h +++ b/include/diagnostics.h @@ -1,7 +1,5 @@ /* Copyright (C) 2017-2018 Free Software Foundation, Inc. - This file is part of GDB. - This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or @@ -15,10 +13,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef COMMON_DIAGNOSTICS_H -#define COMMON_DIAGNOSTICS_H - -#include "common/preprocessor.h" +#ifndef DIAGNOSTICS_H +#define DIAGNOSTICS_H #ifdef __GNUC__ # define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push") @@ -61,4 +57,4 @@ #endif -#endif /* COMMON_DIAGNOSTICS_H */ +#endif /* DIAGNOSTICS_H */ -- 2.17.0 ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-05-21 12:16 [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h H.J. Lu @ 2018-05-21 13:10 ` H.J. Lu 2018-06-01 7:57 ` Nick Clifton 2018-05-21 13:12 ` [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 H.J. Lu ` (3 subsequent siblings) 4 siblings, 1 reply; 23+ messages in thread From: H.J. Lu @ 2018-05-21 13:10 UTC (permalink / raw) To: binutils; +Cc: gdb-patches Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION for GCC 8 to silence -Wstringop-truncation warning: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 * diagnostics.h (DIAGNOSTIC_STRINGIFY_1): New. (DIAGNOSTIC_STRINGIFY): Likewise. (DIAGNOSTIC_IGNORE): Replace STRINGIFY with DIAGNOSTIC_STRINGIFY. (DIAGNOSTIC_IGNORE_SELF_MOVE): Define empty if not defined. (DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER): Likewise. (DIAGNOSTIC_IGNORE_UNUSED_FUNCTION): Likewise. (DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES): Likewise. (DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION): New. --- include/diagnostics.h | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/include/diagnostics.h b/include/diagnostics.h index 0725664177..ec5ac4190e 100644 --- a/include/diagnostics.h +++ b/include/diagnostics.h @@ -19,8 +19,13 @@ #ifdef __GNUC__ # define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push") # define DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop") + +/* Stringification. */ +# define DIAGNOSTIC_STRINGIFY_1(x) #x +# define DIAGNOSTIC_STRINGIFY(x) DIAGNOSTIC_STRINGIFY_1 (x) + # define DIAGNOSTIC_IGNORE(option) \ - _Pragma (STRINGIFY (GCC diagnostic ignored option)) + _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored option)) #else # define DIAGNOSTIC_PUSH # define DIAGNOSTIC_POP @@ -37,24 +42,36 @@ # if __has_warning ("-Wenum-compare-switch") # define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES \ DIAGNOSTIC_IGNORE ("-Wenum-compare-switch") -# else -# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES # endif #elif defined (__GNUC__) /* GCC */ -# define DIAGNOSTIC_IGNORE_SELF_MOVE -# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER # define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \ DIAGNOSTIC_IGNORE ("-Wunused-function") -# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES -#else /* Other compilers */ +# if __GNUC__ >= 8 +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") +# endif +#endif +#ifndef DIAGNOSTIC_IGNORE_SELF_MOVE # define DIAGNOSTIC_IGNORE_SELF_MOVE +#endif + +#ifndef DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER # define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER +#endif + +#ifndef DIAGNOSTIC_IGNORE_UNUSED_FUNCTION # define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION +#endif + +#ifndef DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES # define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES +#endif +#ifndef DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION #endif #endif /* DIAGNOSTICS_H */ -- 2.17.0 ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-05-21 13:10 ` [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION H.J. Lu @ 2018-06-01 7:57 ` Nick Clifton 2018-06-01 10:19 ` Alan Modra 0 siblings, 1 reply; 23+ messages in thread From: Nick Clifton @ 2018-06-01 7:57 UTC (permalink / raw) To: H.J. Lu, binutils; +Cc: gdb-patches Hi H.J. > +# if __GNUC__ >= 8 > +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ > + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") > +# endif > +#endif Presumably the Wstringop-truncation bug will be fixed in gcc 8.1 so shouldn't the test check the revision number as well ? Cheers Nick ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-06-01 7:57 ` Nick Clifton @ 2018-06-01 10:19 ` Alan Modra 2018-06-01 16:51 ` H.J. Lu 0 siblings, 1 reply; 23+ messages in thread From: Alan Modra @ 2018-06-01 10:19 UTC (permalink / raw) To: Nick Clifton; +Cc: H.J. Lu, binutils, gdb-patches On Fri, Jun 01, 2018 at 08:57:20AM +0100, Nick Clifton wrote: > Hi H.J. > > > +# if __GNUC__ >= 8 > > +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ > > + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") > > +# endif > > +#endif > > Presumably the Wstringop-truncation bug will be fixed in gcc 8.1 > so shouldn't the test check the revision number as well ? Yes, it has already been fixed. -- Alan Modra Australia Development Lab, IBM ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-06-01 10:19 ` Alan Modra @ 2018-06-01 16:51 ` H.J. Lu 2018-06-04 12:13 ` Nick Clifton 0 siblings, 1 reply; 23+ messages in thread From: H.J. Lu @ 2018-06-01 16:51 UTC (permalink / raw) To: Alan Modra; +Cc: Nick Clifton, Binutils, GDB [-- Attachment #1: Type: text/plain, Size: 738 bytes --] On Fri, Jun 1, 2018 at 3:19 AM, Alan Modra <amodra@gmail.com> wrote: > On Fri, Jun 01, 2018 at 08:57:20AM +0100, Nick Clifton wrote: >> Hi H.J. >> >> > +# if __GNUC__ >= 8 >> > +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ >> > + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") >> > +# endif >> > +#endif >> >> Presumably the Wstringop-truncation bug will be fixed in gcc 8.1 >> so shouldn't the test check the revision number as well ? > > Yes, it has already been fixed. > The bug is in GCC 8.1 and will be fixed in GCC 8.2. Here is the updated patch with +# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") +# endif OK for master? -- H.J. [-- Attachment #2: 0001-Add-DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION.patch --] [-- Type: text/x-patch, Size: 2799 bytes --] From bb1d3ddd78abf25b30e11cf25e4b2ec7b6ef0688 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <hjl.tools@gmail.com> Date: Mon, 21 May 2018 05:06:39 -0700 Subject: [PATCH 1/2] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION for GCC 8.1 to silence -Wstringop-truncation warning: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 * diagnostics.h (DIAGNOSTIC_STRINGIFY_1): New. (DIAGNOSTIC_STRINGIFY): Likewise. (DIAGNOSTIC_IGNORE): Replace STRINGIFY with DIAGNOSTIC_STRINGIFY. (DIAGNOSTIC_IGNORE_SELF_MOVE): Define empty if not defined. (DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER): Likewise. (DIAGNOSTIC_IGNORE_UNUSED_FUNCTION): Likewise. (DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES): Likewise. (DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION): New. --- include/diagnostics.h | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/include/diagnostics.h b/include/diagnostics.h index 0725664177..f7412d4a38 100644 --- a/include/diagnostics.h +++ b/include/diagnostics.h @@ -19,8 +19,13 @@ #ifdef __GNUC__ # define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push") # define DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop") + +/* Stringification. */ +# define DIAGNOSTIC_STRINGIFY_1(x) #x +# define DIAGNOSTIC_STRINGIFY(x) DIAGNOSTIC_STRINGIFY_1 (x) + # define DIAGNOSTIC_IGNORE(option) \ - _Pragma (STRINGIFY (GCC diagnostic ignored option)) + _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored option)) #else # define DIAGNOSTIC_PUSH # define DIAGNOSTIC_POP @@ -37,24 +42,36 @@ # if __has_warning ("-Wenum-compare-switch") # define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES \ DIAGNOSTIC_IGNORE ("-Wenum-compare-switch") -# else -# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES # endif #elif defined (__GNUC__) /* GCC */ -# define DIAGNOSTIC_IGNORE_SELF_MOVE -# define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER # define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \ DIAGNOSTIC_IGNORE ("-Wunused-function") -# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES -#else /* Other compilers */ +# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") +# endif +#endif +#ifndef DIAGNOSTIC_IGNORE_SELF_MOVE # define DIAGNOSTIC_IGNORE_SELF_MOVE +#endif + +#ifndef DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER # define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER +#endif + +#ifndef DIAGNOSTIC_IGNORE_UNUSED_FUNCTION # define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION +#endif + +#ifndef DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES # define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES +#endif +#ifndef DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION #endif #endif /* DIAGNOSTICS_H */ -- 2.17.0 ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-06-01 16:51 ` H.J. Lu @ 2018-06-04 12:13 ` Nick Clifton 2018-06-04 12:19 ` Pedro Alves 0 siblings, 1 reply; 23+ messages in thread From: Nick Clifton @ 2018-06-04 12:13 UTC (permalink / raw) To: H.J. Lu, Alan Modra; +Cc: Binutils, GDB Hi H.J. > +# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 > +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ > + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") > +# endif > > OK for master? Approved - please apply. Cheers Nick ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-06-04 12:13 ` Nick Clifton @ 2018-06-04 12:19 ` Pedro Alves 2018-06-04 12:46 ` H.J. Lu 0 siblings, 1 reply; 23+ messages in thread From: Pedro Alves @ 2018-06-04 12:19 UTC (permalink / raw) To: Nick Clifton, H.J. Lu, Alan Modra; +Cc: Binutils, GDB On 06/04/2018 01:13 PM, Nick Clifton wrote: > Hi H.J. > >> +# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 >> +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ >> + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") >> +# endif >> >> OK for master? > > Approved - please apply. Please don't. This is again going against the intention of the header. The GCC version checks should be put in the places where the warning needs to be suppressed. The current patch makes all current and future uses of DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION only apply to GCC 8.1. That is incorrect. Consider what you will have to do to suppress some -Wstrinop-truncation warning with DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION on GCC 8.2 or GCC 9 or whatever. Also, you can use GCC_VERSION to make the version check a little simpler. Thanks, Pedro Alves ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-06-04 12:19 ` Pedro Alves @ 2018-06-04 12:46 ` H.J. Lu 2018-06-04 13:31 ` H.J. Lu 2018-06-04 14:04 ` Pedro Alves 0 siblings, 2 replies; 23+ messages in thread From: H.J. Lu @ 2018-06-04 12:46 UTC (permalink / raw) To: Pedro Alves; +Cc: Nick Clifton, Alan Modra, Binutils, GDB On Mon, Jun 4, 2018 at 5:19 AM, Pedro Alves <palves@redhat.com> wrote: > On 06/04/2018 01:13 PM, Nick Clifton wrote: >> Hi H.J. >> >>> +# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 >>> +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ >>> + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") >>> +# endif >>> >>> OK for master? >> >> Approved - please apply. > > Please don't. This is again going against the intention of > the header. The GCC version checks should be put in the > places where the warning needs to be suppressed. > The current patch makes all current and future uses of > DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION only apply to > GCC 8.1. That is incorrect. Consider what you will > have to do to suppress some -Wstrinop-truncation warning > with DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION on GCC 8.2 or > GCC 9 or whatever. This is what my original patch intended to do. But diagnostics.h from GDB doesn't support GCC version. Should I extend it to match glibc? > Also, you can use GCC_VERSION to make the version check > a little simpler. > > Thanks, > Pedro Alves -- H.J. ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-06-04 12:46 ` H.J. Lu @ 2018-06-04 13:31 ` H.J. Lu 2018-06-04 13:40 ` Pedro Alves 2018-06-04 14:04 ` Pedro Alves 1 sibling, 1 reply; 23+ messages in thread From: H.J. Lu @ 2018-06-04 13:31 UTC (permalink / raw) To: Pedro Alves, John Marshall; +Cc: Nick Clifton, Alan Modra, Binutils, GDB On Mon, Jun 4, 2018 at 5:46 AM, H.J. Lu <hjl.tools@gmail.com> wrote: > On Mon, Jun 4, 2018 at 5:19 AM, Pedro Alves <palves@redhat.com> wrote: >> On 06/04/2018 01:13 PM, Nick Clifton wrote: >>> Hi H.J. >>> >>>> +# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 >>>> +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ >>>> + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") >>>> +# endif >>>> >>>> OK for master? >>> >>> Approved - please apply. >> >> Please don't. This is again going against the intention of >> the header. The GCC version checks should be put in the >> places where the warning needs to be suppressed. >> The current patch makes all current and future uses of >> DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION only apply to >> GCC 8.1. That is incorrect. Consider what you will >> have to do to suppress some -Wstrinop-truncation warning >> with DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION on GCC 8.2 or >> GCC 9 or whatever. > > This is what my original patch intended to do. But diagnostics.h from > GDB doesn't support GCC version. Should I extend it to match glibc? > >> Also, you can use GCC_VERSION to make the version check >> a little simpler. >> >> Thanks, >> Pedro Alves My second patch is needed for Darwin. I will check it in as is and update it with a follow up patch to support GCC version. -- H.J. ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-06-04 13:31 ` H.J. Lu @ 2018-06-04 13:40 ` Pedro Alves 0 siblings, 0 replies; 23+ messages in thread From: Pedro Alves @ 2018-06-04 13:40 UTC (permalink / raw) To: H.J. Lu, John Marshall; +Cc: Nick Clifton, Alan Modra, Binutils, GDB On 06/04/2018 02:30 PM, H.J. Lu wrote: > On Mon, Jun 4, 2018 at 5:46 AM, H.J. Lu <hjl.tools@gmail.com> wrote: >> On Mon, Jun 4, 2018 at 5:19 AM, Pedro Alves <palves@redhat.com> wrote: >>> On 06/04/2018 01:13 PM, Nick Clifton wrote: >>>> Hi H.J. >>>> >>>>> +# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 >>>>> +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ >>>>> + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") >>>>> +# endif >>>>> >>>>> OK for master? >>>> >>>> Approved - please apply. >>> >>> Please don't. This is again going against the intention of >>> the header. The GCC version checks should be put in the >>> places where the warning needs to be suppressed. >>> The current patch makes all current and future uses of >>> DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION only apply to >>> GCC 8.1. That is incorrect. Consider what you will >>> have to do to suppress some -Wstrinop-truncation warning >>> with DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION on GCC 8.2 or >>> GCC 9 or whatever. >> >> This is what my original patch intended to do. But diagnostics.h from >> GDB doesn't support GCC version. Should I extend it to match glibc? >> >>> Also, you can use GCC_VERSION to make the version check >>> a little simpler. > > My second patch is needed for Darwin. I will check it in as is > and update it with a follow up patch to support GCC version. For the record, I think it would have been better procedure to split and push the DIAGNOSTIC_STRINGIFY bit only [1], while giving people reasonable time to respond to the rest. https://sourceware.org/ml/gdb-patches/2018-06/msg00062.html Thanks, Pedro Alves ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION 2018-06-04 12:46 ` H.J. Lu 2018-06-04 13:31 ` H.J. Lu @ 2018-06-04 14:04 ` Pedro Alves 1 sibling, 0 replies; 23+ messages in thread From: Pedro Alves @ 2018-06-04 14:04 UTC (permalink / raw) To: H.J. Lu; +Cc: Nick Clifton, Alan Modra, Binutils, GDB On 06/04/2018 01:46 PM, H.J. Lu wrote: > On Mon, Jun 4, 2018 at 5:19 AM, Pedro Alves <palves@redhat.com> wrote: >> On 06/04/2018 01:13 PM, Nick Clifton wrote: >>> Hi H.J. >>> >>>> +# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 >>>> +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ >>>> + DIAGNOSTIC_IGNORE ("-Wstringop-truncation") >>>> +# endif >>>> >>>> OK for master? >>> >>> Approved - please apply. >> >> Please don't. This is again going against the intention of >> the header. The GCC version checks should be put in the >> places where the warning needs to be suppressed. >> The current patch makes all current and future uses of >> DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION only apply to >> GCC 8.1. That is incorrect. Consider what you will >> have to do to suppress some -Wstrinop-truncation warning >> with DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION on GCC 8.2 or >> GCC 9 or whatever. > > This is what my original patch intended to do. But diagnostics.h from > GDB doesn't support GCC version. > Should I extend it to match glibc? diagnostics.h doesn't support a GCC version parameter on purpose, as I explained before. A single GCC version argument like glibc does only works for GCC, and is in fact not used by the macro at all, it is only there for conveniently grepping. It's a nop argument: #define DIAG_IGNORE_NEEDS_COMMENT(version, option) \ _Pragma (_DIAG_STR (GCC diagnostic ignored option)) I've detailed more here on why I don't think that's right: https://sourceware.org/ml/binutils/2018-05/msg00191.html We mainly want to use DIAGNOSTIC_IGNORE_XXX to disable warnings around code that even though is seemingly smelly, is actually what we want to write. See these examples: https://sourceware.org/ml/gdb-patches/2017-06/msg00622.html https://sourceware.org/ml/gdb-patches/2017-12/msg00529.html The case in question is a little different, as the warning is a false positive in these particular spots. So I think we should disable it in these particular spots, only. I.e., I think a version check in the client side (like your original patch, IIRC, though implemented differently) is appropriate, like: + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 44, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; It would be fine with me to add the GCC version check to diagnostics.h, if, when you consider what to do when you need to disable -Wstringop-truncation in some future GCC version, in some other spot in the code, you decide that if that happens, it's OK to disable -Wstringop-truncation everywhere DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION is used at that point in time, even if the current spots that use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION won't trigger false positive with the newer GCC version that is forcing you to change the version check. That seems to go counter to the expressed desire to only disable -Wstringop-truncation in these spots with 8.1 but not 8.2, though. That's a design conflict. >> Also, you can use GCC_VERSION to make the version check >> a little simpler. Thanks, Pedro Alves ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 2018-05-21 12:16 [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h H.J. Lu 2018-05-21 13:10 ` [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION H.J. Lu @ 2018-05-21 13:12 ` H.J. Lu 2018-06-01 7:59 ` Nick Clifton 2018-05-21 14:12 ` [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h Simon Marchi ` (2 subsequent siblings) 4 siblings, 1 reply; 23+ messages in thread From: H.J. Lu @ 2018-05-21 13:12 UTC (permalink / raw) To: binutils; +Cc: gdb-patches GCC 8 warns about destination size with -Wstringop-truncation: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence it. PR binutils/23146 * bfd-in.h: Include "diagnostics.h". * bfd-in2.h: Regenerated. * elf32-arm.c (elf32_arm_nabi_write_core_note): Use DIAGNOSTIC_PUSH, DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION and DIAGNOSTIC_POP to silence GCC 8 warnings with -Wstringop-truncation. * elf32-ppc.c (ppc_elf_write_core_note): Likewse. * elf32-s390.c (elf_s390_write_core_note): Likewse. * elf64-ppc.c (ppc64_elf_write_core_note): Likewse. * elf64-s390.c (elf_s390_write_core_note): Likewse. * elfxx-aarch64.c (_bfd_aarch64_elf_write_core_note): Likewse. --- bfd/bfd-in.h | 1 + bfd/bfd-in2.h | 1 + bfd/elf32-arm.c | 7 +++++++ bfd/elf32-ppc.c | 7 +++++++ bfd/elf32-s390.c | 7 +++++++ bfd/elf64-ppc.c | 7 +++++++ bfd/elf64-s390.c | 7 +++++++ bfd/elfxx-aarch64.c | 7 +++++++ 8 files changed, 44 insertions(+) diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index 481587e458..1d477c3f5f 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -34,6 +34,7 @@ extern "C" { #include "ansidecl.h" #include "symcat.h" +#include "diagnostics.h" #include <stdarg.h> #include <sys/stat.h> diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index c64eee1fe1..4a5c51fdf8 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -41,6 +41,7 @@ extern "C" { #include "ansidecl.h" #include "symcat.h" +#include "diagnostics.h" #include <stdarg.h> #include <sys/stat.h> diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 5a3b58ff0d..4e04a2f699 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -2174,7 +2174,14 @@ elf32_arm_nabi_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 28, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; strncpy (data + 44, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 462c8af311..b5cb14ecbf 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -2411,7 +2411,14 @@ ppc_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type, ...) va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 32, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; strncpy (data + 48, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, data, sizeof (data)); diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c index b3603bd865..b9e1602aa2 100644 --- a/bfd/elf32-s390.c +++ b/bfd/elf32-s390.c @@ -3951,7 +3951,14 @@ elf_s390_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_end (ap); strncpy (data + 28, fname, 16); + DIAGNOSTIC_PUSH; + /* GCC 8 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; strncpy (data + 44, psargs, 80); + DIAGNOSTIC_POP; return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, &data, sizeof (data)); } diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index b166558945..bf314b3571 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -3041,7 +3041,14 @@ ppc64_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type, va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 40, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; strncpy (data + 56, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, data, sizeof (data)); diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index bfa02340ca..4552bd6ee8 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -3760,7 +3760,14 @@ elf_s390_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_end (ap); strncpy (data + 40, fname, 16); + DIAGNOSTIC_PUSH; + /* GCC 8 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; strncpy (data + 56, psargs, 80); + DIAGNOSTIC_POP; return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, &data, sizeof (data)); } diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c index 45a732db2b..f418581048 100644 --- a/bfd/elfxx-aarch64.c +++ b/bfd/elfxx-aarch64.c @@ -659,7 +659,14 @@ _bfd_aarch64_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_ty va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 40, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; strncpy (data + 56, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", -- 2.17.0 ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 2018-05-21 13:12 ` [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 H.J. Lu @ 2018-06-01 7:59 ` Nick Clifton 2018-06-04 16:58 ` H.J. Lu 0 siblings, 1 reply; 23+ messages in thread From: Nick Clifton @ 2018-06-01 7:59 UTC (permalink / raw) To: H.J. Lu, binutils; +Cc: gdb-patches Hi H.J. > PR binutils/23146 > * bfd-in.h: Include "diagnostics.h". > * bfd-in2.h: Regenerated. > * elf32-arm.c (elf32_arm_nabi_write_core_note): Use > DIAGNOSTIC_PUSH, DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION and > DIAGNOSTIC_POP to silence GCC 8 warnings with > -Wstringop-truncation. > * elf32-ppc.c (ppc_elf_write_core_note): Likewse. > * elf32-s390.c (elf_s390_write_core_note): Likewse. > * elf64-ppc.c (ppc64_elf_write_core_note): Likewse. > * elf64-s390.c (elf_s390_write_core_note): Likewse. > * elfxx-aarch64.c (_bfd_aarch64_elf_write_core_note): Likewse. Approved - please apply. Cheers Nick ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 2018-06-01 7:59 ` Nick Clifton @ 2018-06-04 16:58 ` H.J. Lu 2018-06-04 17:06 ` Pedro Alves 2018-07-02 16:25 ` Tulio Magno Quites Machado Filho 0 siblings, 2 replies; 23+ messages in thread From: H.J. Lu @ 2018-06-04 16:58 UTC (permalink / raw) To: Nick Clifton, Pedro Alves; +Cc: Binutils, GDB [-- Attachment #1: Type: text/plain, Size: 800 bytes --] On Fri, Jun 1, 2018 at 12:59 AM, Nick Clifton <nickc@redhat.com> wrote: > Hi H.J. > >> PR binutils/23146 >> * bfd-in.h: Include "diagnostics.h". >> * bfd-in2.h: Regenerated. >> * elf32-arm.c (elf32_arm_nabi_write_core_note): Use >> DIAGNOSTIC_PUSH, DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION and >> DIAGNOSTIC_POP to silence GCC 8 warnings with >> -Wstringop-truncation. >> * elf32-ppc.c (ppc_elf_write_core_note): Likewse. >> * elf32-s390.c (elf_s390_write_core_note): Likewse. >> * elf64-ppc.c (ppc64_elf_write_core_note): Likewse. >> * elf64-s390.c (elf_s390_write_core_note): Likewse. >> * elfxx-aarch64.c (_bfd_aarch64_elf_write_core_note): Likewse. > > Approved - please apply. > This is the patch I am checking in. -- H.J. [-- Attachment #2: 0001-Use-DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION-to-silence.patch --] [-- Type: text/x-patch, Size: 6792 bytes --] From 30a2bf66aa5b1a22ea14cbc5eb10d12cae5657c1 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <hjl.tools@gmail.com> Date: Mon, 4 Jun 2018 09:48:28 -0700 Subject: [PATCH] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8.1 GCC 8.1 warns about destination size with -Wstringop-truncation: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence it. bfd/ PR binutils/23146 * bfd-in.h: Include "diagnostics.h". * bfd-in2.h: Regenerated. * elf32-arm.c (elf32_arm_nabi_write_core_note): Use DIAGNOSTIC_PUSH, DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION and DIAGNOSTIC_POP to silence GCC 8.1 warnings with -Wstringop-truncation. * elf32-ppc.c (ppc_elf_write_core_note): Likewse. * elf32-s390.c (elf_s390_write_core_note): Likewse. * elf64-ppc.c (ppc64_elf_write_core_note): Likewse. * elf64-s390.c (elf_s390_write_core_note): Likewse. * elfxx-aarch64.c (_bfd_aarch64_elf_write_core_note): Likewse. include/ * diagnostics.h (DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION): Always define for GCC. --- bfd/bfd-in.h | 1 + bfd/bfd-in2.h | 1 + bfd/elf32-arm.c | 9 +++++++++ bfd/elf32-ppc.c | 9 +++++++++ bfd/elf32-s390.c | 9 +++++++++ bfd/elf64-ppc.c | 9 +++++++++ bfd/elf64-s390.c | 9 +++++++++ bfd/elfxx-aarch64.c | 9 +++++++++ include/diagnostics.h | 4 +--- 9 files changed, 57 insertions(+), 3 deletions(-) diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index 481587e458..1d477c3f5f 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -34,6 +34,7 @@ extern "C" { #include "ansidecl.h" #include "symcat.h" +#include "diagnostics.h" #include <stdarg.h> #include <sys/stat.h> diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index ef62f31953..65735f026e 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -41,6 +41,7 @@ extern "C" { #include "ansidecl.h" #include "symcat.h" +#include "diagnostics.h" #include <stdarg.h> #include <sys/stat.h> diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index dbfd838fbe..870111b5ed 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -2174,7 +2174,16 @@ elf32_arm_nabi_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 28, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 44, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 3482baca20..ea8dbed981 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -2411,7 +2411,16 @@ ppc_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type, ...) va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 32, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 48, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, data, sizeof (data)); diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c index 99ceb76d3d..ebda1dacdc 100644 --- a/bfd/elf32-s390.c +++ b/bfd/elf32-s390.c @@ -3951,7 +3951,16 @@ elf_s390_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_end (ap); strncpy (data + 28, fname, 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 44, psargs, 80); + DIAGNOSTIC_POP; return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, &data, sizeof (data)); } diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index f543cb0288..16199fbe3e 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -3041,7 +3041,16 @@ ppc64_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type, va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 40, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 56, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, data, sizeof (data)); diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index 612557fa74..93a3c7c22a 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -3760,7 +3760,16 @@ elf_s390_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_end (ap); strncpy (data + 40, fname, 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 56, psargs, 80); + DIAGNOSTIC_POP; return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, &data, sizeof (data)); } diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c index af37f828d5..3ea8dadf6d 100644 --- a/bfd/elfxx-aarch64.c +++ b/bfd/elfxx-aarch64.c @@ -640,7 +640,16 @@ _bfd_aarch64_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_ty va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 40, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 56, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", diff --git a/include/diagnostics.h b/include/diagnostics.h index f7412d4a38..4a674106dc 100644 --- a/include/diagnostics.h +++ b/include/diagnostics.h @@ -48,10 +48,8 @@ # define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \ DIAGNOSTIC_IGNORE ("-Wunused-function") -# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 -# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ DIAGNOSTIC_IGNORE ("-Wstringop-truncation") -# endif #endif #ifndef DIAGNOSTIC_IGNORE_SELF_MOVE -- 2.17.1 ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 2018-06-04 16:58 ` H.J. Lu @ 2018-06-04 17:06 ` Pedro Alves 2018-07-02 16:25 ` Tulio Magno Quites Machado Filho 1 sibling, 0 replies; 23+ messages in thread From: Pedro Alves @ 2018-06-04 17:06 UTC (permalink / raw) To: H.J. Lu, Nick Clifton; +Cc: Binutils, GDB On 06/04/2018 05:58 PM, H.J. Lu wrote: > This is the patch I am checking in. Great, thank you! Pedro Alves ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 2018-06-04 16:58 ` H.J. Lu 2018-06-04 17:06 ` Pedro Alves @ 2018-07-02 16:25 ` Tulio Magno Quites Machado Filho 1 sibling, 0 replies; 23+ messages in thread From: Tulio Magno Quites Machado Filho @ 2018-07-02 16:25 UTC (permalink / raw) To: H.J. Lu, Nick Clifton, Pedro Alves; +Cc: Binutils, GDB "H.J. Lu" <hjl.tools@gmail.com> writes: > GCC 8.1 warns about destination size with -Wstringop-truncation: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 > > Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence it. > > bfd/ > > PR binutils/23146 > * bfd-in.h: Include "diagnostics.h". > * bfd-in2.h: Regenerated. bfd.h is an installed header, while diagnostics.h is not, causing build failures on software that include bfd.h, e.g.: In file included from opagent.c:65: bfd.h:44:10: fatal error: diagnostics.h: No such file or directory #include "diagnostics.h" ^~~~~~~~~~~~~~~ -- Tulio Magno ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h 2018-05-21 12:16 [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h H.J. Lu 2018-05-21 13:10 ` [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION H.J. Lu 2018-05-21 13:12 ` [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 H.J. Lu @ 2018-05-21 14:12 ` Simon Marchi 2018-06-01 7:49 ` Nick Clifton 2018-06-04 10:51 ` John Marshall 4 siblings, 0 replies; 23+ messages in thread From: Simon Marchi @ 2018-05-21 14:12 UTC (permalink / raw) To: H.J. Lu; +Cc: binutils, gdb-patches On 2018-05-21 08:15, H.J. Lu wrote: > Move gdb/common/diagnostics.h to include/diagnostics.h so that it can > be used in binutils. > > gdb/ > > * ada-lex.l: Include "diagnostics.h" instead of > "common/diagnostics.h". > * unittests/environ-selftests.c: Likewise. > * common/diagnostics.h: Moved to ../include. > > include/ > > * diagnostics.h: Moved from ../gdb/common/diagnostics.h. This series looks OK from the GDB side. Thanks, Simon ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h 2018-05-21 12:16 [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h H.J. Lu ` (2 preceding siblings ...) 2018-05-21 14:12 ` [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h Simon Marchi @ 2018-06-01 7:49 ` Nick Clifton 2018-06-04 10:51 ` John Marshall 4 siblings, 0 replies; 23+ messages in thread From: Nick Clifton @ 2018-06-01 7:49 UTC (permalink / raw) To: H.J. Lu, binutils; +Cc: gdb-patches Hi H.J. > gdb/ > > * ada-lex.l: Include "diagnostics.h" instead of > "common/diagnostics.h". > * unittests/environ-selftests.c: Likewise. > * common/diagnostics.h: Moved to ../include. > > include/ > > * diagnostics.h: Moved from ../gdb/common/diagnostics.h. Approved from the binutils side as well. Please commit. Cheers Nick ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h 2018-05-21 12:16 [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h H.J. Lu ` (3 preceding siblings ...) 2018-06-01 7:49 ` Nick Clifton @ 2018-06-04 10:51 ` John Marshall 2018-06-04 13:12 ` H.J. Lu 4 siblings, 1 reply; 23+ messages in thread From: John Marshall @ 2018-06-04 10:51 UTC (permalink / raw) To: H. J. Lu; +Cc: binutils, gdb-patches On 21 May 2018, at 13:15, H dot J dot Lu <hjl dot tools at gmail dot com> wrote: > Move gdb/common/diagnostics.h to include/diagnostics.h so that it can > be used in binutils. This patch broke building gdb on MacOS with clang (i.e., after ./configure with no options): CXX gdb.o In file included from ../../../binutils-gdb/gdb/gdb.c:19: In file included from ../../../binutils-gdb/gdb/defs.h:531: In file included from ../../../binutils-gdb/gdb/gdbarch.h:39: In file included from ../../../binutils-gdb/gdb/frame.h:72: In file included from ../../../binutils-gdb/gdb/language.h:26: ../../../binutils-gdb/gdb/symtab.h:1361:1: error: _Pragma takes a parenthesized string literal DEF_VEC_P (symtab_ptr); > --- a/gdb/common/diagnostics.h > +++ b/include/diagnostics.h > [snip] > @@ -15,10 +13,8 @@ > You should have received a copy of the GNU General Public License > along with this program. If not, see <http://www.gnu.org/licenses/>. */ > > -#ifndef COMMON_DIAGNOSTICS_H > -#define COMMON_DIAGNOSTICS_H > - > -#include "common/preprocessor.h" Putting this #include back fixes the build. Apparently in this configuration, include/diagnostics.h doesn't otherwise have a definition of STRINGIFY whereas on Linux or other platforms it does, via some coincidence of different host-related includes or something. Cheers, John ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h 2018-06-04 10:51 ` John Marshall @ 2018-06-04 13:12 ` H.J. Lu 2018-06-04 13:24 ` John Marshall 2018-06-04 13:35 ` Pedro Alves 0 siblings, 2 replies; 23+ messages in thread From: H.J. Lu @ 2018-06-04 13:12 UTC (permalink / raw) To: John Marshall; +Cc: binutils, gdb-patches On Mon, Jun 4, 2018 at 3:51 AM, John Marshall <John.W.Marshall@glasgow.ac.uk> wrote: > On 21 May 2018, at 13:15, H dot J dot Lu <hjl dot tools at gmail dot com> wrote: >> Move gdb/common/diagnostics.h to include/diagnostics.h so that it can >> be used in binutils. > > This patch broke building gdb on MacOS with clang (i.e., after ./configure with no options): > > CXX gdb.o > In file included from ../../../binutils-gdb/gdb/gdb.c:19: > In file included from ../../../binutils-gdb/gdb/defs.h:531: > In file included from ../../../binutils-gdb/gdb/gdbarch.h:39: > In file included from ../../../binutils-gdb/gdb/frame.h:72: > In file included from ../../../binutils-gdb/gdb/language.h:26: > ../../../binutils-gdb/gdb/symtab.h:1361:1: error: _Pragma takes a parenthesized string literal > DEF_VEC_P (symtab_ptr); > >> --- a/gdb/common/diagnostics.h >> +++ b/include/diagnostics.h >> [snip] >> @@ -15,10 +13,8 @@ >> You should have received a copy of the GNU General Public License >> along with this program. If not, see <http://www.gnu.org/licenses/>. */ >> >> -#ifndef COMMON_DIAGNOSTICS_H >> -#define COMMON_DIAGNOSTICS_H >> - >> -#include "common/preprocessor.h" > > Putting this #include back fixes the build. Apparently in this configuration, include/diagnostics.h doesn't otherwise have a definition of STRINGIFY whereas on Linux or other platforms it does, via some coincidence of different host-related includes or something. Please add #include "common/preprocessor.h" to gdb.c. -- H.J. ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h 2018-06-04 13:12 ` H.J. Lu @ 2018-06-04 13:24 ` John Marshall 2018-06-04 13:35 ` Pedro Alves 1 sibling, 0 replies; 23+ messages in thread From: John Marshall @ 2018-06-04 13:24 UTC (permalink / raw) To: H.J. Lu; +Cc: binutils, gdb-patches On 4 Jun 2018, at 14:12, H.J. Lu <hjl.tools@gmail.com> wrote: > Please add > > #include "common/preprocessor.h" > > to gdb.c. The problem occurs in other source files too. (And I'm not a GDB maintainer, so I won't be adding anything to anything :-)) > Move gdb/common/diagnostics.h to include/diagnostics.h so that it can > be used in binutils. If the intention is to use include/diagnostics.h in binutils outwith GDB, then gdb/common/preprocessor.h will need to follow diagnostics.h to include/. (Or at least a definition of STRINGIFY will need to be in include/ -- but preprocessor.h seems as generic as diagnostics.h in any case, so it seems appropriate to just move it all.) John ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h 2018-06-04 13:12 ` H.J. Lu 2018-06-04 13:24 ` John Marshall @ 2018-06-04 13:35 ` Pedro Alves 2018-06-04 13:37 ` H.J. Lu 1 sibling, 1 reply; 23+ messages in thread From: Pedro Alves @ 2018-06-04 13:35 UTC (permalink / raw) To: H.J. Lu, John Marshall; +Cc: binutils, gdb-patches On 06/04/2018 02:12 PM, H.J. Lu wrote: > On Mon, Jun 4, 2018 at 3:51 AM, John Marshall > <John.W.Marshall@glasgow.ac.uk> wrote: >> On 21 May 2018, at 13:15, H dot J dot Lu <hjl dot tools at gmail dot com> wrote: >>> Move gdb/common/diagnostics.h to include/diagnostics.h so that it can >>> be used in binutils. >> >> This patch broke building gdb on MacOS with clang (i.e., after ./configure with no options): >> >> CXX gdb.o >> In file included from ../../../binutils-gdb/gdb/gdb.c:19: >> In file included from ../../../binutils-gdb/gdb/defs.h:531: >> In file included from ../../../binutils-gdb/gdb/gdbarch.h:39: >> In file included from ../../../binutils-gdb/gdb/frame.h:72: >> In file included from ../../../binutils-gdb/gdb/language.h:26: >> ../../../binutils-gdb/gdb/symtab.h:1361:1: error: _Pragma takes a parenthesized string literal >> DEF_VEC_P (symtab_ptr); I think clang is printing a bogus location here. symtab.h includes vec.h, which includes diagnostics.h and does: /* clang has a bug that makes it warn (-Wunused-function) about unused functions that are the result of the DEF_VEC_* macro expansion. See: https://bugs.llvm.org/show_bug.cgi?id=22712 We specifically ignore this warning for the vec functions when the compiler is clang. */ #ifdef __clang__ # define DIAGNOSTIC_IGNORE_UNUSED_VEC_FUNCTION \ DIAGNOSTIC_IGNORE_UNUSED_FUNCTION #else # define DIAGNOSTIC_IGNORE_UNUSED_VEC_FUNCTION #endif and that's most certainly what is tripping on the _Pragma+STRINGIFY. >> >>> --- a/gdb/common/diagnostics.h >>> +++ b/include/diagnostics.h >>> [snip] >>> @@ -15,10 +13,8 @@ >>> You should have received a copy of the GNU General Public License >>> along with this program. If not, see <http://www.gnu.org/licenses/>. */ >>> >>> -#ifndef COMMON_DIAGNOSTICS_H >>> -#define COMMON_DIAGNOSTICS_H >>> - >>> -#include "common/preprocessor.h" >> >> Putting this #include back fixes the build. Apparently in this configuration, include/diagnostics.h doesn't otherwise have a definition of STRINGIFY whereas on Linux or other platforms it does, via some coincidence of different host-related includes or something. > > Please add > > #include "common/preprocessor.h" > > to gdb.c. > I don't think so, see above. Where does binutils get the definition of STRINGIFY from? Your other patch does: > --- a/include/diagnostics.h > +++ b/include/diagnostics.h > @@ -19,8 +19,13 @@ > #ifdef __GNUC__ > # define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push") > # define DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop") > + > +/* Stringification. */ > +# define DIAGNOSTIC_STRINGIFY_1(x) #x > +# define DIAGNOSTIC_STRINGIFY(x) DIAGNOSTIC_STRINGIFY_1 (x) > + > # define DIAGNOSTIC_IGNORE(option) \ > - _Pragma (STRINGIFY (GCC diagnostic ignored option)) > + _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored option)) > #else So I'm surprised by your suggestion. That DIAGNOSTIC_STRINGIFY bit should be split out of that other patch and pushed in separately, IMO. Alternatively, preprocessor.h should be shared too. Thanks, Pedro Alves ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h 2018-06-04 13:35 ` Pedro Alves @ 2018-06-04 13:37 ` H.J. Lu 0 siblings, 0 replies; 23+ messages in thread From: H.J. Lu @ 2018-06-04 13:37 UTC (permalink / raw) To: Pedro Alves; +Cc: John Marshall, binutils, gdb-patches On Mon, Jun 4, 2018 at 6:35 AM, Pedro Alves <palves@redhat.com> wrote: > On 06/04/2018 02:12 PM, H.J. Lu wrote: >> On Mon, Jun 4, 2018 at 3:51 AM, John Marshall >> <John.W.Marshall@glasgow.ac.uk> wrote: >>> On 21 May 2018, at 13:15, H dot J dot Lu <hjl dot tools at gmail dot com> wrote: >>>> Move gdb/common/diagnostics.h to include/diagnostics.h so that it can >>>> be used in binutils. >>> >>> This patch broke building gdb on MacOS with clang (i.e., after ./configure with no options): >>> >>> CXX gdb.o >>> In file included from ../../../binutils-gdb/gdb/gdb.c:19: >>> In file included from ../../../binutils-gdb/gdb/defs.h:531: >>> In file included from ../../../binutils-gdb/gdb/gdbarch.h:39: >>> In file included from ../../../binutils-gdb/gdb/frame.h:72: >>> In file included from ../../../binutils-gdb/gdb/language.h:26: >>> ../../../binutils-gdb/gdb/symtab.h:1361:1: error: _Pragma takes a parenthesized string literal >>> DEF_VEC_P (symtab_ptr); > > I think clang is printing a bogus location here. symtab.h includes > vec.h, which includes diagnostics.h and does: > > /* clang has a bug that makes it warn (-Wunused-function) about unused functions > that are the result of the DEF_VEC_* macro expansion. See: > > https://bugs.llvm.org/show_bug.cgi?id=22712 > > We specifically ignore this warning for the vec functions when the compiler > is clang. */ > #ifdef __clang__ > # define DIAGNOSTIC_IGNORE_UNUSED_VEC_FUNCTION \ > DIAGNOSTIC_IGNORE_UNUSED_FUNCTION > #else > # define DIAGNOSTIC_IGNORE_UNUSED_VEC_FUNCTION > #endif > > and that's most certainly what is tripping on the _Pragma+STRINGIFY. > >>> >>>> --- a/gdb/common/diagnostics.h >>>> +++ b/include/diagnostics.h >>>> [snip] >>>> @@ -15,10 +13,8 @@ >>>> You should have received a copy of the GNU General Public License >>>> along with this program. If not, see <http://www.gnu.org/licenses/>. */ >>>> >>>> -#ifndef COMMON_DIAGNOSTICS_H >>>> -#define COMMON_DIAGNOSTICS_H >>>> - >>>> -#include "common/preprocessor.h" >>> >>> Putting this #include back fixes the build. Apparently in this configuration, include/diagnostics.h doesn't otherwise have a definition of STRINGIFY whereas on Linux or other platforms it does, via some coincidence of different host-related includes or something. >> >> Please add >> >> #include "common/preprocessor.h" >> >> to gdb.c. >> > > I don't think so, see above. > > Where does binutils get the definition of STRINGIFY from? > > Your other patch does: > >> --- a/include/diagnostics.h >> +++ b/include/diagnostics.h >> @@ -19,8 +19,13 @@ >> #ifdef __GNUC__ >> # define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push") >> # define DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop") >> + >> +/* Stringification. */ >> +# define DIAGNOSTIC_STRINGIFY_1(x) #x >> +# define DIAGNOSTIC_STRINGIFY(x) DIAGNOSTIC_STRINGIFY_1 (x) >> + >> # define DIAGNOSTIC_IGNORE(option) \ >> - _Pragma (STRINGIFY (GCC diagnostic ignored option)) >> + _Pragma (DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored option)) >> #else > > So I'm surprised by your suggestion. That DIAGNOSTIC_STRINGIFY > bit should be split out of that other patch and pushed in > separately, IMO. Alternatively, preprocessor.h should be shared too. > I pushed my second patch and will submit a follow up patch to address your concern on GCC version. -- H.J. ^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2018-07-02 16:25 UTC | newest] Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-05-21 12:16 [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h H.J. Lu 2018-05-21 13:10 ` [PATCH 2/3] Add DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION H.J. Lu 2018-06-01 7:57 ` Nick Clifton 2018-06-01 10:19 ` Alan Modra 2018-06-01 16:51 ` H.J. Lu 2018-06-04 12:13 ` Nick Clifton 2018-06-04 12:19 ` Pedro Alves 2018-06-04 12:46 ` H.J. Lu 2018-06-04 13:31 ` H.J. Lu 2018-06-04 13:40 ` Pedro Alves 2018-06-04 14:04 ` Pedro Alves 2018-05-21 13:12 ` [PATCH 3/3] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8 H.J. Lu 2018-06-01 7:59 ` Nick Clifton 2018-06-04 16:58 ` H.J. Lu 2018-06-04 17:06 ` Pedro Alves 2018-07-02 16:25 ` Tulio Magno Quites Machado Filho 2018-05-21 14:12 ` [PATCH 1/3] Move gdb/common/diagnostics.h to include/diagnostics.h Simon Marchi 2018-06-01 7:49 ` Nick Clifton 2018-06-04 10:51 ` John Marshall 2018-06-04 13:12 ` H.J. Lu 2018-06-04 13:24 ` John Marshall 2018-06-04 13:35 ` Pedro Alves 2018-06-04 13:37 ` H.J. Lu
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).