aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2025-02-11 08:54:15 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2025-02-11 08:54:15 -0500
commite8c5013b6b7820d77edc45d04e634d49b20c05ce (patch)
tree43753a177a808ed6e9c36ceb87aa7090edcdc8fd /gcc
parent0f8fd6b336161ed0582edb08dbe6ea1932290a75 (diff)
downloadgcc-e8c5013b6b7820d77edc45d04e634d49b20c05ce.zip
gcc-e8c5013b6b7820d77edc45d04e634d49b20c05ce.tar.gz
gcc-e8c5013b6b7820d77edc45d04e634d49b20c05ce.tar.bz2
sarif-replay: fix off-by-one in handling of "endColumn" (§3.30.8) [PR118792]
gcc/ChangeLog: PR sarif-replay/118792 * libsarifreplay.cc (sarif_replayer::handle_region_object): Fix off-by-one in handling of endColumn property so that the code matches the comment and the SARIF spec (§3.30.8). gcc/testsuite/ChangeLog: PR sarif-replay/118792 * sarif-replay.dg/2.1.0-valid/error-with-note.sarif: Update expected output to reflect fix to off-by-one error in handling of "endColumn" property. * sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif: Likewise. * sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif: Likewise. * sarif-replay.dg/2.1.0-valid/signal-1.c.sarif: Likewise. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/libsarifreplay.cc2
-rw-r--r--gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif4
-rw-r--r--gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif24
-rw-r--r--gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif14
-rw-r--r--gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif14
5 files changed, 29 insertions, 29 deletions
diff --git a/gcc/libsarifreplay.cc b/gcc/libsarifreplay.cc
index 61d9565..71f8079 100644
--- a/gcc/libsarifreplay.cc
+++ b/gcc/libsarifreplay.cc
@@ -1739,7 +1739,7 @@ handle_region_object (const json::object &region_obj,
/* SARIF's endColumn is 1 beyond the final column in the region,
whereas GCC's end columns are inclusive. */
end = m_output_mgr.new_location_from_file_line_column
- (file, end_line, end_column_jnum->get ());
+ (file, end_line, end_column_jnum->get () - 1);
}
else
{
diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif
index 0d75a69..77d5a4e 100644
--- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif
+++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif
@@ -26,12 +26,12 @@
/* { dg-begin-multiline-output "" }
/this/does/not/exist/test.bas:2:8: error: 'GOTO' is considered harmful
2 | GOTO label
- | ^~~~~~~~~~
+ | ^~~~~~~~~~
{ dg-end-multiline-output "" } */
/* { dg-begin-multiline-output "" }
/this/does/not/exist/test.bas:1:1: note: this is the target of the 'GOTO'
1 | label: PRINT "hello world!"
- | ^~~~~~
+ | ^~~~~
{ dg-end-multiline-output "" } */
// TODO: trailing [error]
diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif
index 55c646b..947d65c 100644
--- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif
+++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif
@@ -339,37 +339,37 @@
In function 'callee_1':
/not/a/real/path/malloc-vs-local-4.c:5:3: warning: dereference of possibly-NULL ‘ptr’ [-Wanalyzer-possible-null-dereference]
5 | *ptr = 42;
- | ^~~~~~~~~~
+ | ^~~~~~~~~
'test_1': events 1-5
|
| 8 | int test_1 (int i, int flag)
- | | ^~~~~~~
+ | | ^~~~~~
| | |
| | (1) entry to ‘test_1’
|......
| 12 | if (flag)
- | | ~~
+ | | ~
| | |
| | (2) following ‘true’ branch (when ‘flag != 0’)...
| 13 | ptr = (int *)malloc (sizeof (int));
- | | ~~~~~~~~~~~~~~~~~~~~~~
+ | | ~~~~~~~~~~~~~~~~~~~~~
| | |
| | (3) ...to here
| | (4) this call could return NULL
| 14 | callee_1 (ptr);
- | | ~~~~~~~~~~~~~~~
+ | | ~~~~~~~~~~~~~~
| | |
| | (5) calling ‘callee_1’ from ‘test_1’
|
+--> 'callee_1': events 6-7
|
| 3 | void __attribute__((noinline)) callee_1 (int *ptr)
- | | ^~~~~~~~~
+ | | ^~~~~~~~
| | |
| | (6) entry to ‘callee_1’
| 4 | {
| 5 | *ptr = 42;
- | | ~~~~~~~~~~
+ | | ~~~~~~~~~
| | |
| | (7) ‘ptr’ could be NULL: unchecked value from (4)
|
@@ -378,24 +378,24 @@ In function 'callee_1':
In function 'test_2':
/not/a/real/path/malloc-vs-local-4.c:38:7: warning: double-‘free’ of ‘ptr’ [-Wanalyzer-double-free]
38 | free (ptr);
- | ^~~~~~~~~~~
+ | ^~~~~~~~~~
'test_2': events 1-5
34 | if (!flag)
- | ^~
+ | ^
| |
| (1) following ‘true’ branch (when ‘flag == 0’)...
35 | {
36 | void *ptr = malloc (16);
- | ~~~~~~~~~~~~
+ | ~~~~~~~~~~~
| |
| (2) ...to here
| (3) allocated here
37 | free (ptr);
- | ~~~~~~~~~~~
+ | ~~~~~~~~~~
| |
| (4) first ‘free’ here
38 | free (ptr);
- | ~~~~~~~~~~~
+ | ~~~~~~~~~~
| |
| (5) second ‘free’ here; first ‘free’ was at (4)
{ dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif
index f0026de..b176053 100644
--- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif
+++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif
@@ -170,16 +170,16 @@
In function 'custom_logger':
signal-1.c:13:3: warning: call to ‘fprintf’ from within signal handler [-Wanalyzer-unsafe-call-within-signal-handler]
13 | fprintf(stderr, "LOG: %s", msg);
- | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'main': events 1-2
|
| 21 | int main(int argc, const char *argv)
- | | ^~~~~
+ | | ^~~~
| | |
| | (1) entry to ‘main’
|......
| 25 | signal(SIGINT, handler);
- | | ~~~~~~~~~~~~~~~~~~~~~~~~
+ | | ~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (2) registering ‘handler’ as signal handler
|
@@ -191,24 +191,24 @@ signal-1.c:13:3: warning: call to ‘fprintf’ from within signal handler [-Wan
+--> 'handler': events 4-5
|
| 16 | static void handler(int signum)
- | | ^~~~~~~~
+ | | ^~~~~~~
| | |
| | (4) entry to ‘handler’
| 17 | {
| 18 | custom_logger("got signal");
- | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (5) calling ‘custom_logger’ from ‘handler’
|
+--> 'custom_logger': events 6-7
|
| 11 | void custom_logger(const char *msg)
- | | ^~~~~~~~~~~~~~
+ | | ^~~~~~~~~~~~~
| | |
| | (6) entry to ‘custom_logger’
| 12 | {
| 13 | fprintf(stderr, "LOG: %s", msg);
- | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (7) call to ‘fprintf’ from within signal handler
|
diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif
index e2f316b..54fa0b8 100644
--- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif
+++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif
@@ -168,16 +168,16 @@
In function 'custom_logger':
../../src/gcc/testsuite/gcc.dg/analyzer/signal-1.c:13:3: warning: call to ‘fprintf’ from within signal handler [-Wanalyzer-unsafe-call-within-signal-handler]
13 | fprintf(stderr, "LOG: %s", msg);
- | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'main': events 1-2
|
| 21 | int main(int argc, const char *argv)
- | | ^~~~~
+ | | ^~~~
| | |
| | (1) entry to ‘main’
|......
| 25 | signal(SIGINT, handler);
- | | ~~~~~~~~~~~~~~~~~~~~~~~~
+ | | ~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (2) registering ‘handler’ as signal handler
|
@@ -189,24 +189,24 @@ In function 'custom_logger':
+--> 'handler': events 4-5
|
| 16 | static void handler(int signum)
- | | ^~~~~~~~
+ | | ^~~~~~~
| | |
| | (4) entry to ‘handler’
| 17 | {
| 18 | custom_logger("got signal");
- | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (5) calling ‘custom_logger’ from ‘handler’
|
+--> 'custom_logger': events 6-7
|
| 11 | void custom_logger(const char *msg)
- | | ^~~~~~~~~~~~~~
+ | | ^~~~~~~~~~~~~
| | |
| | (6) entry to ‘custom_logger’
| 12 | {
| 13 | fprintf(stderr, "LOG: %s", msg);
- | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (7) call to ‘fprintf’ from within signal handler
|