This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Silence gcc-8 warnings
- From: Carlos O'Donell <carlos at redhat dot com>
- To: Alan Modra <amodra at gmail dot com>, binutils at sourceware dot org
- Date: Wed, 25 Apr 2018 07:57:22 -0500
- Subject: Re: Silence gcc-8 warnings
- Autocrypt: addr=carlos at redhat dot com; prefer-encrypt=mutual; keydata= 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 ibHNRWhRbl/5Vl7TzYVDjJI=
- Openpgp: preference=signencrypt
- References: <20180423084836.GA18288@bubble.grove.modra.org>
On 04/23/2018 03:48 AM, Alan Modra wrote:
> All of these warnings were false positives. -Wstringop-truncation is
> particularly annoying when it warns about strncpy used quite correctly.
> Changing strncpy to memcpy in the bfd files would be wrong.
>
> bfd/
> * elf-linux-core.h (swap_linux_prpsinfo32_ugid32_out): Disable
> gcc-8 string truncation warning.
> (swap_linux_prpsinfo32_ugid16_out): Likewise.
> (swap_linux_prpsinfo64_ugid32_out): Likewise.
> (swap_linux_prpsinfo64_ugid16_out): Likewise.
> * elf.c (elfcore_write_prpsinfo): Likewise.
> gas/
> * stabs.c (generate_asm_file): Use memcpy rather than strncpy.
> Remove call to strlen inside loop.
> * config/tc-cr16.c (getreg_image): Warning fix.
> * config/tc-crx.c (getreg_image): Warning fix.
>
> diff --git a/bfd/elf-linux-core.h b/bfd/elf-linux-core.h
> index 0a5d76f..25d33f6 100644
> --- a/bfd/elf-linux-core.h
> +++ b/bfd/elf-linux-core.h
> @@ -69,8 +69,12 @@ swap_linux_prpsinfo32_ugid32_out
> bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
> bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
> bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
> +#pragma GCC diagnostic push
> +#pragma GCC diagnostic ignored "-Wpragmas"
> +#pragma GCC diagnostic ignored "-Wstringop-truncation"
> strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
> strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
> +#pragma GCC diagnostic pop
Two comments here:
* The FSF version of gcc should be identified here in an easy to understand way.
For example in glibc we do this:
1533 /* wcdigits_extended[] is fully set in the loop
1534 above, but the test for "map != NULL" is done
1535 inside the loop here and outside the loop there. */
1536 DIAG_PUSH_NEEDS_COMMENT;
1537 DIAG_IGNORE_NEEDS_COMMENT (4.7, "-Wmaybe-uninitialized");
... <Code with warning>
1546 DIAG_POP_NEEDS_COMMENT;
(see glibc/include/libc-diag.h for the macro definitions).
The point is that "4.7" is the version of gcc, easily understand, and when we no
longer support building with this version of gcc we will *cleanup* the pragmas.
The key thing to remember when adding such pragma's as you have added is we need a
way to know when we might remove them. Making that very clear is important IMO.
Your last patch downthread has enough information.
* Consider abstracting away some of the verbose GCC_VERSION checking behind
some helper macros.
For example:
67 #ifdef __OPTIMIZE_SIZE__
68 # define DIAG_IGNORE_Os_NEEDS_COMMENT(version, option) \
69 _Pragma (_DIAG_STR (GCC diagnostic ignored option))
70 #else
71 # define DIAG_IGNORE_Os_NEEDS_COMMENT(version, option)
72 #endif
In glibc we only added a conditional for -Os vs. default, because that makes the
biggest difference in the runtime. Bintuils isn't a runtime (unless you consider
libbfd.a) per-se and so your choices and requirements will be different.
--
Cheers,
Carlos.