From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id N402OGiy01+9awAAWB0awg (envelope-from ) for ; Fri, 11 Dec 2020 12:54:48 -0500 Received: by simark.ca (Postfix, from userid 112) id DC5871F0A9; Fri, 11 Dec 2020 12:54:48 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=MAILING_LIST_MULTI,RDNS_NONE, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (unknown [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 8BCB71E590 for ; Fri, 11 Dec 2020 12:54:48 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 289923973042; Fri, 11 Dec 2020 17:54:48 +0000 (GMT) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id E5CA7385043E for ; Fri, 11 Dec 2020 17:54:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E5CA7385043E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tdevries@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 07E43ACF1; Fri, 11 Dec 2020 17:54:44 +0000 (UTC) Subject: Re: [PATCH] gdb: print size of downloaded debuginfod binary From: Tom de Vries To: Tom Tromey References: <6ad82f30-0ca3-8b19-2907-d71f0dfecafe@suse.cz> <2c28a403-a169-0dc3-9b64-58484237c8c2@suse.cz> <72061fbb-b480-04ce-ef4a-fe13a7266885@suse.de> <87a6ulmppr.fsf@tromey.com> <5506b198-c504-0046-0559-bcc24538d31c@suse.de> Message-ID: Date: Fri, 11 Dec 2020 18:54:43 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: <5506b198-c504-0046-0559-bcc24538d31c@suse.de> Content-Type: multipart/mixed; boundary="------------4C3098912FEFDB573A37CF90" Content-Language: en-US X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: gdb-patches@sourceware.org Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" This is a multi-part message in MIME format. --------------4C3098912FEFDB573A37CF90 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 12/11/20 6:51 PM, Tom de Vries wrote: > On 12/10/20 8:21 PM, Tom Tromey wrote: >> Tom> This updated patch fixes both problems, the latter by printing the % >> Tom> progress on its own line (which is cleared by a final '\r' after >> Tom> reaching 100%, in order not to waste lines on this). >> >> A long time ago I had patches to show a progress bar when reading DWARF. >> >> https://sourceware.org/pipermail/gdb-patches/2017-April/139882.html >> >> Maybe this could be resurrected. >> I've occasionally thought of adding this to the TUI as well, say briefly >> overwriting the status bar with a progress meter. > > I've taken a look, and think that this code is more in line with gdb cli > setup, so I've reimplemented on top of this. > > Here is the first patch, adding the progress meter infrastructure > factored out from your patch. And here's the reimplemented patch. I've test-driven it a bit on tumbleweed, and behaviour looks ok. Currently testing on x86_64-linux. Thanks, - Tom --------------4C3098912FEFDB573A37CF90 Content-Type: text/x-patch; charset=UTF-8; name="0002-gdb-Print-progress-for-debuginfod.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0002-gdb-Print-progress-for-debuginfod.patch" [gdb] Print progress for debuginfod Prints progress like: Downloading 4.89 MB separate debug info for /usr/lib64/libgcrypt.so.20. Downloading 1.10 MB separate debug info for /usr/lib64/liblzma.so.5. Downloading 1.31 MB separate debug info for /usr/lib64/liblz4.so.1. Downloading 0.96 MB separate debug info for /usr/lib64/libsmime3.so. [### ] Tested on x86_64-linux. ChangeLog: 2020-12-10 Martin Liska Tom de Vries * gdb/debuginfod-support.c (struct user_data): Remove has_printed field. Add meter field. (progressfn): Print progress using meter. --- gdb/debuginfod-support.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c index 86630576e3..a17cb7c5a8 100644 --- a/gdb/debuginfod-support.c +++ b/gdb/debuginfod-support.c @@ -21,6 +21,8 @@ #include "cli/cli-style.h" #include "gdbsupport/scoped_fd.h" #include "debuginfod-support.h" +#include "gdbsupport/gdb_optional.h" +#include #ifndef HAVE_LIBDEBUGINFOD scoped_fd @@ -48,12 +50,12 @@ debuginfod_debuginfo_query (const unsigned char *build_id, struct user_data { user_data (const char *desc, const char *fname) - : desc (desc), fname (fname), has_printed (false) + : desc (desc), fname (fname) { } const char * const desc; const char * const fname; - bool has_printed; + gdb::optional meter; }; /* Deleter for a debuginfod_client. */ @@ -82,15 +84,21 @@ progressfn (debuginfod_client *c, long cur, long total) return 1; } - if (!data->has_printed && total != 0) + if (total == 0) + return 0; + + if (!data->meter.has_value ()) { - /* Print this message only once. */ - data->has_printed = true; - printf_filtered ("Downloading %s %ps...\n", - data->desc, - styled_string (file_name_style.style (), data->fname)); + float size_in_mb = 1.0f * total / (1024 * 1024); + std::stringstream message; + message.precision (2); + message << "Downloading " << size_in_mb << " MB " << data->desc + << " " << data->fname; + data->meter.emplace (current_uiout, message.str (), 1); } + current_uiout->progress ((double)cur / (double)total); + return 0; } --------------4C3098912FEFDB573A37CF90--