From patchwork Wed Apr 17 22:52:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 88637 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 5823F3858C60 for ; Wed, 17 Apr 2024 22:53:11 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from omta36.uswest2.a.cloudfilter.net (omta36.uswest2.a.cloudfilter.net [35.89.44.35]) by sourceware.org (Postfix) with ESMTPS id C0FE23858D20 for ; Wed, 17 Apr 2024 22:52:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C0FE23858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C0FE23858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=35.89.44.35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713394368; cv=none; b=XX01qSQWKY7zXsyQySP6AX9JLjopOQfj+HUDn1pmLkul3KweCQy1rRQd1K9OGezLtf8SvuNDeUh947E2IOLp6lU0MMsr2ixPUTwa3K8wfvbHdJNsE1EeByfKsG6cNg4haFoacyT7znZScyck+Q1qnbgrfusMq7iToSBrV2Mrlac= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713394368; c=relaxed/simple; bh=AShMSmRC6awoPyCawvrnRGkUGYZRybyovqsSBpqUC1g=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=CsNzf414nRN7Gp0zDLyQtk35sPtLyrJu5Ah/qf5VSKQq/xD+pdN/GZJRt5LOfvzJPtHA5FeIJBSswJkEclw1LAUmjRQBaiS4IfNZmQudQs+nfhXGAGlQcWYRHkdOozITDnqTsAunQslOwwsfLkfWhp6uYiqK5SmS2lkINCptnqw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from eig-obgw-5005a.ext.cloudfilter.net ([10.0.29.234]) by cmsmtp with ESMTPS id x8wsrJUi0tf2QxE8trYPk0; Wed, 17 Apr 2024 22:52:39 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id xE8srcPW2YakKxE8trnzjp; Wed, 17 Apr 2024 22:52:39 +0000 X-Authority-Analysis: v=2.4 cv=a4T79lSF c=1 sm=1 tr=0 ts=662052b7 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=raytVjVEu-sA:10 a=Qbun_eYptAEA:10 a=mMSYDnCGszVMsGMHnL8A:9 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject: Cc:To:From:Sender:Reply-To:Content-Type:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=p+hlDRkQRv25bdQCAxym4Ha5SfJsjIzz2d8W8Vz8iIs=; b=nBkLndVW9PM2E/JK31EvBxndst IC6xO/v8k9uezsLIq50e1K+nwJfvkfrNGEQwLv+0/D9fY5w3iY44DDc0nxudChy8qAz3dpOBF0wBw faa0zWqf7F7dYW1QuBXErwfgw; Received: from 97-122-82-115.hlrn.qwest.net ([97.122.82.115]:39412 helo=localhost.localdomain) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from ) id 1rxE8s-000Cjq-1L; Wed, 17 Apr 2024 16:52:38 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Remove some alloca uses Date: Wed, 17 Apr 2024 16:52:28 -0600 Message-ID: <20240417225228.1789947-1-tom@tromey.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 97.122.82.115 X-Source-L: No X-Exim-ID: 1rxE8s-000Cjq-1L X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-122-82-115.hlrn.qwest.net (localhost.localdomain) [97.122.82.115]:39412 X-Source-Auth: tom+tromey.com X-Email-Count: 3 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfJ1Dq8y7D00+fr5iw9+n6i4tQOVtJxVc+SwRStAsjjH8XjC06AfsE1h7iE81TXZ9iZPub9ZU8BbjQ4YwwHbsr1R8xCy0jS5JTNPexE4mD9OXBrNw4tXA ymZoHO4rjRthSmwdbVPmKPtRWj8Tw1Mcb6/Okp/0AwVavVE8k9C5Y68ScIkVRIZNP+PtUxtcqSc+llL8SdJ3TwAl7pjhJopb/B8= X-Spam-Status: No, score=-3021.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_FILL_THIS_FORM_SHORT 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: 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+patchwork=sourceware.org@sourceware.org A few spots (mostly in the parsers) use alloca to ensure that a string is terminated before passing it to a printf-like function (mostly 'error'). However, this isn't needed as the "%.*s" format can be used instead. This patch makes this change. In one spot the alloca is dead code and is simply removed. Regression tested on x86-64 Fedora 38. --- gdb/c-exp.y | 19 ++++--------------- gdb/cp-name-parser.y | 4 ---- gdb/cp-support.c | 12 ++---------- gdb/d-exp.y | 9 ++------- gdb/f-exp.y | 9 ++------- gdb/go-exp.y | 9 ++------- gdb/m2-exp.y | 9 ++------- gdb/p-exp.y | 9 ++------- 8 files changed, 16 insertions(+), 64 deletions(-) diff --git a/gdb/c-exp.y b/gdb/c-exp.y index 663c30f9517..87aca4d59b1 100644 --- a/gdb/c-exp.y +++ b/gdb/c-exp.y @@ -2784,13 +2784,8 @@ lex_one_token (struct parser_state *par_state, bool *is_quoted_name) toktype = parse_number (par_state, tokstart, p - tokstart, got_dot | got_e | got_p, &yylval); if (toktype == ERROR) - { - char *err_copy = (char *) alloca (p - tokstart + 1); - - memcpy (err_copy, tokstart, p - tokstart); - err_copy[p - tokstart] = 0; - error (_("Invalid number \"%s\"."), err_copy); - } + error (_("Invalid number \"%.*s\"."), (int) (p - tokstart), + tokstart); pstate->lexptr = p; return toktype; } @@ -3434,14 +3429,8 @@ c_print_token (FILE *file, int type, YYSTYPE value) case CHAR: case STRING: - { - char *copy = (char *) alloca (value.tsval.length + 1); - - memcpy (copy, value.tsval.ptr, value.tsval.length); - copy[value.tsval.length] = '\0'; - - parser_fprintf (file, "tsval", value.tsval.type, copy); - } + parser_fprintf (file, "tsval", value.tsval.type, + value.tsval.length, val.tsval.ptr); break; case NSSTRING: diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y index 87f13445bba..e944276d001 100644 --- a/gdb/cp-name-parser.y +++ b/gdb/cp-name-parser.y @@ -1702,10 +1702,6 @@ yylex (YYSTYPE *lvalp, cpname_state *state) lvalp); if (toktype == ERROR) { - char *err_copy = (char *) alloca (p - tokstart + 1); - - memcpy (err_copy, tokstart, p - tokstart); - err_copy[p - tokstart] = 0; yyerror (state, _("invalid number")); return ERROR; } diff --git a/gdb/cp-support.c b/gdb/cp-support.c index e6e811ddf50..5fd53094d05 100644 --- a/gdb/cp-support.c +++ b/gdb/cp-support.c @@ -2214,19 +2214,11 @@ test_cp_remove_params () static void first_component_command (const char *arg, int from_tty) { - int len; - char *prefix; - if (!arg) return; - len = cp_find_first_component (arg); - prefix = (char *) alloca (len + 1); - - memcpy (prefix, arg, len); - prefix[len] = '\0'; - - gdb_printf ("%s\n", prefix); + int len = cp_find_first_component (arg); + gdb_printf ("%.*s\n", len, arg); } /* Implement "info vtbl". */ diff --git a/gdb/d-exp.y b/gdb/d-exp.y index b2adad24d1a..13d2cfa44d8 100644 --- a/gdb/d-exp.y +++ b/gdb/d-exp.y @@ -1154,13 +1154,8 @@ lex_one_token (struct parser_state *par_state) toktype = parse_number (par_state, tokstart, p - tokstart, got_dot|got_e, &yylval); if (toktype == ERROR) - { - char *err_copy = (char *) alloca (p - tokstart + 1); - - memcpy (err_copy, tokstart, p - tokstart); - err_copy[p - tokstart] = 0; - error (_("Invalid number \"%s\"."), err_copy); - } + error (_("Invalid number \"%.*s\"."), (int) (p - tokstart), + tokstart); pstate->lexptr = p; return toktype; } diff --git a/gdb/f-exp.y b/gdb/f-exp.y index 11cd7948682..bdf9c32a81b 100644 --- a/gdb/f-exp.y +++ b/gdb/f-exp.y @@ -1557,13 +1557,8 @@ yylex (void) got_dot|got_e|got_d, &yylval); if (toktype == ERROR) - { - char *err_copy = (char *) alloca (p - tokstart + 1); - - memcpy (err_copy, tokstart, p - tokstart); - err_copy[p - tokstart] = 0; - error (_("Invalid number \"%s\"."), err_copy); - } + error (_("Invalid number \"%.*s\"."), (int) (p - tokstart), + tokstart); pstate->lexptr = p; return toktype; } diff --git a/gdb/go-exp.y b/gdb/go-exp.y index 20ab8ff76cf..1a6ebbe135b 100644 --- a/gdb/go-exp.y +++ b/gdb/go-exp.y @@ -1103,13 +1103,8 @@ lex_one_token (struct parser_state *par_state) toktype = parse_number (par_state, tokstart, p - tokstart, got_dot|got_e, &yylval); if (toktype == ERROR) - { - char *err_copy = (char *) alloca (p - tokstart + 1); - - memcpy (err_copy, tokstart, p - tokstart); - err_copy[p - tokstart] = 0; - error (_("Invalid number \"%s\"."), err_copy); - } + error (_("Invalid number \"%.*s\"."), (int) (p - tokstart), + tokstart); par_state->lexptr = p; return toktype; } diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y index ebbc49c62a5..28005e1a700 100644 --- a/gdb/m2-exp.y +++ b/gdb/m2-exp.y @@ -869,13 +869,8 @@ yylex (void) } toktype = parse_number (p - tokstart); if (toktype == ERROR) - { - char *err_copy = (char *) alloca (p - tokstart + 1); - - memcpy (err_copy, tokstart, p - tokstart); - err_copy[p - tokstart] = 0; - error (_("Invalid number \"%s\"."), err_copy); - } + error (_("Invalid number \"%.*s\"."), (int) (p - tokstart), + tokstart); pstate->lexptr = p; return toktype; } diff --git a/gdb/p-exp.y b/gdb/p-exp.y index 2140b609225..f334db6b523 100644 --- a/gdb/p-exp.y +++ b/gdb/p-exp.y @@ -1239,13 +1239,8 @@ yylex (void) toktype = parse_number (pstate, tokstart, p - tokstart, got_dot | got_e, &yylval); if (toktype == ERROR) - { - char *err_copy = (char *) alloca (p - tokstart + 1); - - memcpy (err_copy, tokstart, p - tokstart); - err_copy[p - tokstart] = 0; - error (_("Invalid number \"%s\"."), err_copy); - } + error (_("Invalid number \"%.*s\"."), (int) (p - tokstart), + tokstart); pstate->lexptr = p; return toktype; }