diff --git a/_gdb.spec.Patch.include b/_gdb.spec.Patch.include index f5a6dd2..94215fb 100644 --- a/_gdb.spec.Patch.include +++ b/_gdb.spec.Patch.include @@ -355,3 +355,7 @@ Patch085: gdb-rhbz202487-rework-set-debuginfod.patch #b9db26b4c44 [PR gdb/27026] CTRL-C is ignored when debug info is downloaded Patch086: gdb-rhbz2024875-pr27026.patch +# Backport upstream patch from Aaron Merey which suppresses debuginfod +# progress messages when size is zero. (RH BZ 2068280). +Patch087: gdb-rhbz2068280-debuginfod-unavailable-size.patch + diff --git a/_gdb.spec.patch.include b/_gdb.spec.patch.include index 965fc8c..470a7be 100644 --- a/_gdb.spec.patch.include +++ b/_gdb.spec.patch.include @@ -84,3 +84,4 @@ %patch084 -p1 %patch085 -p1 %patch086 -p1 +%patch087 -p1 diff --git a/_patch_order b/_patch_order index b921d85..f089f69 100644 --- a/_patch_order +++ b/_patch_order @@ -84,3 +84,4 @@ gdb-rhbz2024875-set_show-for-managing-debuginfod.patch gdb-rhbz2024875-fix-unittest-failure.patch gdb-rhbz202487-rework-set-debuginfod.patch gdb-rhbz2024875-pr27026.patch +gdb-rhbz2068280-debuginfod-unavailable-size.patch diff --git a/gdb-rhbz2068280-debuginfod-unavailable-size.patch b/gdb-rhbz2068280-debuginfod-unavailable-size.patch new file mode 100644 index 0000000..57c6d5a --- /dev/null +++ b/gdb-rhbz2068280-debuginfod-unavailable-size.patch @@ -0,0 +1,94 @@ +From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 +From: Kevin Buettner +Date: Fri, 25 Mar 2022 17:52:35 -0700 +Subject: gdb-rhbz2068280-debuginfod-unavailable-size.patch + +;; Backport upstream patch from Aaron Merey which suppresses debuginfod +;; progress messages when size is zero. (RH BZ 2068280). + +Remove download size from debuginfod progress messages if unavailable + +Currently debuginfod progress update messages include the size of +each download: + + Downloading 7.5 MB separate debug info for /lib/libxyz.so.0 + +This value originates from the Content-Length HTTP header of the +transfer. However this header is not guaranteed to be present for +each download. This can happen when debuginfod servers compress files +on-the-fly at the time of transfer. In this case gdb wrongly prints +"-0.00 MB" as the size. + +This patch removes download sizes from progress messages when they are +not available. It also removes usage of the progress bar until +a more thorough reworking of progress updating is implemented. [1] + +[1] https://sourceware.org/pipermail/gdb-patches/2022-February/185798.html + +diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c +--- a/gdb/debuginfod-support.c ++++ b/gdb/debuginfod-support.c +@@ -81,12 +81,12 @@ debuginfod_debuginfo_query (const unsigned char *build_id, + struct user_data + { + user_data (const char *desc, const char *fname) +- : desc (desc), fname (fname) ++ : desc (desc), fname (fname), has_printed (false) + { } + + const char * const desc; + const char * const fname; +- gdb::optional meter; ++ bool has_printed; + }; + + /* Deleter for a debuginfod_client. */ +@@ -116,24 +116,32 @@ progressfn (debuginfod_client *c, long cur, long total) + return 1; + } + +- if (total == 0) +- return 0; +- +- if (!data->meter.has_value ()) ++ if (!data->has_printed) + { +- float size_in_mb = 1.0f * total / (1024 * 1024); +- string_file styled_filename (current_uiout->can_emit_style_escape ()); +- fprintf_styled (&styled_filename, +- file_name_style.style (), +- "%s", +- data->fname); +- std::string message +- = string_printf ("Downloading %.2f MB %s %s", size_in_mb, data->desc, +- styled_filename.c_str()); +- data->meter.emplace (current_uiout, message, 1); +- } ++ /* Include the transfer size, if available. */ ++ if (total > 0) ++ { ++ float size = 1.0f * total / 1024; ++ const char *unit = "KB"; ++ ++ /* If size is greater than 0.01 MB, set unit to MB. */ ++ if (size > 10.24) ++ { ++ size /= 1024; ++ unit = "MB"; ++ } ++ ++ printf_filtered ("Downloading %.2f %s %s %ps...\n", ++ size, unit, data->desc, ++ styled_string (file_name_style.style (), ++ data->fname)); ++ } ++ else ++ printf_filtered ("Downloading %s %ps...\n", data->desc, ++ styled_string (file_name_style.style (), data->fname)); + +- current_uiout->progress ((double)cur / (double)total); ++ data->has_printed = true; ++ } + + return 0; + } diff --git a/gdb.spec b/gdb.spec index 1f214e1..eb1426d 100644 --- a/gdb.spec +++ b/gdb.spec @@ -37,7 +37,7 @@ Version: 11.2 # The release always contains a leading reserved number, start it at 1. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL # Do not provide URL for snapshots as the file lasts there only for 2 days. @@ -1143,6 +1143,10 @@ fi %endif %changelog +* Fri Mar 25 2022 Kevin Buettner - 11.2-2 +- Backport upstream patch which removes sizes from debuginfod download + messages when the size is not available (RHBZ 2068280, Aaron Merey). + * Tue Feb 8 2022 Kevin Buettner - 11.2-1 - Rebase to FSF GDB 11.2.