From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 120981 invoked by alias); 30 Nov 2017 00:08:37 -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 120947 invoked by uid 89); 30 Nov 2017 00:08:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=BAYES_00,KB_WAM_FROM_NAME_SINGLEWORD,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=negotiate, conclusion 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; Thu, 30 Nov 2017 00:08:34 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7591C81DF7 for ; Thu, 30 Nov 2017 00:08:33 +0000 (UTC) Received: from localhost (unused-10-15-17-193.yyz.redhat.com [10.15.17.193]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4A11160841; Thu, 30 Nov 2017 00:08:33 +0000 (UTC) From: Sergio Durigan Junior To: Pedro Alves Cc: GDB Patches Subject: Re: [PATCH] Make 'symbol-file' not care about the position of command line arguments References: <779a2d21-badf-b54c-e1c9-2f869716fd71@redhat.com> <20171129214451.14257-1-sergiodj@redhat.com> <196b7212-6a93-8c39-a86e-c5782f470d1e@redhat.com> <87d140emfr.fsf@redhat.com> Date: Thu, 30 Nov 2017 00:08:00 -0000 In-Reply-To: (Pedro Alves's message of "Wed, 29 Nov 2017 23:15:44 +0000") Message-ID: <87609seigv.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-11/txt/msg00808.txt.bz2 On Wednesday, November 29 2017, Pedro Alves wrote: > On 11/29/2017 10:42 PM, Sergio Durigan Junior wrote: >> On Wednesday, November 29 2017, Pedro Alves wrote: >> >>> On 11/29/2017 09:44 PM, Sergio Durigan Junior wrote: >>>> This is a bug that's been detected while doing the readnever work. >>>> Currently if you use the 'symbol-file' command you have to be careful >>>> about the position of each argument you pass on the command line. >>>> This is because while parsing its arguments, if the command detects a >>>> filename, it promptly calls 'symbol_file_add_main_1' without waiting >>>> to see if there are other args on the line. This only affects the >>>> '-readnow' argument so far, but while implementing the '-readnever' >>>> command it also affected it. >>>> >>> >>> Testcase or it didn't happen? :-) >> >> Can we negotiate this? :-) >> >> I absolutely agree (and should have written about it in the commit log), >> but it's easier to write a testcase for the -readnever. Actually, I >> have one already written. So I'd like to "postpone" the testcase until >> the readnever feature is in. OK? > > Doesn't -readnow work for that just the same? Well, yeah, I've just confirmed that it's possible to match "...expanding to full symbols..." when -readnow is used, so it's possible to provide a testcase even now, indeed. I'll wait until we reach a conclusion on whether this patch is useful or not, and then submit the testcase along with v2. >>> I hadn't really understood what this was about in the other thread. >>> (Now I do.) I wonder whether it's really desirable to make this >>> work. It seems to me that it's much more usual in GDB for option >>> processing to stop at the first argument that doesn't start >>> with '-'? I.e., like getopt on most platforms. (The related >>> add-symbol-file command stands out as quite odd to me for >>> explicitly wanting '-'-options after non-'-' options...) >> >> I didn't know getopt stopped processing after the first non-'-' >> argument. > > Most implementations of getopt do. GNU getopt is known for > reordering non-'-' arguments. You can override that by > setting POSIXLY_CORRECT in the environment, for example. > >> I've always considered that passing '--' is the de facto way >> of telling getopt (or argp) to stop processing. > > "--" is used to stop processing options when you want to pass > a non-option argument that starts with "-", like imagine if you > wanted to pass a filename that starts with "-" to symbol-file > (the filename is not an option.) Ah, true, that makes sense. >> >> I find it very confusing to have positional arguments in a command line. >> This is not intuitive, and there's usually no indication that the >> command expects a fixed position for its arguments (as is the case with >> 'symbol-file', for example). I consider this to be a bug, if you ask >> me. > > In this case it's right there in the online help (since Tom's patch): > > (gdb) help symbol-file > Load symbol table from executable file FILE. > Usage: symbol-file [-readnow] FILE Sorry, but to me this doesn't say much. I read this help and think "Oh, -readnow can be passed as an option, OK." Maybe that's my fault, but if I was writing a command like "symbol-file FILE" and just remembered that I wanted -readnow, I would include it in the end of the line. In fact, that's exactly what happened when I was testing -readnever. I saw that the flag had no effect when the last parameter, which made me go after the cause. > Note that supporting non-option arguments before options > is impossible for commands that need to handle raw arguments. > I.e., commands that want to supporting passing arguments > arguments with spaces, without forcing the user to wrap it > all in quotes. Like "break -q function (int)", or > "print /x EXPRESSION_WITH_SPACES", etc. (I have a WIP series > that adds '-'-options to "print", btw.) > It's good to keep the possibility of the command being extended > in that direction in mind. It doesn't seem to be the case > here, but that's the angle I was coming from. I agree, but that's not the case with 'symbol-file' or 'add-symbol-file', right? I mean, their only non-option argument is the FILE, which won't have spaces (or will, but they'll be quoted like they should). Sorry for being so persistent, but I was bit by this bug and it wasn't nice. -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible http://sergiodj.net/