diff options
author | Tom Tromey <tromey@adacore.com> | 2023-03-16 10:12:17 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-03-20 07:21:03 -0600 |
commit | 0fea10f327466dbe949aef39cef5a6bdea91163f (patch) | |
tree | 856ea4c65cf04fcb4c8f9e59a117511314f01843 | |
parent | 442716d400655e252f3faf93ae17ec410e73869d (diff) | |
download | gdb-0fea10f327466dbe949aef39cef5a6bdea91163f.zip gdb-0fea10f327466dbe949aef39cef5a6bdea91163f.tar.gz gdb-0fea10f327466dbe949aef39cef5a6bdea91163f.tar.bz2 |
Make ui_out::do_progress_end 'private'
I noticed that ui_out::do_progress_end is public, just to support one
use in debuginfod-support.c. This patch makes it private, updates
progress_info to call it from its destructor, and finally changes
debuginfod-support.c to follow.
-rw-r--r-- | gdb/debuginfod-support.c | 101 | ||||
-rw-r--r-- | gdb/ui-out.h | 8 |
2 files changed, 61 insertions, 48 deletions
diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c index 04d254a..5853f42 100644 --- a/gdb/debuginfod-support.c +++ b/gdb/debuginfod-support.c @@ -261,16 +261,13 @@ debuginfod_is_enabled () /* Print the result of the most recent attempted download. */ static void -print_outcome (user_data &data, int fd) +print_outcome (int fd, const char *desc, const char *fname) { - /* Clears the current line of progress output. */ - current_uiout->do_progress_end (); - if (fd < 0 && fd != -ENOENT) gdb_printf (_("Download failed: %s. Continuing without %s %ps.\n"), safe_strerror (-fd), - data.desc, - styled_string (file_name_style.style (), data.fname)); + desc, + styled_string (file_name_style.style (), fname)); } /* See debuginfod-support.h */ @@ -290,23 +287,28 @@ debuginfod_source_query (const unsigned char *build_id, return scoped_fd (-ENOMEM); char *dname = nullptr; - user_data data ("source file", srcpath); - - debuginfod_set_user_data (c, &data); + scoped_fd fd; gdb::optional<target_terminal::scoped_restore_terminal_state> term_state; - if (target_supports_terminal_ours ()) - { - term_state.emplace (); - target_terminal::ours (); - } - scoped_fd fd (debuginfod_find_source (c, - build_id, - build_id_len, - srcpath, - &dname)); - debuginfod_set_user_data (c, nullptr); - print_outcome (data, fd.get ()); + { + user_data data ("source file", srcpath); + + debuginfod_set_user_data (c, &data); + if (target_supports_terminal_ours ()) + { + term_state.emplace (); + target_terminal::ours (); + } + + fd = scoped_fd (debuginfod_find_source (c, + build_id, + build_id_len, + srcpath, + &dname)); + debuginfod_set_user_data (c, nullptr); + } + + print_outcome (fd.get (), "source file", srcpath); if (fd.get () >= 0) destname->reset (dname); @@ -331,20 +333,25 @@ debuginfod_debuginfo_query (const unsigned char *build_id, return scoped_fd (-ENOMEM); char *dname = nullptr; - user_data data ("separate debug info for", filename); - - debuginfod_set_user_data (c, &data); + scoped_fd fd; gdb::optional<target_terminal::scoped_restore_terminal_state> term_state; - if (target_supports_terminal_ours ()) - { - term_state.emplace (); - target_terminal::ours (); - } - scoped_fd fd (debuginfod_find_debuginfo (c, build_id, build_id_len, - &dname)); - debuginfod_set_user_data (c, nullptr); - print_outcome (data, fd.get ()); + { + user_data data ("separate debug info for", filename); + + debuginfod_set_user_data (c, &data); + if (target_supports_terminal_ours ()) + { + term_state.emplace (); + target_terminal::ours (); + } + + fd = scoped_fd (debuginfod_find_debuginfo (c, build_id, build_id_len, + &dname)); + debuginfod_set_user_data (c, nullptr); + } + + print_outcome (fd.get (), "separate debug info for", filename); if (fd.get () >= 0) destname->reset (dname); @@ -369,19 +376,25 @@ debuginfod_exec_query (const unsigned char *build_id, return scoped_fd (-ENOMEM); char *dname = nullptr; - user_data data ("executable for", filename); - - debuginfod_set_user_data (c, &data); + scoped_fd fd; gdb::optional<target_terminal::scoped_restore_terminal_state> term_state; - if (target_supports_terminal_ours ()) - { - term_state.emplace (); - target_terminal::ours (); - } - scoped_fd fd (debuginfod_find_executable (c, build_id, build_id_len, &dname)); - debuginfod_set_user_data (c, nullptr); - print_outcome (data, fd.get ()); + { + user_data data ("executable for", filename); + + debuginfod_set_user_data (c, &data); + if (target_supports_terminal_ours ()) + { + term_state.emplace (); + target_terminal::ours (); + } + + fd = scoped_fd (debuginfod_find_executable (c, build_id, build_id_len, + &dname)); + debuginfod_set_user_data (c, nullptr); + } + + print_outcome (fd.get (), "executable for", filename); if (fd.get () >= 0) destname->reset (dname); diff --git a/gdb/ui-out.h b/gdb/ui-out.h index c7ae669..ba5b1de 100644 --- a/gdb/ui-out.h +++ b/gdb/ui-out.h @@ -302,7 +302,7 @@ class ui_out ~progress_update () { - + m_uiout->do_progress_end (); } progress_update (const progress_update &) = delete; @@ -321,14 +321,13 @@ class ui_out { m_uiout->do_progress_notify (msg, "", -1, -1); } + private: struct ui_out *m_uiout; }; - virtual void do_progress_end () = 0; - - protected: +protected: virtual void do_table_begin (int nbrofcols, int nr_rows, const char *tblid) = 0; @@ -365,6 +364,7 @@ class ui_out virtual void do_progress_start () = 0; virtual void do_progress_notify (const std::string &, const char *, double, double) = 0; + virtual void do_progress_end () = 0; /* Set as not MI-like by default. It is overridden in subclasses if necessary. */ |