]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/analyzer/region-model.cc
analyzer: check for writes to consts via access attr [PR104793]
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 10 Mar 2022 14:04:03 +0000 (09:04 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Thu, 10 Mar 2022 14:04:03 +0000 (09:04 -0500)
commitb6eaf90c64f91553c8002f6ee401785a8bc6f94c
tree62ead60a21c9cc25db4ba9f9b11a5433657ffeef
parent708646de75cba2e3855bde09d21816ca66239a67
analyzer: check for writes to consts via access attr [PR104793]

This patch extends:
  -Wanalyzer-write-to-const
  -Wanalyzer-write-to-string-literal
so that they will check for __attribute__ ((access, ....) on calls to
externally-defined functions, and complain about read-only regions
pointed to by arguments marked with a "write_only" or "read_write"
attribute.

gcc/analyzer/ChangeLog:
PR analyzer/104793
* region-model.cc
(region_model::check_external_function_for_access_attr): New.
(region_model::handle_unrecognized_call): Call it.
* region-model.h
(region_model::check_external_function_for_access_attr): New decl.
(region_model::handle_unrecognized_call): New decl.

gcc/testsuite/ChangeLog:
PR analyzer/104793
* gcc.dg/analyzer/write-to-const-2.c: New test.
* gcc.dg/analyzer/write-to-function-1.c: New test.
* gcc.dg/analyzer/write-to-string-literal-2.c: New test.
* gcc.dg/analyzer/write-to-string-literal-3.c: New test.
* gcc.dg/analyzer/write-to-string-literal-4.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
gcc/analyzer/region-model.cc
gcc/analyzer/region-model.h
gcc/testsuite/gcc.dg/analyzer/write-to-const-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/analyzer/write-to-function-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-4.c [new file with mode: 0644]