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

--- Comment #18 from Martin Sebor <msebor at gcc dot gnu.org> ---
Author: msebor
Date: Wed Sep 21 01:39:27 2016
New Revision: 240298

URL: https://gcc.gnu.org/viewcvs?rev=240298&root=gcc&view=rev
Log:
PR middle-end/49905 - Better sanity checking on sprintf src & dest to

gcc/ChangeLog:

        PR middle-end/49905
        * Makefile.in (OBJS): Add gimple-ssa-sprintf.o.
        * config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Redefine.
        * config/linux.c (gnu_libc_printf_pointer_format): New function.
        * config/sol2.h (TARGET_PRINTF_POINTER_FORMAT): Same.
        * config/sol2.c (solaris_printf_pointer_format): New function.
        * doc/invoke.texi (-Wformat-length, -fprintf-return-value): New
        options.
        * doc/tm.texi.in (TARGET_PRINTF_POINTER_FORMAT): Document.
        * doc/tm.texi: Regenerate.
        * gimple-fold.h (get_range_strlen): New function.
        (get_maxval_strlen): Declare existing function.
        * gimple-fold.c (get_range_strlen): Add arguments and compute both
        maximum and minimum.
         (get_range_strlen): Define overload.
        (get_maxval_strlen): Adjust.
        * gimple-ssa-sprintf.c: New file and pass.
        * passes.def (pass_sprintf_length): Add new pass.
        * targhooks.h (default_printf_pointer_format): Declare new function.
        (gnu_libc_printf_pointer_format): Same.
        (solaris_libc_printf_pointer_format): Same.
        * targhooks.c (default_printf_pointer_format): Define new function.
        * tree-pass.h (make_pass_sprintf_length): Declare new function.
        * print-tree.c: Increase buffer size.

gcc/c-family/ChangeLog:

        PR middle-end/49905
        * c.opt: Add -Wformat-length and -fprintf-return-value.

gcc/testsuite/ChangeLog:

        PR middle-end/49905
        * gcc.dg/builtin-stringop-chk-1.c: Adjust.
        * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: New test.
        * gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: New test.
        * gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: New test.
        * gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: New test.
        * gcc.dg/tree-ssa/builtin-sprintf.c: New test.
        * gcc.dg/tree-ssa/builtin-sprintf-2.c: New test.


Added:
    trunk/gcc/gimple-ssa-sprintf.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-4.c
    trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/Makefile.in
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/c.opt
    trunk/gcc/config/linux.c
    trunk/gcc/config/linux.h
    trunk/gcc/config/sol2.c
    trunk/gcc/config/sol2.h
    trunk/gcc/doc/invoke.texi
    trunk/gcc/doc/tm.texi
    trunk/gcc/doc/tm.texi.in
    trunk/gcc/gimple-fold.c
    trunk/gcc/gimple-fold.h
    trunk/gcc/passes.def
    trunk/gcc/print-tree.c
    trunk/gcc/target.def
    trunk/gcc/targhooks.c
    trunk/gcc/targhooks.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/builtin-stringop-chk-1.c
    trunk/gcc/tree-pass.h

Reply via email to