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

            Bug ID: 118792
           Summary: Off-by-one in underlined ranges in sarif-replay
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: SARIF
          Severity: normal
          Priority: P3
         Component: sarif-replay
          Assignee: dmalcolm at gcc dot gnu.org
          Reporter: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

Compare diagnostics emitted directly:

$ ./xgcc -B. -S ../../src/gcc/testsuite/gcc.dg/bad-dereference.c 
../../src/gcc/testsuite/gcc.dg/bad-dereference.c: In function ‘test_1’:
../../src/gcc/testsuite/gcc.dg/bad-dereference.c:10:10: error: invalid type
argument of unary ‘*’ (have ‘int’)
   10 |   return *some_f.x; /* { dg-error "invalid type argument of unary ...
.have .int.." } */
      |          ^~~~~~~~~
../../src/gcc/testsuite/gcc.dg/bad-dereference.c: In function ‘test_2’:
../../src/gcc/testsuite/gcc.dg/bad-dereference.c:19:10: error: invalid type
argument of unary ‘*’ (have ‘struct foo’)
   19 |   return *some_f; /* { dg-error "invalid type argument of unary ...
.have .struct foo.." } */
      |          ^~~~~~~

...vs diagnostics saved in .sarif and then replayed via sarif-replay:

$ ./xgcc -B. -S ../../src/gcc/testsuite/gcc.dg/bad-dereference.c
-fdiagnostics-format=sarif-file

$ ls -al bad-dereference.c.sarif 
-rw-rw-r--. 1 david david 5754 Feb  7 19:00 bad-dereference.c.sarif

$ LD_LIBRARY_PATH=. ./sarif-replay bad-dereference.c.sarif 
In function 'test_1':
../../src/gcc/testsuite/gcc.dg/bad-dereference.c:10:10: error: invalid type
argument of unary ‘*’ (have ‘int’) [error]
   10 |   return *some_f.x; /* { dg-error "invalid type argument of unary ...
.have .int.." } */
      |          ^~~~~~~~~~
In function 'test_2':
../../src/gcc/testsuite/gcc.dg/bad-dereference.c:19:10: error: invalid type
argument of unary ‘*’ (have ‘struct foo’) [error]
   19 |   return *some_f; /* { dg-error "invalid type argument of unary ...
.have .struct foo.." } */
      |          ^~~~~~~~

Note that sarif-replay is erroneously underlining one extra column, e.g the
original has:

   10 |   return *some_f.x;
      |          ^~~~~~~~~

(stopping at the "x") whereas the replay has:

   10 |   return *some_f.x;
      |          ^~~~~~~~~~

(erroneously also underlining the semicolon)

Reply via email to