Commit Graph

38696 Commits

Author SHA1 Message Date
Joel Brobecker
2132fe8503 fix gdbserver build in nat/linux-ptrace.c on arm-android
The following change replaced an include of gregset.h by
an include of <sys/procfs.h>:

    commit 39b2247157
    Date:   Thu Aug 11 12:01:22 2016 +0100
    Subject: Fix fallout from gdb/20413's fix
             (x32: linux_ptrace_test_ret_to_nx: Cannot PTRACE_PEEKUSER)

Unfortunately, this broke gdbserver on Android, because that file
does not exist on this platform.  This patch fixes the issue by
conditionalizing its include with HAVE_SYS_PROCFS_H (which we check
both in gdb/configure and gdbserver/configure).

gdb/ChangeLog:

        * nat/linux-ptrace.c: Only include <sys/procfs.h> if
        HAVE_SYS_PROCFS_H is defined.

Tested by rebuilding gdbserver on arm-android and GNU/Linux.
2017-01-20 03:47:16 -05:00
Alan Hayward
d1dff2266d Allocate data in cached_reg_t
2017-01-18  Alan Hayward  <alan.hayward@arm.com>

	* remote.c (struct cached_reg): Change data into a pointer.
	* (stop_reply_dtr): Free data pointers before deleting vector.
	(process_stop_reply): Likewise.
	(remote_parse_stop_reply): Allocate space for data
2017-01-18 15:17:55 +00:00
Alan Hayward
9890e4338d Use register_size () instead of MAX_REGISTER_SIZE
2017-01-18  Alan Hayward  <alan.hayward@arm.com>

	* amd64-tdep.c (amd64_pseudo_register_read_value): remove
	MAX_REGISTER_SIZE.
	(amd64_pseudo_register_read_value): Likewise.
	* remote.c (fetch_register_using_p): Remove MAX_REGISTER_SIZE.
	(store_register_using_P): Likewise.
	* regcache.c (regcache_xfer_part): Likewise.
2017-01-18 15:17:55 +00:00
Ivo Raisr
7a36499abc gdb: sparc: split real and pseudo registers.
gdb/ChangeLog:

2017-01-16  Ivo Raisr  <ivo.raisr@oracle.com>

	Split real and pseudo registers.
	* sparc-tdep.h (SPARC_CORE_REGISTERS): New macro.
	(sparc32_pseudo_regnum): New enum.
	* sparc64-tdep.h (sparc64_pseudo_regnum): New enum.
	* sparc-tdep.c (SPARC32_FPU_REGISTERS): New macro.
	(SPARC32_CP0_REGISTERS): New macro.
	(sparc32_pseudo_register_name): New function.
	(sparc32_register_name): Use sparc32_pseudo_register_name.
	(sparc32_pseudo_register_type): New function.
	(sparc32_register_type): Use sparc32_pseudo_register_type.
	(sparc32_pseudo_register_read, sparc32_pseudo_register_write): Handle
	pseudo register numbers.
	* sparc64-tdep.c SPARC64_FPU_REGISTERS): New macro.
	(SPARC64_CP0_REGISTERS): New macro.
	(sparc64_pseudo_register_name): New function.
	(sparc64_register_name): Use sparc64_pseudo_register_name.
	(sparc64_pseudo_register_type): New function.
	(sparc64_register_type): Use sparc64_pseudo_register_type.
	(sparc64_pseudo_register_read, sparc64_pseudo_register_write): Handle
	pseudo register numbers.
	(sparc64_store_floating_fields, sparc64_extract_floating_fields,
	sparc64_store_arguments): Handle pseudo register numbers.
2017-01-16 08:45:48 -08:00
Yao Qi
6f8976bfd6 Don't print too much if remote_debug is on
If we turn "remote debug" on and GDB does some vFile operations,
a lot of things will be printed in the screen, which makes
"remote debug" useless.

This patch changes the code that we only print 512 chars in max in
debugging messages, like this,

Sending packet: $qXfer:features:read:target.xml:0,fff#7d...Packet received: l<?xml version="1.0"?>\n<!-- Copyright (C) 2010-2016 Free Software Foundation, Inc.\n\n     Copying and distribution of this file, with or without modification,\n     are permitted in any medium without royalty provided the copyright\n     notice and this notice are preserved.  -->\n\n<!-- AMD64 with AVX - Includes Linux-only special "register".  -->\n\n<!DOCTYPE target SYSTEM "gdb-target.dtd">\n<target>\n  <architecture>i386:x86-64</architecture>\n  <osabi>GNU/Linux</osabi>\n  <xi:include href="64bit-core.xml"/>\n  <xi:[14 bytes omitted]

Sending packet: $qXfer:auxv:read::0,1000#6b...Packet received: l!\000\000\000\000\000\000\000\000d\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000@\000@\000\000\000\000\000\004\000\000\000\000\000\000\0008\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\a\000\000\000\000\000\000\000\177\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\000\004@\000\000\000\000\000\013\000\000\000\000\000\000\003\000\000\000\000\000\000\f\000\000\000\000\000\000\003\000\000\000\000\000\000\r\000\000\000\000\000\000\003\000\000\000\000\000\000\016\000\000\000\000\000\000\003\000\000\000\000\000\000\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\000\000\000\000\000\000\177\000\000\037\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\00\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000[582 bytes omitted]

gdb:

2017-01-13  Yao Qi  <yao.qi@linaro.org>

	* remote.c (REMOTE_DEBUG_MAX_CHAR): New macro.
	(putpkt_binary): Print only REMOTE_DEBUG_MAX_CHAR chars in debug
	output.
	(getpkt_or_notif_sane_1): Likewise.
2017-01-13 15:45:33 +00:00
Yao Qi
e4241ace68 'make check-headers' for c++ header
If I run 'make check-headers', I get these errors,
....
In file included from ../../binutils-gdb/gdb/common/common-defs.h:78:0,
                 from ../../binutils-gdb/gdb/defs.h:28,
                 from <command-line>:0:
../../binutils-gdb/gdb/common/common-utils.h:23:18: fatal error: string: No such file or directory
 #include <string>
                  ^

because we still parse headers as c file with a c compiler, which is no
longer true after we moved to C++.  This patch changes it to use C++
compiler and parse headers as c++ headers.

gdb:

2017-01-13  Yao Qi  <yao.qi@linaro.org>

	* Makefile.in (checker-headers): Use CXX and CXX_DIALET instead
	of CC.  Pass "-x c++-header" instead of "-x c".
2017-01-13 14:40:11 +00:00
Simon Marchi
3015c06465 Update comment in remote_can_async_p
I find this comment counter intuitive, and it probably predates the
always-target-async change.  AFAIK, remote will always be async, unless
the user explicitly prevents it with "maint set target-async off".

gdb/ChangeLog:

	* remote.c (remote_can_async_p): Update comment.
2017-01-12 11:15:02 -05:00
Simon Marchi
fde1b17d37 Update comment in linux_nat_can_async_p
I think this comment is outdated.  Nowadays, linux-nat is always async,
unless the user has explictly turned it off with
"maint set target-async off".

gdb/ChangeLog:

	* linux-nat.c (linux_nat_can_async_p): Update comment.
2017-01-12 11:04:53 -05:00
Simon Marchi
ca1ca08b08 Remove dead serial_interface_lookup calls
By inspecting the serial_add_interface calls, I found that the serial
interface names that we have today are:

 - hardwire
 - terminal
 - pipe
 - tcp
 - event

 The calls to serial_interface_lookup with any other names are most
 likely leftovers which can be removed since these serial interfaces
 don't exist anymore.  The commits that removed the "pc" and "parallel"
 interfaces are respectively:

  cb2a4ac5da

and

  e386d4d2fb

gdb/ChangeLog:

	* serial.c (serial_open): Forget about "pc" and "lpt" serial interface.
2017-01-12 10:41:50 -05:00
Simon Marchi
4ad2da7317 Fix typo in lookup_cmd_1 comment
gdb/ChangeLog:

	* cli/cli-decode.c (lookup_cmd_1): Fix typo in comment.
2017-01-11 11:15:26 -05:00
Tom Tromey
c8b23b3f89 Add constructor and destructor to demangle_parse_info
This adds a constructor and destructor to demangle_parse_info, and
then changes all the users to use them.  This removes
make_cleanup_cp_demangled_name_parse_free and its single use.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-type.c (typy_legacy_template_argument): Update.
	* cp-support.h (struct demangle_parse_info) (demangle_parse_info,
	~demangle_parse_info): Declare new members.
	(cp_demangled_name_to_comp): Return unique_ptr.
	(cp_demangled_name_parse_free)
	(make_cleanup_cp_demangled_name_parse_free)
	(cp_new_demangle_parse_info): Remove.
	* cp-support.c (do_demangled_name_parse_free_cleanup)
	(make_cleanup_cp_demangled_name_parse_free): Remove.
	(inspect_type, cp_canonicalize_string_full)
	(cp_canonicalize_string): Update.
	(mangled_name_to_comp): Change return type.
	(cp_class_name_from_physname, method_name_from_physname)
	(cp_func_name, cp_remove_params): Update.
	* cp-name-parser.y (demangle_parse_info): New constructor, from
	cp_new_demangle_parse_info.
	(~demangle_parse_info): New destructor, from
	cp_demangled_name_parse_free.
	(cp_merge_demangle_parse_infos): Update.
	(cp_demangled_name_to_comp): Change return type.
2017-01-10 19:14:15 -07:00
Tom Tromey
1ac32117f7 Remove cleanups from execute_gdb_command
This replaces a cleanup in execute_gdb_command with an instance of
std::string.

Testing showed that this originally missed a cleanup that was returned
by prevent_dont_repeat.  This version of the patch changes
prevent_dont_repeat to return a scoped_restore rather than a cleanup.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* top.c (prevent_dont_repeat): Change return type.
	* python/python.c (execute_gdb_command): Use std::string.
	Update.
	* guile/guile.c (gdbscm_execute_gdb_command): Update.
	* command.h (prevent_dont_repeat): Change return type.
	* breakpoint.c (bpstat_do_actions_1): Update.
2017-01-10 19:14:14 -07:00
Tom Tromey
0cf0822778 Use scoped_value_mark in dwarf2_evaluate_loc_desc_full
This changes dwarf2_evaluate_loc_desc_full to use scoped_value_mark.

Note that this function previously called do_cleanup using the same
cleanup multiple times.  I had thought this was buggy, but re-reading
make_my_cleanup2 indicates that it is not.  Nevertheless it is
surprising, and at least one of the calls (the one that is completely
removed in this patch) seems to have been done under the assumption
that it would still have some effect.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* value.h (scoped_value_mark::~scoped_value_mark): Call
	free_to_mark.
	(scoped_value_mark::free_to_mark): New method.
	* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use
	scoped_value_mark.
2017-01-10 19:14:13 -07:00
Tom Tromey
eb11506932 Add scoped_value_mark
This adds a scoped_value_mark class, that records the value mark in
the constructor and then calls value_free_to_mark in the destructor.
It then updates various spots in gdb to use this class, rather than a
cleanup.

It would be better overall to replace "struct value *" with a
shared_ptr, maybe eliminating the need for this class (watchpoints
would perhaps need some new mechanism as well).  However, that's
difficult to do.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-value.c (valpy_dereference, valpy_referenced_value)
	(valpy_reference_value, valpy_const_value, valpy_get_address)
	(valpy_get_dynamic_type, valpy_lazy_string, valpy_do_cast)
	(valpy_getitem, valpy_call, valpy_binop_throw, valpy_negative)
	(valpy_absolute, valpy_richcompare_throw): Use scoped_value_mark.
	* dwarf2loc.c (dwarf2_loc_desc_get_symbol_read_needs): Use
	scoped_value_mark.
	* dwarf2-frame.c (execute_stack_op): Use scoped_value_mark.
	* value.h (scoped_value_mark): New class.
2017-01-10 19:14:12 -07:00
Tom Tromey
906768f970 Remove make_cleanup_discard_psymtabs
This removes make_cleanup_discard_psymtabs in favor of a new class.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* dwarf2read.c (dwarf2_build_psymtabs): Use psymtab_discarder.
	* psympriv.h (make_cleanup_discard_psymtabs): Don't declare.
	* psymtab.c (discard_psymtabs_upto): Remove.
	(make_cleanup_discard_psymtabs): Remove.
	(struct psymtab_state): Remove.
2017-01-10 19:14:12 -07:00
Tom Tromey
bef155c3e8 Introduce and use gdb::unlinker
This introduces a new class, gdb::unlinker, that unlinks a file in the
destructor.  The user of this class has the option to preserve the
file instead, by calling the "keep" method.

This patch then changes the spots in gdb that use unlink in a cleanup
to use this class instead.  In one spot I went ahead and removed all
the cleanups from the function.

This fixes one latent bug -- do_bfd_delete_cleanup could refer to
freed memory, by decref'ing the BFD before using its filename.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* record-full.c (record_full_save_cleanups): Remove.
	(record_full_save): Use gdb::unlinker.
	* gcore.c (do_bfd_delete_cleanup): Remove.
	(gcore_command): Use gdb::unlinker, unique_xmalloc_ptr.  Remove
	cleanups.
	* dwarf2read.c (unlink_if_set): Remove.
	(write_psymtabs_to_index): Use gdb::unlinker.
	* common/gdb_unlinker.h: New file.
2017-01-10 19:14:11 -07:00
Tom Tromey
192b62ce0b Use class to manage BFD reference counts
This introduces a new specialization of gdb::ref_ptr that can be used
to manage BFD reference counts.  Then it changes most places in gdb to
use this new class, rather than explicit reference-counting or
cleanups.  This patch removes make_cleanup_bfd_unref.

If you look you will see a couple of spots using "release" where a use
of gdb_bfd_ref_ptr would be cleaner.  These will be fixed in the next
patch.

I think this patch fixes some latent bugs.  For example, it seems to
me that previously objfpy_add_separate_debug_file leaked a BFD.

I'm not 100% certain that the macho_symfile_read_all_oso change is
correct.  The existing code here is hard for me to follow.  One goal
of this sort of automated reference counting, though, is to make it
more difficult to make logic errors; so hopefully the code is clear
now.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* windows-tdep.c (windows_xfer_shared_library): Update.
	* windows-nat.c (windows_make_so): Update.
	* utils.h (make_cleanup_bfd_unref): Remove.
	* utils.c (do_bfd_close_cleanup, make_cleanup_bfd_unref): Remove.
	* symfile.h (symfile_bfd_open)
	(find_separate_debug_file_in_section): Return gdb_bfd_ref_ptr.
	* symfile.c (read_symbols, symbol_file_add)
	(separate_debug_file_exists): Update.
	(symfile_bfd_open): Return gdb_bfd_ref_ptr.
	(generic_load, reread_symbols): Update.
	* symfile-mem.c (symbol_file_add_from_memory): Update.
	* spu-linux-nat.c (spu_bfd_open): Return gdb_bfd_ref_ptr.
	(spu_symbol_file_add_from_memory): Update.
	* solist.h (struct target_so_ops) <bfd_open>: Return
	gdb_bfd_ref_ptr.
	(solib_bfd_fopen, solib_bfd_open): Return gdb_bfd_ref_ptr.
	* solib.c (solib_bfd_fopen, solib_bfd_open): Return
	gdb_bfd_ref_ptr.
	(solib_map_sections, reload_shared_libraries_1): Update.
	* solib-svr4.c (enable_break): Update.
	* solib-spu.c (spu_bfd_fopen): Return gdb_bfd_ref_ptr.
	* solib-frv.c (enable_break2): Update.
	* solib-dsbt.c (enable_break): Update.
	* solib-darwin.c (gdb_bfd_mach_o_fat_extract): Return
	gdb_bfd_ref_ptr.
	(darwin_solib_get_all_image_info_addr_at_init): Update.
	(darwin_bfd_open): Return gdb_bfd_ref_ptr.
	* solib-aix.c (solib_aix_bfd_open): Return gdb_bfd_ref_ptr.
	* record-full.c (record_full_save): Update.
	* python/py-objfile.c (objfpy_add_separate_debug_file): Update.
	* procfs.c (insert_dbx_link_bpt_in_file): Update.
	* minidebug.c (find_separate_debug_file_in_section): Return
	gdb_bfd_ref_ptr.
	* machoread.c (macho_add_oso_symfile): Change abfd to
	gdb_bfd_ref_ptr.
	(macho_symfile_read_all_oso): Update.
	(macho_check_dsym): Return gdb_bfd_ref_ptr.
	(macho_symfile_read): Update.
	* jit.c (bfd_open_from_target_memory): Return gdb_bfd_ref_ptr.
	(jit_bfd_try_read_symtab): Update.
	* gdb_bfd.h (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
	(gdb_bfd_openw, gdb_bfd_openr_iovec)
	(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
	gdb_bfd_ref_ptr.
	(gdb_bfd_ref_policy): New struct.
	(gdb_bfd_ref_ptr): New typedef.
	* gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
	(gdb_bfd_openw, gdb_bfd_openr_iovec)
	(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
	gdb_bfd_ref_ptr.
	* gcore.h (create_gcore_bfd): Return gdb_bfd_ref_ptr.
	* gcore.c (create_gcore_bfd): Return gdb_bfd_ref_ptr.
	(gcore_command): Update.
	* exec.c (exec_file_attach): Update.
	* elfread.c (elf_symfile_read): Update.
	* dwarf2read.c (dwarf2_get_dwz_file): Update.
	(try_open_dwop_file, open_dwo_file): Return gdb_bfd_ref_ptr.
	(open_and_init_dwo_file): Update.
	(open_dwp_file): Return gdb_bfd_ref_ptr.
	(open_and_init_dwp_file): Update.
	* corelow.c (core_open): Update.
	* compile/compile-object-load.c (compile_object_load): Update.
	* common/gdb_ref_ptr.h (ref_ptr::operator->): New operator.
	* coffread.c (coff_symfile_read): Update.
	* cli/cli-dump.c (bfd_openr_or_error, bfd_openw_or_error): Return
	gdb_bfd_ref_ptr.  Rename.
	(dump_bfd_file, restore_command): Update.
	* build-id.h (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
	* build-id.c (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
	(find_separate_debug_file_by_buildid): Update.
2017-01-10 19:14:10 -07:00
Tom Tromey
50315b2177 Add gdb_ref_ptr.h
This adds a new gdb_ref_ptr.h, that implements a reference-counting
smart pointer class, where the user of the class supplies a
reference-counting policy object.

This class will be used in the next patch, which changes most explicit
BFD reference counts to use this new type.  Meanwhile, this patch
changes gdbpy_ref to be a specialization of this new class.

This change required adding new nullptr_t overloads some operators in
gdb_ref_ptr.h.  I suspect this was needed because some Python header
redefines NULL, but I'm not certain.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* common/gdb_ref_ptr.h: New file.
	* python/py-ref.h (struct gdbpy_ref_policy): New.
	(gdbpy_ref): Now a typedef.
2017-01-10 19:14:09 -07:00
Tom Tromey
fc4007c969 Remove make_cleanup_htab_delete
This removes make_cleanup_htab_delete in favor of destructors,
building on an earlier patch that added the htab_up typedef.

Testing revealed that more cleanup-removal work was needed in
dwarf2loc.c, so this version of the patch changes code there to use
unordered_set and vector, removing some more cleanups.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* utils.h (make_cleanup_htab_delete): Don't declare.
	* utils.c (do_htab_delete_cleanup, make_cleanup_htab_delete):
	Remove.
	* linespec.c (decode_compound_collector): Add constructor,
	destructor.
	(lookup_prefix_sym): Remove cleanup.
	(symtab_collector): Add constructor, destructor.
	(collect_symtabs_from_filename): Remove cleanup.
	* disasm.c (do_mixed_source_and_assembly): Use htab_up.
	* compile/compile-c-symbols.c (generate_c_for_variable_locations):
	Use htab_up.
	* gnu-v3-abi.c (gnuv3_print_vtable): Use htab_up.
	* dwarf2read.c (dw2_expand_symtabs_matching)
	(dw2_map_symbol_filenames, dwarf_decode_macros)
	(write_psymtabs_to_index): Use htab_up.
	* dwarf2loc.c (func_verify_no_selftailcall)
	(call_site_find_chain_1, func_verify_no_selftailcall)
	(chain_candidate, call_site_find_chain_1): Use std::unordered_set,
	std::vector, gdb::unique_xmalloc_ptr.
	(call_sitep): Remove typedef.
	(dwarf2_locexpr_baton_eval): Remove unused variable.
2017-01-10 19:14:08 -07:00
Tom Tromey
8dbcee674e Remove make_cleanup_py_decref and make_cleanup_py_xdecref
make_cleanup_py_decref and make_cleanup_py_xdecref are now unused, so
this patch removes themm.  Future Python changes should use gdbpy_ref
instead.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/python-internal.h (make_cleanup_py_decref)
	(make_cleanup_py_xdecref): Don't declare.
	* python/py-utils.c (py_decref, make_cleanup_py_decref)
	(py_xdecref, make_cleanup_py_xdecref): Remove.
2017-01-10 19:14:08 -07:00
Tom Tromey
13df46cc0f Use gdbpy_ref rather than make_cleanup_py_decref
This changes some spots in py-framefilter.c to use gdbpy_ref rather
than make_cleanup_py_decref or make_cleanup_py_xdecref.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-framefilter.c (py_mi_print_variables): Use gdbpy_ref.
	(py_print_locals, enumerate_locals, py_print_args): Use gdbpy_ref.
2017-01-10 19:14:07 -07:00
Tom Tromey
06fc9bf7d9 Use gdbpy_ref in enumerate_args
This changes enumerate_args to use gdbpy_ref, and gets rid of many
gotos.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-framefilter.c (enumerate_args): Use gdbpy_ref.
2017-01-10 19:14:06 -07:00
Tom Tromey
830a493402 Use gdbpy_ref in py-utils.c
This changes more places in py-utils.c to use gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-utils.c (unicode_to_encoded_string)
	(python_string_to_target_string)
	(python_string_to_target_python_string)
	(python_string_to_host_string, gdbpy_obj_to_string)
	(get_addr_from_python): Use gdbpy_ref.
2017-01-10 19:14:06 -07:00
Tom Tromey
4586d54305 Use gdbpy_ref in pyuw_object_attribute_to_pointer
This changes pyuw_object_attribute_to_pointer to use gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-unwind.c (pyuw_object_attribute_to_pointer): Use
	gdbpy_ref.
2017-01-10 19:14:05 -07:00
Tom Tromey
59876f8f9f Use gdbpy_ref in python.c
This changes more places in python.c to use gdbpy_ref.

Additionally, previously gdbpy_apply_type_printers would return
EXT_LANG_RC_ERROR if a type printer returned None.  However, that
doesn't seem correct to me; this patch changes it to return
EXT_LANG_RC_NOP in this case.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/python.c (eval_python_command, gdbpy_decode_line)
	(gdbpy_run_events, gdbpy_start_type_printers)
	(gdbpy_apply_type_printers): Use gdbpy_ref.
2017-01-10 19:14:04 -07:00
Tom Tromey
97d83487d5 Use gdbpy_ref in py-param.c
This changes py-param.c to use gdbpy_ref in a couple more spots.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-param.c (get_doc_string, compute_enum_values): Use
	gdbpy_ref.
2017-01-10 19:14:04 -07:00
Tom Tromey
9205649a38 Use gdbpy_ref in py-inferior.c
This changes py-inferior.c to use gdbpy_ref in more places.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-inferior.c (find_thread_object, build_inferior_list):
	Use gdbpy_ref.
2017-01-10 19:14:03 -07:00
Tom Tromey
74c49d454b Use gdbpy_ref in py_print_frame
This changes py_print_frame to use gdbpy_ref in more places.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-framefilter.c (py_print_frame): Use gdbpy_ref.
2017-01-10 19:14:02 -07:00
Tom Tromey
16361ffbd1 Use gdbpy_ref in bpfinishpy_out_of_scope
This changes bpfinishpy_out_of_scope to use gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-finishbreakpoint.c (bpfinishpy_out_of_scope): Use
	gdbpy_ref.
2017-01-10 19:14:01 -07:00
Tom Tromey
905f2ccab1 Use gdbpy_ref in py-cmd.c
This changes py-cmd.c to use gdbpy_ref in more places.  This also
fixes a latent memory leak in cmdpy_completer_helper, which
unnecessarily increfs the result of PyObject_CallMethodObjArgs.  This
is not needed because that function returns a new reference.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-cmd.c (cmdpy_completer_helper): Use gdbpy_ref.  Remove
	extra incref.
	(cmdpy_completer_handle_brkchars, cmdpy_completer, cmdpy_init):
	Use gdbpy_ref.
2017-01-10 19:14:01 -07:00
Tom Tromey
64081434cc Use gdbpy_ref in gdbpy_breakpoint_cond_says_stop
This changes gdbpy_breakpoint_cond_says_stop to use gdbpy_ref rather
than explicit reference management.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Use
	gdbpy_ref.
2017-01-10 19:14:00 -07:00
Tom Tromey
59e9e83119 Use gdbpy_ref in archpy_disassemble
This changes archpy_disassemble to use gdbpy_ref.  It also fixes a
latent bug where archpy_disassemble was decref'ing the results of a
all to PyArg_ParseTupleAndKeywords.  This is incorrect because
PyArg_ParseTupleAndKeywords returns borrowed references.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-arch.c (archpy_disassemble): Use gdbpy_ref.  Don't
	decref results of PyArg_ParseTupleAndKeywords.
2017-01-10 19:13:59 -07:00
Tom Tromey
9de10f6d53 Change python_run_simple_file to use gdbpy_ref
This changes python_run_simple_file to use gdbpy_ref and
unique_xmalloc_ptr.  Thi fixes a latent bug in this function, where
the error path previously ran the cleanups and then referred to one of
the objects just freed.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/python.c (python_run_simple_file): Use
	unique_xmalloc_ptr, gdbpy_ref.
2017-01-10 19:13:59 -07:00
Tom Tromey
2bd5759dcb Use gdbpy_ref in py-prettyprint.c
This changes some spots in py-prettyprint.c to use gdbpy_ref.  It also
changes push_dummy_python_frame to be a class, rather than having it
create a cleanup.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-prettyprint.c (print_stack_unless_memory_error)
	(print_string_repr, print_children): Use gdbpy_ref.
	(dummy_python_frame): New class.
	(dummy_python_frame::dummy_python_frame): Rename from
	push_dummy_python_frame.
	(py_restore_tstate): Remove.
2017-01-10 19:13:58 -07:00
Tom Tromey
3b4e0e01f8 Use gdbpy_ref in py_print_frame
This changes py_print_frame to use gdbpy_ref in a few spots.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-framefilter.c (py_print_frame): Use gdbpy_ref.
2017-01-10 19:13:57 -07:00
Tom Tromey
17a22718b1 Remove ensure_python_env
All of gdb has been converted away from ensure_python_env and
varobj_ensure_python_env now; so remove them.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/python.c (ensure_python_env, restore_python_env):
	Remove.
	* python/python-internal.h (ensure_python_env): Don't declare.
	* varobj.h (varobj_ensure_python_env): Don't declare.
	* varobj.c (varobj_ensure_python_env): Remove.
2017-01-10 19:13:57 -07:00
Tom Tromey
68cdc55720 Use gdbpy_enter_varobj in varobj_value_get_print_value
This changes the last function in varobj.c to use gdbpy_enter_varobj.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* varobj.c (varobj_value_get_print_value): Use
	gdbpy_enter_varobj.
2017-01-10 19:13:56 -07:00
Tom Tromey
1eba63835e Change type of encoding argument to gdbpy_extract_lazy_string
This changes gdbpy_extract_lazy_string's "encoding" argument to be a
unique_xmalloc_ptr.  I chose this rather than std::string because it
can sometimes be NULL.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-prettyprint.c (print_string_repr, print_children):
	Update.
	* python/py-lazy-string.c (gdbpy_extract_lazy_string): Change type
	of "encoding".
	* varobj.c (varobj_value_get_print_value): Update.
	* python/python-internal.h (gdbpy_extract_lazy_string): Update.
2017-01-10 19:13:55 -07:00
Tom Tromey
bde7b3e3a0 Use gdbpy_enter_varobj in more of varobj.c
This converts most of the remaining functions in varobj.c to use
gdbpy_enter_varobj.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* varobj.c (varobj_get_display_hint)
	(dynamic_varobj_has_child_method, install_new_value_visualizer)
	(varobj_set_visualizer, free_variable): Use
	gdbpy_enter_varobj.
2017-01-10 19:13:55 -07:00
Tom Tromey
a7785f8c79 Use gdbpy_enter in python.c
This changes the last functions in python.c to use gdbpy_enter.  I
split gdbpy_finish_initialization into two functions in order to avoid
some "goto"s.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/python.c (python_command): Use gdbpy_enter, gdbpy_ref.
	(do_finish_initialization): New function.  Use gdbpy_ref.
	(gdbpy_finish_initialization): Use gdbpy_enter.  Call
	do_finish_initialization.
2017-01-10 19:13:54 -07:00
Tom Tromey
2865bfce38 Use gdbpy_enter in py-param.c
This converts the remaining functions in py-param.c to use
gdbpy_enter.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-param.c (get_set_value, get_show_value): Use
	gdbpy_enter, gdbpy_ref.
2017-01-10 19:13:53 -07:00
Tom Tromey
0e9dcc7587 Use gdbpy_enter in fnpy_call
This changes fnpy_call to use gdbpy_enter and gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-function.c (fnpy_call): Use gdbpy_enter, gdbpy_ref.
2017-01-10 19:13:53 -07:00
Tom Tromey
12a5cedd4f Use gdbpy_enter in cmdpy_function
This changes cmdpy_function to use gdbpy_enter and gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-cmd.c (cmdpy_function): Use gdbpy_enter, gdbpy_ref.
2017-01-10 19:13:52 -07:00
Tom Tromey
788f258604 Use gdbpy_enter_varobj in py-varobj.c
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.
2017-01-10 19:13:51 -07:00
Tom Tromey
6cd67beaae Introduce gdbpy_enter_varobj and use it
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.
2017-01-10 19:13:51 -07:00
Tom Tromey
14b122bf1c Use gdbpy_enter in py-xmethod.c
This changes the remaining functions in py-xmethod.c to use
gdbpy_enter; using gdbpy_ref and unique_xmalloc_ptr as
appropriate.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-xmethods.c (gdbpy_get_xmethod_result_type): Use
	gdbpy_enter, gdbpy_ref, unique_xmalloc_ptr.
	(gdbpy_invoke_xmethod): Use gdbpy_ref, gdbpy_enter.
	(gdbpy_get_xmethod_arg_types): Use gdbpy_ref,
	unique_xmalloc_ptr.
	(gdbpy_get_xmethod_arg_types): Use gdbpy_ref, gdbpy_enter.
2017-01-10 19:13:50 -07:00
Tom Tromey
bf1ca3b947 Use gdbpy_ref in invoke_match_method
Change invoke_match_method to use gdbpy_ref.
I neglected to convert this function in my earlier series.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-xmethods.c (invoke_match_method): Use
	gdbpy_ref.
2017-01-10 19:13:49 -07:00
Tom Tromey
572a5524c1 Use gdbpy_enter in gdbpy_get_matching_xmethod_workers
Change gdbpy_get_matching_xmethod_workers to use gdbpy_enter and
gdbpy_ref.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): use
	gdbpy_enter, gdbpy_ref.
2017-01-10 19:13:48 -07:00
Tom Tromey
396a78b627 Use gdbpy_enter in python_interactive_command
This changes python_interactive_command to use gdbpy_enter.
Previously this function was leaving a dangling cleanup -- this is
sort of ok in a command function, but IMO it's still better to clean
up.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/python.c (python_interactive_command): Use gdbpy_enter.
2017-01-10 19:13:48 -07:00
Tom Tromey
a88b13c7e3 Use gdbpy_enter in gdbpy_before_prompt_hook
Change gdbpy_before_prompt_hook to use gdbpy_enter and gdbpy_ref.
This also rearranges the function a tiny bit to make it more clear.

2017-01-10  Tom Tromey  <tom@tromey.com>

	* python/python.c (gdbpy_before_prompt_hook): Use gdbpy_enter,
	gdbpy_ref.
2017-01-10 19:13:47 -07:00