On Thu, Aug 15, 2024 at 8:13 PM David Malcolm <dmalc...@redhat.com> wrote: > > Here's v3 of my patch kit for "libdiagnostics", which makes GCC's > diagnostics subsystem available as a shared library; see: > https://gcc.gnu.org/wiki/libdiagnostics
So this is to make use of this from gas? Is the plan to move sources (and dependences) to the toplevel then, possibly building a static convenience lib for GCCs use? Note I'm missing documentation (which is probably there in the libdiagnostics.h header); an addition to sourcebuild.texi might be nice at least and documenting --enable-libdiagnostics in install.texi. > New in v3: > * it bootstraps and pass regression tests > * I added an opt-in configure flag: --enable-libdiagnostics, which > must be enabled to build it (along with --enable-host-shared) > * a new "sarif-replay" command-line tool that takes .sarif files > and replays the diagnostics within them as if they were GCC > diagnostics, in GCC's textual format (i.e. GCC as a SARIF *consumer*, > as well as producer). This is implemented on top of libdiagnostics > hence I've been "eating my own dogfood" > * support for execution paths in libdiagnostics API > * lots of fixes > > Patch 1 has libdiagnostic.h, the public header file > Patch 2 has the implementation > Patch 3 has the C++ wrapper API I added in v2 > Patch 4 has a refactoring of gcc-dg.exp I needed for patch 5. > Patch 5 has the testsuite for libdiagnostics itself > Patch 6 implements JSON parsing support > Patch 7 implements the sarif-replay command-line tool, and its > testsuite, exercising various valid, invalid, and malformed > input files. > > Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu, > both with and without --enable-libdiagnostics. > With --enable-libdiagnostics the patch kit has this effect: > > # of .sum files: 20->22 (+2) > FAIL: 110 > PASS: 617481->617679 (+198) 100.03% > XFAIL: 4512 > XPASS: 13 > UNTESTED: 136 > UNSUPPORTED: 8058 > > where the two new .sum files are: > > BUILD/gcc/testsuite/libdiagnostics/libdiagnostics.sum: > PASS: 132 tests > > BUILD/gcc/testsuite/sarif-replay/sarif-replay.sum: > PASS: 66 tests > > OK for trunk? > > David Malcolm (7): > libdiagnostics v3: header > libdiagnostics v3: implementation > libdiagnostics v3: add C++ wrapper API > testsuite: move dg-test cleanup code from gcc-dg.exp to its own file > libdiagnostics v3: 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-event-id.h | 6 + > gcc/doc/install.texi | 13 + > 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 | 1652 ++++++++++++ > 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 | 74 + > .../libdiagnostics.dg/test-error-with-note.cc | 55 + > gcc/testsuite/libdiagnostics.dg/test-error.c | 59 + > gcc/testsuite/libdiagnostics.dg/test-error.cc | 47 + > .../libdiagnostics.dg/test-fix-it-hint-c.py | 46 + > .../libdiagnostics.dg/test-fix-it-hint.c | 81 + > .../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 | 69 + > .../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 | 79 + > .../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 | 76 + > .../libdiagnostics.dg/test-no-column-c.py | 35 + > .../libdiagnostics.dg/test-no-column.c | 52 + > .../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 | 125 + > .../libdiagnostics.dg/test-warning.c | 65 + > .../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 + > 95 files changed, 12912 insertions(+), 108 deletions(-) > create mode 100644 contrib/regenerate-sarif-spec-index.py > 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-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 >