Skip to content
Snippets Groups Projects
  1. Jan 01, 2023
  2. Jul 15, 2022
    • Tom Tromey's avatar
      Expose current 'print' settings to Python · c4a3dbaf
      Tom Tromey authored
      PR python/17291 asks for access to the current print options.  While I
      think this need is largely satisfied by the existence of
      Value.format_string, it seemed to me that a bit more could be done.
      
      First, while Value.format_string uses the user's settings, it does not
      react to temporary settings such as "print/x".  This patch changes
      this.
      
      Second, there is no good way to examine the current settings (in
      particular the temporary ones in effect for just a single "print").
      This patch adds this as well.
      
      Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=17291
      
      c4a3dbaf
  3. Jan 01, 2022
  4. Jan 01, 2021
  5. Dec 11, 2020
    • Tom Tromey's avatar
      Change varobj_item::value to a value_ref_ptr · 11106495
      Tom Tromey authored
      This changes varobj_item::value to be a value_ref_ptr, removing some
      manual management.
      
      gdb/ChangeLog
      2020-12-11  Tom Tromey  <tom@tromey.com>
      
      	* varobj.c (install_dynamic_child, varobj_clear_saved_item)
      	(update_dynamic_varobj_children, create_child)
      	(create_child_with_value): Update.
      	* varobj-iter.h (struct varobj_item) <value>: Now a
      	value_ref_ptr.
      	* python/py-varobj.c (py_varobj_iter::next): Call release_value.
      11106495
    • Tom Tromey's avatar
      Change varobj_dynamic::child_iter to unique_ptr · 24fd95b4
      Tom Tromey authored
      This changes varobj_dynamic::child_iter to be a unique_ptr, removing
      some manual management.
      
      gdb/ChangeLog
      2020-12-11  Tom Tromey  <tom@tromey.com>
      
      	* varobj.c (struct varobj_dynamic) <child_iter>: Now unique_ptr.
      	(varobj_get_iterator): Return unique_ptr.
      	(update_dynamic_varobj_children, install_visualizer)
      	(varobj::~varobj): Update.
      	* python/python-internal.h (py_varobj_get_iterator): Return
      	unique_ptr.
      	* python/py-varobj.c (py_varobj_get_iterator): Return unique_ptr.
      24fd95b4
    • Tom Tromey's avatar
      Change varobj_iter::next to return unique_ptr · 60ee72f6
      Tom Tromey authored
      This changes varobj_iter::next to return a unique_ptr.  This fits in
      with the ongoing theme of trying to express these ownership transfers
      via the type system.
      
      gdb/ChangeLog
      2020-12-11  Tom Tromey  <tom@tromey.com>
      
      	* varobj.c (update_dynamic_varobj_children): Update.
      	* varobj-iter.h (struct varobj_iter) <next>: Change return type.
      	* python/py-varobj.c (struct py_varobj_iter) <next>: Change return
      	type.
      	(py_varobj_iter::next): Likewise.
      60ee72f6
    • Tom Tromey's avatar
      C++-ify varobj iteration · 54746ce3
      Tom Tromey authored
      This changes the varobj iteration code to use a C++ class rather than
      a C struct with a separate "ops" structure.  The only implementation
      is updated to use inheritance.  This simplifies the code quite nicely.
      
      gdb/ChangeLog
      2020-12-11  Tom Tromey  <tom@tromey.com>
      
      	* varobj.c (update_dynamic_varobj_children, install_visualizer)
      	(varobj::~varobj): Update.
      	* varobj-iter.h (struct varobj_iter): Change to interface class.
      	(struct varobj_iter_ops): Remove.
      	(varobj_iter_next, varobj_iter_delete): Remove.
      	* python/py-varobj.c (struct py_varobj_iter): Derive from
      	varobj_iter.  Add constructor, destructor.  Rename members.
      	(py_varobj_iter::~py_varobj_iter): Rename from
      	py_varobj_iter_dtor.
      	(py_varobj_iter::next): Rename from py_varobj_iter_next.
      	(py_varobj_iter_ops): Remove.
      	(py_varobj_iter): Rename from py_varobj_iter_ctor.
      	(py_varobj_iter_new): Remove.
      	(py_varobj_get_iterator): Update.
      54746ce3
  6. Jan 01, 2020
  7. Jan 23, 2019
    • Tom Tromey's avatar
      Do not include py-ref.h in most files · 3fabc016
      Tom Tromey authored
      py-ref.h can really only be included from a specific spot in
      python-internal.h.  The other includes are not useful, and cause
      compilation errors if the includes are ever sorted.  So, remove these
      includes.
      
      Arguably, py-ref.h should simply not be a separate header.
      
      gdb/ChangeLog
      2019-01-22  Tom Tromey  <tom@tromey.com>
      
      	* python/py-arch.c: Do not include py-ref.h.
      	* python/py-bpevent.c: Do not include py-ref.h.
      	* python/py-cmd.c: Do not include py-ref.h.
      	* python/py-continueevent.c: Do not include py-ref.h.
      	* python/py-event.h: Do not include py-ref.h.
      	* python/py-evtregistry.c: Do not include py-ref.h.
      	* python/py-finishbreakpoint.c: Do not include py-ref.h.
      	* python/py-frame.c: Do not include py-ref.h.
      	* python/py-framefilter.c: Do not include py-ref.h.
      	* python/py-function.c: Do not include py-ref.h.
      	* python/py-infevents.c: Do not include py-ref.h.
      	* python/py-linetable.c: Do not include py-ref.h.
      	* python/py-objfile.c: Do not include py-ref.h.
      	* python/py-param.c: Do not include py-ref.h.
      	* python/py-prettyprint.c: Do not include py-ref.h.
      	* python/py-progspace.c: Do not include py-ref.h.
      	* python/py-symbol.c: Do not include py-ref.h.
      	* python/py-symtab.c: Do not include py-ref.h.
      	* python/py-type.c: Do not include py-ref.h.
      	* python/py-unwind.c: Do not include py-ref.h.
      	* python/py-utils.c: Do not include py-ref.h.
      	* python/py-value.c: Do not include py-ref.h.
      	* python/py-varobj.c: Do not include py-ref.h.
      	* python/py-xmethods.c: Do not include py-ref.h.
      	* python/python.c: Do not include py-ref.h.
      	* varobj.c: Do not include py-ref.h.
      3fabc016
  8. Jan 03, 2019
    • Tom Tromey's avatar
      Use a wrapper for PyErr_Fetch · 5c329e6a
      Tom Tromey authored
      This introduces a new class that wraps PyErr_Fetch and PyErr_Restore,
      and then changes all the callers in gdb to use it.  This reduces the
      amount of explicit reference counting that is done in the Python code.
      I also found and fixed a latent bug in gdbpy_print_stack -- it was not
      correctly checking some error conditions, nor clearing the exception
      when needed.
      
      gdb/ChangeLog
      2019-01-03  Tom Tromey  <tom@tromey.com>
      
      	* python/python.c (gdbpy_enter, ~gdbpy_enter): Update.
      	(gdbpy_print_stack): Use gdbpy_err_fetch.
      	* python/python-internal.h (class gdbpy_err_fetch): New class.
      	(class gdbpy_enter) <m_error_type, m_error_value,
      	m_error_traceback>: Remove.
      	<m_error>: New member.
      	(gdbpy_exception_to_string): Don't declare.
      	* python/py-varobj.c (py_varobj_iter_next): Use gdbpy_err_fetch.
      	* python/py-value.c (convert_value_from_python): Use
      	gdbpy_err_fetch.
      	* python/py-utils.c (gdbpy_err_fetch::to_string): Rename from
      	gdbpy_exception_to_string.
      	(gdbpy_handle_exception): Use gdbpy_err_fetch.
      	* python/py-prettyprint.c (print_stack_unless_memory_error): Use
      	gdbpy_err_fetch.
      5c329e6a
  9. Jan 01, 2019
    • Joel Brobecker's avatar
      Update copyright year range in all GDB files. · 42a4f53d
      Joel Brobecker authored
      This commit applies all changes made after running the gdb/copyright.py
      script.
      
      Note that one file was flagged by the script, due to an invalid
      copyright header
      (gdb/unittests/basic_string_view/element_access/char/empty.cc).
      As the file was copied from GCC's libstdc++-v3 testsuite, this commit
      leaves this file untouched for the time being; a patch to fix the header
      was sent to gcc-patches first.
      
      gdb/ChangeLog:
      
      	Update copyright year range in all GDB files.
      42a4f53d
  10. Sep 17, 2018
    • Tom Tromey's avatar
      Don't steal references in the gdb Python code · 1a338907
      Tom Tromey authored
      Some Python APIs steal references from their caller, and the refcount
      checker supports this via an attribute.
      
      However, in gdb with C++ we have a better idiom available: we can use
      std::move on a gdbpy_ref<> instead.  This makes the semantics obvious
      at the point of call, and is safer at runtime as well, because the
      callee's gdbpy_ref<> will be emptied.
      
      This patch changes the reference-stealing code in gdb to use rvalue
      references instead.
      
      Tested on x86-64 Fedora 28.
      
      gdb/ChangeLog
      2018-09-16  Tom Tromey  <tom@tromey.com>
      
      	* python/python-internal.h (CPYCHECKER_STEALS_REFERENCE_TO_ARG):
      	Remove.
      	* python/py-varobj.c (py_varobj_iter_ctor): Change pyiter to
      	rvalue reference.  Remove CPYCHECKER_STEALS_REFERENCE_TO_ARG.
      	(py_varobj_iter_new): Likewise.
      	(py_varobj_get_iterator): Use gdbpy_ref.
      1a338907
  11. Jan 02, 2018
  12. Aug 03, 2017
    • Tom Tromey's avatar
      Avoid some manual memory management in Python · 7f968c89
      Tom Tromey authored
      This changes a few places in the Python code to avoid manual memory
      management, in favor of letting std::string do the work.
      
      ChangeLog
      2017-08-03  Tom Tromey  <tom@tromey.com>
      
      	* python/python.c (compute_python_string): Return std::string.
      	(gdbpy_eval_from_control_command): Update.
      	(do_start_initialization): Use std::string.
      	* python/py-varobj.c (py_varobj_iter_next): Use string_printf, not
      	xstrprintf.
      	* python/py-breakpoint.c (local_setattro): Use string_printf, not
      	xstrprintf.
      7f968c89
  13. Feb 10, 2017
    • Tom Tromey's avatar
      Turn gdbpy_ref into a template · 7780f186
      Tom Tromey authored
      This turns gdbpy_ref into a template class, so that it can be used to
      wrap subclasses of PyObject.  The default argument remains PyObject;
      and this necessitated renaming uses of "gdbpy_ref" to "gdbpy_ref<>".
      
      gdb/ChangeLog
      2017-02-10  Tom Tromey  <tom@tromey.com>
      
      	* python/py-ref.h (gdbpy_ref_policy): Now a template.
      	(gdbpy_ref): Now a template; allow subclasses of PyObject to be
      	used.
      	* python/py-arch.c, python/py-bpevent.c, python/py-breakpoint.c,
      	python/py-cmd.c, python/py-continueevent.c, python/py-event.c,
      	python/py-exitedevent.c, python/py-finishbreakpoint.c,
      	python/py-framefilter.c, python/py-function.c,
      	python/py-inferior.c, python/py-infevents.c,
      	python/py-linetable.c, python/py-newobjfileevent.c,
      	python/py-param.c, python/py-prettyprint.c, python/py-ref.h,
      	python/py-signalevent.c, python/py-stopevent.c,
      	python/py-symbol.c, python/py-threadevent.c, python/py-type.c,
      	python/py-unwind.c, python/py-utils.c, python/py-value.c,
      	python/py-varobj.c, python/py-xmethods.c, python/python.c,
      	varobj.c: Change gdbpy_ref to gdbpy_ref<>.
      7780f186
  14. Jan 11, 2017
    • Tom Tromey's avatar
      Use gdbpy_enter_varobj in py-varobj.c · 788f2586
      Tom Tromey authored
      This converts the remaining functions in py-varobj.c to use
      gdbpy_enter_varobj.
      
      2017-01-10  Tom Tromey  <tom@tromey.com>
      
      	* python/py-varobj.c (py_varobj_iter_dtor, py_varobj_iter_next):
      	Use gdbpy_enter_varobj.
      788f2586
    • Tom Tromey's avatar
      Introduce gdbpy_enter_varobj and use it · 6cd67bea
      Tom Tromey authored
      This introduces gdbpy_enter_varobj, a subclass of gdbpy_enter; then
      changes one function in py-varobj.c to use it.  gdbpy_enter_varobj
      takes a varobj as an argument, similar to varobj_ensure_python_env.
      
      2017-01-10  Tom Tromey  <tom@tromey.com>
      
      	* varobj.c (gdbpy_enter_varobj): New constructor.
      	* python/python-internal.h (gdbpy_enter_varobj): New class.
      	* python/py-varobj.c (py_varobj_get_iterator): Use
      	gdbpy_enter_varobj.
      6cd67bea
  15. Jan 01, 2017
    • Joel Brobecker's avatar
      update copyright year range in GDB files · 61baf725
      Joel Brobecker authored
      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.
      61baf725
  16. Nov 10, 2016
    • Tom Tromey's avatar
      Use unique_xmalloc_ptr in Python code · 9b972014
      Tom Tromey authored
      This changes some utility functions in the Python code to return
      unique_xmalloc_ptr, and then fixes up the callers.
      
      I chose unique_xmalloc_ptr rather than std::string because at a few
      call points the xmalloc'd string is released and ownership transferred
      elsewhere.
      
      This patch found a few existing memory leaks.  For example,
      py-unwind.c called gdbpy_obj_to_string but never freed the result.
      
      Built and regression tested on the buildbot.
      
      2016-11-09  Tom Tromey  <tom@tromey.com>
      
      	* varobj.h (varobj_get_display_hint): Change return type.
      	* varobj.c (varobj_get_display_hint): Return unique_xmalloc_ptr.
      	(varobj_value_get_print_value): Update.
      	* python/python.c (gdbpy_before_prompt_hook, gdbpy_print_stack)
      	(gdbpy_apply_type_printers): Update.
      	* python/python-internal.h (unicode_to_target_string)
      	(python_string_to_target_string, python_string_to_host_string)
      	(gdbpy_obj_to_string, gdbpy_exception_to_string)
      	(gdbpy_get_display_hint): Change return types.
      	* python/py-varobj.c (py_varobj_iter_next): Update.
      	* python/py-value.c (valpy_getitem, convert_value_from_python):
      	Update.
      	* python/py-utils.c (unicode_to_encoded_string)
      	(unicode_to_target_string, python_string_to_target_string)
      	(python_string_to_host_string, gdbpy_obj_to_string)
      	(gdbpy_exception_to_string): Return unique_xmalloc_ptr.
      	* python/py-unwind.c (pyuw_parse_register_id): Update.
      	* python/py-type.c (typy_getitem): Update.
      	* python/py-prettyprint.c (gdbpy_get_display_hint)
      	(print_stack_unless_memory_error, print_children)
      	(gdbpy_apply_val_pretty_printer): Update.
      	* python/py-param.c (set_parameter_value): Update.
      	(get_doc_string, call_doc_function): Return unique_xmalloc_ptr.
      	(get_set_value, get_show_value, compute_enum_values, parmpy_init):
      	Update.
      	* python/py-infthread.c (thpy_set_name): Update.
      	* python/py-function.c (fnpy_call, fnpy_init): Update.
      	* python/py-framefilter.c (extract_sym): Change "name" to
      	unique_xmalloc_ptr.
      	(enumerate_args, enumerate_locals): Update.
      	(py_print_frame): Use unique_xmalloc_ptr.
      	* python/py-frame.c (frapy_read_var): Update.  Remove cleanup.
      	* python/py-cmd.c (cmdpy_function, cmdpy_completer, cmdpy_init):
      	Update.
      	* python/py-breakpoint.c (bppy_set_condition): Use
      	unique_xmalloc_ptr.
      	(bppy_init): Likewise.  Remove cleanup.
      	(local_setattro): Update.
      	* mi/mi-cmd-var.c (print_varobj, mi_cmd_var_list_children)
      	(varobj_update_one): Update.
      9b972014
  17. Nov 08, 2016
    • Pedro Alves's avatar
      Use ui_file_as_string throughout more · 2f408ecb
      Pedro Alves authored
      This replaces most of the remaining ui_file_xstrdup calls with
      ui_file_as_string calls.  Whenever a call was replaced, that led to a
      cascade of other necessary adjustments throughout, to make the code
      use std::string instead of raw pointers.  And then whenever I added a
      std::string as member of a struct, I needed to adjust
      allocation/destruction of said struct to use new/delete instead of
      xmalloc/xfree.
      
      The stopping point was once gdb built again.  These doesn't seem to be
      a way to reasonably split this out further.
      
      Maybe-not-obvious changes:
      
       - demangle_for_lookup returns a cleanup today.  To get rid of that,
         and avoid unnecessary string dupping/copying, this introduces a
         demangle_result_storage type that the caller instantiates and
         passes to demangle_for_lookup.
      
       - Many methods returned a "char *" to indicate that the caller owns
         the memory and must free it.  Those are switched to return a
         std::string instead.  Methods that return a "view" into some
         internal string return a "const char *" instead.  I.e., we only
         copy/allocate when necessary.
      
      gdb/ChangeLog:
      2016-11-08  Pedro Alves  <palves@redhat.com>
      
      	* ada-lang.c (ada_name_for_lookup, type_as_string): Use and return
      	std::string.
      	(type_as_string_and_cleanup): Delete.
      	(ada_lookup_struct_elt_type): Use type_as_string.
      	* ada-lang.h (ada_name_for_lookup): Now returns std::string.
      	* ada-varobj.c (ada_varobj_scalar_image): Return a std::string.
      	(ada_varobj_describe_child): Make 'child_name' and
      	'child_path_expr' parameters std::string pointers.
      	(ada_varobj_describe_struct_child, ada_varobj_describe_ptr_child):
      	Likewise, and use string_printf.
      	(ada_varobj_describe_simple_array_child)
      	(ada_varobj_describe_child): Likewise.
      	(ada_varobj_get_name_of_child, ada_varobj_get_path_expr_of_child)
      	(ada_varobj_get_value_image)
      	(ada_varobj_get_value_of_array_variable)
      	(ada_varobj_get_value_of_variable, ada_name_of_variable)
      	(ada_name_of_child, ada_path_expr_of_child)
      	(ada_value_of_variable): Now returns std::string.  Use
      	string_printf.
      	(ada_value_of_child): Adjust.
      	* break-catch-throw.c (check_status_exception_catchpoint): Adjust
      	to use std::string.
      	* breakpoint.c (watch_command_1): Adjust to use std::string.
      	* c-lang.c (c_get_string): Adjust to use std::string.
      	* c-typeprint.c (print_name_maybe_canonical): Use std::string.
      	* c-varobj.c (varobj_is_anonymous_child): Use ==/!= std::string
      	operators.
      	(c_name_of_variable): Now returns a std::string.
      	(c_describe_child): The 'cname' and 'cfull_expression' output
      	parameters are now std::string pointers.  Adjust.
      	(c_name_of_child, c_path_expr_of_child, c_value_of_variable)
      	(cplus_number_of_children): Adjust to use std::string and
      	string_printf.
      	(cplus_name_of_variable): Now returns a std::string.
      	(cplus_describe_child): The 'cname' and 'cfull_expression' output
      	parameters are now std::string pointers.  Adjust.
      	(cplus_name_of_child, cplus_path_expr_of_child)
      	(cplus_value_of_variable): Now returns a std::string.
      	* cp-abi.c (cplus_typename_from_type_info): Return std::string.
      	* cp-abi.h (cplus_typename_from_type_info): Return std::string.
      	(struct cp_abi_ops) <get_typename_from_type_info>: Return
      	std::string.
      	* cp-support.c (inspect_type): Use std::string.
      	(cp_canonicalize_string_full, cp_canonicalize_string_no_typedefs)
      	(cp_canonicalize_string): Return std::string and adjust.
      	* cp-support.h (cp_canonicalize_string)
      	(cp_canonicalize_string_no_typedefs, cp_canonicalize_string_full):
      	Return std::string.
      	* dbxread.c (read_dbx_symtab): Use std::string.
      	* dwarf2read.c (dwarf2_canonicalize_name): Adjust to use std::string.
      	* gdbcmd.h (lookup_struct_elt_type): Adjust to use std::string.
      	* gnu-v3-abi.c (gnuv3_get_typeid): Use std::string.
      	(gnuv3_get_typename_from_type_info): Return a std::string and
      	adjust.
      	(gnuv3_get_type_from_type_info): Adjust to use std::string.
      	* guile/guile.c (gdbscm_execute_gdb_command): Adjust to use
      	std::string.
      	* infcmd.c (print_return_value_1): Adjust to use std::string.
      	* linespec.c (find_linespec_symbols): Adjust to
      	demangle_for_lookup API change.  Use std::string.
      	* mi/mi-cmd-var.c (print_varobj, mi_cmd_var_set_format)
      	(mi_cmd_var_info_type, mi_cmd_var_info_path_expression)
      	(mi_cmd_var_info_expression, mi_cmd_var_evaluate_expression)
      	(mi_cmd_var_assign, varobj_update_one): Adjust to use std::string.
      	* minsyms.c (lookup_minimal_symbol): Use std::string.
      	* python/py-varobj.c (py_varobj_iter_next): Use new instead of
      	XNEW.  vitem->name is a std::string now, adjust.
      	* rust-exp.y (convert_ast_to_type, convert_name): Adjust to use
      	std::string.
      	* stabsread.c (define_symbol): Adjust to use std::string.
      	* symtab.c (demangle_for_lookup): Now returns 'const char *'.  Add
      	a demangle_result_storage parameter.  Use it for storage.
      	(lookup_symbol_in_language)
      	(lookup_symbol_in_objfile_from_linkage_name): Adjust to new
      	demangle_for_lookup API.
      	* symtab.h (struct demangle_result_storage): New type.
      	(demangle_for_lookup): Now returns 'const char *'.  Add a
      	demangle_result_storage parameter.
      	* typeprint.c (type_to_string): Return std::string and use
      	ui_file_as_string.
      	* value.h (type_to_string): Change return type to std::string.
      	* varobj-iter.h (struct varobj_item) <name>: Now a std::string.
      	(varobj_iter_delete): Use delete instead of xfree.
      	* varobj.c (create_child): Return std::string instead of char * in
      	output parameter.
      	(name_of_variable, name_of_child, my_value_of_variable): Return
      	std::string instead of char *.
      	(varobj_create, varobj_get_handle): Constify 'objname' parameter.
      	Adjust to std::string fields.
      	(varobj_get_objname): Return a const char * instead of a char *.
      	(varobj_get_expression): Return a std::string.
      	(varobj_list_children): Adjust to use std::string.
      	(varobj_get_type): Return a std::string.
      	(varobj_get_path_expr): Return a const char * instead of a char *.
      	Adjust to std::string fields.
      	(varobj_get_formatted_value, varobj_get_value): Return a
      	std::string.
      	(varobj_set_value): Change type of 'expression' parameter to
      	std::string.  Use std::string.
      	(install_new_value): Use std::string.
      	(delete_variable_1): Adjust to use std::string.
      	(create_child): Change the 'name' parameter to a std::string
      	reference.  Swap it into the new item's name.
      	(create_child_with_value): Swap item's name into the new child's
      	name.  Use string_printf.
      	(new_variable): Use new instead of XNEW.
      	(free_variable): Don't xfree fields that are now std::string.
      	(name_of_variable, name_of_child): Now returns std::string.
      	(value_of_root): Adjust to use std::string.
      	(my_value_of_variable, varobj_value_get_print_value): Return
      	and use std::string.
      	(varobj_value_get_print_value): Adjust to use ui_file_as_string
      	and std::string.
      	* varobj.h (struct varobj) <name, path_expr, obj_name,
      	print_value>: Now std::string's.
      	<name_of_variable, name_of_child, path_expr_of_child,
      	value_of_variable>: Return std::string.
      	(varobj_create, varobj_get_handle): Constify 'objname' parameter.
      	(varobj_get_objname): Return a const char * instead of a char *.
      	(varobj_get_expression, varobj_get_type): Return a std::string.
      	(varobj_get_path_expr): Return a const char * instead of a char *.
      	(varobj_get_formatted_value, varobj_get_value): Return a
      	std::string.
      	(varobj_set_value): Constify 'expression' parameter.
      	(varobj_value_get_print_value): Return a std::string.
      2f408ecb
  18. May 08, 2016
    • Trevor Saunders's avatar
      remove trivialy unused variables · 870f88f7
      Trevor Saunders authored
      gdb/ChangeLog:
      
      2016-05-07  Trevor Saunders  <tbsaunde+binutils@tbsaunde.org>
      
      	* aarch64-linux-tdep.c (aarch64_linux_sigframe_init): Remove unused
      	variables.
      	* aarch64-tdep.c (aarch64_skip_prologue): Likewise.
      	(aarch64_scan_prologue): Likewise.
      	(aarch64_prologue_prev_register): Likewise.
      	(aarch64_dwarf2_prev_register): Likewise.
      	(pass_in_v): Likewise.
      	(aarch64_push_dummy_call): Likewise.
      	(aarch64_breakpoint_from_pc): Likewise.
      	(aarch64_return_in_memory): Likewise.
      	(aarch64_return_value): Likewise.
      	(aarch64_displaced_step_b_cond): Likewise.
      	(aarch64_displaced_step_cb): Likewise.
      	(aarch64_displaced_step_tb): Likewise.
      	(aarch64_gdbarch_init): Likewise.
      	(aarch64_process_record): Likewise.
      	* alpha-mdebug-tdep.c (alpha_mdebug_init_abi): Likewise.
      	* alpha-tdep.c (_initialize_alpha_tdep): Likewise.
      	* amd64-dicos-tdep.c (amd64_dicos_init_abi): Likewise.
      	* amd64-linux-tdep.c (amd64_dtrace_parse_probe_argument): Likewise.
      	* amd64-tdep.c (fixup_riprel): Likewise.
      	* amd64-windows-tdep.c (amd64_windows_frame_decode_epilogue): Likewise.
      	(amd64_windows_frame_decode_insns): Likewise.
      	(amd64_windows_frame_cache): Likewise.
      	(amd64_windows_frame_prev_register): Likewise.
      	(amd64_windows_frame_this_id): Likewise.
      	(amd64_windows_init_abi): Likewise.
      	* arm-linux-tdep.c (arm_linux_get_syscall_number): Likewise.
      	(arm_linux_get_next_pcs_syscall_next_pc): Likewise.
      	* arm-symbian-tdep.c (arm_symbian_init_abi): Likewise.
      	* arm-tdep.c (arm_make_epilogue_frame_cache): Likewise.
      	(arm_epilogue_frame_prev_register): Likewise.
      	(arm_record_vdata_transfer_insn): Likewise.
      	(arm_record_exreg_ld_st_insn): Likewise.
      	* auto-load.c (execute_script_contents): Likewise.
      	(print_scripts): Likewise.
      	* avr-tdep.c (avr_frame_prev_register): Likewise.
      	(avr_push_dummy_call): Likewise.
      	* bfin-linux-tdep.c (bfin_linux_sigframe_init): Likewise.
      	* bfin-tdep.c (bfin_gdbarch_init): Likewise.
      	* blockframe.c (find_pc_partial_function_gnu_ifunc): Likewise.
      	* break-catch-throw.c (fetch_probe_arguments): Likewise.
      	* breakpoint.c (breakpoint_xfer_memory): Likewise.
      	(breakpoint_init_inferior): Likewise.
      	(breakpoint_inserted_here_p): Likewise.
      	(software_breakpoint_inserted_here_p): Likewise.
      	(hardware_breakpoint_inserted_here_p): Likewise.
      	(bpstat_what): Likewise.
      	(break_range_command): Likewise.
      	(save_breakpoints): Likewise.
      	* coffread.c (coff_symfile_read): Likewise.
      	* cris-tdep.c (cris_push_dummy_call): Likewise.
      	(cris_scan_prologue): Likewise.
      	(cris_register_size): Likewise.
      	(_initialize_cris_tdep): Likewise.
      	* d-exp.y: Likewise.
      	* dbxread.c (dbx_read_symtab): Likewise.
      	(process_one_symbol): Likewise.
      	(coffstab_build_psymtabs): Likewise.
      	(elfstab_build_psymtabs): Likewise.
      	* dicos-tdep.c (dicos_init_abi): Likewise.
      	* disasm.c (do_mixed_source_and_assembly): Likewise.
      	(gdb_disassembly): Likewise.
      	* dtrace-probe.c (dtrace_process_dof): Likewise.
      	* dwarf2read.c (error_check_comp_unit_head): Likewise.
      	(build_type_psymtabs_1): Likewise.
      	(skip_one_die): Likewise.
      	(process_imported_unit_die): Likewise.
      	(dwarf2_physname): Likewise.
      	(read_file_scope): Likewise.
      	(setup_type_unit_groups): Likewise.
      	(create_dwo_cu_reader): Likewise.
      	(create_dwo_cu): Likewise.
      	(create_dwo_unit_in_dwp_v1): Likewise.
      	(create_dwo_unit_in_dwp_v2): Likewise.
      	(lookup_dwo_unit_in_dwp): Likewise.
      	(free_dwo_file): Likewise.
      	(check_producer): Likewise.
      	(dwarf2_add_typedef): Likewise.
      	(dwarf2_add_member_fn): Likewise.
      	(read_unsigned_leb128): Likewise.
      	(read_signed_leb128): Likewise.
      	(dwarf2_const_value): Likewise.
      	(follow_die_sig_1): Likewise.
      	(dwarf_decode_macro_bytes): Likewise.
      	* extension.c (restore_active_ext_lang): Likewise.
      	* frv-linux-tdep.c (frv_linux_sigtramp_frame_cache): Likewise.
      	* ft32-tdep.c (ft32_analyze_prologue): Likewise.
      	* gdbtypes.c (lookup_typename): Likewise.
      	(resolve_dynamic_range): Likewise.
      	(check_typedef): Likewise.
      	* h8300-tdep.c (h8300_is_argument_spill): Likewise.
      	(h8300_gdbarch_init): Likewise.
      	* hppa-tdep.c (hppa32_push_dummy_call): Likewise.
      	(hppa_frame_this_id): Likewise.
      	(_initialize_hppa_tdep): Likewise.
      	* hppanbsd-tdep.c (hppanbsd_sigtramp_cache_init): Likewise.
      	* hppaobsd-tdep.c (hppaobsd_supply_fpregset): Likewise.
      	* i386-dicos-tdep.c (i386_dicos_init_abi): Likewise.
      	* i386-tdep.c (i386_bnd_type): Likewise.
      	(i386_gdbarch_init): Likewise.
      	(i386_mpx_bd_base): Likewise.
      	* i386nbsd-tdep.c (i386nbsd_sigtramp_cache_init): Likewise.
      	* i386obsd-tdep.c (i386obsd_elf_init_abi): Likewise.
      	* ia64-tdep.c (examine_prologue): Likewise.
      	(ia64_frame_cache): Likewise.
      	(ia64_push_dummy_call): Likewise.
      	* infcmd.c (finish_command_fsm_async_reply_reason): Likewise.
      	(default_print_one_register_info): Likewise.
      	* infrun.c (infrun_thread_ptid_changed): Likewise.
      	(thread_still_needs_step_over): Likewise.
      	(stop_all_threads): Likewise.
      	(restart_threads): Likewise.
      	(keep_going_stepped_thread): Likewise.
      	* iq2000-tdep.c (iq2000_scan_prologue): Likewise.
      	* language.c (language_init_primitive_type_symbols): Likewise.
      	* linespec.c (add_sal_to_sals): Likewise.
      	* linux-nat.c (status_callback): Likewise.
      	(kill_unfollowed_fork_children): Likewise.
      	(linux_nat_kill): Likewise.
      	* linux-tdep.c (linux_fill_prpsinfo): Likewise.
      	* linux-thread-db.c (thread_db_notice_clone): Likewise.
      	(record_thread): Likewise.
      	* location.c (string_to_event_location_basic): Likewise.
      	* m32c-tdep.c (m32c_prev_register): Likewise.
      	* m32r-linux-tdep.c (m32r_linux_init_abi): Likewise.
      	* m32r-tdep.c (decode_prologue): Likewise.
      	* m68klinux-tdep.c (m68k_linux_sigtramp_frame_cache): Likewise.
      	* machoread.c (macho_symtab_read): Likewise.
      	(macho_symfile_read): Likewise.
      	(macho_symfile_offsets): Likewise.
      	* maint.c (set_per_command_cmd): Likewise.
      	* mi/mi-cmd-stack.c (mi_cmd_stack_list_locals): Likewise.
      	(mi_cmd_stack_list_variables): Likewise.
      	* mi/mi-main.c (mi_cmd_exec_run): Likewise.
      	(output_register): Likewise.
      	(mi_cmd_execute): Likewise.
      	(mi_cmd_trace_define_variable): Likewise.
      	(print_variable_or_computed): Likewise.
      	* minsyms.c (prim_record_minimal_symbol_full): Likewise.
      	* mn10300-tdep.c (mn10300_frame_prev_register): Likewise.
      	* msp430-tdep.c (msp430_pseudo_register_write): Likewise.
      	* mt-tdep.c (mt_registers_info): Likewise.
      	* nios2-tdep.c (nios2_analyze_prologue): Likewise.
      	(nios2_push_dummy_call): Likewise.
      	(nios2_frame_unwind_cache): Likewise.
      	(nios2_stub_frame_cache): Likewise.
      	(nios2_stub_frame_sniffer): Likewise.
      	(nios2_gdbarch_init): Likewise.
      	* ppc-ravenscar-thread.c: Likewise.
      	* ppcfbsd-tdep.c (ppcfbsd_sigtramp_frame_cache): Likewise.
      	* python/py-evts.c (add_new_registry): Likewise.
      	* python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
      	(bpfinishpy_detect_out_scope_cb): Likewise.
      	* python/py-framefilter.c (py_print_value): Likewise.
      	* python/py-inferior.c (infpy_write_memory): Likewise.
      	* python/py-infevents.c (create_inferior_call_event_object): Likewise.
      	* python/py-infthread.c (thpy_get_ptid): Likewise.
      	* python/py-linetable.c (ltpy_get_pcs_for_line): Likewise.
      	(ltpy_get_all_source_lines): Likewise.
      	(ltpy_is_valid): Likewise.
      	(ltpy_iternext): Likewise.
      	* python/py-symtab.c (symtab_and_line_to_sal_object): Likewise.
      	* python/py-unwind.c (pyuw_object_attribute_to_pointer): Likewise.
      	(unwind_infopy_str): Likewise.
      	* python/py-varobj.c (py_varobj_get_iterator): Likewise.
      	* ravenscar-thread.c (ravenscar_inferior_created): Likewise.
      	* rs6000-aix-tdep.c (rs6000_push_dummy_call): Likewise.
      	* rs6000-lynx178-tdep.c (rs6000_lynx178_push_dummy_call): Likewise.
      	* rs6000-tdep.c (ppc_deal_with_atomic_sequence): Likewise.
      	* s390-linux-tdep.c (s390_supply_tdb_regset): Likewise.
      	(s390_frame_prev_register): Likewise.
      	(s390_dwarf2_frame_init_reg): Likewise.
      	(s390_record_vr): Likewise.
      	(s390_process_record): Likewise.
      	* score-tdep.c (score_push_dummy_call): Likewise.
      	(score3_analyze_prologue): Likewise.
      	* sh-tdep.c (sh_extract_return_value_nofpu): Likewise.
      	* sh64-tdep.c (sh64_analyze_prologue): Likewise.
      	(sh64_push_dummy_call): Likewise.
      	(sh64_extract_return_value): Likewise.
      	(sh64_do_fp_register): Likewise.
      	* solib-aix.c (solib_aix_get_section_offsets): Likewise.
      	* solib-darwin.c (darwin_read_exec_load_addr_from_dyld): Likewise.
      	(darwin_solib_read_all_image_info_addr): Likewise.
      	* solib-dsbt.c (enable_break): Likewise.
      	* solib-frv.c (enable_break2): Likewise.
      	(frv_fdpic_find_canonical_descriptor): Likewise.
      	* solib-svr4.c (svr4_handle_solib_event): Likewise.
      	* sparc-tdep.c (sparc_skip_stack_check): Likewise.
      	* sparc64-linux-tdep.c (sparc64_linux_get_longjmp_target): Likewise.
      	* sparcobsd-tdep.c (sparc32obsd_init_abi): Likewise.
      	* spu-tdep.c (info_spu_dma_cmdlist): Likewise.
      	* stack.c (read_frame_local): Likewise.
      	* symfile.c (symbol_file_add_separate): Likewise.
      	(remove_symbol_file_command): Likewise.
      	* symmisc.c (maintenance_print_one_line_table): Likewise.
      	* symtab.c (symbol_cache_flush): Likewise.
      	(basic_lookup_transparent_type): Likewise.
      	(sort_search_symbols_remove_dups): Likewise.
      	* target.c (target_memory_map): Likewise.
      	(target_detach): Likewise.
      	(target_resume): Likewise.
      	(acquire_fileio_fd): Likewise.
      	(target_store_registers): Likewise.
      	* thread.c (print_thread_info_1): Likewise.
      	* tic6x-tdep.c (tic6x_analyze_prologue): Likewise.
      	* tilegx-linux-tdep.c (tilegx_linux_sigframe_init): Likewise.
      	* tilegx-tdep.c (tilegx_push_dummy_call): Likewise.
      	(tilegx_analyze_prologue): Likewise.
      	(tilegx_stack_frame_destroyed_p): Likewise.
      	(tilegx_frame_cache): Likewise.
      	* tracefile.c (trace_save): Likewise.
      	* tracepoint.c (encode_actions_and_make_cleanup): Likewise.
      	(start_tracing): Likewise.
      	(print_one_static_tracepoint_marker): Likewise.
      	* tui/tui.c (tui_enable): Likewise.
      	* valops.c (value_struct_elt_bitpos): Likewise.
      	(find_overload_match): Likewise.
      	(find_oload_champ): Likewise.
      	* value.c (value_contents_copy_raw): Likewise.
      	* windows-tdep.c (windows_get_tlb_type): Likewise.
      	* x86-linux-nat.c (x86_linux_enable_btrace): Likewise.
      	* xcoffread.c (record_minimal_symbol): Likewise.
      	(scan_xcoff_symtab): Likewise.
      	* xtensa-tdep.c (execute_code): Likewise.
      	(xtensa_gdbarch_init): Likewise.
      	(_initialize_xtensa_tdep): Likewise.
      870f88f7
  19. Jan 01, 2016
  20. Aug 26, 2015
    • Simon Marchi's avatar
      Replace some xmalloc-family functions with XNEW-family ones · 8d749320
      Simon Marchi authored
      This patch is part of the make-gdb-buildable-in-C++ effort.  The idea is
      to change some calls to the xmalloc family of functions to calls to the
      equivalents in the XNEW family.  This avoids adding an explicit cast, so
      it keeps the code a bit more readable.  Some of them also map relatively
      well to a C++ equivalent (XNEW (struct foo) -> new foo), so it will be
      possible to do scripted replacements if needed.
      
      I only changed calls that were obviously allocating memory for one or
      multiple "objects".  Allocation of variable sizes (such as strings or
      buffer handling) will be for later (and won't use XNEW).
      
        - xmalloc (sizeof (struct foo)) -> XNEW (struct foo)
        - xmalloc (num * sizeof (struct foo)) -> XNEWVEC (struct foo, num)
        - xcalloc (1, sizeof (struct foo)) -> XCNEW (struct foo)
        - xcalloc (num, sizeof (struct foo)) -> XCNEWVEC (struct foo, num)
        - xrealloc (p, num * sizeof (struct foo) -> XRESIZEVEC (struct foo, p, num)
        - obstack_alloc (ob, sizeof (struct foo)) -> XOBNEW (ob, struct foo)
        - obstack_alloc (ob, num * sizeof (struct foo)) -> XOBNEWVEC (ob, struct foo, num)
        - alloca (sizeof (struct foo)) -> XALLOCA (struct foo)
        - alloca (num * sizeof (struct foo)) -> XALLOCAVEC (struct foo, num)
      
      Some instances of xmalloc followed by memset to zero the buffer were
      replaced by XCNEW or XCNEWVEC.
      
      I regtested on x86-64, Ubuntu 14.04, but the patch touches many
      architecture-specific files.  For those I'll have to rely on the
      buildbot or people complaining that I broke their gdb.
      
      gdb/ChangeLog:
      
      	* aarch64-linux-nat.c (aarch64_add_process): Likewise.
      	* aarch64-tdep.c (aarch64_gdbarch_init): Likewise.
      	* ada-exp.y (write_ambiguous_var): Likewise.
      	* ada-lang.c (resolve_subexp): Likewise.
      	(user_select_syms): Likewise.
      	(assign_aggregate): Likewise.
      	(ada_evaluate_subexp): Likewise.
      	(cache_symbol): Likewise.
      	* addrmap.c (allocate_key): Likewise.
      	(addrmap_create_mutable): Likewise.
      	* aix-thread.c (sync_threadlists): Likewise.
      	* alpha-tdep.c (alpha_push_dummy_call): Likewise.
      	(alpha_gdbarch_init): Likewise.
      	* amd64-windows-tdep.c (amd64_windows_push_arguments): Likewise.
      	* arm-linux-nat.c (arm_linux_add_process): Likewise.
      	* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Likewise.
      	* arm-tdep.c (push_stack_item): Likewise.
      	(arm_displaced_step_copy_insn): Likewise.
      	(arm_gdbarch_init): Likewise.
      	(_initialize_arm_tdep): Likewise.
      	* avr-tdep.c (push_stack_item): Likewise.
      	* ax-general.c (new_agent_expr): Likewise.
      	* block.c (block_initialize_namespace): Likewise.
      	* breakpoint.c (alloc_counted_command_line): Likewise.
      	(update_dprintf_command_list): Likewise.
      	(parse_breakpoint_sals): Likewise.
      	(decode_static_tracepoint_spec): Likewise.
      	(until_break_command): Likewise.
      	(clear_command): Likewise.
      	(update_global_location_list): Likewise.
      	(get_breakpoint_objfile_data) Likewise.
      	* btrace.c (ftrace_new_function): Likewise.
      	(btrace_set_insn_history): Likewise.
      	(btrace_set_call_history): Likewise.
      	* buildsym.c (add_symbol_to_list): Likewise.
      	(record_pending_block): Likewise.
      	(start_subfile): Likewise.
      	(start_buildsym_compunit): Likewise.
      	(push_subfile): Likewise.
      	(end_symtab_get_static_block): Likewise.
      	(buildsym_init): Likewise.
      	* cli/cli-cmds.c (source_command): Likewise.
      	* cli/cli-decode.c (add_cmd): Likewise.
      	* cli/cli-script.c (build_command_line): Likewise.
      	(setup_user_args): Likewise.
      	(realloc_body_list): Likewise.
      	(process_next_line): Likewise.
      	(copy_command_lines): Likewise.
      	* cli/cli-setshow.c (do_set_command): Likewise.
      	* coff-pe-read.c (read_pe_exported_syms): Likewise.
      	* coffread.c (coff_locate_sections): Likewise.
      	(coff_symtab_read): Likewise.
      	(coff_read_struct_type): Likewise.
      	* common/cleanups.c (make_my_cleanup2): Likewise.
      	* common/common-exceptions.c (throw_it): Likewise.
      	* common/filestuff.c (make_cleanup_close): Likewise.
      	* common/format.c (parse_format_string): Likewise.
      	* common/queue.h (DEFINE_QUEUE_P): Likewise.
      	* compile/compile-object-load.c (munmap_list_add): Likewise.
      	(compile_object_load): Likewise.
      	* compile/compile-object-run.c (compile_object_run): Likewise.
      	* compile/compile.c (append_args): Likewise.
      	* corefile.c (specify_exec_file_hook): Likewise.
      	* cp-support.c (make_symbol_overload_list): Likewise.
      	* cris-tdep.c (push_stack_item): Likewise.
      	(cris_gdbarch_init): Likewise.
      	* ctf.c (ctf_trace_file_writer_new): Likewise.
      	* dbxread.c (init_header_files): Likewise.
      	(add_new_header_file): Likewise.
      	(init_bincl_list): Likewise.
      	(dbx_end_psymtab): Likewise.
      	(start_psymtab): Likewise.
      	(dbx_end_psymtab): Likewise.
      	* dcache.c (dcache_init): Likewise.
      	* dictionary.c (dict_create_hashed): Likewise.
      	(dict_create_hashed_expandable): Likewise.
      	(dict_create_linear): Likewise.
      	(dict_create_linear_expandable): Likewise.
      	* dtrace-probe.c (dtrace_process_dof_probe): Likewise.
      	* dummy-frame.c (register_dummy_frame_dtor): Likewise.
      	* dwarf2-frame-tailcall.c (cache_new_ref1): Likewise.
      	* dwarf2-frame.c (dwarf2_build_frame_info): Likewise.
      	(decode_frame_entry_1): Likewise.
      	* dwarf2expr.c (new_dwarf_expr_context): Likewise.
      	* dwarf2loc.c (dwarf2_compile_expr_to_ax): Likewise.
      	* dwarf2read.c (dwarf2_has_info): Likewise.
      	(create_signatured_type_table_from_index): Likewise.
      	(dwarf2_read_index): Likewise.
      	(dw2_get_file_names_reader): Likewise.
      	(create_all_type_units): Likewise.
      	(read_cutu_die_from_dwo): Likewise.
      	(init_tu_and_read_dwo_dies): Likewise.
      	(init_cutu_and_read_dies): Likewise.
      	(create_all_comp_units): Likewise.
      	(queue_comp_unit): Likewise.
      	(inherit_abstract_dies): Likewise.
      	(read_call_site_scope): Likewise.
      	(dwarf2_add_field): Likewise.
      	(dwarf2_add_typedef): Likewise.
      	(dwarf2_add_member_fn): Likewise.
      	(attr_to_dynamic_prop): Likewise.
      	(abbrev_table_alloc_abbrev): Likewise.
      	(abbrev_table_read_table): Likewise.
      	(add_include_dir): Likewise.
      	(add_file_name): Likewise.
      	(dwarf_decode_line_header): Likewise.
      	(dwarf2_const_value_attr): Likewise.
      	(dwarf_alloc_block): Likewise.
      	(parse_macro_definition): Likewise.
      	(set_die_type): Likewise.
      	(write_psymtabs_to_index): Likewise.
      	(create_cus_from_index): Likewise.
      	(dwarf2_create_include_psymtab): Likewise.
      	(process_psymtab_comp_unit_reader): Likewise.
      	(build_type_psymtab_dependencies): Likewise.
      	(read_comp_units_from_section): Likewise.
      	(compute_compunit_symtab_includes): Likewise.
      	(create_dwo_unit_in_dwp_v1): Likewise.
      	(create_dwo_unit_in_dwp_v2): Likewise.
      	(read_func_scope): Likewise.
      	(process_structure_scope): Likewise.
      	(mark_common_block_symbol_computed): Likewise.
      	(load_partial_dies): Likewise.
      	(dwarf2_symbol_mark_computed): Likewise.
      	* elfread.c (elf_symfile_segments): Likewise.
      	(elf_read_minimal_symbols): Likewise.
      	* environ.c (make_environ): Likewise.
      	* eval.c (evaluate_subexp_standard): Likewise.
      	* event-loop.c (create_file_handler): Likewise.
      	(create_async_signal_handler): Likewise.
      	(create_async_event_handler): Likewise.
      	(create_timer): Likewise.
      	* exec.c (build_section_table): Likewise.
      	* fbsd-nat.c (fbsd_remember_child): Likewise.
      	* fork-child.c (fork_inferior): Likewise.
      	* frv-tdep.c (new_variant): Likewise.
      	* gdbarch.sh (gdbarch_alloc): Likewise.
      	(append_name): Likewise.
      	* gdbtypes.c (rank_function): Likewise.
      	(copy_type_recursive): Likewise.
      	(add_dyn_prop): Likewise.
      	* gnu-nat.c (make_proc): Likewise.
      	(make_inf): Likewise.
      	(gnu_write_inferior): Likewise.
      	* gnu-v3-abi.c (build_gdb_vtable_type): Likewise.
      	(build_std_type_info_type): Likewise.
      	* guile/scm-param.c (compute_enum_list): Likewise.
      	* guile/scm-utils.c (gdbscm_parse_function_args): Likewise.
      	* guile/scm-value.c (gdbscm_value_call): Likewise.
      	* h8300-tdep.c (h8300_gdbarch_init): Likewise.
      	* hppa-tdep.c (hppa_init_objfile_priv_data): Likewise.
      	(read_unwind_info): Likewise.
      	* ia64-tdep.c (ia64_gdbarch_init): Likewise.
      	* infcall.c (dummy_frame_context_saver_setup): Likewise.
      	(call_function_by_hand_dummy): Likewise.
      	* infcmd.c (step_once): Likewise.
      	(finish_forward): Likewise.
      	(attach_command): Likewise.
      	(notice_new_inferior): Likewise.
      	* inferior.c (add_inferior_silent): Likewise.
      	* infrun.c (add_displaced_stepping_state): Likewise.
      	(save_infcall_control_state): Likewise.
      	(save_inferior_ptid): Likewise.
      	(_initialize_infrun): Likewise.
      	* jit.c (bfd_open_from_target_memory): Likewise.
      	(jit_gdbarch_data_init): Likewise.
      	* language.c (add_language): Likewise.
      	* linespec.c (decode_line_2): Likewise.
      	* linux-nat.c (add_to_pid_list): Likewise.
      	(add_initial_lwp): Likewise.
      	* linux-thread-db.c (add_thread_db_info): Likewise.
      	(record_thread): Likewise.
      	(info_auto_load_libthread_db): Likewise.
      	* m32c-tdep.c (m32c_gdbarch_init): Likewise.
      	* m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise.
      	* m68k-tdep.c (m68k_gdbarch_init): Likewise.
      	* m88k-tdep.c (m88k_analyze_prologue): Likewise.
      	* macrocmd.c (macro_define_command): Likewise.
      	* macroexp.c (gather_arguments): Likewise.
      	* macroscope.c (sal_macro_scope): Likewise.
      	* macrotab.c (new_macro_table): Likewise.
      	* mdebugread.c (push_parse_stack): Likewise.
      	(parse_partial_symbols): Likewise.
      	(parse_symbol): Likewise.
      	(psymtab_to_symtab_1): Likewise.
      	(new_block): Likewise.
      	(new_psymtab): Likewise.
      	(mdebug_build_psymtabs): Likewise.
      	(add_pending): Likewise.
      	(elfmdebug_build_psymtabs): Likewise.
      	* mep-tdep.c (mep_gdbarch_init): Likewise.
      	* mi/mi-main.c (mi_execute_command): Likewise.
      	* mi/mi-parse.c (mi_parse_argv): Likewise.
      	* minidebug.c (lzma_open): Likewise.
      	* minsyms.c (terminate_minimal_symbol_table): Likewise.
      	* mips-linux-nat.c (mips_linux_insert_watchpoint): Likewise.
      	* mips-tdep.c (mips_gdbarch_init): Likewise.
      	* mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
      	* msp430-tdep.c (msp430_gdbarch_init): Likewise.
      	* mt-tdep.c (mt_registers_info): Likewise.
      	* nat/aarch64-linux.c (aarch64_linux_new_thread): Likewise.
      	* nat/linux-btrace.c (linux_enable_bts): Likewise.
      	(linux_enable_pt): Likewise.
      	* nat/linux-osdata.c (linux_xfer_osdata_processes): Likewise.
      	(linux_xfer_osdata_processgroups): Likewise.
      	* nios2-tdep.c (nios2_gdbarch_init): Likewise.
      	* nto-procfs.c (procfs_meminfo): Likewise.
      	* objc-lang.c (start_msglist): Likewise.
      	(selectors_info): Likewise.
      	(classes_info): Likewise.
      	(find_methods): Likewise.
      	* objfiles.c (allocate_objfile): Likewise.
      	(update_section_map): Likewise.
      	* osabi.c (gdbarch_register_osabi): Likewise.
      	(gdbarch_register_osabi_sniffer): Likewise.
      	* parse.c (start_arglist): Likewise.
      	* ppc-linux-nat.c (hwdebug_find_thread_points_by_tid): Likewise.
      	(hwdebug_insert_point): Likewise.
      	* printcmd.c (display_command): Likewise.
      	(ui_printf): Likewise.
      	* procfs.c (create_procinfo): Likewise.
      	(load_syscalls): Likewise.
      	(proc_get_LDT_entry): Likewise.
      	(proc_update_threads): Likewise.
      	* prologue-value.c (make_pv_area): Likewise.
      	(pv_area_store): Likewise.
      	* psymtab.c (extend_psymbol_list): Likewise.
      	(init_psymbol_list): Likewise.
      	(allocate_psymtab): Likewise.
      	* python/py-inferior.c (add_thread_object): Likewise.
      	* python/py-param.c (compute_enum_values): Likewise.
      	* python/py-value.c (valpy_call): Likewise.
      	* python/py-varobj.c (py_varobj_iter_next): Likewise.
      	* python/python.c (ensure_python_env): Likewise.
      	* record-btrace.c (record_btrace_start_replaying): Likewise.
      	* record-full.c (record_full_reg_alloc): Likewise.
      	(record_full_mem_alloc): Likewise.
      	(record_full_end_alloc): Likewise.
      	(record_full_core_xfer_partial): Likewise.
      	* regcache.c (get_thread_arch_aspace_regcache): Likewise.
      	* remote-fileio.c (remote_fileio_init_fd_map): Likewise.
      	* remote-notif.c (remote_notif_state_allocate): Likewise.
      	* remote.c (demand_private_info): Likewise.
      	(remote_notif_stop_alloc_reply): Likewise.
      	(remote_enable_btrace): Likewise.
      	* reverse.c (save_bookmark_command): Likewise.
      	* rl78-tdep.c (rl78_gdbarch_init): Likewise.
      	* rx-tdep.c (rx_gdbarch_init): Likewise.
      	* s390-linux-nat.c (s390_insert_watchpoint): Likewise.
      	* ser-go32.c (dos_get_tty_state): Likewise.
      	(dos_copy_tty_state): Likewise.
      	* ser-mingw.c (ser_windows_open): Likewise.
      	(ser_console_wait_handle): Likewise.
      	(ser_console_get_tty_state): Likewise.
      	(make_pipe_state): Likewise.
      	(net_windows_open): Likewise.
      	* ser-unix.c (hardwire_get_tty_state): Likewise.
      	(hardwire_copy_tty_state): Likewise.
      	* solib-aix.c (solib_aix_new_lm_info): Likewise.
      	* solib-dsbt.c (dsbt_current_sos): Likewise.
      	(dsbt_relocate_main_executable): Likewise.
      	* solib-frv.c (frv_current_sos): Likewise.
      	(frv_relocate_main_executable): Likewise.
      	* solib-spu.c (spu_bfd_fopen): Likewise.
      	* solib-svr4.c (lm_info_read): Likewise.
      	(svr4_copy_library_list): Likewise.
      	(svr4_default_sos): Likewise.
      	* source.c (find_source_lines): Likewise.
      	(line_info): Likewise.
      	(add_substitute_path_rule): Likewise.
      	* spu-linux-nat.c (spu_bfd_open): Likewise.
      	* spu-tdep.c (info_spu_dma_cmdlist): Likewise.
      	* stabsread.c (dbx_lookup_type): Likewise.
      	(read_type): Likewise.
      	(read_member_functions): Likewise.
      	(read_struct_fields): Likewise.
      	(read_baseclasses): Likewise.
      	(read_args): Likewise.
      	(_initialize_stabsread): Likewise.
      	* stack.c (func_command): Likewise.
      	* stap-probe.c (handle_stap_probe): Likewise.
      	* symfile.c (addrs_section_sort): Likewise.
      	(addr_info_make_relative): Likewise.
      	(load_section_callback): Likewise.
      	(add_symbol_file_command): Likewise.
      	(init_filename_language_table): Likewise.
      	* symtab.c (create_filename_seen_cache): Likewise.
      	(sort_search_symbols_remove_dups): Likewise.
      	(search_symbols): Likewise.
      	* target.c (make_cleanup_restore_target_terminal): Likewise.
      	* thread.c (new_thread): Likewise.
      	(enable_thread_stack_temporaries): Likewise.
      	(make_cleanup_restore_current_thread): Likewise.
      	(thread_apply_all_command): Likewise.
      	* tic6x-tdep.c (tic6x_gdbarch_init): Likewise.
      	* top.c (gdb_readline_wrapper): Likewise.
      	* tracefile-tfile.c (tfile_trace_file_writer_new): Likewise.
      	* tracepoint.c (trace_find_line_command): Likewise.
      	(all_tracepoint_actions_and_cleanup): Likewise.
      	(make_cleanup_restore_current_traceframe): Likewise.
      	(get_uploaded_tp): Likewise.
      	(get_uploaded_tsv): Likewise.
      	* tui/tui-data.c (tui_alloc_generic_win_info): Likewise.
      	(tui_alloc_win_info): Likewise.
      	(tui_alloc_content): Likewise.
      	(tui_add_content_elements): Likewise.
      	* tui/tui-disasm.c (tui_find_disassembly_address): Likewise.
      	(tui_set_disassem_content): Likewise.
      	* ui-file.c (ui_file_new): Likewise.
      	(stdio_file_new): Likewise.
      	(tee_file_new): Likewise.
      	* utils.c (make_cleanup_restore_integer): Likewise.
      	(add_internal_problem_command): Likewise.
      	* v850-tdep.c (v850_gdbarch_init): Likewise.
      	* valops.c (find_oload_champ): Likewise.
      	* value.c (allocate_value_lazy): Likewise.
      	(record_latest_value): Likewise.
      	(create_internalvar): Likewise.
      	* varobj.c (install_variable): Likewise.
      	(new_variable): Likewise.
      	(new_root_variable): Likewise.
      	(cppush): Likewise.
      	(_initialize_varobj): Likewise.
      	* windows-nat.c (windows_make_so): Likewise.
      	* x86-nat.c (x86_add_process): Likewise.
      	* xcoffread.c (arrange_linetable): Likewise.
      	(allocate_include_entry): Likewise.
      	(process_linenos): Likewise.
      	(SYMBOL_DUP): Likewise.
      	(xcoff_start_psymtab): Likewise.
      	(xcoff_end_psymtab): Likewise.
      	* xml-support.c (gdb_xml_parse_attr_ulongest): Likewise.
      	* xtensa-tdep.c (xtensa_register_type): Likewise.
      	* gdbarch.c: Regenerate.
      	* gdbarch.h: Regenerate.
      
      gdb/gdbserver/ChangeLog:
      
      	* ax.c (gdb_parse_agent_expr): Likewise.
      	(compile_bytecodes): Likewise.
      	* dll.c (loaded_dll): Likewise.
      	* event-loop.c (append_callback_event): Likewise.
      	(create_file_handler): Likewise.
      	(create_file_event): Likewise.
      	* hostio.c (handle_open): Likewise.
      	* inferiors.c (add_thread): Likewise.
      	(add_process): Likewise.
      	* linux-aarch64-low.c (aarch64_linux_new_process): Likewise.
      	* linux-arm-low.c (arm_new_process): Likewise.
      	(arm_new_thread): Likewise.
      	* linux-low.c (add_to_pid_list): Likewise.
      	(linux_add_process): Likewise.
      	(handle_extended_wait): Likewise.
      	(add_lwp): Likewise.
      	(enqueue_one_deferred_signal): Likewise.
      	(enqueue_pending_signal): Likewise.
      	(linux_resume_one_lwp_throw): Likewise.
      	(linux_resume_one_thread): Likewise.
      	(linux_read_memory): Likewise.
      	(linux_write_memory): Likewise.
      	* linux-mips-low.c (mips_linux_new_process): Likewise.
      	(mips_linux_new_thread): Likewise.
      	(mips_add_watchpoint): Likewise.
      	* linux-x86-low.c (initialize_low_arch): Likewise.
      	* lynx-low.c (lynx_add_process): Likewise.
      	* mem-break.c (set_raw_breakpoint_at): Likewise.
      	(set_breakpoint): Likewise.
      	(add_condition_to_breakpoint): Likewise.
      	(add_commands_to_breakpoint): Likewise.
      	(clone_agent_expr): Likewise.
      	(clone_one_breakpoint): Likewise.
      	* regcache.c (new_register_cache): Likewise.
      	* remote-utils.c (look_up_one_symbol): Likewise.
      	* server.c (queue_stop_reply): Likewise.
      	(start_inferior): Likewise.
      	(queue_stop_reply_callback): Likewise.
      	(handle_target_event): Likewise.
      	* spu-low.c (fetch_ppc_memory): Likewise.
      	(store_ppc_memory): Likewise.
      	* target.c (set_target_ops): Likewise.
      	* thread-db.c (thread_db_load_search): Likewise.
      	(try_thread_db_load_1): Likewise.
      	* tracepoint.c (add_tracepoint): Likewise.
      	(add_tracepoint_action): Likewise.
      	(create_trace_state_variable): Likewise.
      	(cmd_qtdpsrc): Likewise.
      	(cmd_qtro): Likewise.
      	(add_while_stepping_state): Likewise.
      	* win32-low.c (child_add_thread): Likewise.
      	(get_image_name): Likewise.
      8d749320
  21. Jan 01, 2015
  22. Jun 12, 2014
    • Yao Qi's avatar
      Iterate over 'struct varobj_item' instead of PyObject · 827f100c
      Yao Qi authored
      In previous patch, "saved_item" is still a PyOjbect and iteration is
      still performed over PyObject.  This patch continues to decouple
      iteration from python code, so it changes its type to "struct
      varobj_item *", so that the iterator itself is independent of python.
      
       V2:
       - Call varobj_delete_iter in free_variable.
       - Fix changelog entries.
       - Use XNEW.
      
       V3:
       - Return NULL early in py_varobj_iter_next if gdb_python_initialized
         is false.
      
      gdb:
      
      2014-06-12  Pedro Alves  <pedro@codesourcery.com>
      	    Yao Qi  <yao@codesourcery.com>
      
      	* python/py-varobj.c (py_varobj_iter_next): Return NULL if
      	gdb_python_initialized is false.  Move some code from varobj.c.
      	* varobj-iter.h (struct varobj_item): Moved from varobj.c.
      	* varobj.c: Move "varobj-iter.h" inclusion earlier.
      	(struct varobj_item): Moved to varobj-iter.h".
      	(varobj_clear_saved_item): New function.
      	(update_dynamic_varobj_children): Move python-related code to
      	py-varobj.c.
      	(free_variable): Call varobj_clear_saved_item and
      	varobj_iter_delete.
      827f100c
    • Yao Qi's avatar
      Generalize varobj iterator · e5250216
      Yao Qi authored
      This patch generalizes varobj iterator, in a python-independent way.
      Note varobj_item is still a typedef of PyObject, we can only focus on
      API changes, and leave the data type changes to the next patch.  As a
      result, we include "varobj-iter.h" after the typedef of PyObject in
      varobj.c, but it is an intermediate state.  Finally, varobj-iter.h is
      independent of PyObject.
      
      This change is helpful to move some python-related code out of
      varobj.c.
      
       V2:
        - Fix a missing cleanup.
        - Fix typos.
        - Use XNEW.
        - Check against NULL explicitly.
        - Update copyright year for new added files.
      
       V3:
        - Call PyGILState_Ensure before Py_XDECREF.
        - Use CPYCHECKER_STEALS_REFERENCE_TO_ARG.
        - Code indentation.
      
       V4:
        - use varobj_ensure_python_env instead of PyGILState_Ensure.
      
      gdb:
      
      2014-06-12  Pedro Alves  <pedro@codesourcery.com>
      	    Yao Qi  <yao@codesourcery.com>
      
      	* Makefile.in (SUBDIR_PYTHON_OBS): Add "py-varobj.o".
      	(SUBDIR_PYTHON_SRCS): Add "python/py-varobj.c".
      	(HFILES_NO_SRCDIR): Add "varobj-iter.h".
      	(py-varobj.o): New rule.
      	* python/py-varobj.c: New file.
      	* python/python-internal.h (py_varobj_get_iterator): Declare.
      	* varobj-iter.h: New file.
      	* varobj.c: Include "varobj-iter.h"
      	(struct varobj) <child_iter>: Change its type from "PyObject *"
      	to "struct varobj_iter *".
      	<saved_item>: Likewise.
      	[HAVE_PYTHON] (varobj_ensure_python_env): Make it extern.
      	[HAVE_PYTHON] (varobj_get_iterator): New function.
      	(update_dynamic_varobj_children) [HAVE_PYTHON]: Move
      	python-specific code to python/py-varobj.c.
      	(install_visualizer): Call varobj_iter_delete instead of
      	Py_XDECREF.
      	* varobj.h (varobj_ensure_python_env): Declare.
      e5250216
Loading