aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-06-21 01:11:48 +0100
committerPedro Alves <palves@redhat.com>2016-06-21 01:11:48 +0100
commitb6dcde571e1a230d12fc483ba6d38a1253ab097e (patch)
tree84ac376d97a1f55df78e029ce77794e6d0a2f1da
parent23ff98d2fed4a1eaeb815e18cd4169e5aa7aaa60 (diff)
downloadgdb-b6dcde571e1a230d12fc483ba6d38a1253ab097e.zip
gdb-b6dcde571e1a230d12fc483ba6d38a1253ab097e.tar.gz
gdb-b6dcde571e1a230d12fc483ba6d38a1253ab097e.tar.bz2
Make current_ui_out be per UI
Similarly to gdb_stdout&co. gdb/ChangeLog: 2016-06-21 Pedro Alves <palves@redhat.com> * top.c: Call gen_ret_current_ui_field_ptr for current_uiout. * top.h (struct ui) <m_current_uiout>: New field. * ui-out.c (current_uiout): Delete. * ui-out.h (current_uiout): Delete. (current_ui_current_uiout_ptr): New declaration. (current_uiout): Reimplement as wrapper around current_ui_current_uiout_ptr.
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/top.c1
-rw-r--r--gdb/top.h3
-rw-r--r--gdb/ui-out.c5
-rw-r--r--gdb/ui-out.h3
5 files changed, 16 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ccf31f2..58afe3b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,15 @@
2016-06-21 Pedro Alves <palves@redhat.com>
+ * top.c: Call gen_ret_current_ui_field_ptr for current_uiout.
+ * top.h (struct ui) <m_current_uiout>: New field.
+ * ui-out.c (current_uiout): Delete.
+ * ui-out.h (current_uiout): Delete.
+ (current_ui_current_uiout_ptr): New declaration.
+ (current_uiout): Reimplement as wrapper around
+ current_ui_current_uiout_ptr.
+
+2016-06-21 Pedro Alves <palves@redhat.com>
+
* ui-out.c (default_ui_out_impl): Delete.
(def_uiout): Delete.
(current_uiout): Set to NULL.
diff --git a/gdb/top.c b/gdb/top.c
index 733580f..2e6cf31 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -100,6 +100,7 @@ gen_ret_current_ui_field_ptr (struct ui_file *, gdb_stdout)
gen_ret_current_ui_field_ptr (struct ui_file *, gdb_stdin)
gen_ret_current_ui_field_ptr (struct ui_file *, gdb_stderr)
gen_ret_current_ui_field_ptr (struct ui_file *, gdb_stdlog)
+gen_ret_current_ui_field_ptr (struct ui_out *, current_uiout)
/* Initialization file name for gdb. This is host-dependent. */
diff --git a/gdb/top.h b/gdb/top.h
index e544514..905ad7b 100644
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -98,6 +98,9 @@ struct ui
*_unfiltered. In the very near future that restriction shall be
removed - either call shall be unfiltered. (cagney 1999-06-13). */
struct ui_file *m_gdb_stdlog;
+
+ /* The current ui_out. */
+ struct ui_out *m_current_uiout;
};
/* The main UI. This is the UI that is bound to stdin/stdout/stderr.
diff --git a/gdb/ui-out.c b/gdb/ui-out.c
index 4ea571b..3972a56 100644
--- a/gdb/ui-out.c
+++ b/gdb/ui-out.c
@@ -147,11 +147,6 @@ pop_level (struct ui_out *uiout,
return uiout->level + 1;
}
-/* FIXME: This should not be a global, but something passed down from main.c
- or top.c. */
-
-struct ui_out *current_uiout = NULL;
-
/* These are the interfaces to implementation functions. */
static void uo_table_begin (struct ui_out *uiout, int nbrofcols,
diff --git a/gdb/ui-out.h b/gdb/ui-out.h
index 905d73c..9e1e74d 100644
--- a/gdb/ui-out.h
+++ b/gdb/ui-out.h
@@ -32,7 +32,8 @@ struct ui_file;
/* FIXME: This should not be a global but something passed down from main.c
or top.c. */
-extern struct ui_out *current_uiout;
+extern struct ui_out **current_ui_current_uiout_ptr (void);
+#define current_uiout (*current_ui_current_uiout_ptr ())
/* alignment enum */
enum ui_align