This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Overriding uiout


There are currently only four code paths in the entire GDB source tree where
uiout could theoretically be overridden to something other than the normal
uiout.  They're all for libgdb: gdb_value_struct_elt, gdb_thread_select,
gdb_list_thread_ids, and gdb_breakpoint_query.  The only place it actually
appears to be overridden is in gdb_value_struct_elt, which is occasionally
called from varobj code with uiout==NULL.  Otherwise it is always overridden
to itself.

This overriding mechanism makes it a bit awkward to redirect GDB's output;
any change to uiout is lost after the current command if we are running from
the prompt (although, surprisingly and IMO inconsistently, it lasts until
the end of a user-defined function).

So I'll ask again - what is this interface supposed to accomplish?  If it's
just a step down the road to passing explicit state everywhere, then I think
it's a significant step backwards in other ways, and that we should instead
let clients or wrapper functions manipulate the global state until we're
truly ready to pass a global state around - a global state which can be
overridden for this sort of task.

This is purely a design question, not an implementation objection.  For
implementation I'm restricting this feature to CLI only, and implementing it
within cli-out.  It turned out to be more elegant than I expected.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]