From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7541 invoked by alias); 31 Jan 2014 09:48:34 -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 7532 invoked by uid 89); 31 Jan 2014 09:48:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Fri, 31 Jan 2014 09:48:33 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 99131116609 for ; Fri, 31 Jan 2014 04:48:31 -0500 (EST) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id GkLDf5ImSATB for ; Fri, 31 Jan 2014 04:48:31 -0500 (EST) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id 2E953116605 for ; Fri, 31 Jan 2014 04:48:31 -0500 (EST) Received: by joel.gnat.com (Postfix, from userid 1000) id 15D28E07A3; Fri, 31 Jan 2014 13:48:28 +0400 (RET) From: Joel Brobecker To: gdb-patches@sourceware.org Subject: [Windows/RFA/commit] Deprecate windows-specific dll-symbols command and aliases Date: Fri, 31 Jan 2014 09:48:00 -0000 Message-Id: <1391161706-340-1-git-send-email-brobecker@adacore.com> X-SW-Source: 2014-01/txt/msg01074.txt.bz2 Hello, The "dll-symbols" command, specific to native Windows platforms, gives the impression that the symbols were not loaded, first because it completes silently, and second because the "info shared" output does not get updated after the command completes: (gdb) dll-symbols C:\WINDOWS\syswow64\rpcrt4.dll (gdb) info shared From To Syms Read Shared Object Library [...] 0x77e51000 0x77ee2554 No C:\WINDOWS\system32\rpcrt4.dll (we exected the "Syms Read" column to read "Yes"). As far as I can tell, the symbols actually do get loaded, but completely independently from the solib framework, which explains the silent loading and the fact that the "Syms Read" column does not get updated. See windows-nat.c::safe_symbol_file_add_stub, which calls symbol_file_add instead of calling solib_add. But, aside from the fact that the "Syms Read" status does not get updated, I also noticed that it does not take into account the DLL's actual load address when loading its symbols. As a result, I believe that we get it wrong if the DLL does not get loaded at the prefered address. Rather than trying to fix this command, there does not seem to be a reason other than historical for having Windows-specific commands which essentially re-implements the "sharedlibrary" command. The command interface is slightly different (the latter takes a regexp rather than a plain filename), but it should be just as easy to use the "sharedlibrary" command, or its "share" alias, as usisng the "dll-symbols" command. For instance: (gdb) share rpcrt4.dll Reading symbols from C:\WINDOWS\system32\rpcrt4.dll...(no debugging symbols found)...done. Loaded symbols for C:\WINDOWS\system32\rpcrt4.dll (gdb) info shared From To Syms Read Shared Object Library [...] 0x77e51000 0x77ee2554 Yes (*) C:\WINDOWS\system32\rpcrt4.dll This patch therefore deprecates the "dll-symbols" command, as well as its two aliases "add-shared-symbol-files" and "assf", with a view of deleting them as soon as the 7.8 branch gets cut. Another option is to port this patch to the gdb-7.7 branch to make it deprecated in the 7.7 release, allowing us to remove support for these commands from master now. gdb/ChangeLog: * windows-nat.c (_initialize_windows_nat): Deprecate the "dll-symbols" command. Turn the "add-shared-symbol-files" and "assf" aliases into commands, and deprecate them as well. * NEWS: Add entry explaining that "dll-symbols" and its two aliases are now deprecated. Tested on x86-windows. Thoughts? Thanks, -- Joel --- gdb/NEWS | 4 ++++ gdb/windows-nat.c | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gdb/NEWS b/gdb/NEWS index 5062e02..14af602 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -51,6 +51,10 @@ qXfer:btrace:read's annex The qXfer:btrace:read packet supports a new annex 'delta' to read branch trace incrementally. +* The "dll-symbols" command, and its two aliases ("add-shared-symbol-files" + and "assf"), have been deprecated. Use the "sharedlibrary" command, or + its alias "share", instead. + *** Changes in GDB 7.7 * Improved support for process record-replay and reverse debugging on diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 5bcb7b7..68a567b 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -2666,12 +2666,17 @@ _initialize_windows_nat (void) c = add_com ("dll-symbols", class_files, dll_symbol_command, _("Load dll library symbols from FILE.")); set_cmd_completer (c, filename_completer); + deprecate_cmd (c, "sharedlibrary"); - add_com_alias ("sharedlibrary", "dll-symbols", class_alias, 1); - - add_com_alias ("add-shared-symbol-files", "dll-symbols", class_alias, 1); + c = add_com ("add-shared-symbol-files", class_files, dll_symbol_command, + _("Load dll library symbols from FILE.")); + set_cmd_completer (c, filename_completer); + deprecate_cmd (c, "sharedlibrary"); - add_com_alias ("assf", "dll-symbols", class_alias, 1); + c = add_com ("assf", class_files, dll_symbol_command, + _("Load dll library symbols from FILE.")); + set_cmd_completer (c, filename_completer); + deprecate_cmd (c, "sharedlibrary"); #ifdef __CYGWIN__ add_setshow_boolean_cmd ("shell", class_support, &useshell, _("\ -- 1.8.3.2