public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
@ 2022-01-04 19:57 ` siddhesh at gcc dot gnu.org
  2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 9+ messages in thread
From: siddhesh at gcc dot gnu.org @ 2022-01-04 19:57 UTC (permalink / raw)
  To: gcc-bugs

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

Siddhesh Poyarekar <siddhesh at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |siddhesh at gcc dot gnu.org
                 CC|                            |siddhesh at gcc dot gnu.org

--- Comment #3 from Siddhesh Poyarekar <siddhesh at gcc dot gnu.org> ---
I'm taking this; __builtin_dynamic_object_size is halfway in, so once it's all
in I'll work on this.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
  2022-01-04 19:57 ` [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size siddhesh at gcc dot gnu.org
@ 2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
  2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-01-11 14:48 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Siddhesh Poyarekar
<siddhesh@gcc.gnu.org>:

https://gcc.gnu.org/g:404c787e2bfe8cae666b075ed903990ea452220e

commit r12-6479-g404c787e2bfe8cae666b075ed903990ea452220e
Author: Siddhesh Poyarekar <siddhesh@gotplt.org>
Date:   Tue Jan 11 05:27:51 2022 +0530

    tree-object-size: Support dynamic sizes in conditions

    Handle GIMPLE_PHI and conditionals specially for dynamic objects,
    returning PHI/conditional expressions instead of just a MIN/MAX
    estimate.

    This makes the returned object size variable for loops and conditionals,
    so tests need to be adjusted to look for precise size in some cases.
    builtin-dynamic-object-size-5.c had to be modified to only look for
    success in maximum object size case and skip over the minimum object
    size tests because the result is no longer a compile time constant.

    I also added some simple tests to exercise conditionals with dynamic
    object sizes.

    gcc/ChangeLog:

            PR middle-end/70090
            * builtins.c (fold_builtin_object_size): Adjust for dynamic size
            expressions.
            * tree-object-size.c: Include gimplify-me.h.
            (struct object_size_info): New member UNKNOWNS.
            (size_initval_p, size_usable_p, object_sizes_get_raw): New
            functions.
            (object_sizes_get): Return suitable gimple variable for
            object size.
            (bundle_sizes): New function.
            (object_sizes_set): Use it and handle dynamic object size
            expressions.
            (object_sizes_set_temp): New function.
            (size_for_offset): Adjust for dynamic size expressions.
            (emit_phi_nodes, propagate_unknowns, gimplify_size_expressions):
            New functions.
            (compute_builtin_object_size): Call gimplify_size_expressions
            for OST_DYNAMIC.
            (dynamic_object_size): New function.
            (cond_expr_object_size): Use it.
            (phi_dynamic_object_size): New function.
            (collect_object_sizes_for): Call it for OST_DYNAMIC.  Adjust to
            accommodate dynamic object sizes.

    gcc/testsuite/ChangeLog:

            PR middle-end/70090
            * gcc.dg/builtin-dynamic-object-size-0.c: New tests.
            * gcc.dg/builtin-dynamic-object-size-10.c: Add comment.
            * gcc.dg/builtin-dynamic-object-size-5-main.c: New file.
            * gcc.dg/builtin-dynamic-object-size-5.c: Use it and change test
            to dg-do run.
            * gcc.dg/builtin-object-size-5.c [!N]: Define N.
            (test1, test2, test3, test4) [__builtin_object_size]: Expect
            exact result for __builtin_dynamic_object_size.
            * gcc.dg/builtin-object-size-1.c [__builtin_object_size]: Expect
            exact size expressions for __builtin_dynamic_object_size.
            * gcc.dg/builtin-object-size-2.c [__builtin_object_size]:
            Likewise.
            * gcc.dg/builtin-object-size-3.c [__builtin_object_size]:
            Likewise.
            * gcc.dg/builtin-object-size-4.c [__builtin_object_size]:
            Likewise.

    Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
  2022-01-04 19:57 ` [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size siddhesh at gcc dot gnu.org
  2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
@ 2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
  2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-01-11 14:48 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Siddhesh Poyarekar
<siddhesh@gcc.gnu.org>:

https://gcc.gnu.org/g:ea19c8f33a3a8d2b52f89f1fade0a21e3c779190

commit r12-6480-gea19c8f33a3a8d2b52f89f1fade0a21e3c779190
Author: Siddhesh Poyarekar <siddhesh@gotplt.org>
Date:   Tue Jan 11 19:51:37 2022 +0530

    tree-object-size: Handle function parameters

    Handle hints provided by __attribute__ ((access (...))) to compute
    dynamic sizes for objects.

    gcc/ChangeLog:

            PR middle-end/70090
            * tree-object-size.c: Include tree-dfa.h.
            (parm_object_size): New function.
            (collect_object_sizes_for): Call it.

    gcc/testsuite/ChangeLog:

            PR middle-end/70090
            * gcc.dg/builtin-dynamic-object-size-0.c (test_parmsz_simple,
            test_parmsz_scaled, test_parmsz_unknown): New functions.
            (main): Call them.  Add new arguments argc and argv.

    Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
@ 2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
  2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-01-11 14:48 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Siddhesh Poyarekar
<siddhesh@gcc.gnu.org>:

https://gcc.gnu.org/g:1f07810659616221c3bf4177c1fc2ca3607f7728

commit r12-6481-g1f07810659616221c3bf4177c1fc2ca3607f7728
Author: Siddhesh Poyarekar <siddhesh@gotplt.org>
Date:   Tue Jan 11 19:52:43 2022 +0530

    tree-object-size: Handle GIMPLE_CALL

    Handle non-constant expressions in GIMPLE_CALL arguments.  Also handle
    alloca.

    gcc/ChangeLog:

            PR middle-end/70090
            * tree-object-size.c (alloc_object_size): Make and return
            non-constant size expression.
            (call_object_size): Return expression or unknown based on
            whether dynamic object size is requested.

    gcc/testsuite/ChangeLog:

            PR middle-end/70090
            * gcc.dg/builtin-dynamic-object-size-0.c: Add new tests.
            * gcc.dg/builtin-object-size-1.c (test1)
            [__builtin_object_size]: Alter expected result for dynamic
            object size.
            * gcc.dg/builtin-object-size-2.c (test1)
            [__builtin_object_size]: Likewise.
            * gcc.dg/builtin-object-size-3.c (test1)
            [__builtin_object_size]: Likewise.
            * gcc.dg/builtin-object-size-4.c (test1)
            [__builtin_object_size]: Likewise.

    Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
                   ` (3 preceding siblings ...)
  2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
@ 2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
  2022-05-10  7:22 ` cvs-commit at gcc dot gnu.org
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-01-11 14:48 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Siddhesh Poyarekar
<siddhesh@gcc.gnu.org>:

https://gcc.gnu.org/g:06bc1b0c539e3a60692d7432d15e701c38610f80

commit r12-6482-g06bc1b0c539e3a60692d7432d15e701c38610f80
Author: Siddhesh Poyarekar <siddhesh@gotplt.org>
Date:   Tue Jan 11 08:08:27 2022 +0530

    tree-object-size: Dynamic sizes for ADDR_EXPR

    Allow returning dynamic expressions from ADDR_EXPR for
    __builtin_dynamic_object_size and also allow offsets to be dynamic.

    gcc/ChangeLog:

            PR middle-end/70090
            * tree-object-size.c (size_valid_p): New function.
            (size_for_offset): Remove OFFSET constness assertion.
            (addr_object_size): Build dynamic expressions for object
            sizes and use size_valid_p to decide if it is valid for the
            given OBJECT_SIZE_TYPE.
            (compute_builtin_object_size): Allow dynamic offsets when
            computing size at O0.
            (call_object_size): Call size_valid_p.
            (plus_stmt_object_size): Allow non-constant offset and use
            size_valid_p to decide if it is valid for the given
            OBJECT_SIZE_TYPE.

    gcc/testsuite/ChangeLog:

            PR middle-end/70090
            * gcc.dg/builtin-dynamic-object-size-0.c: Add new tests.
            * gcc.dg/builtin-object-size-1.c (test1)
            [__builtin_object_size]: Adjust expected output for dynamic
            object sizes.
            * gcc.dg/builtin-object-size-2.c (test1)
            [__builtin_object_size]: Likewise.
            * gcc.dg/builtin-object-size-3.c (test1)
            [__builtin_object_size]: Likewise.
            * gcc.dg/builtin-object-size-4.c (test1)
            [__builtin_object_size]: Likewise.

    Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
                   ` (4 preceding siblings ...)
  2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
@ 2022-05-10  7:22 ` cvs-commit at gcc dot gnu.org
  2022-05-10  7:23 ` siddhesh at gcc dot gnu.org
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-05-10  7:22 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Siddhesh Poyarekar
<siddhesh@gcc.gnu.org>:

https://gcc.gnu.org/g:28896b38fabce818e59266b0063a46b3bc1b700f

commit r13-222-g28896b38fabce818e59266b0063a46b3bc1b700f
Author: Siddhesh Poyarekar <siddhesh@gotplt.org>
Date:   Tue May 10 12:51:42 2022 +0530

    middle-end/70090: Dynamic sizes for -fsanitize=object-size

    Use __builtin_dynamic_object_size to get object sizes for ubsan.

    gcc/ChangeLog:

            PR middle-end/70090
            * ubsan.cc (ubsan_expand_objsize_ifn): Allow non-constant SIZE.
            (instrument_object_size): Get dynamic object size expression.

    gcc/testsuite/ChangeLog:

            PR middle-end/70090
            * gcc.dg/ubsan/object-size-dyn.c: New test.

    Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
                   ` (5 preceding siblings ...)
  2022-05-10  7:22 ` cvs-commit at gcc dot gnu.org
@ 2022-05-10  7:23 ` siddhesh at gcc dot gnu.org
  2022-05-11 13:43 ` cvs-commit at gcc dot gnu.org
  2022-12-15 17:53 ` cvs-commit at gcc dot gnu.org
  8 siblings, 0 replies; 9+ messages in thread
From: siddhesh at gcc dot gnu.org @ 2022-05-10  7:23 UTC (permalink / raw)
  To: gcc-bugs

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

Siddhesh Poyarekar <siddhesh at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #9 from Siddhesh Poyarekar <siddhesh at gcc dot gnu.org> ---
__builtin_dynamic_object_size is in gcc12 and ubsan now has dynamic object size
support in gcc13.  Fixed thusly.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
                   ` (6 preceding siblings ...)
  2022-05-10  7:23 ` siddhesh at gcc dot gnu.org
@ 2022-05-11 13:43 ` cvs-commit at gcc dot gnu.org
  2022-12-15 17:53 ` cvs-commit at gcc dot gnu.org
  8 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-05-11 13:43 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Siddhesh Poyarekar
<siddhesh@gcc.gnu.org>:

https://gcc.gnu.org/g:546c6210eb08f583ee4f53a0fd7886b6c958c7fa

commit r13-325-g546c6210eb08f583ee4f53a0fd7886b6c958c7fa
Author: Siddhesh Poyarekar <siddhesh@gotplt.org>
Date:   Wed May 11 19:13:09 2022 +0530

    middle-end/70090: Register __bdos for sanitizers if necessary

    The asan initializer registers __builtin_object_size for languages that
    don't have it, e.g. Fortran.  Register __builtin_dynamic_object_size too
    (we need both because __builtin_dynamic_object_size computation may
    involve generating __builtin_object_size as a fallback) so that
    gfortran.dg/ubsan/bind-c-intent-out-2.f90 does not crash anymore.

    gcc/ChangeLog:

            PR middle-end/70090
            * asan.cc (initialize_sanitizer_builtins): Register
            __builtin_dynamic_object_size if necessary.

    Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size
       [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
                   ` (7 preceding siblings ...)
  2022-05-11 13:43 ` cvs-commit at gcc dot gnu.org
@ 2022-12-15 17:53 ` cvs-commit at gcc dot gnu.org
  8 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-12-15 17:53 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #11 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Siddhesh Poyarekar
<siddhesh@gcc.gnu.org>:

https://gcc.gnu.org/g:7283380a5829150cc820ab3b25c4d91cad372eec

commit r13-4724-g7283380a5829150cc820ab3b25c4d91cad372eec
Author: Siddhesh Poyarekar <siddhesh@gotplt.org>
Date:   Thu Dec 15 11:29:23 2022 -0500

    middle-end/70090: Document that -fsanitize=object-size uses dynamic size

    Fix the documentation to say that object sizes are deduced using
    __builtin_dynamic_object_size.

    gcc/ChangeLog:

            PR middle-end/70090
            * doc/invoke.texi (-fsanitize=object-size): Use
            __builtin_dynamic_object_size instead of
            __builtin_object_size.

    Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-12-15 17:53 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-70090-4@http.gcc.gnu.org/bugzilla/>
2022-01-04 19:57 ` [Bug middle-end/70090] add non-constant variant of __builtin_object_size for _FORTIFY_SOURCE and -fsanitize=object-size siddhesh at gcc dot gnu.org
2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
2022-01-11 14:48 ` cvs-commit at gcc dot gnu.org
2022-05-10  7:22 ` cvs-commit at gcc dot gnu.org
2022-05-10  7:23 ` siddhesh at gcc dot gnu.org
2022-05-11 13:43 ` cvs-commit at gcc dot gnu.org
2022-12-15 17:53 ` cvs-commit at gcc dot gnu.org

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).