From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id VhHmNkeu0Wai9xkAWB0awg (envelope-from ) for ; Fri, 30 Aug 2024 07:34:31 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=QunGSxHA; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id CF59A1E0D1; Fri, 30 Aug 2024 07:34:31 -0400 (EDT) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 9E3B31E08C for ; Fri, 30 Aug 2024 07:34:29 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1E690385DDDD for ; Fri, 30 Aug 2024 11:34:29 +0000 (GMT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 6438C3858C50 for ; Fri, 30 Aug 2024 11:34:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6438C3858C50 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6438C3858C50 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1725017643; cv=none; b=Txtg7GOyfzx/1lBYO7qJkcgLDM+CI8xIEJvAQY2pJF+TgTXwJSWCJ/OfJFFZGfJwIM0tzhgs1sbP+wTAkWbDr0yhboRfbDxDVsr3GuhfU7h6WlMdT7EM0ok7lI0GN2eVKws+c4/wYx/DADpwe47iGKzAR/5aQgW0eF3QazC/u5Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1725017643; c=relaxed/simple; bh=nXofuRsA1ZKyNGyGuDvxB0a3QSu2CPaZ85hOiQjA9wI=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=dTsNJebZ+Mpq8DKPhX+f8d556QyxbliK1Ob/7NoHGo5e+QcJW8HpO2cEVFkDIntC2dqpUEJeOe6EGxkooWz+IzaIwMiIlJrT1Vym+xQ72j7OOGPswyu56P5XwBasZeRRRdsyV4cz7UTHG23TFvhwEd63apLT+UySKKBFzsPr8RA= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1725017641; 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=GB4qYJooV2M5mrUmnqGLYP0GdCs5Q0MdZQDYGopUNeg=; b=QunGSxHA+6QBFCFWpXKEusKbunRJ/ckVjlC4sLTDwFdwyPlf30epb+62NpIk3ObIanwF3c cRXHlI9VlKIhNeo9q8CDV6Qll8SaPZe2PqgU7iSQfke247/t5/CiErRVQAb9QHr5TPG3/w tEQt9JECyb7AULVgE7HJusZQHiy8R3U= Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-322-QEJx1yFYNxyvrHpP166ncA-1; Fri, 30 Aug 2024 07:34:00 -0400 X-MC-Unique: QEJx1yFYNxyvrHpP166ncA-1 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-a86690270dcso158656766b.2 for ; Fri, 30 Aug 2024 04:33:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725017638; x=1725622438; 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=GB4qYJooV2M5mrUmnqGLYP0GdCs5Q0MdZQDYGopUNeg=; b=RZlqfXogxdMDejPnANYuhEAXDm6IVq082rfavwYJrlBtx+x00aWj13PjlIDJPjxvWk x5Xa7P/DSV/N4S9NummCxrALF/hnYokRf4tagyiHFbIs/9kIqyxjjoeeDoj+qWyE5Fs6 f9EpK4xuQIPDWz1DE+P1TSxQZYnV80uFJIOlfXY9CzohuKwUMN3btxBXJUPxARyCNiOi nWaO0CV+fVsLuwOlByavmy8t7nb6YoSdAJ4CbGocBXIKXaoFVJb0BbV3pqVJxxxVt8aB WMWLdJWYNoKBtTlg4jS1Ddty+vxVbjB+8EvUsPO5RPuquL2yXPzYxBs8yfB7p5zA+V54 SHZA== X-Gm-Message-State: AOJu0YzXPpcWtwbwcVarN+xJHes0VnWufIvQnLJvId7paTFXA53+kt9y JuUHq19xt3ge0uVYgj0ruSzshUTysJ8fAwBZD1Xu9jw2PJqm8pwoESQsW5W5sHrkDLF0PsfBjew 9eDg05CfNdD2JjsVJ387EWyuAy/93Lxpn4JaWBr5jtvJAJiqwO1nqo8XEhY8yOgHMDh1v72CmhK 43FU1lmJ3TmoZrD7gX8cOqy8i5Xq/9B0iNkMRgDdGTjws= X-Received: by 2002:a17:906:f59e:b0:a86:7fc2:398b with SMTP id a640c23a62f3a-a897f84d47fmr534353366b.15.1725017637829; Fri, 30 Aug 2024 04:33:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEgOwdGTEo8q2YcRH6GDNs/CX53By7vIpiTPJfEGoXv0uhhsKQ9GUz50H7gPNPWxUCXgOTktw== X-Received: by 2002:a17:906:f59e:b0:a86:7fc2:398b with SMTP id a640c23a62f3a-a897f84d47fmr534350266b.15.1725017636892; Fri, 30 Aug 2024 04:33:56 -0700 (PDT) Received: from localhost (178.126.90.146.dyn.plus.net. [146.90.126.178]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a898900f6c4sm206243866b.68.2024.08.30.04.33.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Aug 2024 04:33:56 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Andrew Burgess Subject: [PATCHv6 00/14] Further filename completion improvements Date: Fri, 30 Aug 2024 12:33:40 +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=-2.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no 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~public-inbox=simark.ca@sourceware.org I'm planning to merge this series in the near future unless anyone asks me to hold off pending a future review. In v6: - No doc changes in this iteration. - Rebased onto current master. Resoved merge conflicts in NEWS file. - Linaro CI pointed out that some tests failed on patch #13, but worked on patch #14. Turns out I'd accidentally added the tests for patch #14 too early. I moved the new tests into patch #14 and now there should be no failures. There were no actual bugs here, just a test added in the wrong commit. In v5: - Rebased onto current master. Very minor merge conflict. Resolved and re-tested with no regressions. - Addressed Eli's doc feedback for patches #12 and #13. In V4: - Tom asked about V3: "...did you consider changing gdb to have a single way to pass a filename to a command?". Well, I've not done that. But, I have ensured that doing this would be possible in the future, and I've added two patches (the last two) that change a few commands. There are two reasons for no changing everyhing in this series, first I'd probably not change all commands in one commit, that one commit would be huge, so chaning all the commits would add even more commits to this already large series. And second, changing the commands is a breaking change, while just chaning the completion (in line with current command behaviour) is non-breaking. - As such, if folk get nervous about changing the command behaviour, the last two patches of V4 should be considered optional. Patches 1 to 12 are all either new functionality, or non-breaking fixes to existing functionality. If the final two patches are accepted then I would plan to write patches to change all the other commands to accept quoted filenames for arguments. That would be my intention, but of course, this series should be reviewed and accepted or rejected assuming the follow up work never arrives. Personally, I'm OK with that, we currently have two style of filename passing. All I do in this series is acknoweldge that and update the completion to handle it. Keeping a single filename completion function (a) doesn't change the fact that we have two filename argument styles, and (b) ensures that completion for one type of argument will remain broken. - I've restructured patches #1 and #2, I've tried to reduce the size of patch #1, while patch #2 is a simple renaming patch. - Patches #3 to #8 are largely unchanged from v3 -- minor tweaks to accomodate changes in earlier patches only. - Patches #9 onwards are new work. - I think that there is additional refactoring and cleanup that could be performed in the area of filename completion, but I've resisted adding that to this series. How that cleanup would progress would depend on whether I get all commands updated to accept quoted filenames or not. I didn't want to invest a large block of time assuming that I could get such a change into GDB only to have it rejected. If we decide to keep the existing two argumet style approach then I think there are other cleanups we could potentially make in the future. In V3: - Patch #1 from the v2 series was merged. - Remaining patches have been rebased and retested. In V2: - Patches #1 and #2 are new in this iteration. Patches #3 to #8 are the patches from V1 rebased onto these two new patches, - Patch #1 adds documentation for the formatting of filename arguments, this tries to explain the two diffent ways that GDB expects filename arguments to be formatted. - Patch #2 addresses the problem that Lancelot pointed out: some commands don't expect filename arguments to be quoted, or to contain escapes. In this patch I split the filename completion in two so the two different filename argument formats are handled separately... - This clears the way for the rest of the series, which updates how completion works for those filename arguments that do accept quoting and escaping, - Patches #3 to #8 are in principle the same as in V1, but there were some changes after rebasing onto the new patch #2. -- Andrew Burgess (14): gdb: split apart two different types of filename completion gdb: deprecated filename_completer and associated functions gdb: improve escaping when completing filenames gdb: move display of completion results into completion_result class gdb: simplify completion_result::print_matches gdb: add match formatter mechanism for 'complete' command output gdb: apply escaping to filenames in 'complete' results gdb: improve gdb_rl_find_completion_word for quoted words gdb: implement readline rl_directory_rewrite_hook callback gdb: new extract_single_filename_arg helper function gdb: extend completion of quoted filenames to work in brkchars phase gdb: add remove-symbol-file command completion gdb: allow quoted filenames for commands that have custom completion gdb: 'target ...' commands now expect quoted/escaped filenames gdb/NEWS | 21 + gdb/auto-load.c | 4 +- gdb/breakpoint.c | 4 +- gdb/cli/cli-cmds.c | 35 +- gdb/cli/cli-decode.c | 8 +- gdb/cli/cli-dump.c | 6 +- gdb/compile/compile.c | 11 +- gdb/completer.c | 643 +++++++++++++++--- gdb/completer.h | 90 ++- gdb/corefile.c | 3 +- gdb/corelow.c | 24 +- gdb/doc/gdb.texinfo | 19 + gdb/dwarf2/index-write.c | 8 +- gdb/exec.c | 12 +- gdb/guile/scm-cmd.c | 2 +- gdb/infcmd.c | 12 +- gdb/inferior.c | 2 +- gdb/jit.c | 2 +- gdb/python/py-cmd.c | 2 +- gdb/record-full.c | 4 +- gdb/record.c | 2 +- gdb/skip.c | 2 +- gdb/source.c | 2 +- gdb/symfile.c | 120 +++- gdb/target-descriptions.c | 31 +- gdb/testsuite/gdb.base/batch-exit-status.exp | 4 +- .../gdb.base/filename-completion.exp | 319 +++++++-- gdb/testsuite/gdb.base/sym-file.exp | 258 +++---- gdb/testsuite/gdb.compile/compile.exp | 2 +- gdb/testsuite/lib/gdb.exp | 10 + gdb/tracectf.c | 12 +- gdb/tracefile-tfile.c | 17 +- gdb/utils.c | 18 + gdb/utils.h | 14 + 34 files changed, 1329 insertions(+), 394 deletions(-) base-commit: 83fbcee1a1afb4d2251109a436af82f8dac5b142 -- 2.25.4