From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 19A183858C3A for ; Tue, 21 Nov 2023 22:35:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 19A183858C3A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gnu.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 19A183858C3A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:470:142:3::10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700606139; cv=none; b=FsD/Z5dp9mihmEO+pBHZBDAplEvdRMfviu/slcf1Seqp580RvwrMLOmFXaRAdM08NkIOEDtb6Bf74Q5z2VOJoSlynkBroSqMNavutJFNDJVOKg9KbKNOK6L3wODcEgP5n7bl8uj7HktA46tWAAH70IML+eu43YAK97vJw8Gjuoc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700606139; c=relaxed/simple; bh=8O1EGEkEZv8yhD0gP8BqugLVdaHH9xJtEadbcv0sy04=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=k6OhaiZ7h2foe1q1TJxjzhKLITzqI6/AQggVCnNcXVO8wmk3Xo3RgFPe/ltp0FY/Ae6Er0HoDLixUawtNrb294dPosjh2D3ydxJpWc/sF8WLXLRhAUGL6lyOHOUN0d3r2H7vWfMb58W9E6KZF/NFrEJRhQD1cVTFuwYU9vdPKLw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r5ZLE-0006LN-Mx; Tue, 21 Nov 2023 17:35:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=In-Reply-To:From:References:To:Subject:MIME-Version: Date; bh=y3vB+BQ9NdJgQBdcRITMHMmgOjJBDqtFTwraz/TBA0I=; b=WuwT66u4Rkx5XqXdNLVY vP0Md6MTN/P8f/lYgOUliUH4rDcBuhBqjx1u+NzNyTN+4/XEEPtSGD+w40xeehobmbqwcKRIWYbi5 dSVIIf3OEGft/RSN6pbzf2g+GtoQLgSrv/zA71wDiun3jSY8UGIDk84FkVmu7uRhEe87J36i7VaQB VHYU8qwuCeOXXxT5u52RzpTUvI19njsnHmwjSF33l9E+rcDLum4IHJp2aEqRKa3zLEsXO/a4WJwYj ccB330YnSjMNPkQv64tZNdhBoQbIvGfEOpzPjQPuntk1igODZxJPX14UHOJfM0zVfyrtaOrnUOeFN 5Q2HdUYkalKPcg==; Message-ID: <1c34d699-b77c-4ea7-8b76-968ed60355dc@gnu.org> Date: Tue, 21 Nov 2023 23:35:07 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 0/6] v2 of libdiagnostics Content-Language: en-US To: David Malcolm , gcc-patches@gcc.gnu.org, binutils@sourceware.org Cc: Nick Clifton References: <20231106222959.2707741-1-dmalcolm@redhat.com> <20231121222019.646253-1-dmalcolm@redhat.com> From: Simon Sobisch Autocrypt: addr=simonsobisch@gnu.org; keydata= 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 gBd07BaQQkQMQfYDu/XD In-Reply-To: <20231121222019.646253-1-dmalcolm@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_SHORT,LIKELY_SPAM_BODY,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Thank you for your efforts. Having the wiki page to track this definitely is useful! I'll have a look at the "real patch" later, likely next week. But for patch 4+5 which look quite clean: can we get an early improvement and inclusion into GCC for those? They only adjust internals and should be well covered by the existing test suite, so we may be able to inspect the other changes from this patchset "alone". Kind Regards, Simon Am 21.11.2023 um 23:20 schrieb David Malcolm: > Here's v2 of the "libdiagnostics" shared library idea; see: > https://gcc.gnu.org/wiki/libdiagnostics > > As in v1, patch 1 (for GCC) shows libdiagnostic.h (the public > header file), along with examples of simple self-contained programs that > show various uses of the API. > > As in v1, patch 2 (for GCC) is the work-in-progress implementation. > > Patch 3 (for GCC) adds a new libdiagnostics++.h, a wrapper API providing > some syntactic sugar when using the API from C++. I've been using this > to "eat my own dogfood" and write a simple SARIF-dumping tool: > https://github.com/davidmalcolm/libdiagnostics-sarif-dump > > Patch 4 (for GCC) is an internal change needed by patch 1. > > Patch 5 (for GCC) updates GCC's source printing code so that when > there's no column information, we don't print annotation lines. This > fixes the extra lines seen using it from gas discussed in: > https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635575.html > > Patch 6 (for binutils) is an updated version of the experiment at using > the API from gas. > > Thoughts? > > David Malcolm (5): > libdiagnostics v2: header and examples > libdiagnostics v2: work-in-progress implementation > libdiagnostics v2: add C++ wrapper API > diagnostics: add diagnostic_context::get_location_text > diagnostics: don't print annotation lines when there's no column info > > gcc/Makefile.in | 131 +- > gcc/configure | 2 +- > gcc/configure.ac | 2 +- > gcc/diagnostic-show-locus.cc | 26 +- > gcc/diagnostic.cc | 35 +- > gcc/diagnostic.h | 2 + > gcc/libdiagnostics++.h | 378 +++++ > gcc/libdiagnostics.cc | 1306 +++++++++++++++++ > gcc/libdiagnostics.h | 602 ++++++++ > gcc/libdiagnostics.map | 63 + > .../libdiagnostics.dg/libdiagnostics.exp | 544 +++++++ > gcc/testsuite/libdiagnostics.dg/test-dump.c | 55 + > .../libdiagnostics.dg/test-error-with-note.c | 57 + > .../libdiagnostics.dg/test-error-with-note.cc | 47 + > gcc/testsuite/libdiagnostics.dg/test-error.c | 49 + > gcc/testsuite/libdiagnostics.dg/test-error.cc | 40 + > .../libdiagnostics.dg/test-fix-it-hint.c | 49 + > .../libdiagnostics.dg/test-fix-it-hint.cc | 44 + > .../libdiagnostics.dg/test-helpers++.h | 28 + > .../libdiagnostics.dg/test-helpers.h | 29 + > .../libdiagnostics.dg/test-labelled-ranges.c | 52 + > .../libdiagnostics.dg/test-labelled-ranges.cc | 43 + > .../libdiagnostics.dg/test-logical-location.c | 60 + > .../libdiagnostics.dg/test-metadata.c | 54 + > .../libdiagnostics.dg/test-multiple-lines.c | 61 + > .../libdiagnostics.dg/test-no-column.c | 41 + > .../test-note-with-fix-it-hint.c | 52 + > .../test-text-sink-options.c | 46 + > .../libdiagnostics.dg/test-warning.c | 52 + > .../test-write-sarif-to-file.c | 46 + > .../test-write-text-to-file.c | 47 + > 31 files changed, 4018 insertions(+), 25 deletions(-) > 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/testsuite/libdiagnostics.dg/libdiagnostics.exp > create mode 100644 gcc/testsuite/libdiagnostics.dg/test-dump.c > 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 > 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-logical-location.c > create mode 100644 gcc/testsuite/libdiagnostics.dg/test-metadata.c > create mode 100644 gcc/testsuite/libdiagnostics.dg/test-multiple-lines.c > create mode 100644 gcc/testsuite/libdiagnostics.dg/test-no-column.c > 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 > 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 >