Commit Graph

3 Commits

Author SHA1 Message Date
Pedro Alves 60adb36c08 gdb: make_scoped_restore and types convertible to T
A following patch will want to do

   string_file str_file;

   scoped_restore save_stdout
    = make_scoped_restore (&gdb_stdout, &str_file);

where gdb_stdout is a ui_file *, and string_file is a type that
inherits from ui_file, but that doesn't compile today:

  src/gdb/top.c: In function ‘std::__cxx11::string execute_command_to_string(char*, int)’:
  src/gdb/top.c:710:50: error: no matching function for call to ‘make_scoped_restore(ui_file**, string_file*)’
       = make_scoped_restore (&gdb_stdout, &str_file);
						    ^
  [...]
  In file included from src/gdb/utils.h:25:0,
		   from src/gdb/defs.h:732,
		   from src/gdb/top.c:20:
  src/gdb/common/scoped_restore.h:94:24: note: candidate: template<class T> scoped_restore_tmpl<T> make_scoped_restore(T*, T)
   scoped_restore_tmpl<T> make_scoped_restore (T *var, T value)
			  ^
  src/gdb/common/scoped_restore.h:94:24: note:   template argument deduction/substitution failed:
  src/gdb/top.c:710:50: note:   deduced conflicting types for parameter ‘T’ (‘ui_file*’ and ‘string_file*’)
       = make_scoped_restore (&gdb_stdout, &str_file);
						    ^

This commit makes code such as the above possible.

gdb/ChangeLog:
2017-01-31  Pedro Alves  <palves@redhat.com>

	* common/scoped_restore.h
	(scoped_restore_tmpl::scoped_restore_tmpl): Template on T2, and
	change the value's parameter type to T2.
	(make_scoped_restore): Likewise.
2017-01-31 17:56:35 +00:00
Joel Brobecker 61baf725ec update copyright year range in GDB files
This applies the second part of GDB's End of Year Procedure, which
updates the copyright year range in all of GDB's files.

gdb/ChangeLog:

        Update copyright year range in all GDB files.
2017-01-01 10:52:34 +04:00
Tom Tromey b7b633e9b1 Use RAII to save and restore scalars
This patch replaces many (but not all) uses of
make_cleanup_restore_integer with a simple RAII-based template class.
It also removes the similar restore_execution_direction cleanup in
favor of this new class.  Subsequent patches will replace other
similar cleanups with this class.

The class is typically instantiated using make_scoped_restore.  This
allows for template argument deduction.

2016-10-21  Tom Tromey  <tom@tromey.com>

	* common/scoped_restore.h: New file.
	* utils.h: Include scoped_restore.h.
	* top.c (execute_command_to_string): Use scoped_restore.
	* python/python.c (python_interactive_command): Use
	scoped_restore.
	(python_command, execute_gdb_command): Likewise.
	* printcmd.c (do_one_display): Use scoped_restore.
	* mi/mi-main.c (exec_continue): Use scoped_restore.
	* mi/mi-cmd-var.c (mi_cmd_var_assign): Use scoped_restore.
	* linux-fork.c (checkpoint_command): Use scoped_restore.
	* infrun.c (restore_execution_direction): Remove.
	(fetch_inferior_event): Use scoped_restore.
	* compile/compile.c (compile_file_command): Use
	scoped_restore.
	(compile_code_command, compile_print_command): Likewise.
	* cli/cli-script.c (execute_user_command): Use
	scoped_restore.
	(while_command, if_command, script_from_file): Likewise.
	* arm-tdep.c (arm_insert_single_step_breakpoint): Use
	scoped_restore.
2016-10-21 14:17:31 -06:00