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