From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id deuREYY2g2qUPS0AWB0awg (envelope-from ) for ; Mon, 17 Aug 2026 12:27:50 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=OZbLuxMU; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 345401E033; Mon, 17 Aug 2026 12:27:50 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 8F60E1E033 for ; Mon, 17 Aug 2026 12:27:49 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 473214BA903C for ; Mon, 17 Aug 2026 16:27:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 473214BA903C 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=OZbLuxMU 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 F1CD14BA9020 for ; Mon, 17 Aug 2026 16:26:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F1CD14BA9020 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine 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 F1CD14BA9020 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786983968; cv=none; b=DsX8vvixdUPPmbZnWSPaj9bYUNtvU/QoRJzGMJwTRiwL+sEmGIHNG1Z22/CNapxEGT/DYIXMLcvovIcLv9E1hPDa1UUI0RRhzG7OAIpwFuELPB/8Kkju/Q4q2+ttsGqbHdrbTizgAW2Z6ITaOjJmb1h20cattj9rc++pFYczl00= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786983968; c=relaxed/simple; bh=nk0lEfRW7aAIkg8Xae/iSGYBLSUvGGJFvDYyER9QeXk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=W6MtM5750D/r/oIO64y31pIxhCveNyT0Q/MctsbTCzJ5AGttAeBJ+DgISXNQ7LFAnuvd8ubr4Eo9R2BgOFUvqPWV9r02NAVG/oNAdHarFgUBw+UvKzhtB1lv2uKqhl4+eoND7qam+vTx8/Dlx0fgwdQc4F/9Oiv0MlfDV8XJcFg= ARC-Authentication-Results: i=1; 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=OZbLuxMU DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F1CD14BA9020 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1786983967; 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: in-reply-to:in-reply-to:references:references; bh=v5eX+Y+ZU8nvW2/CVa192Zm3mDebIVztTckS4JfPvKI=; b=OZbLuxMUOB8Y1sG2i4CQ1vgAJ85ua/7u5PTwo0inxjg2VrkrS1GDAgXjbXiKjaaU18iPOT dcsD3mGwHQDjkbTzzv0SUhvX8fNvYofL4tmY5x46YV4Xi06biwLSeIAGCqAfsrSXvNNWCv /6W+JNwD2t6XgG+VfaVY2/uZMkvuSJE= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-357-3ZI7Zr8RMh-AufO-VEenGw-1; Mon, 17 Aug 2026 12:26:06 -0400 X-MC-Unique: 3ZI7Zr8RMh-AufO-VEenGw-1 X-Mimecast-MFC-AGG-ID: 3ZI7Zr8RMh-AufO-VEenGw_1786983965 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-47f2de3ba47so2361632f8f.1 for ; Mon, 17 Aug 2026 09:26:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786983965; x=1787588765; h=content-type:mime-version:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=v5eX+Y+ZU8nvW2/CVa192Zm3mDebIVztTckS4JfPvKI=; b=pIObqblrMCRKteZfbDN0eclpc+PggL0n25zwGkrw42Qmb63OMTO1mi+FJIVj6DGCgw 5m19rPxjWfSrxeYtMHQul7OnMg21Rcz+QmjwfVa5wgJeH8RtwYiq3yfDPfWpYy8t+LUz LxDTmzJNxQhq6SEgPCHMWmVOrcpK8aIcQPreH/uAm8yeQH5aFo7BKdMAxS3EoINH1wv4 8zP0KCxwG4CSnyBADYDK7RnL3ov8tQrKEZ75JS7aFjymk5Xp4rlDYgfxNWY1QpWSGQhY 12TeEeNMFt1zKDTt7movlvXMgVxSqd5ktaKaNtzhV2Cs+iw4SxjTApRc/DBr0R2WRFpa YUgg== X-Forwarded-Encrypted: i=1; AHgh+RrdI8lNDDldGsytiXxhr7gp1wYFUWt2JZvP/LdkSGqvhuJPrMU/Ag+UFV+0G4GvujFPNDpkXPGcYVSmcA==@sourceware.org X-Gm-Message-State: AOJu0Yy3/qCN8ObEIOIDCOOKTfe3oBrVSajsALpVeNCt91mt6tyzmbuz NramKxZmEoiTAjajq1lksIownZlX8rmbjrpYMWLW/gw7qADGUi488w1hi2p2b3SkGfnO/P9rZhm VD+gkeRsy5FW1ujHOetIDXE8f3CYvry54cE3j0KV0CQ7PIElRMtlKRWHmhBYa70Q= X-Gm-Gg: AR+sD11HpJ8cctMSswJV+rEdRBHal1OwstpJbyO/FkTulPvjwbjpmmSYUqMJuoqGNw0 IS4Aj8eRcBaLa3HRiV0F0XQWziS6eexc3HrX5XMHzIEL3M1dSeRcIxcj1GoSZMk9UfuJB8x7rIt 9OMq6W+zMzyAtTEBYsBhb+0e9WtQFvFybzltf7zbniTDNT/JIawfjYYExr/0owR4W9RaJjhTGts /XbBgviYYW5r1tobCP9CrPF1BdBZI//eBE1i+t93XTOUezDKaFJO+HCDoruJuWMcesBV7uxYRyc 2mDEZ1en7uPJa0H1+93hj1c998Yb0DakUY0hGoETwvZO0t6fCqCyJEmOgcyEUjGAvMkBY5ck3Vl gWYu3eKqAhyNLO/G8mtk= X-Received: by 2002:adf:ee84:0:b0:47f:eb37:fb7f with SMTP id ffacd0b85a97d-48160758e05mr34343339f8f.16.1786983964885; Mon, 17 Aug 2026 09:26:04 -0700 (PDT) X-Received: by 2002:adf:ee84:0:b0:47f:eb37:fb7f with SMTP id ffacd0b85a97d-48160758e05mr34343280f8f.16.1786983964409; Mon, 17 Aug 2026 09:26:04 -0700 (PDT) Received: from localhost (67.72.115.87.dyn.plus.net. [87.115.72.67]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482a5a31543sm6006416f8f.4.2026.08.17.09.26.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 09:26:03 -0700 (PDT) From: Andrew Burgess To: Simon Marchi , gdb-patches@sourceware.org, binutils@sourceware.org Cc: Simon Marchi Subject: Re: [PATCH 07/13] gdb/csky: remove uses of sprintf In-Reply-To: <20260817151646.152571-8-simon.marchi@efficios.com> References: <20260817151646.152571-1-simon.marchi@efficios.com> <20260817151646.152571-8-simon.marchi@efficios.com> Date: Mon, 17 Aug 2026 17:26:03 +0100 Message-ID: <87jypo3e90.fsf@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: d5wxLOtH_5-PX6FT72hCfwdwmPD_DQG7fn1Rlagfhzw_1786983965 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Simon Marchi writes: > When building on macOS, I get a few: > > /Users/smarchi/src/binutils-gdb/gdb/csky-tdep.c:434:4: error: 'sprintf' is deprecated: This function is provided for compatibility reasons only. Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead. [-Werror,-Wdeprecated-declarations] > 434 | sprintf (tdesc_reg.name, "cp1cr%d", remain); > | ^ > > Replace these uses with snprintf, via xsnprintf, which asserts that the > destination buffer was large enough for the output string. > > Change-Id: Idc5c0c42479f767c63b0d0cece5ab14cacec9a60 > --- > gdb/csky-tdep.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c > index e86f79a42eaf..ad0d50d8218d 100644 > --- a/gdb/csky-tdep.c > +++ b/gdb/csky-tdep.c > @@ -431,19 +431,22 @@ csky_get_supported_register_by_index (int index) > { > case 0: /* Bank1. */ > { > - sprintf (tdesc_reg.name, "cp1cr%d", remain); > + xsnprintf (tdesc_reg.name, sizeof (tdesc_reg.name), "cp1cr%d", > + remain); Rather than having to include the size of all these buffers, where the size is known at compile time, I wondered if we could add something like: template int xsnprintf (char (&buf)[N], const char *format, Args &&...args) { return xsnprintf (buf, N, format, std::forward (args)...); } to gdbsupport/common-utils.h. This is fine except that gcc is unable to track the format literal through the template call, so I think we'd actually have to do: template int xsnprintf (char (&buf)[N], const char *format, Args &&...args) { DIAGNOSTIC_PUSH DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL return xsnprintf (buf, N, format, std::forward (args)...); DIAGNOSTIC_POP } Which isn't ideal, though we do already have things like this in gdb/printcmd.c, so maybe it's OK. The other option would be C varargs style handling: template int ATTRIBUTE_PRINTF (2, 3) xsnprintf (char (&buf)[N], const char *format, ...) { va_list args; va_start (args, format); int ret = vsnprintf (buf, N, format, args); gdb_assert (ret < static_cast (N)); va_end (args); return ret; } Or similar. The benefit of this would be that you could then write: xsnprintf (tdesc_reg.name, "cp1cr%d", remain); And you'd still get the buffer length check. Anyway, it was just a thought, not a requirement. The patch as it is looks fine. Approved-By: Andrew Burgess Thanks, Andrew > tdesc_reg.num = 189 + remain; > } > break; > case 1: /* Bank2. */ > { > - sprintf (tdesc_reg.name, "cp2cr%d", remain); > + xsnprintf (tdesc_reg.name, sizeof (tdesc_reg.name), "cp2cr%d", > + remain); > tdesc_reg.num = 276 + remain; > } > break; > case 2: /* Bank3. */ > { > - sprintf (tdesc_reg.name, "cp3cr%d", remain); > + xsnprintf (tdesc_reg.name, sizeof (tdesc_reg.name), "cp3cr%d", > + remain); > tdesc_reg.num = 221 + remain; > } > break; > @@ -460,7 +463,8 @@ csky_get_supported_register_by_index (int index) > case 13: /* Bank14. */ > { > /* Regitsers in Bank4~14 have continuous regno with start 308. */ > - sprintf (tdesc_reg.name, "cp%dcr%d", (multi + 1), remain); > + xsnprintf (tdesc_reg.name, sizeof (tdesc_reg.name), "cp%dcr%d", > + (multi + 1), remain); > tdesc_reg.num = 308 + ((multi - 3) * 32) + remain; > } > break; > @@ -482,7 +486,8 @@ csky_get_supported_register_by_index (int index) > case 29: /* Bank31. */ > { > /* Regitsers in Bank16~31 have continuous regno with start 660. */ > - sprintf (tdesc_reg.name, "cp%dcr%d", (multi + 2), remain); > + xsnprintf (tdesc_reg.name, sizeof (tdesc_reg.name), "cp%dcr%d", > + (multi + 2), remain); > tdesc_reg.num = 660 + ((multi - 14) * 32) + remain; > } > break; > -- > 2.55.0