Here's v4 of my patch kit for "libdiagnostics", which makes GCC's
diagnostics subsystem available as a shared library; see:
  https://gcc.gnu.org/wiki/libdiagnostics

New in v4:
* tutorial and API documentation (see patch 4)
* added DIAGNOSTIC_SARIF_VERSION_2_2_PRERELEASE
* reimplemented FAIL_IF_NULL to stop checks being optimized away
* various changes to testsuite help with API docs
* rebased and updated for all the various refactorings
  done to diagnostics in trunk since v3

Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu;
adds two new .sum files:

  BUILD/gcc/testsuite/libdiagnostics/libdiagnostics.sum:
    PASS: 135 tests

  BUILD/gcc/testsuite/sarif-replay/sarif-replay.sum:
    PASS: 66 tests


David Malcolm (8):
  libdiagnostics v4: header
  libdiagnostics v4: implementation
  libdiagnostics: add API docs
  libdiagnostics v4: add C++ wrapper API
  testsuite: move dg-test cleanup code from gcc-dg.exp to its own file
  libdiagnostics v4: test suite
  json: add json parsing support
  libdiagnostics: add a "sarif-replay" command-line tool [PR96032]

 configure                                     |   42 +
 configure.ac                                  |   35 +
 contrib/regenerate-sarif-spec-index.py        |   60 +
 gcc/Makefile.in                               |  191 +-
 gcc/configure                                 |   26 +-
 gcc/configure.ac                              |   16 +
 gcc/diagnostic-format-text.h                  |    3 +-
 gcc/doc/install.texi                          |   13 +
 gcc/doc/libdiagnostics/Makefile               |   20 +
 gcc/doc/libdiagnostics/conf.py                |   27 +
 gcc/doc/libdiagnostics/index.rst              |  113 +
 gcc/doc/libdiagnostics/make.bat               |   35 +
 .../topics/diagnostic-manager.rst             |   58 +
 gcc/doc/libdiagnostics/topics/diagnostics.rst |  127 +
 .../libdiagnostics/topics/execution-paths.rst |   93 +
 .../libdiagnostics/topics/fix-it-hints.rst    |  135 +
 gcc/doc/libdiagnostics/topics/index.rst       |   38 +
 .../topics/logical-locations.rst              |  109 +
 .../topics/message-formatting.rst             |  224 ++
 gcc/doc/libdiagnostics/topics/metadata.rst    |  149 +
 .../topics/physical-locations.rst             |  281 ++
 .../libdiagnostics/topics/retrofitting.rst    |   23 +
 gcc/doc/libdiagnostics/topics/sarif.rst       |   51 +
 gcc/doc/libdiagnostics/topics/text-output.rst |   87 +
 gcc/doc/libdiagnostics/topics/ux.rst          |   26 +
 .../tutorial/01-hello-world.rst               |  173 ++
 .../tutorial/02-physical-locations.rst        |  260 ++
 .../tutorial/03-logical-locations.rst         |   60 +
 gcc/doc/libdiagnostics/tutorial/04-notes.rst  |   66 +
 .../libdiagnostics/tutorial/05-warnings.rst   |   44 +
 .../tutorial/06-fix-it-hints.rst              |   61 +
 .../tutorial/07-execution-paths.rst           |  141 +
 gcc/doc/libdiagnostics/tutorial/example-1.png |  Bin 0 -> 5646 bytes
 gcc/doc/libdiagnostics/tutorial/index.rst     |   32 +
 gcc/json-parsing.cc                           | 2394 +++++++++++++++++
 gcc/json-parsing.h                            |  113 +
 gcc/json.cc                                   |    2 +-
 gcc/json.h                                    |  122 +-
 gcc/libdiagnostics++.h                        |  595 ++++
 gcc/libdiagnostics.cc                         | 1683 ++++++++++++
 gcc/libdiagnostics.h                          |  691 +++++
 gcc/libdiagnostics.map                        |   72 +
 gcc/libsarifreplay.cc                         | 1747 ++++++++++++
 gcc/libsarifreplay.h                          |   59 +
 gcc/sarif-replay.cc                           |  239 ++
 gcc/sarif-spec-urls.def                       |  496 ++++
 gcc/selftest-run-tests.cc                     |    1 +
 gcc/selftest.h                                |    1 +
 gcc/testsuite/lib/dg-test-cleanup.exp         |  116 +
 gcc/testsuite/lib/gcc-dg.exp                  |  106 +-
 gcc/testsuite/lib/sarif-replay-dg.exp         |   90 +
 gcc/testsuite/lib/sarif-replay.exp            |  204 ++
 .../libdiagnostics.dg/libdiagnostics.exp      |  296 ++
 gcc/testsuite/libdiagnostics.dg/sarif.py      |   23 +
 gcc/testsuite/libdiagnostics.dg/test-dump.c   |   69 +
 .../libdiagnostics.dg/test-error-c.py         |   54 +
 .../test-error-with-note-c.py                 |   50 +
 .../libdiagnostics.dg/test-error-with-note.c  |   76 +
 .../libdiagnostics.dg/test-error-with-note.cc |   55 +
 gcc/testsuite/libdiagnostics.dg/test-error.c  |   61 +
 gcc/testsuite/libdiagnostics.dg/test-error.cc |   47 +
 .../libdiagnostics.dg/test-example-1.c        |   43 +
 .../libdiagnostics.dg/test-fix-it-hint-c.py   |   46 +
 .../libdiagnostics.dg/test-fix-it-hint.c      |   83 +
 .../libdiagnostics.dg/test-fix-it-hint.cc     |   74 +
 .../libdiagnostics.dg/test-helpers++.h        |   28 +
 .../libdiagnostics.dg/test-helpers.h          |   72 +
 .../libdiagnostics.dg/test-labelled-ranges.c  |   71 +
 .../libdiagnostics.dg/test-labelled-ranges.cc |   64 +
 .../libdiagnostics.dg/test-labelled-ranges.py |   48 +
 .../test-logical-location-c.py                |   37 +
 .../libdiagnostics.dg/test-logical-location.c |   81 +
 .../libdiagnostics.dg/test-metadata-c.py      |   45 +
 .../libdiagnostics.dg/test-metadata.c         |   61 +
 .../test-multiple-lines-c.py                  |   83 +
 .../libdiagnostics.dg/test-multiple-lines.c   |   78 +
 .../libdiagnostics.dg/test-no-column-c.py     |   35 +
 .../libdiagnostics.dg/test-no-column.c        |   54 +
 .../test-no-diagnostics-c.py                  |   42 +
 .../libdiagnostics.dg/test-no-diagnostics.c   |   25 +
 .../test-note-with-fix-it-hint-c.py           |   54 +
 .../test-note-with-fix-it-hint.c              |   69 +
 .../test-text-sink-options.c                  |   59 +
 .../libdiagnostics.dg/test-warning-c.py       |   54 +
 .../test-warning-with-path-c.py               |  108 +
 .../test-warning-with-path.c                  |  138 +
 .../libdiagnostics.dg/test-warning.c          |   67 +
 .../test-write-sarif-to-file-c.py             |   55 +
 .../test-write-sarif-to-file.c                |   55 +
 .../test-write-text-to-file.c                 |   47 +
 .../2.1.0-invalid/3.1-not-an-object.sarif     |    6 +
 .../3.11.11-malformed-placeholder.sarif       |   15 +
 ...1-missing-arguments-for-placeholders.sarif |   14 +
 ...ot-enough-arguments-for-placeholders.sarif |   14 +
 .../2.1.0-invalid/3.13.2-no-version.sarif     |    6 +
 .../3.13.2-version-not-a-string.sarif         |    6 +
 .../2.1.0-invalid/3.13.4-bad-runs.sarif       |    7 +
 .../2.1.0-invalid/3.13.4-no-runs.sarif        |    6 +
 .../3.13.4-non-object-in-runs.sarif           |    7 +
 .../2.1.0-invalid/3.27.10-bad-level.sarif     |   25 +
 .../2.1.0-unhandled/3.27.10-none-level.sarif  |   25 +
 .../2.1.0-valid/error-with-note.sarif         |   34 +
 .../2.1.0-valid/escaped-braces.sarif          |   17 +
 .../2.1.0-valid/null-runs.sarif               |    2 +
 .../2.1.0-valid/signal-1.c.sarif              |  193 ++
 .../2.1.0-valid/spec-example-1.sarif          |   15 +
 .../2.1.0-valid/spec-example-2.sarif          |   73 +
 .../2.1.0-valid/spec-example-3.sarif          |   65 +
 .../2.1.0-valid/spec-example-4.sarif          |  766 ++++++
 .../2.1.0-valid/tutorial-example.sarif        |  117 +
 gcc/testsuite/sarif-replay.dg/dg.exp          |   46 +
 .../malformed-json/array-missing-comma.sarif  |    6 +
 .../array-with-trailing-comma.sarif           |    6 +
 .../malformed-json/bad-token.sarif            |    6 +
 .../malformed-json/object-missing-comma.sarif |    7 +
 .../object-with-trailing-comma.sarif          |    6 +
 libatomic/testsuite/lib/libatomic.exp         |    1 +
 libgomp/testsuite/lib/libgomp.exp             |    1 +
 libitm/testsuite/lib/libitm.exp               |    1 +
 libphobos/testsuite/lib/libphobos-dg.exp      |    1 +
 libstdc++-v3/testsuite/lib/libstdc++.exp      |    1 +
 libvtv/testsuite/lib/libvtv.exp               |    1 +
 122 files changed, 15444 insertions(+), 109 deletions(-)
 create mode 100644 contrib/regenerate-sarif-spec-index.py
 create mode 100644 gcc/doc/libdiagnostics/Makefile
 create mode 100644 gcc/doc/libdiagnostics/conf.py
 create mode 100644 gcc/doc/libdiagnostics/index.rst
 create mode 100644 gcc/doc/libdiagnostics/make.bat
 create mode 100644 gcc/doc/libdiagnostics/topics/diagnostic-manager.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/diagnostics.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/execution-paths.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/fix-it-hints.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/index.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/logical-locations.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/message-formatting.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/metadata.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/physical-locations.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/retrofitting.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/sarif.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/text-output.rst
 create mode 100644 gcc/doc/libdiagnostics/topics/ux.rst
 create mode 100644 gcc/doc/libdiagnostics/tutorial/01-hello-world.rst
 create mode 100644 gcc/doc/libdiagnostics/tutorial/02-physical-locations.rst
 create mode 100644 gcc/doc/libdiagnostics/tutorial/03-logical-locations.rst
 create mode 100644 gcc/doc/libdiagnostics/tutorial/04-notes.rst
 create mode 100644 gcc/doc/libdiagnostics/tutorial/05-warnings.rst
 create mode 100644 gcc/doc/libdiagnostics/tutorial/06-fix-it-hints.rst
 create mode 100644 gcc/doc/libdiagnostics/tutorial/07-execution-paths.rst
 create mode 100644 gcc/doc/libdiagnostics/tutorial/example-1.png
 create mode 100644 gcc/doc/libdiagnostics/tutorial/index.rst
 create mode 100644 gcc/json-parsing.cc
 create mode 100644 gcc/json-parsing.h
 create mode 100644 gcc/libdiagnostics++.h
 create mode 100644 gcc/libdiagnostics.cc
 create mode 100644 gcc/libdiagnostics.h
 create mode 100644 gcc/libdiagnostics.map
 create mode 100644 gcc/libsarifreplay.cc
 create mode 100644 gcc/libsarifreplay.h
 create mode 100644 gcc/sarif-replay.cc
 create mode 100644 gcc/sarif-spec-urls.def
 create mode 100644 gcc/testsuite/lib/dg-test-cleanup.exp
 create mode 100644 gcc/testsuite/lib/sarif-replay-dg.exp
 create mode 100644 gcc/testsuite/lib/sarif-replay.exp
 create mode 100644 gcc/testsuite/libdiagnostics.dg/libdiagnostics.exp
 create mode 100644 gcc/testsuite/libdiagnostics.dg/sarif.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-dump.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-error-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-error-with-note-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-error-with-note.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-error-with-note.cc
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-error.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-error.cc
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-example-1.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-fix-it-hint-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-fix-it-hint.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-fix-it-hint.cc
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-helpers++.h
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-helpers.h
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-labelled-ranges.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-labelled-ranges.cc
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-labelled-ranges.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-logical-location-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-logical-location.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-metadata-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-metadata.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-multiple-lines-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-multiple-lines.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-no-column-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-no-column.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-no-diagnostics-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-no-diagnostics.c
 create mode 100644 
gcc/testsuite/libdiagnostics.dg/test-note-with-fix-it-hint-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-note-with-fix-it-hint.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-text-sink-options.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-warning-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-warning-with-path-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-warning-with-path.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-warning.c
 create mode 100644 
gcc/testsuite/libdiagnostics.dg/test-write-sarif-to-file-c.py
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-write-sarif-to-file.c
 create mode 100644 gcc/testsuite/libdiagnostics.dg/test-write-text-to-file.c
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.1-not-an-object.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.11.11-malformed-placeholder.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.11.11-missing-arguments-for-placeholders.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.11.11-not-enough-arguments-for-placeholders.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.13.2-no-version.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.13.2-version-not-a-string.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.13.4-bad-runs.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.13.4-no-runs.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.13.4-non-object-in-runs.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.27.10-bad-level.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-unhandled/3.27.10-none-level.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-valid/escaped-braces.sarif
 create mode 100644 gcc/testsuite/sarif-replay.dg/2.1.0-valid/null-runs.sarif
 create mode 100644 gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-valid/spec-example-1.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-valid/spec-example-2.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-valid/spec-example-3.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-valid/spec-example-4.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/2.1.0-valid/tutorial-example.sarif
 create mode 100644 gcc/testsuite/sarif-replay.dg/dg.exp
 create mode 100644 
gcc/testsuite/sarif-replay.dg/malformed-json/array-missing-comma.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/malformed-json/array-with-trailing-comma.sarif
 create mode 100644 gcc/testsuite/sarif-replay.dg/malformed-json/bad-token.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/malformed-json/object-missing-comma.sarif
 create mode 100644 
gcc/testsuite/sarif-replay.dg/malformed-json/object-with-trailing-comma.sarif

-- 
2.26.3

Reply via email to