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