From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 42369 invoked by alias); 5 Sep 2017 17:45:54 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 42360 invoked by uid 89); 5 Sep 2017 17:45:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=instruct, Beyond, impacting X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 05 Sep 2017 17:45:49 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E8644158600; Tue, 5 Sep 2017 17:45:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E8644158600 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=sergiodj@redhat.com Received: from localhost (unused-10-15-17-193.yyz.redhat.com [10.15.17.193]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BDDEB1834B; Tue, 5 Sep 2017 17:45:47 +0000 (UTC) From: Sergio Durigan Junior To: Pedro Alves Cc: GDB Patches , Eli Zaretskii Subject: Re: [PATCH/RFC] Implement the ability to set the current working directory in GDBserver References: <20170830043811.776-1-sergiodj@redhat.com> <79779c39-8f54-c5da-5450-e67a35294e08@redhat.com> Date: Tue, 05 Sep 2017 17:45:00 -0000 Message-ID: <87shg1yr78.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2017-09/txt/msg00099.txt.bz2 On Thursday, August 31 2017, Pedro Alves wrote: > On 08/30/2017 06:38 AM, Sergio Durigan Junior wrote: >> I didn't want to implement a gdbserver-specific command (e.g., "set >> remote directory"), which means that my approach has some drawbacks. >> For example, if you want gdbserver to cd to "/abc", but "/abc" doesn't >> exist in the host, then you still won't be able to do this, because >> GDB obviously won't allow you to "cd" into a non-existing dir. So you >> will have to have the same directory structure in both host and target >> if you want to do that. > > I'm not sure this is the right approach. I'd like to have a > better understanding of what are the use cases "cd" is used for. > Beyond affecting the inferior's cwd when it is started, what > else is/can "cd" used for? Or IOW, what else does GDB's > current working directory affect? Good, I was also not 100% this was the right approach either. I gave this all a thought yesterday and, before I answer your questions, I'd like to know if I'm understanding the goal correctly. We want to be able to instruct gdbserver to change the current working directory before starting the inferior, correct? I had the impression that this was the only goal to achieve, but I'm afraid I'm not seeing the entire picture here. As for your questions. I looked at the code to find places where the "current_directory" variable was being used. This is the variable that ultimately gets changed when "cd" is used. Aside from impacting the inferior's cwd, current_directory is also used on the ".gdb_history" machinery. tmpenv = getenv ("GDBHISTFILE"); if (tmpenv) history_filename = xstrdup (tmpenv); else if (!history_filename) { /* We include the current directory so that if the user changes directories the file written will be the same as the one that was read. */ #ifdef __MSDOS__ /* No leading dots in file names are allowed on MSDOS. */ history_filename = concat (current_directory, "/_gdb_history", (char *)NULL); #else history_filename = concat (current_directory, "/.gdb_history", (char *)NULL); #endif } read_history (history_filename); As John Baldwin also mentioned, 'cd' has an effect when loading GDB scripts. And probably has an effect when loading other stuff. Since gdbserver doesn't really support loading scripts and also doesn't use .gdb_history, I don't think they are relevant in this case. Having said that, I'd like to discuss more about the ultimate goal, so that I know I'm pursuing the right things here. Thanks, -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible http://sergiodj.net/