From patchwork Tue Feb 11 13:58:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: David Malcolm X-Patchwork-Id: 106331 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D1F2B3858CDB for ; Tue, 11 Feb 2025 13:59:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D1F2B3858CDB Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=N1k3ZoJs X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTP id 775883858D20 for ; Tue, 11 Feb 2025 13:58:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 775883858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 775883858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1739282328; cv=none; b=t4B7eCNB+BrM9iCWmvTo+SXxSPf0JthxU+sGWF7Yqjy3/AVsFsxPw+vf2N9oiS6lkZu9458oMeaCnj+25YZoipmVFgEynDzhPiaaiyaOVx8EQtD8k4l50VXA8j4msR4u/l9Znt5J/BskU4NrNljrTCfIUYMOAPClSWOwvEEIKtk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1739282328; c=relaxed/simple; bh=XXefMdI4tr9666xufQYgNDk7C+XZKe4SyOHO0+qI4bQ=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=eop8IMG81yZx+hqzsxUvKoKKw1ieJh07wc/+r6irHAW7AD3kuqUxVh1nrYzOlhjNu9ZG7KkJDwIgIlw4gh54vJ3M8A9+FHjTPLl7ahYD36UgoiKm7O2/MeZJuHiFxiGpPD3o7YA6TSXrWOPVmI0qyJSRcwl8cprFKGuODCjUfps= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 775883858D20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739282328; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xbauyypF0z61N9n+VVXgt1LbwebxCwAlrKN4V14LUuk=; b=N1k3ZoJsOMBFNwbGevq1hR6z/yjI+miKzOdVeOwsNM6ipJ2cTs6HEC+QCnNOKyCVqK3AOj DB9mXgDvT2n8JPeca2ozCJ10EoSscCUqnzNMzhWWYZQo9nwWRjHqNDcGKPjc7pAy0hpvFF OW5sU9Uw6J4A7v9vfhml+q8DyKb4l1s= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-161-U8i95zzXO7KmtpuIV4hEuQ-1; Tue, 11 Feb 2025 08:58:45 -0500 X-MC-Unique: U8i95zzXO7KmtpuIV4hEuQ-1 X-Mimecast-MFC-AGG-ID: U8i95zzXO7KmtpuIV4hEuQ Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 085341800878 for ; Tue, 11 Feb 2025 13:58:45 +0000 (UTC) Received: from t14s.localdomain.com (unknown [10.22.65.106]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6D37D1800570; Tue, 11 Feb 2025 13:58:43 +0000 (UTC) From: David Malcolm To: gcc-patches@gcc.gnu.org Cc: David Malcolm Subject: [pushed: r15-7474] =?utf-8?q?sarif-replay=3A_fix_off-by-one_in_hand?= =?utf-8?q?ling_of_=22endColumn=22_=28=C2=A73=2E30=2E8=29_=5BPR118792=5D?= Date: Tue, 11 Feb 2025 08:58:42 -0500 Message-ID: <20250211135842.1966729-1-dmalcolm@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: T5mYVmRIGag1J2sFSOOVsoambBePl1_34N6R51v7XsI_1739282325 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu. Pushed to trunk as r15-7474-ge8c5013b6b7820. gcc/ChangeLog: PR sarif-replay/118792 * libsarifreplay.cc (sarif_replayer::handle_region_object): Fix off-by-one in handling of endColumn property so that the code matches the comment and the SARIF spec (§3.30.8). gcc/testsuite/ChangeLog: PR sarif-replay/118792 * sarif-replay.dg/2.1.0-valid/error-with-note.sarif: Update expected output to reflect fix to off-by-one error in handling of "endColumn" property. * sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif: Likewise. * sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif: Likewise. * sarif-replay.dg/2.1.0-valid/signal-1.c.sarif: Likewise. Signed-off-by: David Malcolm --- gcc/libsarifreplay.cc | 2 +- .../2.1.0-valid/error-with-note.sarif | 4 ++-- .../2.1.0-valid/malloc-vs-local-4.c.sarif | 24 +++++++++---------- .../2.1.0-valid/signal-1.c.moved.sarif | 14 +++++------ .../2.1.0-valid/signal-1.c.sarif | 14 +++++------ 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/gcc/libsarifreplay.cc b/gcc/libsarifreplay.cc index 61d9565588e..71f80797926 100644 --- a/gcc/libsarifreplay.cc +++ b/gcc/libsarifreplay.cc @@ -1739,7 +1739,7 @@ handle_region_object (const json::object ®ion_obj, /* SARIF's endColumn is 1 beyond the final column in the region, whereas GCC's end columns are inclusive. */ end = m_output_mgr.new_location_from_file_line_column - (file, end_line, end_column_jnum->get ()); + (file, end_line, end_column_jnum->get () - 1); } else { diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif index 0d75a693cdf..77d5a4ee181 100644 --- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif +++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/error-with-note.sarif @@ -26,12 +26,12 @@ /* { dg-begin-multiline-output "" } /this/does/not/exist/test.bas:2:8: error: 'GOTO' is considered harmful 2 | GOTO label - | ^~~~~~~~~~ + | ^~~~~~~~~~ { dg-end-multiline-output "" } */ /* { dg-begin-multiline-output "" } /this/does/not/exist/test.bas:1:1: note: this is the target of the 'GOTO' 1 | label: PRINT "hello world!" - | ^~~~~~ + | ^~~~~ { dg-end-multiline-output "" } */ // TODO: trailing [error] diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif index 55c646bb5ad..947d65c6a7e 100644 --- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif +++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/malloc-vs-local-4.c.sarif @@ -339,37 +339,37 @@ In function 'callee_1': /not/a/real/path/malloc-vs-local-4.c:5:3: warning: dereference of possibly-NULL ‘ptr’ [-Wanalyzer-possible-null-dereference] 5 | *ptr = 42; - | ^~~~~~~~~~ + | ^~~~~~~~~ 'test_1': events 1-5 | | 8 | int test_1 (int i, int flag) - | | ^~~~~~~ + | | ^~~~~~ | | | | | (1) entry to ‘test_1’ |...... | 12 | if (flag) - | | ~~ + | | ~ | | | | | (2) following ‘true’ branch (when ‘flag != 0’)... | 13 | ptr = (int *)malloc (sizeof (int)); - | | ~~~~~~~~~~~~~~~~~~~~~~ + | | ~~~~~~~~~~~~~~~~~~~~~ | | | | | (3) ...to here | | (4) this call could return NULL | 14 | callee_1 (ptr); - | | ~~~~~~~~~~~~~~~ + | | ~~~~~~~~~~~~~~ | | | | | (5) calling ‘callee_1’ from ‘test_1’ | +--> 'callee_1': events 6-7 | | 3 | void __attribute__((noinline)) callee_1 (int *ptr) - | | ^~~~~~~~~ + | | ^~~~~~~~ | | | | | (6) entry to ‘callee_1’ | 4 | { | 5 | *ptr = 42; - | | ~~~~~~~~~~ + | | ~~~~~~~~~ | | | | | (7) ‘ptr’ could be NULL: unchecked value from (4) | @@ -378,24 +378,24 @@ In function 'callee_1': In function 'test_2': /not/a/real/path/malloc-vs-local-4.c:38:7: warning: double-‘free’ of ‘ptr’ [-Wanalyzer-double-free] 38 | free (ptr); - | ^~~~~~~~~~~ + | ^~~~~~~~~~ 'test_2': events 1-5 34 | if (!flag) - | ^~ + | ^ | | | (1) following ‘true’ branch (when ‘flag == 0’)... 35 | { 36 | void *ptr = malloc (16); - | ~~~~~~~~~~~~ + | ~~~~~~~~~~~ | | | (2) ...to here | (3) allocated here 37 | free (ptr); - | ~~~~~~~~~~~ + | ~~~~~~~~~~ | | | (4) first ‘free’ here 38 | free (ptr); - | ~~~~~~~~~~~ + | ~~~~~~~~~~ | | | (5) second ‘free’ here; first ‘free’ was at (4) { dg-end-multiline-output "" } */ diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif index f0026de12da..b1760536bd2 100644 --- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif +++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.moved.sarif @@ -170,16 +170,16 @@ In function 'custom_logger': signal-1.c:13:3: warning: call to ‘fprintf’ from within signal handler [-Wanalyzer-unsafe-call-within-signal-handler] 13 | fprintf(stderr, "LOG: %s", msg); - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'main': events 1-2 | | 21 | int main(int argc, const char *argv) - | | ^~~~~ + | | ^~~~ | | | | | (1) entry to ‘main’ |...... | 25 | signal(SIGINT, handler); - | | ~~~~~~~~~~~~~~~~~~~~~~~~ + | | ~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) registering ‘handler’ as signal handler | @@ -191,24 +191,24 @@ signal-1.c:13:3: warning: call to ‘fprintf’ from within signal handler [-Wan +--> 'handler': events 4-5 | | 16 | static void handler(int signum) - | | ^~~~~~~~ + | | ^~~~~~~ | | | | | (4) entry to ‘handler’ | 17 | { | 18 | custom_logger("got signal"); - | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (5) calling ‘custom_logger’ from ‘handler’ | +--> 'custom_logger': events 6-7 | | 11 | void custom_logger(const char *msg) - | | ^~~~~~~~~~~~~~ + | | ^~~~~~~~~~~~~ | | | | | (6) entry to ‘custom_logger’ | 12 | { | 13 | fprintf(stderr, "LOG: %s", msg); - | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (7) call to ‘fprintf’ from within signal handler | diff --git a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif index e2f316b972e..54fa0b83f1d 100644 --- a/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif +++ b/gcc/testsuite/sarif-replay.dg/2.1.0-valid/signal-1.c.sarif @@ -168,16 +168,16 @@ In function 'custom_logger': ../../src/gcc/testsuite/gcc.dg/analyzer/signal-1.c:13:3: warning: call to ‘fprintf’ from within signal handler [-Wanalyzer-unsafe-call-within-signal-handler] 13 | fprintf(stderr, "LOG: %s", msg); - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'main': events 1-2 | | 21 | int main(int argc, const char *argv) - | | ^~~~~ + | | ^~~~ | | | | | (1) entry to ‘main’ |...... | 25 | signal(SIGINT, handler); - | | ~~~~~~~~~~~~~~~~~~~~~~~~ + | | ~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) registering ‘handler’ as signal handler | @@ -189,24 +189,24 @@ In function 'custom_logger': +--> 'handler': events 4-5 | | 16 | static void handler(int signum) - | | ^~~~~~~~ + | | ^~~~~~~ | | | | | (4) entry to ‘handler’ | 17 | { | 18 | custom_logger("got signal"); - | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (5) calling ‘custom_logger’ from ‘handler’ | +--> 'custom_logger': events 6-7 | | 11 | void custom_logger(const char *msg) - | | ^~~~~~~~~~~~~~ + | | ^~~~~~~~~~~~~ | | | | | (6) entry to ‘custom_logger’ | 12 | { | 13 | fprintf(stderr, "LOG: %s", msg); - | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (7) call to ‘fprintf’ from within signal handler |