From patchwork Tue Apr 4 17:08:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 67272 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 2605B3853D19 for ; Tue, 4 Apr 2023 17:09:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2605B3853D19 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1680628168; bh=iN/VyoHvSAsiJ6dBoa9Q+KQrBN7DwdGiuk3RRcLMH/s=; h=Date:Subject:References:In-Reply-To:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=nPJAO/HGj/M0iqwd9K0ACCz/ufTBk1XtghFzO22tOv+knC75V3tKu1zVLvNRFQHDQ Y8atMSW9RfnObcFmR2G6Ve9KOGiEmcM2Vl1Hp1DWBC/uxR7Q3WngztW/ip1Tqzh7OJ SpjWtn7bb0y1v05qxptaGKX9hWcaeiu633eSpSLc= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-il1-x12e.google.com (mail-il1-x12e.google.com [IPv6:2607:f8b0:4864:20::12e]) by sourceware.org (Postfix) with ESMTPS id 0BC2D3858C66 for ; Tue, 4 Apr 2023 17:08:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0BC2D3858C66 Received: by mail-il1-x12e.google.com with SMTP id n1so16716408ili.10 for ; Tue, 04 Apr 2023 10:08:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680628133; h=to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iN/VyoHvSAsiJ6dBoa9Q+KQrBN7DwdGiuk3RRcLMH/s=; b=v41IkDnSSTpIFS++Y20wxr6JrCT8EQc3uSLo3Wyf4JMEzIZ2dCPA7NuE9Af3TUED9w 0WR3zrGyuYgvZTdtXXrAX/j4OkaLFev59dtAft4YWoVleEn55tkEcAqIc3asRwu6sokt rU73i1h/Gc8EDd1ct4f6ujt533lse9hRSQVCB1HLnm1xfMGmgrcofqhhNkY3nONznayk gx/ICJbEZ1NVAQnUkiFcNVCqDVO556vR3eB8cBaKwefi5Gf+Tn0LFxD3wN5bzIukSOS8 YyGW12sAPeSft0xBiejDrCzSnif0HxpvjC9MtZvDacJJnFleeF/YVVAIRSh06Jv3NPly 5OoQ== X-Gm-Message-State: AAQBX9dSq8SqIq50mwDIrNNo5o/ErViIKUQBoApIOCi5PvLM/zLlQGyZ WKgNyDl5QkCI5nd7pJj56bjjnKpgebn/jRYlAA0k5w== X-Google-Smtp-Source: AKy350a2VTNSiJj+b9O6zMWYjHPKgfBeZkte53V1mASoE4JnfBKdnoNoB8V0cz0khz7/r5IdgsEppg== X-Received: by 2002:a92:cc46:0:b0:323:515:c9fc with SMTP id t6-20020a92cc46000000b003230515c9fcmr3369840ilq.6.1680628133108; Tue, 04 Apr 2023 10:08:53 -0700 (PDT) Received: from localhost.localdomain (71-211-185-113.hlrn.qwest.net. [71.211.185.113]) by smtp.gmail.com with ESMTPSA id f4-20020a02a104000000b0040b4c29010fsm1188306jag.140.2023.04.04.10.08.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Apr 2023 10:08:52 -0700 (PDT) Date: Tue, 04 Apr 2023 11:08:51 -0600 Subject: [PATCH 3/9] Use accessor for mi_parse::args MIME-Version: 1.0 Message-Id: <20230404-dap-loaded-sources-v1-3-75c796bd644b@adacore.com> References: <20230404-dap-loaded-sources-v1-0-75c796bd644b@adacore.com> In-Reply-To: <20230404-dap-loaded-sources-v1-0-75c796bd644b@adacore.com> To: gdb-patches@sourceware.org X-Mailer: b4 0.12.2 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, 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: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tom Tromey via Gdb-patches From: Tom Tromey Reply-To: Tom Tromey Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" This changes mi_parse::args to be a private member, retrieved via accessor. It also changes this member to be a std::string. This makes it simpler for a subsequent patch to implement different behavior for argument parsing. --- gdb/mi/mi-cmds.c | 6 +++--- gdb/mi/mi-main.c | 2 +- gdb/mi/mi-parse.c | 3 +-- gdb/mi/mi-parse.h | 13 ++++++++++++- gdb/python/py-micmd.c | 5 +++-- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/gdb/mi/mi-cmds.c b/gdb/mi/mi-cmds.c index 284453db85d..ca8c633e218 100644 --- a/gdb/mi/mi-cmds.c +++ b/gdb/mi/mi-cmds.c @@ -49,11 +49,11 @@ struct mi_command_mi : public mi_command with arguments contained within PARSE. */ void invoke (struct mi_parse *parse) const override { - mi_parse_argv (parse->args, parse); + mi_parse_argv (parse->args (), parse); if (parse->argv == nullptr) error (_("Problem parsing arguments: %s %s"), parse->command, - parse->args); + parse->args ()); this->m_argv_function (parse->command, parse->argv, parse->argc); } @@ -87,7 +87,7 @@ struct mi_command_cli : public mi_command is passed through to the CLI function as its argument string. */ void invoke (struct mi_parse *parse) const override { - const char *args = m_args_p ? parse->args : nullptr; + const char *args = m_args_p ? parse->args () : nullptr; mi_execute_cli_command (m_cli_name, m_args_p, args); } diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 0013e5dfafd..1149cb984d3 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -1811,7 +1811,7 @@ captured_mi_execute_command (struct ui_out *uiout, struct mi_parse *context) if (mi_debug_p) gdb_printf (gdb_stdlog, " token=`%s' command=`%s' args=`%s'\n", - context->token, context->command, context->args); + context->token, context->command, context->args ()); mi_cmd_execute (context); diff --git a/gdb/mi/mi-parse.c b/gdb/mi/mi-parse.c index 3bf944763f1..41399fc619e 100644 --- a/gdb/mi/mi-parse.c +++ b/gdb/mi/mi-parse.c @@ -212,7 +212,6 @@ mi_parse::~mi_parse () { xfree (command); xfree (token); - xfree (args); freeargv (argv); } @@ -347,7 +346,7 @@ mi_parse (const char *cmd, char **token) } /* Save the rest of the arguments for the command. */ - parse->args = xstrdup (chp); + parse->set_args (chp); /* Fully parsed, flag as an MI command. */ parse->op = MI_COMMAND; diff --git a/gdb/mi/mi-parse.h b/gdb/mi/mi-parse.h index 75bb36b1c77..d4ac3f002e4 100644 --- a/gdb/mi/mi-parse.h +++ b/gdb/mi/mi-parse.h @@ -46,12 +46,19 @@ struct mi_parse DISABLE_COPY_AND_ASSIGN (mi_parse); + /* Return the full argument string, as used by commands which are + implemented as CLI commands. */ + const char *args () const + { return m_args.c_str (); } + + void set_args (const char *args) + { m_args = args; } + enum mi_command_type op = MI_COMMAND; char *command = nullptr; char *token = nullptr; const struct mi_command *cmd = nullptr; struct mi_timestamp *cmd_start = nullptr; - char *args = nullptr; char **argv = nullptr; int argc = 0; int all = 0; @@ -62,6 +69,10 @@ struct mi_parse /* The language that should be used to evaluate the MI command. Ignored if set to language_unknown. */ enum language language = language_unknown; + + private: + + std::string m_args; }; /* Attempts to parse CMD returning a ``struct mi_parse''. If CMD is diff --git a/gdb/python/py-micmd.c b/gdb/python/py-micmd.c index 09dd88ca268..af89be693da 100644 --- a/gdb/python/py-micmd.c +++ b/gdb/python/py-micmd.c @@ -355,10 +355,11 @@ mi_command_py::invoke (struct mi_parse *parse) const pymicmd_debug_printf ("this = %p, name = %s", this, name ()); - mi_parse_argv (parse->args, parse); + mi_parse_argv (parse->args (), parse); if (parse->argv == nullptr) - error (_("Problem parsing arguments: %s %s"), parse->command, parse->args); + error (_("Problem parsing arguments: %s %s"), parse->command, + parse->args ()); gdbpy_enter enter_py;