https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117178

--- Comment #28 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:622968990beee7499e951590258363545b4a3b57

commit r15-7900-g622968990beee7499e951590258363545b4a3b57
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Mar 7 23:59:34 2025 +0100

    c: do not warn about truncating NUL char when initializing nonstring arrays
[PR117178]

    When initializing a nonstring char array when compiled with
    -Wunterminated-string-initialization the warning trips even when
    truncating the trailing NUL character from the string constant.  Only
    warn about this when running under -Wc++-compat since under C++ we should
    not initialize nonstrings from C strings.

    This patch separates the -Wunterminated-string-initialization and
    -Wc++-compat warnings, they are now independent option, the former implied
    by -Wextra, the latter not implied by anything.  If -Wc++-compat is in
effect,
    it takes precedence over -Wunterminated-string-initialization and warns
regardless
    of nonstring attribute, otherwise if -Wunterminated-string-initialization
is
    enabled, it warns only if there isn't nonstring attribute.
    In all cases, the warnings and also pedwarn_init for even larger sizes now
    provide details on the lengths.

    2025-03-07  Kees Cook  <k...@kernel.org>
                Jakub Jelinek  <ja...@redhat.com>

            PR c/117178
    gcc/
            * doc/invoke.texi (Wunterminated-string-initialization): Document
            the new interaction between this warning and -Wc++-compat and that
            initialization of decls with nonstring attribute aren't warned
about.
    gcc/c-family/
            * c.opt (Wunterminated-string-initialization): Don't depend on
            -Wc++-compat.
    gcc/c/
            * c-typeck.cc (digest_init): Add DECL argument.  Adjust wording of
            pedwarn_init for too long strings and provide details on the
lengths,
            for string literals where just the trailing NULL doesn't fit warn
for
            warn_cxx_compat with OPT_Wc___compat, wording which mentions "for
C++"
            and provides details on lengths, otherwise for
            warn_unterminated_string_initialization adjust the warning, provide
            details on lengths and don't warn if get_attr_nonstring_decl
(decl).
            (build_c_cast, store_init_value, output_init_element): Adjust
            digest_init callers.
    gcc/testsuite/
            * gcc.dg/Wunterminated-string-initialization.c: Add additional test
            coverage.
            * gcc.dg/Wcxx-compat-14.c: Check in dg-warning for "for C++" part
of
            the diagnostics.
            * gcc.dg/Wcxx-compat-23.c: New test.
            * gcc.dg/Wcxx-compat-24.c: New test.

    Signed-off-by: Kees Cook <k...@kernel.org>

Reply via email to