From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 001663858C3A for ; Tue, 4 Apr 2023 12:45:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 001663858C3A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680612347; 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: in-reply-to:in-reply-to:references:references; bh=XB97T+LN5wtv371ulmIQgrDyI5I+uGIRAlfcprPc+ZY=; b=Pmltur8tzQsAq29FT4IJ2h26AVaf0Yqc96Cl7WWvlaotEcAl9xz5NvwOTCOJE/QlBYK4in S7VPolcAFFTxXeDGO2PqykY4ULm6Zzp5Shvbbks1/T+/UEMsJHCMLjG7upJGphzMC2RT+t rbZP2VH9mJXhLP7omNzF5pEXHSLGHWY= Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-169-DSBtFYZVOACXMp3lcDalZw-1; Tue, 04 Apr 2023 08:45:44 -0400 X-MC-Unique: DSBtFYZVOACXMp3lcDalZw-1 Received: by mail-qv1-f70.google.com with SMTP id e1-20020a0cd641000000b005b47df84f6eso14642347qvj.0 for ; Tue, 04 Apr 2023 05:45:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680612344; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XB97T+LN5wtv371ulmIQgrDyI5I+uGIRAlfcprPc+ZY=; b=rjik0HkTqPl0E6H8sfj5voQ8AAO630pZwgFIxv7+D4RbAWd8pSjpKRYD+6Ee70/Bvq tjwLsMx7ZccsVRKmlijE4WoyhY5kBkxO2Px4nbZ5vpsR6ZJnFWEm5fjQojFcZquQ3sDR OJie5xq1Cm21uQI6V8YIfGOiIAU+OGgr3IrVU4jx5kflsxY5CFg4nEr6mgpKk+De7S19 cLp8lLVknYzJ1UBp2vTLMWDBXx5kNfFqcgVUytsLkUGkNCcqEqDXF3VPTjp+d1Hvz7pV 0YT+5hqNmUiiyNuXKFl0346HZ1JTrJPE3mWgLTAUb+m/sJzbI1zcMI+ERAm9RkG8zPAg 2Wkw== X-Gm-Message-State: AAQBX9fn3aJA+tLwv1r6LERxjevMLOxbL8UxKZSgk0vCMopClsE6gaSi 7gcDsa7jQIYAohnb5IuGR1a/SW27qDc4C85skw3iBnUbZGLBQN5LnYzfQtHYCzkgJV5G2heJn64 NuhTWMxObpQdOVP/M3e8K5GSehZcee1Bu8Voi7GSBLhkJQnYD02zFVrzHVBDEQ4Fjl0s6QEavU4 TtstmEBA== X-Received: by 2002:ad4:5de4:0:b0:5dd:b12c:7548 with SMTP id jn4-20020ad45de4000000b005ddb12c7548mr3086215qvb.12.1680612343794; Tue, 04 Apr 2023 05:45:43 -0700 (PDT) X-Google-Smtp-Source: AKy350a8uWCyfuMHL1M5l0A4o6xjTrfKswDAbQeSUHXMrA1eej+jysTIOaQDBYZZAJeSa4XUcNI80g== X-Received: by 2002:ad4:5de4:0:b0:5dd:b12c:7548 with SMTP id jn4-20020ad45de4000000b005ddb12c7548mr3086178qvb.12.1680612343405; Tue, 04 Apr 2023 05:45:43 -0700 (PDT) Received: from localhost (95.72.115.87.dyn.plus.net. [87.115.72.95]) by smtp.gmail.com with ESMTPSA id ny4-20020a056214398400b005e37909a7fcsm2212834qvb.13.2023.04.04.05.45.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Apr 2023 05:45:43 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Andrew Burgess Subject: [PATCH 3/5] gdb: make set/show cwd work with $_gdb_setting_str Date: Tue, 4 Apr 2023 13:45:29 +0100 Message-Id: X-Mailer: git-send-email 2.25.4 In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,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 List-Id: The previous commit fixed set/show args when used with $_gdb_setting_str, this commit fixes set/show cwd. Instead of using a scratch variable which is then pushed into the current inferior from a set callback, move to the API that allows for getters and setters, and store the value directly within the current inferior. Update the existing test to check the cwd setting. --- gdb/infcmd.c | 15 +++++---------- gdb/testsuite/gdb.multi/gdb-settings.exp | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 2f0d4f38c85..2e26ae9b934 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -66,10 +66,6 @@ static void step_1 (int, int, const char *); #define ERROR_NO_INFERIOR \ if (!target_has_execution ()) error (_("The program is not being run.")); -/* Scratch area where the new cwd will be stored by 'set cwd'. */ - -static std::string inferior_cwd_scratch; - /* Scratch area where 'set inferior-tty' will store user-provided value. We'll immediate copy it into per-inferior storage. */ @@ -165,12 +161,12 @@ get_inferior_cwd () return current_inferior ()->cwd (); } -/* Handle the 'set cwd' command. */ +/* Store the new value passed to 'set cwd'. */ static void -set_cwd_command (const char *args, int from_tty, struct cmd_list_element *c) +set_cwd_value (const std::string &args) { - current_inferior ()->set_cwd (inferior_cwd_scratch); + current_inferior ()->set_cwd (args); } /* Handle the 'show cwd' command. */ @@ -3164,8 +3160,7 @@ Follow this command with any number of args, to be passed to the program."), set_cmd_completer (args_set_show.set, filename_completer); auto cwd_set_show = - add_setshow_string_noescape_cmd ("cwd", class_run, - &inferior_cwd_scratch, _("\ + add_setshow_string_noescape_cmd ("cwd", class_run, _("\ Set the current working directory to be used when the inferior is started.\n\ Changing this setting does not have any effect on inferiors that are\n\ already running."), @@ -3175,7 +3170,7 @@ Show the current working directory that is used when the inferior is started."), Use this command to change the current working directory that will be used\n\ when the inferior is started. This setting does not affect GDB's current\n\ working directory."), - set_cwd_command, + set_cwd_value, get_inferior_cwd, show_cwd_command, &setlist, &showlist); set_cmd_completer (cwd_set_show.set, filename_completer); diff --git a/gdb/testsuite/gdb.multi/gdb-settings.exp b/gdb/testsuite/gdb.multi/gdb-settings.exp index d2741d16157..70e0752a5bb 100644 --- a/gdb/testsuite/gdb.multi/gdb-settings.exp +++ b/gdb/testsuite/gdb.multi/gdb-settings.exp @@ -33,6 +33,10 @@ proc inferior_args {num} { return "a_${num}_1 a_${num}_2 a_${num}_3" } +proc inferior_cwd {num} { + return [standard_output_file inf_${num}_dir] +} + # Start inferior NUM. proc start_inferior {num} { @@ -41,6 +45,9 @@ proc start_inferior {num} { set args [inferior_args ${num}] + set dir [inferior_cwd ${num}] + remote_exec host "mkdir -p $dir" + if {$num != 1} { gdb_test "add-inferior" "Added inferior $num.*" \ "add empty inferior" @@ -50,10 +57,17 @@ proc start_inferior {num} { gdb_test_no_output "set args $args" } + gdb_test_no_output "set cwd $dir" \ + "set cwd for inferior ${num}" + gdb_test {print $_gdb_setting_str("args")} \ " = \"$args\"" \ "check args before loading a file" + gdb_test {print $_gdb_setting_str("cwd")} \ + " = \"$dir\"" \ + "check cwd before loading a file" + gdb_load $binfile if {[gdb_start_cmd] < 0} { @@ -65,6 +79,10 @@ proc start_inferior {num} { gdb_test {print $_gdb_setting_str("args")} \ " = \"$args\"" \ "check after after starting" + + gdb_test {print $_gdb_setting_str("cwd")} \ + " = \"$dir\"" \ + "check cwd after starting" } return 0 @@ -95,4 +113,9 @@ for {set i 1} {$i <= $NUM_INFS} {incr i} { gdb_test {print $_gdb_setting_str("args")} \ " = \"$args\"" \ "check args after after switching to inferior $i" + + set dir [inferior_cwd $i] + gdb_test {print $_gdb_setting_str("cwd")} \ + " = \"$dir\"" \ + "check cwd after after switching to inferior $i" } -- 2.25.4