Skip to content
Snippets Groups Projects
  1. Jan 01, 2023
  2. Aug 04, 2022
    • Tom Tromey's avatar
      Use registry in gdbarch · cb275538
      Tom Tromey authored
      gdbarch implements its own registry-like approach.  This patch changes
      it to instead use registry.h.  It's a rather large patch but largely
      uninteresting -- it's mostly a straightforward conversion from the old
      approach to the new one.
      
      The main benefit of this change is that it introduces type safety to
      the gdbarch registry.  It also removes a bunch of code.
      
      One possible drawback is that, previously, the gdbarch registry
      differentiated between pre- and post-initialization setup.  This
      doesn't seem very important to me, though.
      
      
      cb275538
  3. Jul 08, 2022
    • Tom Tromey's avatar
      Accept gdb.Value in more Python APIs · d19ca0b3
      Tom Tromey authored
      PR python/27000 points out that gdb.block_for_pc will accept a Python
      integer, but not a gdb.Value.  This patch corrects this oversight.
      
      I looked at all uses of GDB_PY_LLU_ARG and fixed these up to use
      get_addr_from_python instead.  I also looked at uses of GDB_PY_LL_ARG,
      but those seemed relatively unlikely to be useful with a gdb.Value, so
      I didn't change them.  My thinking here is that a Value will typically
      come from inferior memory, and something like a line number is not too
      likely to be found this way.
      
      Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27000
      d19ca0b3
  4. Mar 23, 2022
    • Simon Marchi's avatar
      gdb/python: remove Python 2/3 compatibility macros · 5aee4587
      Simon Marchi authored
      New in this version:
      
       - Rebase on master, fix a few more issues that appeared.
      
      python-internal.h contains a number of macros that helped make the code
      work with both Python 2 and 3.  Remove them and adjust the code to use
      the Python 3 functions.
      
      Change-Id: I99a3d80067fb2d65de4f69f6473ba6ffd16efb2d
      5aee4587
    • Simon Marchi's avatar
      gdb/python: remove Python 2 support · edae3fd6
      Simon Marchi authored
      New in this version:
      
       - Add a PY_MAJOR_VERSION check in configure.ac / AC_TRY_LIBPYTHON.  If
         the user passes --with-python=python2, this will cause a configure
         failure saying that GDB only supports Python 3.
      
      Support for Python 2 is a maintenance burden for any patches touching
      Python support.  Among others, the differences between Python 2 and 3
      string and integer types are subtle.  It requires a lot of effort and
      thinking to get something that behaves correctly on both.  And that's if
      the author and reviewer of the patch even remember to test with Python
      2.
      
      See this thread for an example:
      
        https://sourceware.org/pipermail/gdb-patches/2021-December/184260.html
      
      So, remove Python 2 support.  Update the documentation to state that GDB
      can be built against Python 3 (as opposed to Python 2 or 3).
      
      Update all the spots that use:
      
       - sys.version_info
       - IS_PY3K
       - PY_MAJOR_VERSION
       - gdb_py_is_py3k
      
      ... to only keep the Python 3 portions and drop the use of some
      now-removed compatibility macros.
      
      I did not update the configure script more than just removing the
      explicit references to Python 2.  We could maybe do more there, like
      check the Python version and reject it if that version is not
      supported.  Otherwise (with this patch), things will only fail at
      compile time, so it won't really be clear to the user that they are
      trying to use an unsupported Python version.  But I'm a bit lost in the
      configure code that checks for Python, so I kept that for later.
      
      Change-Id: I75b0f79c148afbe3c07ac664cfa9cade052c0c62
      edae3fd6
  5. Mar 22, 2022
    • Andrew Burgess's avatar
      gdb/python: add gdb.format_address function · 25209e2c
      Andrew Burgess authored
      Add a new function, gdb.format_address, which is a wrapper around
      GDB's print_address function.
      
      This method takes an address, and returns a string with the format:
      
        ADDRESS <SYMBOL+OFFSET>
      
      Where, ADDRESS is the original address, formatted as hexadecimal,
      SYMBOL is a symbol with an address lower than ADDRESS, and OFFSET is
      the offset from SYMBOL to ADDRESS in decimal.
      
      If there's no SYMBOL suitably close to ADDRESS then the
      <SYMBOL+OFFSET> part is not included.
      
      This is useful if a user wants to write a Python script that
      pretty-prints addresses, the user no longer needs to do manual symbol
      lookup, or worry about correctly formatting addresses.
      
      Additionally, there are some settings that effect how GDB picks
      SYMBOL, and whether the file name and line number should be included
      with the SYMBOL name, the gdb.format_address function ensures that the
      users Python script also benefits from these settings.
      
      The gdb.format_address by default selects SYMBOL from the current
      inferiors program space, and address is formatted using the
      architecture for the current inferior.  However, a user can also
      explicitly pass a program space and architecture like this:
      
        gdb.format_address(ADDRESS, PROGRAM_SPACE, ARCHITECTURE)
      
      In order to format an address for a different inferior.
      
      Notes on the implementation:
      
      In py-arch.c I extended arch_object_to_gdbarch to add an assertion for
      the type of the PyObject being worked on.  Prior to this commit all
      uses of arch_object_to_gdbarch were guaranteed to pass this function a
      gdb.Architecture object, but, with this commit, this might not be the
      case.
      
      So, with this commit I've made it a requirement that the PyObject be a
      gdb.Architecture, and this is checked with the assert.  And in order
      that callers from other files can check if they have a
      gdb.Architecture object, I've added the new function
      gdbpy_is_architecture.
      
      In py-progspace.c I've added two new function, the first
      progspace_object_to_program_space, converts a PyObject of type
      gdb.Progspace to the associated program_space pointer, and
      gdbpy_is_progspace checks if a PyObject is a gdb.Progspace or not.
      25209e2c
  6. Jan 01, 2022
  7. Nov 30, 2021
    • Andrew Burgess's avatar
      gdb/python: don't use the 'p' format for parsing args · 90fe61ce
      Andrew Burgess authored
      When running the gdb.python/py-arch.exp tests on a GDB built
      against Python 2 I ran into some errors.  The problem is that this
      test script exercises the gdb.Architecture.integer_type method, and
      this method uses 'p' as an argument format specifier in a call to
      gdb_PyArg_ParseTupleAndKeywords.
      
      Unfortunately this specified was only added in Python 3.3, so will
      cause an error for earlier versions of Python.
      
      This commit switches to use the 'O' specifier to collect a PyObject,
      and then uses PyObject_IsTrue to convert the object to a boolean.
      
      An earlier version of this patch incorrectly switched from using 'p'
      to use 'i', however, it was pointed out during review that this would
      cause some changes in behaviour, for example both of these will work
      with 'p', but not with 'i':
      
        gdb.selected_inferior().architecture().integer_type(32, None)
        gdb.selected_inferior().architecture().integer_type(32, "foo")
      
      The new approach of using 'O' works fine with these cases.  I've added
      some new tests to cover both of the above.
      
      There should be no user visible changes after this commit.
      90fe61ce
  8. Oct 29, 2021
    • Tom Tromey's avatar
      Add gdb.Architecture.integer_type Python function · d3771fe2
      Tom Tromey authored
      This adds a new Python function, gdb.Architecture.integer_type, which
      can be used to look up an integer type of a given size and
      signed-ness.  This is useful to avoid dependency on debuginfo when a
      particular integer type would be useful.
      
      v2 moves this to be a method on gdb.Architecture and addresses other
      review comments.
      d3771fe2
  9. Oct 22, 2021
    • Andrew Burgess's avatar
      gdb/python: new gdb.architecture_names function · 8b87fbe6
      Andrew Burgess authored
      Add a new function to the Python API, gdb.architecture_names().  This
      function returns a list containing all of the supported architecture
      names within the current build of GDB.
      
      The values returned in this list are all of the possible values that
      can be returned from gdb.Architecture.name().
      8b87fbe6
  10. Apr 28, 2021
    • Andrew Burgess's avatar
      gdb: delay python initialisation until gdbpy_finish_initialization · 8e3685bf
      Andrew Burgess authored
      Delay Python initialisation until gdbpy_finish_initialization.
      
      This is mostly about splitting the existing gdbpy_initialize_*
      functions in two, all the calls to register_objfile_data_with_cleanup,
      gdbarch_data_register_post_init, etc are moved into new _initialize_*
      functions, but everything else is left in the gdbpy_initialize_*
      functions.
      
      Then the call to do_start_initialization (in python/python.c) is moved
      from the _initialize_python function into gdbpy_finish_initialization.
      
      There should be no user visible changes after this commit.
      
      gdb/ChangeLog:
      
      	* python/py-arch.c (_initialize_py_arch): New function.
      	(gdbpy_initialize_arch): Move code to _initialize_py_arch.
      	* python/py-block.c (_initialize_py_block): New function.
      	(gdbpy_initialize_blocks): Move code to _initialize_py_block.
      	* python/py-inferior.c (_initialize_py_inferior): New function.
      	(gdbpy_initialize_inferior): Move code to _initialize_py_inferior.
      	* python/py-objfile.c (_initialize_py_objfile): New function.
      	(gdbpy_initialize_objfile): Move code to _initialize_py_objfile.
      	* python/py-progspace.c (_initialize_py_progspace): New function.
      	(gdbpy_initialize_pspace): Move code to _initialize_py_progspace.
      	* python/py-registers.c (_initialize_py_registers): New function.
      	(gdbpy_initialize_registers): Move code to
      	_initialize_py_registers.
      	* python/py-symbol.c (_initialize_py_symbol): New function.
      	(gdbpy_initialize_symbols): Move code to _initialize_py_symbol.
      	* python/py-symtab.c (_initialize_py_symtab): New function.
      	(gdbpy_initialize_symtabs): Move code to _initialize_py_symtab.
      	* python/py-type.c (_initialize_py_type): New function.
      	(gdbpy_initialize_types): Move code to _initialize_py_type.
      	* python/py-unwind.c (_initialize_py_unwind): New function.
      	(gdbpy_initialize_unwind): Move code to _initialize_py_unwind.
      	* python/python.c (_initialize_python): Move call to
      	do_start_initialization to gdbpy_finish_initialization.
      	(gdbpy_finish_initialization): Add call to
      	do_start_initialization.
      8e3685bf
  11. Jan 01, 2021
  12. Dec 04, 2020
    • Tom Tromey's avatar
      Remove redundant typedefs · f99b5177
      Tom Tromey authored
      I was inspired by this patch of Simon's:
      
      https://sourceware.org/pipermail/gdb-patches/2020-November/173522.html
      
      ... to remove other typedefs that are no longer necessary now that gdb
      uses C++.
      
      I didn't remove absolutely every one -- I didn't touch the tdep files.
      However, I removed many of them.  In some cases, I removed an existing
      different struct tag.
      
      2020-12-04  Tom Tromey  <tromey@adacore.com>
      
      	* linespec.c (struct linespec_token): Rename; remove typedef.
      	* guile/scm-block.c (struct block_smob): Remove typedef.
      	(struct block_syms_progress_smob): Likewise.
      	* guile/scm-symbol.c (struct symbol_smob): Remove typedef.
      	* guile/scm-symtab.c (symtab_smob): Remove typedef.
      	(struct sal_smob): Remove typedef.
      	* guile/scm-param.c (struct param_smob): Remove typedef.
      	* guile/scm-progspace.c (struct pspace_smob): Rename.
      	* guile/scm-objfile.c (struct objfile_smob): Rename.
      	* guile/scm-iterator.c (struct iterator_smob): Rename.
      	* guile/scm-frame.c (struct frame_smob): Rename.
      	* guile/scm-arch.c (struct arch_smob): Rename.
      	* guile/scm-type.c (struct field_smob): Remove typedef.
      	(struct type_smob): Rename.
      	* guile/scm-cmd.c (struct command_smob): Remove typedef.
      	* guile/scm-ports.c (struct ioscm_memory_port): Remove typedef.
      	* guile/scm-value.c (struct value_smob): Remove typedef.
      	* guile/scm-lazy-string.c (lazy_string_smob): Remove typedef.
      	* guile/guile-internal.h (struct scheme_variable)
      	(struct scheme_function, struct scheme_integer_constant)
      	(struct gdb_smob, struct chained_gdb_smob)
      	(struct eqable_gdb_smob, arch_smob, frame_smob, iterator_smob)
      	(objfile_smob, pspace_smob, type_smob): Remove typedef.
      	* guile/scm-pretty-print.c (pretty_printer_smob): Remove typedef.
      	(struct pretty_printer_worker_smob): Remove typedef.
      	* guile/scm-exception.c (struct exception_smob): Remove typedef.
      	* python/py-block.c (struct block_object): Remove typedef.
      	(block_syms_iterator_object): Update.
      	(set_block): Update.
      	(block_syms_iterator_object): Remove typedef.
      	* python/py-inferior.c (struct membuf_object): Remove typedef.
      	* python/py-symtab.c (struct symtab_object): Remove typedef.
      	(set_symtab): Update.
      	(sal_object): Remove typedef.
      	(set_sal): Update.
      	* python/py-frame.c (frame_object): Remove typedef.
      	* python/py-record-btrace.c (struct btpy_list_object): Remove
      	typedef.
      	* python/py-arch.c (struct arch_object): Remove typedef.
      	* python/py-linetable.c (struct linetable_entry_object)
      	(linetable_object, struct ltpy_iterator_object): Remove typedef.
      	* python/py-events.h (eventregistry_object): Remove typedef.
      	(struct events_object): Remove typedef.
      	* python/python-internal.h (gdbpy_breakpoint_object): Remove
      	typedef.
      	(thread_object): Remove typedef.
      	* python/py-progspace.c (pspace_object): Remove typedef.
      	* python/py-value.c (struct value_object): Remove typedef.
      	* python/py-record.h (recpy_record_object): Remove typedef.
      	(struct recpy_element_object): Remove typedef.
      	* python/py-lazy-string.c (lazy_string_object): Remove typedef.
      	* python/py-objfile.c (objfile_object): Remove typedef.
      	* python/py-cmd.c (struct cmdpy_object): Remove typedef.
      	* python/py-type.c (type_object): Remove typedef.
      	(typy_iterator_object): Update.
      	(set_type): Update.
      	(field_object): Remove typedef.
      	(typy_iterator_object): Remove typedef.
      	* python/py-registers.c (register_descriptor_iterator_object):
      	Remove typedef.
      	(struct register_descriptor_object)
      	(struct reggroup_iterator_object, struct reggroup_object): Remove
      	typedef.
      	* python/py-record.c (recpy_gap_object): Remove typedef.
      	* python/py-symbol.c (symbol_object): Remove typedef.
      	(set_symbol): Update.
      	* python/py-event.h (event_object): Remove typedef.
      	* python/py-param.c (parmpy_object): Remove typedef.
      	* python/py-instruction.c (struct py_insn_obj): Remove typedef.
      	* python/py-unwind.c (struct pending_frame_object): Remove typedef.
      	(unwind_info_object, struct cached_frame_info): Likewise.
      f99b5177
  13. Nov 02, 2020
    • Simon Marchi's avatar
      gdb, gdbserver, gdbsupport: fix leading space vs tabs issues · dda83cd7
      Simon Marchi authored
      Many spots incorrectly use only spaces for indentation (for example,
      there are a lot of spots in ada-lang.c).  I've always found it awkward
      when I needed to edit one of these spots: do I keep the original wrong
      indentation, or do I fix it?  What if the lines around it are also
      wrong, do I fix them too?  I probably don't want to fix them in the same
      patch, to avoid adding noise to my patch.
      
      So I propose to fix as much as possible once and for all (hopefully).
      
      One typical counter argument for this is that it makes code archeology
      more difficult, because git-blame will show this commit as the last
      change for these lines.  My counter counter argument is: when
      git-blaming, you often need to do "blame the file at the parent commit"
      anyway, to go past some other refactor that touched the line you are
      interested in, but is not the change you are looking for.  So you
      already need a somewhat efficient way to do this.
      
      Using some interactive tool, rather than plain git-blame, makes this
      trivial.  For example, I use "tig blame <file>", where going back past
      the commit that changed the currently selected line is one keystroke.
      It looks like Magit in Emacs does it too (though I've never used it).
      Web viewers of Github and Gitlab do it too.  My point is that it won't
      really make archeology more difficult.
      
      The other typical counter argument is that it will cause conflicts with
      existing patches.  That's true... but it's a one time cost, and those
      are not conflicts that are difficult to resolve.  I have also tried "git
      rebase --ignore-whitespace", it seems to work well.  Although that will
      re-introduce the faulty indentation, so one needs to take care of fixing
      the indentation in the patch after that (which is easy).
      
      gdb/ChangeLog:
      
      	* aarch64-linux-tdep.c: Fix indentation.
      	* aarch64-ravenscar-thread.c: Fix indentation.
      	* aarch64-tdep.c: Fix indentation.
      	* aarch64-tdep.h: Fix indentation.
      	* ada-lang.c: Fix indentation.
      	* ada-lang.h: Fix indentation.
      	* ada-tasks.c: Fix indentation.
      	* ada-typeprint.c: Fix indentation.
      	* ada-valprint.c: Fix indentation.
      	* ada-varobj.c: Fix indentation.
      	* addrmap.c: Fix indentation.
      	* addrmap.h: Fix indentation.
      	* agent.c: Fix indentation.
      	* aix-thread.c: Fix indentation.
      	* alpha-bsd-nat.c: Fix indentation.
      	* alpha-linux-tdep.c: Fix indentation.
      	* alpha-mdebug-tdep.c: Fix indentation.
      	* alpha-nbsd-tdep.c: Fix indentation.
      	* alpha-obsd-tdep.c: Fix indentation.
      	* alpha-tdep.c: Fix indentation.
      	* amd64-bsd-nat.c: Fix indentation.
      	* amd64-darwin-tdep.c: Fix indentation.
      	* amd64-linux-nat.c: Fix indentation.
      	* amd64-linux-tdep.c: Fix indentation.
      	* amd64-nat.c: Fix indentation.
      	* amd64-obsd-tdep.c: Fix indentation.
      	* amd64-tdep.c: Fix indentation.
      	* amd64-windows-tdep.c: Fix indentation.
      	* annotate.c: Fix indentation.
      	* arc-tdep.c: Fix indentation.
      	* arch-utils.c: Fix indentation.
      	* arch/arm-get-next-pcs.c: Fix indentation.
      	* arch/arm.c: Fix indentation.
      	* arm-linux-nat.c: Fix indentation.
      	* arm-linux-tdep.c: Fix indentation.
      	* arm-nbsd-tdep.c: Fix indentation.
      	* arm-pikeos-tdep.c: Fix indentation.
      	* arm-tdep.c: Fix indentation.
      	* arm-tdep.h: Fix indentation.
      	* arm-wince-tdep.c: Fix indentation.
      	* auto-load.c: Fix indentation.
      	* auxv.c: Fix indentation.
      	* avr-tdep.c: Fix indentation.
      	* ax-gdb.c: Fix indentation.
      	* ax-general.c: Fix indentation.
      	* bfin-linux-tdep.c: Fix indentation.
      	* block.c: Fix indentation.
      	* block.h: Fix indentation.
      	* blockframe.c: Fix indentation.
      	* bpf-tdep.c: Fix indentation.
      	* break-catch-sig.c: Fix indentation.
      	* break-catch-syscall.c: Fix indentation.
      	* break-catch-throw.c: Fix indentation.
      	* breakpoint.c: Fix indentation.
      	* breakpoint.h: Fix indentation.
      	* bsd-uthread.c: Fix indentation.
      	* btrace.c: Fix indentation.
      	* build-id.c: Fix indentation.
      	* buildsym-legacy.h: Fix indentation.
      	* buildsym.c: Fix indentation.
      	* c-typeprint.c: Fix indentation.
      	* c-valprint.c: Fix indentation.
      	* c-varobj.c: Fix indentation.
      	* charset.c: Fix indentation.
      	* cli/cli-cmds.c: Fix indentation.
      	* cli/cli-decode.c: Fix indentation.
      	* cli/cli-decode.h: Fix indentation.
      	* cli/cli-script.c: Fix indentation.
      	* cli/cli-setshow.c: Fix indentation.
      	* coff-pe-read.c: Fix indentation.
      	* coffread.c: Fix indentation.
      	* compile/compile-cplus-types.c: Fix indentation.
      	* compile/compile-object-load.c: Fix indentation.
      	* compile/compile-object-run.c: Fix indentation.
      	* completer.c: Fix indentation.
      	* corefile.c: Fix indentation.
      	* corelow.c: Fix indentation.
      	* cp-abi.h: Fix indentation.
      	* cp-namespace.c: Fix indentation.
      	* cp-support.c: Fix indentation.
      	* cp-valprint.c: Fix indentation.
      	* cris-linux-tdep.c: Fix indentation.
      	* cris-tdep.c: Fix indentation.
      	* darwin-nat-info.c: Fix indentation.
      	* darwin-nat.c: Fix indentation.
      	* darwin-nat.h: Fix indentation.
      	* dbxread.c: Fix indentation.
      	* dcache.c: Fix indentation.
      	* disasm.c: Fix indentation.
      	* dtrace-probe.c: Fix indentation.
      	* dwarf2/abbrev.c: Fix indentation.
      	* dwarf2/attribute.c: Fix indentation.
      	* dwarf2/expr.c: Fix indentation.
      	* dwarf2/frame.c: Fix indentation.
      	* dwarf2/index-cache.c: Fix indentation.
      	* dwarf2/index-write.c: Fix indentation.
      	* dwarf2/line-header.c: Fix indentation.
      	* dwarf2/loc.c: Fix indentation.
      	* dwarf2/macro.c: Fix indentation.
      	* dwarf2/read.c: Fix indentation.
      	* dwarf2/read.h: Fix indentation.
      	* elfread.c: Fix indentation.
      	* eval.c: Fix indentation.
      	* event-top.c: Fix indentation.
      	* exec.c: Fix indentation.
      	* exec.h: Fix indentation.
      	* expprint.c: Fix indentation.
      	* f-lang.c: Fix indentation.
      	* f-typeprint.c: Fix indentation.
      	* f-valprint.c: Fix indentation.
      	* fbsd-nat.c: Fix indentation.
      	* fbsd-tdep.c: Fix indentation.
      	* findvar.c: Fix indentation.
      	* fork-child.c: Fix indentation.
      	* frame-unwind.c: Fix indentation.
      	* frame-unwind.h: Fix indentation.
      	* frame.c: Fix indentation.
      	* frv-linux-tdep.c: Fix indentation.
      	* frv-tdep.c: Fix indentation.
      	* frv-tdep.h: Fix indentation.
      	* ft32-tdep.c: Fix indentation.
      	* gcore.c: Fix indentation.
      	* gdb_bfd.c: Fix indentation.
      	* gdbarch.sh: Fix indentation.
      	* gdbarch.c: Re-generate
      	* gdbarch.h: Re-generate.
      	* gdbcore.h: Fix indentation.
      	* gdbthread.h: Fix indentation.
      	* gdbtypes.c: Fix indentation.
      	* gdbtypes.h: Fix indentation.
      	* glibc-tdep.c: Fix indentation.
      	* gnu-nat.c: Fix indentation.
      	* gnu-nat.h: Fix indentation.
      	* gnu-v2-abi.c: Fix indentation.
      	* gnu-v3-abi.c: Fix indentation.
      	* go32-nat.c: Fix indentation.
      	* guile/guile-internal.h: Fix indentation.
      	* guile/scm-cmd.c: Fix indentation.
      	* guile/scm-frame.c: Fix indentation.
      	* guile/scm-iterator.c: Fix indentation.
      	* guile/scm-math.c: Fix indentation.
      	* guile/scm-ports.c: Fix indentation.
      	* guile/scm-pretty-print.c: Fix indentation.
      	* guile/scm-value.c: Fix indentation.
      	* h8300-tdep.c: Fix indentation.
      	* hppa-linux-nat.c: Fix indentation.
      	* hppa-linux-tdep.c: Fix indentation.
      	* hppa-nbsd-nat.c: Fix indentation.
      	* hppa-nbsd-tdep.c: Fix indentation.
      	* hppa-obsd-nat.c: Fix indentation.
      	* hppa-tdep.c: Fix indentation.
      	* hppa-tdep.h: Fix indentation.
      	* i386-bsd-nat.c: Fix indentation.
      	* i386-darwin-nat.c: Fix indentation.
      	* i386-darwin-tdep.c: Fix indentation.
      	* i386-dicos-tdep.c: Fix indentation.
      	* i386-gnu-nat.c: Fix indentation.
      	* i386-linux-nat.c: Fix indentation.
      	* i386-linux-tdep.c: Fix indentation.
      	* i386-nto-tdep.c: Fix indentation.
      	* i386-obsd-tdep.c: Fix indentation.
      	* i386-sol2-nat.c: Fix indentation.
      	* i386-tdep.c: Fix indentation.
      	* i386-tdep.h: Fix indentation.
      	* i386-windows-tdep.c: Fix indentation.
      	* i387-tdep.c: Fix indentation.
      	* i387-tdep.h: Fix indentation.
      	* ia64-libunwind-tdep.c: Fix indentation.
      	* ia64-libunwind-tdep.h: Fix indentation.
      	* ia64-linux-nat.c: Fix indentation.
      	* ia64-linux-tdep.c: Fix indentation.
      	* ia64-tdep.c: Fix indentation.
      	* ia64-tdep.h: Fix indentation.
      	* ia64-vms-tdep.c: Fix indentation.
      	* infcall.c: Fix indentation.
      	* infcmd.c: Fix indentation.
      	* inferior.c: Fix indentation.
      	* infrun.c: Fix indentation.
      	* iq2000-tdep.c: Fix indentation.
      	* language.c: Fix indentation.
      	* linespec.c: Fix indentation.
      	* linux-fork.c: Fix indentation.
      	* linux-nat.c: Fix indentation.
      	* linux-tdep.c: Fix indentation.
      	* linux-thread-db.c: Fix indentation.
      	* lm32-tdep.c: Fix indentation.
      	* m2-lang.c: Fix indentation.
      	* m2-typeprint.c: Fix indentation.
      	* m2-valprint.c: Fix indentation.
      	* m32c-tdep.c: Fix indentation.
      	* m32r-linux-tdep.c: Fix indentation.
      	* m32r-tdep.c: Fix indentation.
      	* m68hc11-tdep.c: Fix indentation.
      	* m68k-bsd-nat.c: Fix indentation.
      	* m68k-linux-nat.c: Fix indentation.
      	* m68k-linux-tdep.c: Fix indentation.
      	* m68k-tdep.c: Fix indentation.
      	* machoread.c: Fix indentation.
      	* macrocmd.c: Fix indentation.
      	* macroexp.c: Fix indentation.
      	* macroscope.c: Fix indentation.
      	* macrotab.c: Fix indentation.
      	* macrotab.h: Fix indentation.
      	* main.c: Fix indentation.
      	* mdebugread.c: Fix indentation.
      	* mep-tdep.c: Fix indentation.
      	* mi/mi-cmd-catch.c: Fix indentation.
      	* mi/mi-cmd-disas.c: Fix indentation.
      	* mi/mi-cmd-env.c: Fix indentation.
      	* mi/mi-cmd-stack.c: Fix indentation.
      	* mi/mi-cmd-var.c: Fix indentation.
      	* mi/mi-cmds.c: Fix indentation.
      	* mi/mi-main.c: Fix indentation.
      	* mi/mi-parse.c: Fix indentation.
      	* microblaze-tdep.c: Fix indentation.
      	* minidebug.c: Fix indentation.
      	* minsyms.c: Fix indentation.
      	* mips-linux-nat.c: Fix indentation.
      	* mips-linux-tdep.c: Fix indentation.
      	* mips-nbsd-tdep.c: Fix indentation.
      	* mips-tdep.c: Fix indentation.
      	* mn10300-linux-tdep.c: Fix indentation.
      	* mn10300-tdep.c: Fix indentation.
      	* moxie-tdep.c: Fix indentation.
      	* msp430-tdep.c: Fix indentation.
      	* namespace.h: Fix indentation.
      	* nat/fork-inferior.c: Fix indentation.
      	* nat/gdb_ptrace.h: Fix indentation.
      	* nat/linux-namespaces.c: Fix indentation.
      	* nat/linux-osdata.c: Fix indentation.
      	* nat/netbsd-nat.c: Fix indentation.
      	* nat/x86-dregs.c: Fix indentation.
      	* nbsd-nat.c: Fix indentation.
      	* nbsd-tdep.c: Fix indentation.
      	* nios2-linux-tdep.c: Fix indentation.
      	* nios2-tdep.c: Fix indentation.
      	* nto-procfs.c: Fix indentation.
      	* nto-tdep.c: Fix indentation.
      	* objfiles.c: Fix indentation.
      	* objfiles.h: Fix indentation.
      	* opencl-lang.c: Fix indentation.
      	* or1k-tdep.c: Fix indentation.
      	* osabi.c: Fix indentation.
      	* osabi.h: Fix indentation.
      	* osdata.c: Fix indentation.
      	* p-lang.c: Fix indentation.
      	* p-typeprint.c: Fix indentation.
      	* p-valprint.c: Fix indentation.
      	* parse.c: Fix indentation.
      	* ppc-linux-nat.c: Fix indentation.
      	* ppc-linux-tdep.c: Fix indentation.
      	* ppc-nbsd-nat.c: Fix indentation.
      	* ppc-nbsd-tdep.c: Fix indentation.
      	* ppc-obsd-nat.c: Fix indentation.
      	* ppc-ravenscar-thread.c: Fix indentation.
      	* ppc-sysv-tdep.c: Fix indentation.
      	* ppc64-tdep.c: Fix indentation.
      	* printcmd.c: Fix indentation.
      	* proc-api.c: Fix indentation.
      	* producer.c: Fix indentation.
      	* producer.h: Fix indentation.
      	* prologue-value.c: Fix indentation.
      	* prologue-value.h: Fix indentation.
      	* psymtab.c: Fix indentation.
      	* python/py-arch.c: Fix indentation.
      	* python/py-bpevent.c: Fix indentation.
      	* python/py-event.c: Fix indentation.
      	* python/py-event.h: Fix indentation.
      	* python/py-finishbreakpoint.c: Fix indentation.
      	* python/py-frame.c: Fix indentation.
      	* python/py-framefilter.c: Fix indentation.
      	* python/py-inferior.c: Fix indentation.
      	* python/py-infthread.c: Fix indentation.
      	* python/py-objfile.c: Fix indentation.
      	* python/py-prettyprint.c: Fix indentation.
      	* python/py-registers.c: Fix indentation.
      	* python/py-signalevent.c: Fix indentation.
      	* python/py-stopevent.c: Fix indentation.
      	* python/py-stopevent.h: Fix indentation.
      	* python/py-threadevent.c: Fix indentation.
      	* python/py-tui.c: Fix indentation.
      	* python/py-unwind.c: Fix indentation.
      	* python/py-value.c: Fix indentation.
      	* python/py-xmethods.c: Fix indentation.
      	* python/python-internal.h: Fix indentation.
      	* python/python.c: Fix indentation.
      	* ravenscar-thread.c: Fix indentation.
      	* record-btrace.c: Fix indentation.
      	* record-full.c: Fix indentation.
      	* record.c: Fix indentation.
      	* reggroups.c: Fix indentation.
      	* regset.h: Fix indentation.
      	* remote-fileio.c: Fix indentation.
      	* remote.c: Fix indentation.
      	* reverse.c: Fix indentation.
      	* riscv-linux-tdep.c: Fix indentation.
      	* riscv-ravenscar-thread.c: Fix indentation.
      	* riscv-tdep.c: Fix indentation.
      	* rl78-tdep.c: Fix indentation.
      	* rs6000-aix-tdep.c: Fix indentation.
      	* rs6000-lynx178-tdep.c: Fix indentation.
      	* rs6000-nat.c: Fix indentation.
      	* rs6000-tdep.c: Fix indentation.
      	* rust-lang.c: Fix indentation.
      	* rx-tdep.c: Fix indentation.
      	* s12z-tdep.c: Fix indentation.
      	* s390-linux-tdep.c: Fix indentation.
      	* score-tdep.c: Fix indentation.
      	* ser-base.c: Fix indentation.
      	* ser-mingw.c: Fix indentation.
      	* ser-uds.c: Fix indentation.
      	* ser-unix.c: Fix indentation.
      	* serial.c: Fix indentation.
      	* sh-linux-tdep.c: Fix indentation.
      	* sh-nbsd-tdep.c: Fix indentation.
      	* sh-tdep.c: Fix indentation.
      	* skip.c: Fix indentation.
      	* sol-thread.c: Fix indentation.
      	* solib-aix.c: Fix indentation.
      	* solib-darwin.c: Fix indentation.
      	* solib-frv.c: Fix indentation.
      	* solib-svr4.c: Fix indentation.
      	* solib.c: Fix indentation.
      	* source.c: Fix indentation.
      	* sparc-linux-tdep.c: Fix indentation.
      	* sparc-nbsd-tdep.c: Fix indentation.
      	* sparc-obsd-tdep.c: Fix indentation.
      	* sparc-ravenscar-thread.c: Fix indentation.
      	* sparc-tdep.c: Fix indentation.
      	* sparc64-linux-tdep.c: Fix indentation.
      	* sparc64-nbsd-tdep.c: Fix indentation.
      	* sparc64-obsd-tdep.c: Fix indentation.
      	* sparc64-tdep.c: Fix indentation.
      	* stabsread.c: Fix indentation.
      	* stack.c: Fix indentation.
      	* stap-probe.c: Fix indentation.
      	* stubs/ia64vms-stub.c: Fix indentation.
      	* stubs/m32r-stub.c: Fix indentation.
      	* stubs/m68k-stub.c: Fix indentation.
      	* stubs/sh-stub.c: Fix indentation.
      	* stubs/sparc-stub.c: Fix indentation.
      	* symfile-mem.c: Fix indentation.
      	* symfile.c: Fix indentation.
      	* symfile.h: Fix indentation.
      	* symmisc.c: Fix indentation.
      	* symtab.c: Fix indentation.
      	* symtab.h: Fix indentation.
      	* target-float.c: Fix indentation.
      	* target.c: Fix indentation.
      	* target.h: Fix indentation.
      	* tic6x-tdep.c: Fix indentation.
      	* tilegx-linux-tdep.c: Fix indentation.
      	* tilegx-tdep.c: Fix indentation.
      	* top.c: Fix indentation.
      	* tracefile-tfile.c: Fix indentation.
      	* tracepoint.c: Fix indentation.
      	* tui/tui-disasm.c: Fix indentation.
      	* tui/tui-io.c: Fix indentation.
      	* tui/tui-regs.c: Fix indentation.
      	* tui/tui-stack.c: Fix indentation.
      	* tui/tui-win.c: Fix indentation.
      	* tui/tui-winsource.c: Fix indentation.
      	* tui/tui.c: Fix indentation.
      	* typeprint.c: Fix indentation.
      	* ui-out.h: Fix indentation.
      	* unittests/copy_bitwise-selftests.c: Fix indentation.
      	* unittests/memory-map-selftests.c: Fix indentation.
      	* utils.c: Fix indentation.
      	* v850-tdep.c: Fix indentation.
      	* valarith.c: Fix indentation.
      	* valops.c: Fix indentation.
      	* valprint.c: Fix indentation.
      	* valprint.h: Fix indentation.
      	* value.c: Fix indentation.
      	* value.h: Fix indentation.
      	* varobj.c: Fix indentation.
      	* vax-tdep.c: Fix indentation.
      	* windows-nat.c: Fix indentation.
      	* windows-tdep.c: Fix indentation.
      	* xcoffread.c: Fix indentation.
      	* xml-syscall.c: Fix indentation.
      	* xml-tdesc.c: Fix indentation.
      	* xstormy16-tdep.c: Fix indentation.
      	* xtensa-config.c: Fix indentation.
      	* xtensa-linux-nat.c: Fix indentation.
      	* xtensa-linux-tdep.c: Fix indentation.
      	* xtensa-tdep.c: Fix indentation.
      
      gdbserver/ChangeLog:
      
      	* ax.cc: Fix indentation.
      	* dll.cc: Fix indentation.
      	* inferiors.h: Fix indentation.
      	* linux-low.cc: Fix indentation.
      	* linux-nios2-low.cc: Fix indentation.
      	* linux-ppc-ipa.cc: Fix indentation.
      	* linux-ppc-low.cc: Fix indentation.
      	* linux-x86-low.cc: Fix indentation.
      	* linux-xtensa-low.cc: Fix indentation.
      	* regcache.cc: Fix indentation.
      	* server.cc: Fix indentation.
      	* tracepoint.cc: Fix indentation.
      
      gdbsupport/ChangeLog:
      
      	* common-exceptions.h: Fix indentation.
      	* event-loop.cc: Fix indentation.
      	* fileio.cc: Fix indentation.
      	* filestuff.cc: Fix indentation.
      	* gdb-dlfcn.cc: Fix indentation.
      	* gdb_string_view.h: Fix indentation.
      	* job-control.cc: Fix indentation.
      	* signals.cc: Fix indentation.
      
      Change-Id: I4bad7ae6be0fbe14168b8ebafb98ffe14964a695
      dda83cd7
  14. Sep 15, 2020
    • Tom Tromey's avatar
      Don't use gdb_py_long_from_ulongest · d1cab987
      Tom Tromey authored
      Remove the gdb_py_long_from_ulongest defines and change the Python
      layer to prefer gdb_py_object_from_ulongest.  While writing this I
      noticed that the error handling in archpy_disassemble was incorrect --
      it could call PyDict_SetItemString with a NULL value.  This patch also
      fixes this bug.
      
      gdb/ChangeLog
      2020-09-15  Tom Tromey  <tromey@adacore.com>
      
      	* python/python-internal.h (gdb_py_long_from_ulongest): Remove
      	defines.
      	* python/py-value.c (valpy_long): Use
      	gdb_py_object_from_ulongest.
      	* python/py-symtab.c (salpy_get_pc): Use
      	gdb_py_object_from_ulongest.
      	(salpy_get_last): Likewise.
      	* python/py-record-btrace.c (recpy_bt_insn_pc): Use
      	gdb_py_object_from_ulongest.
      	* python/py-lazy-string.c (stpy_get_address): Use
      	gdb_py_object_from_ulongest.
      	* python/py-frame.c (frapy_pc): Use gdb_py_object_from_ulongest.
      	* python/py-arch.c (archpy_disassemble): Use
      	gdb_py_object_from_ulongest and gdb_py_object_from_longest.  Fix
      	error handling.
      d1cab987
  15. Jul 06, 2020
    • Andrew Burgess's avatar
      gdb/python: New method to access list of register groups · 64cb3757
      Andrew Burgess authored
      Add a new method gdb.Architecture.register_groups which returns a new
      object of type gdb.RegisterGroupsIterator.  This new iterator then
      returns objects of type gdb.RegisterGroup.
      
      Each gdb.RegisterGroup object just wraps a single reggroup pointer,
      and (currently) has just one read-only property 'name' that is a
      string, the name of the register group.
      
      As with the previous commit (adding gdb.RegisterDescriptor) I made
      gdb.RegisterGroup an object rather than just a string in case we want
      to add additional properties in the future.
      
      gdb/ChangeLog:
      
      	* NEWS: Mention additions to Python API.
      	* python/py-arch.c (archpy_register_groups): New function.
      	(arch_object_methods): Add 'register_groups' method.
      	* python/py-registers.c (reggroup_iterator_object): New struct.
      	(reggroup_object): New struct.
      	(gdbpy_new_reggroup): New function.
      	(gdbpy_reggroup_to_string): New function.
      	(gdbpy_reggroup_name): New function.
      	(gdbpy_reggroup_iter): New function.
      	(gdbpy_reggroup_iter_next): New function.
      	(gdbpy_new_reggroup_iterator): New function
      	(gdbpy_initialize_registers): Register new types.
      	(reggroup_iterator_object_type): Define new Python type.
      	(gdbpy_reggroup_getset): New static global.
      	(reggroup_object_type): Define new Python type.
      	* python/python-internal.h
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.python/py-arch-reg-groups.exp: New file.
      
      gdb/doc/ChangeLog:
      
      	* gdb.texi (Registers): Add @anchor for 'info registers
      	<reggroup>' command.
      	* python.texi (Architectures In Python): Document new
      	register_groups method.
      	(Registers In Python): Document two new object types related to
      	register groups.
      64cb3757
    • Andrew Burgess's avatar
      gdb/python: Add gdb.Architecture.registers method · 0f767f94
      Andrew Burgess authored
      This commit adds a new method gdb.Architecture.registers that returns
      an object of the new type gdb.RegisterDescriptorIterator.  This
      iterator returns objects of the new type gdb.RegisterDescriptor.
      
      A RegisterDescriptor is not a way to read the value of a register,
      this is already covered by Frame.read_register, a RegisterDescriptor
      is simply a way to discover from Python, which registers are
      available for a given architecture.
      
      I did consider just returning a string, the name of each register,
      instead of a RegisterDescriptor, however, I'm aware that it we don't
      want to break the existing Python API in any way, so if I return just
      a string now, but in the future we want more information about a
      register then we would have to add a second API to get that
      information.  By going straight to a descriptor object now, it is easy
      to add additional properties in the future should we wish to.
      
      Right now the only property of a register that a user can access is
      the name of the register.
      
      In future we might want to be able to ask the register about is
      register groups, or its type.
      
      gdb/ChangeLog:
      
      	* Makefile.in (SUBDIR_PYTHON_SRCS): Add py-registers.c
      	* python/py-arch.c (archpy_registers): New function.
      	(arch_object_methods): Add 'registers' method.
      	* python/py-registers.c: New file.
      	* python/python-internal.h
      	(gdbpy_new_register_descriptor_iterator): Declare.
      	(gdbpy_initialize_registers): Declare.
      	* python/python.c (do_start_initialization): Call
      	gdbpy_initialize_registers.
      	* NEWS: Mention additions to the Python API.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.python/py-arch-reg-names.exp: New file.
      
      gdb/doc/ChangeLog:
      
      	* python.texi (Python API): Add new section the menu.
      	(Frames In Python): Add new @anchor.
      	(Architectures In Python): Document new registers method.
      	(Registers In Python): New section.
      0f767f94
  16. Jan 01, 2020
  17. Apr 08, 2019
    • Tom Tromey's avatar
      Rename gdb exception types · 230d2906
      Tom Tromey authored
      This renames the gdb exception types.  The old types were only needed
      due to the macros in common-exception.h that are now gone.
      
      The intermediate layer of gdb_exception_RETURN_MASK_ALL did not seem
      needed, so this patch removes it entirely.
      
      gdb/ChangeLog
      2019-04-08  Tom Tromey  <tom@tromey.com>
      
      	* common/common-exceptions.h (gdb_exception_RETURN_MASK_ALL):
      	Remove.
      	(gdb_exception_error): Rename from
      	gdb_exception_RETURN_MASK_ERROR.
      	(gdb_exception_quit): Rename from gdb_exception_RETURN_MASK_QUIT.
      	(gdb_quit_bad_alloc): Update.
      	* aarch64-tdep.c: Update.
      	* ada-lang.c: Update.
      	* ada-typeprint.c: Update.
      	* ada-valprint.c: Update.
      	* amd64-tdep.c: Update.
      	* arch-utils.c: Update.
      	* break-catch-throw.c: Update.
      	* breakpoint.c: Update.
      	* btrace.c: Update.
      	* c-varobj.c: Update.
      	* cli/cli-cmds.c: Update.
      	* cli/cli-interp.c: Update.
      	* cli/cli-script.c: Update.
      	* common/common-exceptions.c: Update.
      	* common/new-op.c: Update.
      	* common/selftest.c: Update.
      	* compile/compile-c-symbols.c: Update.
      	* compile/compile-cplus-symbols.c: Update.
      	* compile/compile-object-load.c: Update.
      	* compile/compile-object-run.c: Update.
      	* completer.c: Update.
      	* corelow.c: Update.
      	* cp-abi.c: Update.
      	* cp-support.c: Update.
      	* cp-valprint.c: Update.
      	* darwin-nat.c: Update.
      	* disasm-selftests.c: Update.
      	* dtrace-probe.c: Update.
      	* dwarf-index-cache.c: Update.
      	* dwarf-index-write.c: Update.
      	* dwarf2-frame-tailcall.c: Update.
      	* dwarf2-frame.c: Update.
      	* dwarf2loc.c: Update.
      	* dwarf2read.c: Update.
      	* eval.c: Update.
      	* event-loop.c: Update.
      	* event-top.c: Update.
      	* exec.c: Update.
      	* f-valprint.c: Update.
      	* fbsd-tdep.c: Update.
      	* frame-unwind.c: Update.
      	* frame.c: Update.
      	* gdbtypes.c: Update.
      	* gnu-v3-abi.c: Update.
      	* guile/guile-internal.h: Update.
      	* guile/scm-block.c: Update.
      	* guile/scm-breakpoint.c: Update.
      	* guile/scm-cmd.c: Update.
      	* guile/scm-disasm.c: Update.
      	* guile/scm-frame.c: Update.
      	* guile/scm-lazy-string.c: Update.
      	* guile/scm-math.c: Update.
      	* guile/scm-param.c: Update.
      	* guile/scm-ports.c: Update.
      	* guile/scm-pretty-print.c: Update.
      	* guile/scm-symbol.c: Update.
      	* guile/scm-symtab.c: Update.
      	* guile/scm-type.c: Update.
      	* guile/scm-value.c: Update.
      	* i386-linux-tdep.c: Update.
      	* i386-tdep.c: Update.
      	* inf-loop.c: Update.
      	* infcall.c: Update.
      	* infcmd.c: Update.
      	* infrun.c: Update.
      	* jit.c: Update.
      	* language.c: Update.
      	* linespec.c: Update.
      	* linux-fork.c: Update.
      	* linux-nat.c: Update.
      	* linux-tdep.c: Update.
      	* linux-thread-db.c: Update.
      	* main.c: Update.
      	* mi/mi-cmd-break.c: Update.
      	* mi/mi-cmd-stack.c: Update.
      	* mi/mi-interp.c: Update.
      	* mi/mi-main.c: Update.
      	* objc-lang.c: Update.
      	* p-valprint.c: Update.
      	* parse.c: Update.
      	* ppc-linux-tdep.c: Update.
      	* printcmd.c: Update.
      	* python/py-arch.c: Update.
      	* python/py-breakpoint.c: Update.
      	* python/py-cmd.c: Update.
      	* python/py-finishbreakpoint.c: Update.
      	* python/py-frame.c: Update.
      	* python/py-framefilter.c: Update.
      	* python/py-gdb-readline.c: Update.
      	* python/py-inferior.c: Update.
      	* python/py-infthread.c: Update.
      	* python/py-lazy-string.c: Update.
      	* python/py-linetable.c: Update.
      	* python/py-objfile.c: Update.
      	* python/py-param.c: Update.
      	* python/py-prettyprint.c: Update.
      	* python/py-progspace.c: Update.
      	* python/py-record-btrace.c: Update.
      	* python/py-record.c: Update.
      	* python/py-symbol.c: Update.
      	* python/py-type.c: Update.
      	* python/py-unwind.c: Update.
      	* python/py-utils.c: Update.
      	* python/py-value.c: Update.
      	* python/python.c: Update.
      	* record-btrace.c: Update.
      	* record-full.c: Update.
      	* remote-fileio.c: Update.
      	* remote.c: Update.
      	* riscv-tdep.c: Update.
      	* rs6000-aix-tdep.c: Update.
      	* rs6000-tdep.c: Update.
      	* rust-exp.y: Update.
      	* rust-lang.c: Update.
      	* s390-tdep.c: Update.
      	* selftest-arch.c: Update.
      	* solib-dsbt.c: Update.
      	* solib-frv.c: Update.
      	* solib-spu.c: Update.
      	* solib-svr4.c: Update.
      	* solib.c: Update.
      	* sparc64-linux-tdep.c: Update.
      	* stack.c: Update.
      	* symfile-mem.c: Update.
      	* symmisc.c: Update.
      	* target.c: Update.
      	* thread.c: Update.
      	* top.c: Update.
      	* tracefile-tfile.c: Update.
      	* tui/tui.c: Update.
      	* typeprint.c: Update.
      	* unittests/cli-utils-selftests.c: Update.
      	* unittests/parse-connection-spec-selftests.c: Update.
      	* valops.c: Update.
      	* valprint.c: Update.
      	* value.c: Update.
      	* varobj.c: Update.
      	* windows-nat.c: Update.
      	* x86-linux-nat.c: Update.
      	* xml-support.c: Update.
      
      gdb/gdbserver/ChangeLog
      2019-04-08  Tom Tromey  <tom@tromey.com>
      
      	* gdbreplay.c: Update.
      	* linux-low.c: Update.
      	* server.c: Update.
      230d2906
    • Tom Tromey's avatar
      Rewrite TRY/CATCH · a70b8144
      Tom Tromey authored
      This rewrites gdb's TRY/CATCH to plain C++ try/catch.  The patch was
      largely written by script, though one change (to a comment in
      common-exceptions.h) was reverted by hand.
      
      gdb/ChangeLog
      2019-04-08  Tom Tromey  <tom@tromey.com>
      
      	* xml-support.c: Use C++ exception handling.
      	* x86-linux-nat.c: Use C++ exception handling.
      	* windows-nat.c: Use C++ exception handling.
      	* varobj.c: Use C++ exception handling.
      	* value.c: Use C++ exception handling.
      	* valprint.c: Use C++ exception handling.
      	* valops.c: Use C++ exception handling.
      	* unittests/parse-connection-spec-selftests.c: Use C++ exception
      	handling.
      	* unittests/cli-utils-selftests.c: Use C++ exception handling.
      	* typeprint.c: Use C++ exception handling.
      	* tui/tui.c: Use C++ exception handling.
      	* tracefile-tfile.c: Use C++ exception handling.
      	* top.c: Use C++ exception handling.
      	* thread.c: Use C++ exception handling.
      	* target.c: Use C++ exception handling.
      	* symmisc.c: Use C++ exception handling.
      	* symfile-mem.c: Use C++ exception handling.
      	* stack.c: Use C++ exception handling.
      	* sparc64-linux-tdep.c: Use C++ exception handling.
      	* solib.c: Use C++ exception handling.
      	* solib-svr4.c: Use C++ exception handling.
      	* solib-spu.c: Use C++ exception handling.
      	* solib-frv.c: Use C++ exception handling.
      	* solib-dsbt.c: Use C++ exception handling.
      	* selftest-arch.c: Use C++ exception handling.
      	* s390-tdep.c: Use C++ exception handling.
      	* rust-lang.c: Use C++ exception handling.
      	* rust-exp.y: Use C++ exception handling.
      	* rs6000-tdep.c: Use C++ exception handling.
      	* rs6000-aix-tdep.c: Use C++ exception handling.
      	* riscv-tdep.c: Use C++ exception handling.
      	* remote.c: Use C++ exception handling.
      	* remote-fileio.c: Use C++ exception handling.
      	* record-full.c: Use C++ exception handling.
      	* record-btrace.c: Use C++ exception handling.
      	* python/python.c: Use C++ exception handling.
      	* python/py-value.c: Use C++ exception handling.
      	* python/py-utils.c: Use C++ exception handling.
      	* python/py-unwind.c: Use C++ exception handling.
      	* python/py-type.c: Use C++ exception handling.
      	* python/py-symbol.c: Use C++ exception handling.
      	* python/py-record.c: Use C++ exception handling.
      	* python/py-record-btrace.c: Use C++ exception handling.
      	* python/py-progspace.c: Use C++ exception handling.
      	* python/py-prettyprint.c: Use C++ exception handling.
      	* python/py-param.c: Use C++ exception handling.
      	* python/py-objfile.c: Use C++ exception handling.
      	* python/py-linetable.c: Use C++ exception handling.
      	* python/py-lazy-string.c: Use C++ exception handling.
      	* python/py-infthread.c: Use C++ exception handling.
      	* python/py-inferior.c: Use C++ exception handling.
      	* python/py-gdb-readline.c: Use C++ exception handling.
      	* python/py-framefilter.c: Use C++ exception handling.
      	* python/py-frame.c: Use C++ exception handling.
      	* python/py-finishbreakpoint.c: Use C++ exception handling.
      	* python/py-cmd.c: Use C++ exception handling.
      	* python/py-breakpoint.c: Use C++ exception handling.
      	* python/py-arch.c: Use C++ exception handling.
      	* printcmd.c: Use C++ exception handling.
      	* ppc-linux-tdep.c: Use C++ exception handling.
      	* parse.c: Use C++ exception handling.
      	* p-valprint.c: Use C++ exception handling.
      	* objc-lang.c: Use C++ exception handling.
      	* mi/mi-main.c: Use C++ exception handling.
      	* mi/mi-interp.c: Use C++ exception handling.
      	* mi/mi-cmd-stack.c: Use C++ exception handling.
      	* mi/mi-cmd-break.c: Use C++ exception handling.
      	* main.c: Use C++ exception handling.
      	* linux-thread-db.c: Use C++ exception handling.
      	* linux-tdep.c: Use C++ exception handling.
      	* linux-nat.c: Use C++ exception handling.
      	* linux-fork.c: Use C++ exception handling.
      	* linespec.c: Use C++ exception handling.
      	* language.c: Use C++ exception handling.
      	* jit.c: Use C++ exception handling.
      	* infrun.c: Use C++ exception handling.
      	* infcmd.c: Use C++ exception handling.
      	* infcall.c: Use C++ exception handling.
      	* inf-loop.c: Use C++ exception handling.
      	* i386-tdep.c: Use C++ exception handling.
      	* i386-linux-tdep.c: Use C++ exception handling.
      	* guile/scm-value.c: Use C++ exception handling.
      	* guile/scm-type.c: Use C++ exception handling.
      	* guile/scm-symtab.c: Use C++ exception handling.
      	* guile/scm-symbol.c: Use C++ exception handling.
      	* guile/scm-pretty-print.c: Use C++ exception handling.
      	* guile/scm-ports.c: Use C++ exception handling.
      	* guile/scm-param.c: Use C++ exception handling.
      	* guile/scm-math.c: Use C++ exception handling.
      	* guile/scm-lazy-string.c: Use C++ exception handling.
      	* guile/scm-frame.c: Use C++ exception handling.
      	* guile/scm-disasm.c: Use C++ exception handling.
      	* guile/scm-cmd.c: Use C++ exception handling.
      	* guile/scm-breakpoint.c: Use C++ exception handling.
      	* guile/scm-block.c: Use C++ exception handling.
      	* guile/guile-internal.h: Use C++ exception handling.
      	* gnu-v3-abi.c: Use C++ exception handling.
      	* gdbtypes.c: Use C++ exception handling.
      	* frame.c: Use C++ exception handling.
      	* frame-unwind.c: Use C++ exception handling.
      	* fbsd-tdep.c: Use C++ exception handling.
      	* f-valprint.c: Use C++ exception handling.
      	* exec.c: Use C++ exception handling.
      	* event-top.c: Use C++ exception handling.
      	* event-loop.c: Use C++ exception handling.
      	* eval.c: Use C++ exception handling.
      	* dwarf2read.c: Use C++ exception handling.
      	* dwarf2loc.c: Use C++ exception handling.
      	* dwarf2-frame.c: Use C++ exception handling.
      	* dwarf2-frame-tailcall.c: Use C++ exception handling.
      	* dwarf-index-write.c: Use C++ exception handling.
      	* dwarf-index-cache.c: Use C++ exception handling.
      	* dtrace-probe.c: Use C++ exception handling.
      	* disasm-selftests.c: Use C++ exception handling.
      	* darwin-nat.c: Use C++ exception handling.
      	* cp-valprint.c: Use C++ exception handling.
      	* cp-support.c: Use C++ exception handling.
      	* cp-abi.c: Use C++ exception handling.
      	* corelow.c: Use C++ exception handling.
      	* completer.c: Use C++ exception handling.
      	* compile/compile-object-run.c: Use C++ exception handling.
      	* compile/compile-object-load.c: Use C++ exception handling.
      	* compile/compile-cplus-symbols.c: Use C++ exception handling.
      	* compile/compile-c-symbols.c: Use C++ exception handling.
      	* common/selftest.c: Use C++ exception handling.
      	* common/new-op.c: Use C++ exception handling.
      	* cli/cli-script.c: Use C++ exception handling.
      	* cli/cli-interp.c: Use C++ exception handling.
      	* cli/cli-cmds.c: Use C++ exception handling.
      	* c-varobj.c: Use C++ exception handling.
      	* btrace.c: Use C++ exception handling.
      	* breakpoint.c: Use C++ exception handling.
      	* break-catch-throw.c: Use C++ exception handling.
      	* arch-utils.c: Use C++ exception handling.
      	* amd64-tdep.c: Use C++ exception handling.
      	* ada-valprint.c: Use C++ exception handling.
      	* ada-typeprint.c: Use C++ exception handling.
      	* ada-lang.c: Use C++ exception handling.
      	* aarch64-tdep.c: Use C++ exception handling.
      
      gdb/gdbserver/ChangeLog
      2019-04-08  Tom Tromey  <tom@tromey.com>
      
      	* server.c: Use C++ exception handling.
      	* linux-low.c: Use C++ exception handling.
      	* gdbreplay.c: Use C++ exception handling.
      a70b8144
  18. 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
  19. Jan 02, 2019
    • Tom Tromey's avatar
      Style improvements in gdb/python · 8833fbf0
      Tom Tromey authored
      This fixes a few minor style issues I found in gdb/python: some
      unnecessary casts, the removal of an unnecessary local variable, and
      one instance of incorrect formatting.
      
      Tested by rebuilding and re-running gdb.python.
      
      gdb/ChangeLog
      2019-01-02  Tom Tromey  <tom@tromey.com>
      
      	* python/py-inferior.c (gdbpy_initialize_inferior): Fix
      	indentation.
      	* python/py-frame.c (frapy_older): Remove cast.
      	(frapy_newer): Likewise.
      	* python/py-breakpoint.c (local_setattro): Remove cast.
      	* python/py-arch.c (archpy_name): Remove local variable.
      	* python/py-type.c (gdbpy_lookup_type): Remove cast.
      8833fbf0
  20. 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
  21. Jan 02, 2018
  22. Apr 05, 2017
    • Pedro Alves's avatar
      -Wwrite-strings: Add a PyArg_ParseTupleAndKeywords "const char *" overload · 2adadf51
      Pedro Alves authored
      -Wwrite-strings flags code like:
      
         static char *keywords[] = {"command", "from_tty", "to_string", NULL };
      
      as needing "(char *)" casts, because string literals are "const char []".
      
      We can get rid of the casts by changing the array type like this:
      
       -  static char *keywords[] = {"command", "from_tty", "to_string", NULL };
       +  static const char *keywords[] = {"command", "from_tty", "to_string", NULL };
      
      However, passing the such array to PyArg_ParseTupleAndKeywords no longer
      works OOTB, because PyArg_ParseTupleAndKeywords expects a "char **":
      
        PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw,
                                    const char *format,
      			      char *keywords[], ...);
      
      and "const char **" is not implicitly convertible to "char **".  C++
      is more tolerant that C here WRT aliasing, and a const_cast<char **>
      is fine.  However, to avoid having all callers do the cast themselves,
      this commit defines a gdb_PyArg_ParseTupleAndKeywords function here
      with a corresponding 'keywords' parameter type that does the cast in a
      single place.
      
      gdb/ChangeLog:
      2017-04-05  Pedro Alves  <palves@redhat.com>
      
      	* python/python-internal.h (gdb_PyArg_ParseTupleAndKeywords): New
      	static inline function.
      	* python/py-arch.c (archpy_disassemble): Constify 'keywords'
      	array and use gdb_PyArg_ParseTupleAndKeywords.
      	* python/py-cmd.c (cmdpy_init): Likewise.
      	* python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
      	* python/py-inferior.c (infpy_read_memory, infpy_write_memory)
      	(infpy_search_memory): Likewise.
      	* python/py-objfile.c (objfpy_add_separate_debug_file)
      	(gdbpy_lookup_objfile): Likewise.
      	* python/py-symbol.c (gdbpy_lookup_symbol)
      	(gdbpy_lookup_global_symbol): Likewise.
      	* python/py-type.c (gdbpy_lookup_type): Likewise.
      	* python/py-value.c (valpy_lazy_string, valpy_string): Likewise.
      	* python/python.c (execute_gdb_command, gdbpy_write, gdbpy_flush):
      	Likewise.
      2adadf51
  23. 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
  24. Feb 02, 2017
    • Pedro Alves's avatar
      Eliminate make_cleanup_ui_file_delete / make ui_file a class hierarchy · d7e74731
      Pedro Alves authored
      This patch starts from the desire to eliminate
      make_cleanup_ui_file_delete, but then goes beyond.  It makes ui_file &
      friends a real C++ class hierarchy, and switches temporary
      ui_file-like objects to stack-based allocation.
      
      - mem_fileopen -> string_file
      
      mem_fileopen is replaced with a new string_file class that is treated
      as a value class created on the stack.  This alone eliminates most
      make_cleanup_ui_file_delete calls, and, simplifies code a whole lot
      (diffstat shows around 1k loc dropped.)
      
      string_file's internal buffer is a std::string, thus the "string" in
      the name.  This simplifies the implementation much, compared to
      mem_fileopen, which managed growing its internal buffer manually.
      
      - ui_file_as_string, ui_file_strdup, ui_file_obsavestring all gone
      
      The new string_file class has a string() method that provides direct
      writable access to the internal std::string buffer.  This replaced
      ui_file_as_string, which forced a copy of the same data the stream had
      inside.  With direct access via a writable reference, we can instead
      move the string out of the string_stream, avoiding deep string
      copying.
      
      Related, ui_file_xstrdup calls are replaced with xstrdup'ping the
      stream's string, and ui_file_obsavestring is replaced by
      obstack_copy0.
      
      With all those out of the way, getting rid of the weird ui_file_put
      mechanism was possible.
      
      - New ui_file::printf, ui_file::puts, etc. methods
      
      These simplify / clarify client code.  I considered splitting
      client-code changes, like these, e.g.:
      
        -  stb = mem_fileopen ();
        -  fprintf_unfiltered (stb, "%s%s%s",
        -		      _("The valid values are:\n"),
        -		      regdesc,
        -		      _("The default is \"std\"."));
        +  string_file stb;
        +  stb.printf ("%s%s%s",
        +	      _("The valid values are:\n"),
        +	      regdesc,
        +	      _("The default is \"std\"."));
      
      In two steps, with the first step leaving fprintf_unfiltered (etc.)
      calls in place, and only afterwards do a pass to change all those to
      call stb.printf etc..  I didn't do that split, because (when I tried),
      it turned out to be pointless make-work: the first pass would have to
      touch the fprintf_unfiltered line anyway, to replace "stb" with
      "&stb".
      
      - gdb_fopen replaced with stack-based objects
      
      This avoids the need for cleanups or unique_ptr's.  I.e., this:
      
            struct ui_file *file = gdb_fopen (filename, "w");
            if (filename == NULL)
       	perror_with_name (filename);
            cleanups = make_cleanup_ui_file_delete (file);
            // use file.
            do_cleanups (cleanups);
      
      is replaced with this:
      
            stdio_file file;
            if (!file.open (filename, "w"))
       	perror_with_name (filename);
            // use file.
      
      - odd contorsions in null_file_write / null_file_fputs around when to
        call to_fputs / to_write eliminated.
      
      - Global null_stream object
      
      A few places that were allocating a ui_file in order to print to
      "nowhere" are adjusted to instead refer to a new 'null_stream' global
      stream.
      
      - TUI's tui_sfileopen eliminated.  TUI's ui_file much simplified
      
      The TUI's ui_file was serving a dual purpose.  It supported being used
      as string buffer, and supported being backed by a stdio FILE.  The
      string buffer part is gone, replaced by using of string_file.  The
      'FILE *' support is now much simplified, by making the TUI's ui_file
      inherit from stdio_file.
      
      gdb/ChangeLog:
      2017-02-02  Pedro Alves  <palves@redhat.com>
      
      	* ada-lang.c (type_as_string): Use string_file.
      	* ada-valprint.c (ada_print_floating): Use string_file.
      	* ada-varobj.c (ada_varobj_scalar_image)
      	(ada_varobj_get_value_image): Use string_file.
      	* aix-thread.c (aix_thread_extra_thread_info): Use string_file.
      	* arm-tdep.c (_initialize_arm_tdep): Use string_printf.
      	* breakpoint.c (update_inserted_breakpoint_locations)
      	(insert_breakpoint_locations, reattach_breakpoints)
      	(print_breakpoint_location, print_one_detail_ranged_breakpoint)
      	(print_it_watchpoint): Use string_file.
      	(save_breakpoints): Use stdio_file.
      	* c-exp.y (oper): Use string_file.
      	* cli/cli-logging.c (set_logging_redirect): Use ui_file_up and
      	tee_file.
      	(pop_output_files): Use delete.
      	(handle_redirections): Use stdio_file and tee_file.
      	* cli/cli-setshow.c (do_show_command): Use string_file.
      	* compile/compile-c-support.c (c_compute_program): Use
      	string_file.
      	* compile/compile-c-symbols.c (generate_vla_size): Take a
      	'string_file &' instead of a 'ui_file *'.
      	(generate_c_for_for_one_variable): Take a 'string_file &' instead
      	of a 'ui_file *'.  Use string_file.
      	(generate_c_for_variable_locations): Take a 'string_file &'
      	instead of a 'ui_file *'.
      	* compile/compile-internal.h (generate_c_for_for_one_variable):
      	Take a 'string_file &' instead of a 'ui_file *'.
      	* compile/compile-loc2c.c (push, pushf, unary, binary)
      	(print_label, pushf_register_address, pushf_register)
      	(do_compile_dwarf_expr_to_c): Take a 'string_file &' instead of a
      	'ui_file *'.  Adjust.
      	* compile/compile.c (compile_to_object): Use string_file.
      	* compile/compile.h (compile_dwarf_expr_to_c)
      	(compile_dwarf_bounds_to_c): Take a 'string_file &' instead of a
      	'ui_file *'.
      	* cp-support.c (inspect_type): Use string_file and obstack_copy0.
      	(replace_typedefs_qualified_name): Use string_file and
      	obstack_copy0.
      	* disasm.c (gdb_pretty_print_insn): Use string_file.
      	(gdb_disassembly): Adjust reference the null_stream global.
      	(do_ui_file_delete): Delete.
      	(gdb_insn_length): Use null_stream.
      	* dummy-frame.c (maintenance_print_dummy_frames): Use stdio_file.
      	* dwarf2loc.c (dwarf2_compile_property_to_c)
      	(locexpr_generate_c_location, loclist_generate_c_location): Take a
      	'string_file &' instead of a 'ui_file *'.
      	* dwarf2loc.h (dwarf2_compile_property_to_c): Likewise.
      	* dwarf2read.c (do_ui_file_peek_last): Delete.
      	(dwarf2_compute_name): Use string_file.
      	* event-top.c (gdb_setup_readline): Use stdio_file.
      	* gdbarch.sh (verify_gdbarch): Use string_file.
      	* gdbtypes.c (safe_parse_type): Use null_stream.
      	* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
      	string_file.
      	* guile/scm-disasm.c (gdbscm_print_insn_from_port): Take a
      	'string_file *' instead of a 'ui_file *'.
      	(gdbscm_arch_disassemble): Use string_file.
      	* guile/scm-frame.c (frscm_print_frame_smob): Use string_file.
      	* guile/scm-ports.c (class ioscm_file_port): Now a class that
      	inherits from ui_file.
      	(ioscm_file_port_delete, ioscm_file_port_rewind)
      	(ioscm_file_port_put): Delete.
      	(ioscm_file_port_write): Rename to ...
      	(ioscm_file_port::write): ... this.  Remove file_port_magic
      	checks.
      	(ioscm_file_port_new): Delete.
      	(ioscm_with_output_to_port_worker): Use ioscm_file_port and
      	ui_file_up.
      	* guile/scm-type.c (tyscm_type_name): Use string_file.
      	* guile/scm-value.c (vlscm_print_value_smob, gdbscm_value_print):
      	Use string_file.
      	* infcmd.c (print_return_value_1): Use string_file.
      	* infrun.c (print_target_wait_results): Use string_file.
      	* language.c (add_language): Use string_file.
      	* location.c (explicit_to_string_internal): Use string_file.
      	* main.c (captured_main_1): Use null_file.
      	* maint.c (maintenance_print_architecture): Use stdio_file.
      	* mi/mi-cmd-stack.c (list_arg_or_local): Use string_file.
      	* mi/mi-common.h (struct mi_interp) <out, err, log, targ,
      	event_channel>: Change type to mi_console_file pointer.
      	* mi/mi-console.c (mi_console_file_fputs, mi_console_file_flush)
      	(mi_console_file_delete): Delete.
      	(struct mi_console_file): Delete.
      	(mi_console_file_magic): Delete.
      	(mi_console_file_new): Delete.
      	(mi_console_file::mi_console_file): New.
      	(mi_console_file_delete): Delete.
      	(mi_console_file_fputs): Delete.
      	(mi_console_file::write): New.
      	(mi_console_raw_packet): Delete.
      	(mi_console_file::flush): New.
      	(mi_console_file_flush): Delete.
      	(mi_console_set_raw): Rename to ...
      	(mi_console_file::set_raw): ... this.
      	* mi/mi-console.h (class mi_console_file): New class.
      	(mi_console_file_new, mi_console_set_raw): Delete.
      	* mi/mi-interp.c (mi_interpreter_init): Use mi_console_file.
      	(mi_set_logging): Use delete and tee_file.  Adjust.
      	* mi/mi-main.c (output_register): Use string_file.
      	(mi_cmd_data_evaluate_expression): Use string_file.
      	(mi_cmd_data_read_memory): Use string_file.
      	(mi_cmd_execute, print_variable_or_computed): Use string_file.
      	* mi/mi-out.c (mi_ui_out::main_stream): New.
      	(mi_ui_out::rewind): Use main_stream and
      	string_file.
      	(mi_ui_out::put): Use main_stream and string_file.
      	(mi_ui_out::mi_ui_out): Remove 'stream' parameter.
      	Allocate a 'string_file' instead.
      	(mi_out_new): Don't allocate a mem_fileopen stream here.
      	* mi/mi-out.h (mi_ui_out::mi_ui_out): Remove 'stream' parameter.
      	(mi_ui_out::main_stream): Declare method.
      	* printcmd.c (eval_command): Use string_file.
      	* psymtab.c (maintenance_print_psymbols): Use stdio_file.
      	* python/py-arch.c (archpy_disassemble): Use string_file.
      	* python/py-breakpoint.c (bppy_get_commands): Use string_file.
      	* python/py-frame.c (frapy_str): Use string_file.
      	* python/py-framefilter.c (py_print_type, py_print_single_arg):
      	Use string_file.
      	* python/py-type.c (typy_str): Use string_file.
      	* python/py-unwind.c (unwind_infopy_str): Use string_file.
      	* python/py-value.c (valpy_str): Use string_file.
      	* record-btrace.c (btrace_insn_history): Use string_file.
      	* regcache.c (regcache_print): Use stdio_file.
      	* reggroups.c (maintenance_print_reggroups): Use stdio_file.
      	* remote.c (escape_buffer): Use string_file.
      	* rust-lang.c (rust_get_disr_info): Use string_file.
      	* serial.c (serial_open_ops_1): Use stdio_file.
      	(do_serial_close): Use delete.
      	* stack.c (print_frame_arg): Use string_file.
      	(print_frame_args): Remove local mem_fileopen stream, not used.
      	(print_frame): Use string_file.
      	* symmisc.c (maintenance_print_symbols): Use stdio_file.
      	* symtab.h (struct symbol_computed_ops) <generate_c_location>:
      	Take a 'string_file *' instead of a 'ui_file *'.
      	* top.c (new_ui): Use stdio_file and stderr_file.
      	(free_ui): Use delete.
      	(execute_command_to_string): Use string_file.
      	(quit_confirm): Use string_file.
      	* tracepoint.c (collection_list::append_exp): Use string_file.
      	* tui/tui-disasm.c (tui_disassemble): Use string_file.
      	* tui/tui-file.c: Don't include "ui-file.h".
      	(enum streamtype, struct tui_stream): Delete.
      	(tui_file_new, tui_file_delete, tui_fileopen, tui_sfileopen)
      	(tui_file_isatty, tui_file_rewind, tui_file_put): Delete.
      	(tui_file::tui_file): New method.
      	(tui_file_fputs): Delete.
      	(tui_file_get_strbuf): Delete.
      	(tui_file::puts): New method.
      	(tui_file_adjust_strbuf): Delete.
      	(tui_file_flush): Delete.
      	(tui_file::flush): New method.
      	* tui/tui-file.h: Tweak intro comment.
      	Include ui-file.h.
      	(tui_fileopen, tui_sfileopen, tui_file_get_strbuf)
      	(tui_file_adjust_strbuf): Delete declarations.
      	(class tui_file): New class.
      	* tui/tui-io.c (tui_initialize_io): Use tui_file.
      	* tui/tui-regs.c (tui_restore_gdbout): Use delete.
      	(tui_register_format): Use string_stream.
      	* tui/tui-stack.c (tui_make_status_line): Use string_file.
      	(tui_get_function_from_frame): Use string_file.
      	* typeprint.c (type_to_string): Use string_file.
      	* ui-file.c (struct ui_file, ui_file_magic, ui_file_new): Delete.
      	(null_stream): New global.
      	(ui_file_delete): Delete.
      	(ui_file::ui_file): New.
      	(null_file_isatty): Delete.
      	(ui_file::~ui_file): New.
      	(null_file_rewind): Delete.
      	(ui_file::printf): New.
      	(null_file_put): Delete.
      	(null_file_flush): Delete.
      	(ui_file::putstr): New.
      	(null_file_write): Delete.
      	(ui_file::putstrn): New.
      	(null_file_read): Delete.
      	(ui_file::putc): New.
      	(null_file_fputs): Delete.
      	(null_file_write_async_safe): Delete.
      	(ui_file::vprintf): New.
      	(null_file_delete): Delete.
      	(null_file::write): New.
      	(null_file_fseek): Delete.
      	(null_file::puts): New.
      	(ui_file_data): Delete.
      	(null_file::write_async_safe): New.
      	(gdb_flush, ui_file_isatty): Adjust.
      	(ui_file_put, ui_file_rewind): Delete.
      	(ui_file_write): Adjust.
      	(ui_file_write_for_put): Delete.
      	(ui_file_write_async_safe, ui_file_read): Adjust.
      	(ui_file_fseek): Delete.
      	(fputs_unfiltered): Adjust.
      	(set_ui_file_flush, set_ui_file_isatty, set_ui_file_rewind)
      	(set_ui_file_put, set_ui_file_write, set_ui_file_write_async_safe)
      	(set_ui_file_read, set_ui_file_fputs, set_ui_file_fseek)
      	(set_ui_file_data): Delete.
      	(string_file::~string_file, string_file::write)
      	(struct accumulated_ui_file, do_ui_file_xstrdup, ui_file_xstrdup)
      	(do_ui_file_as_string, ui_file_as_string): Delete.
      	(do_ui_file_obsavestring, ui_file_obsavestring): Delete.
      	(struct mem_file): Delete.
      	(mem_file_new): Delete.
      	(stdio_file::stdio_file): New.
      	(mem_file_delete): Delete.
      	(stdio_file::stdio_file): New.
      	(mem_fileopen): Delete.
      	(stdio_file::~stdio_file): New.
      	(mem_file_rewind): Delete.
      	(stdio_file::set_stream): New.
      	(mem_file_put): Delete.
      	(stdio_file::open): New.
      	(mem_file_write): Delete.
      	(stdio_file_magic, struct stdio_file): Delete.
      	(stdio_file_new, stdio_file_delete, stdio_file_flush): Delete.
      	(stdio_file::flush): New.
      	(stdio_file_read): Rename to ...
      	(stdio_file::read): ... this.  Adjust.
      	(stdio_file_write): Rename to ...
      	(stdio_file::write): ... this.  Adjust.
      	(stdio_file_write_async_safe): Rename to ...
      	(stdio_file::write_async_safe) ... this.  Adjust.
      	(stdio_file_fputs): Rename to ...
      	(stdio_file::puts) ... this.  Adjust.
      	(stdio_file_isatty): Delete.
      	(stdio_file_fseek): Delete.
      	(stdio_file::isatty): New.
      	(stderr_file_write): Rename to ...
      	(stderr_file::write) ... this.  Adjust.
      	(stderr_file_fputs): Rename to ...
      	(stderr_file::puts) ... this.  Adjust.
      	(stderr_fileopen, stdio_fileopen, gdb_fopen): Delete.
      	(stderr_file::stderr_file): New.
      	(tee_file_magic): Delete.
      	(struct tee_file): Delete.
      	(tee_file::tee_file): New.
      	(tee_file_new): Delete.
      	(tee_file::~tee_file): New.
      	(tee_file_delete): Delete.
      	(tee_file_flush): Rename to ...
      	(tee_file::flush): ... this.  Adjust.
      	(tee_file_write): Rename to ...
      	(tee_file::write): ... this.  Adjust.
      	(tee_file::write_async_safe): New.
      	(tee_file_fputs): Rename to ...
      	(tee_file::puts): ... this.  Adjust.
      	(tee_file_isatty): Rename to ...
      	(tee_file::isatty): ... this.  Adjust.
      	* ui-file.h (struct obstack, struct ui_file): Don't
      	forward-declare.
      	(ui_file_new, ui_file_flush_ftype, set_ui_file_flush)
      	(ui_file_write_ftype)
      	(set_ui_file_write, ui_file_fputs_ftype, set_ui_file_fputs)
      	(ui_file_write_async_safe_ftype, set_ui_file_write_async_safe)
      	(ui_file_read_ftype, set_ui_file_read, ui_file_isatty_ftype)
      	(set_ui_file_isatty, ui_file_rewind_ftype, set_ui_file_rewind)
      	(ui_file_put_method_ftype, ui_file_put_ftype, set_ui_file_put)
      	(ui_file_delete_ftype, set_ui_file_data, ui_file_fseek_ftype)
      	(set_ui_file_fseek): Delete.
      	(ui_file_data, ui_file_delete, ui_file_rewind)
      	(struct ui_file): New.
      	(ui_file_up): New.
      	(class null_file): New.
      	(null_stream): Declare.
      	(ui_file_write_for_put, ui_file_put): Delete.
      	(ui_file_xstrdup, ui_file_as_string, ui_file_obsavestring):
      	Delete.
      	(ui_file_fseek, mem_fileopen, stdio_fileopen, stderr_fileopen)
      	(gdb_fopen, tee_file_new): Delete.
      	(struct string_file): New.
      	(struct stdio_file): New.
      	(stdio_file_up): New.
      	(struct stderr_file): New.
      	(class tee_file): New.
      	* ui-out.c (ui_out::field_stream): Take a 'string_file &' instead
      	of a 'ui_file *'.  Adjust.
      	* ui-out.h (class ui_out) <field_stream>: Likewise.
      	* utils.c (do_ui_file_delete, make_cleanup_ui_file_delete)
      	(null_stream): Delete.
      	(error_stream): Take a 'string_file &' instead of a 'ui_file *'.
      	Adjust.
      	* utils.h (struct ui_file): Delete forward declaration..
      	(make_cleanup_ui_file_delete, null_stream): Delete declarations.
      	(error_stream): Take a 'string_file &' instead of a
      	'ui_file *'.
      	* varobj.c (varobj_value_get_print_value): Use string_file.
      	* xtensa-tdep.c (xtensa_verify_config): Use string_file.
      	* gdbarch.c: Regenerate.
      d7e74731
  25. Jan 11, 2017
    • Tom Tromey's avatar
      Use gdbpy_ref in archpy_disassemble · 59e9e831
      Tom Tromey authored
      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.
      59e9e831
  26. 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
  27. Nov 08, 2016
    • Pedro Alves's avatar
      Use ui_file_as_string in gdb/python/ · c92aed16
      Pedro Alves authored
      gdb/ChangeLog:
      2016-11-08  Pedro Alves  <palves@redhat.com>
      
      	* python/py-arch.c (archpy_disassemble): Use ui_file_as_string and
      	std::string.
      	* python/py-breakpoint.c (bppy_get_commands): Use
      	ui_file_as_string and std::string.
      	* python/py-frame.c (frapy_str): Likewise.
      	* python/py-type.c (typy_str): Likewise.
      	* python/py-unwind.c (unwind_infopy_str): Likewise.
      	* python/py-value.c (valpy_str): Likewise.
      c92aed16
  28. Sep 20, 2016
    • Tom Tromey's avatar
      Avoid -Wduplicated-cond warnings in gdb/python · 12c58cd4
      Tom Tromey authored
      I tried building gdb with -Wduplicated-cond.  This patch fixes the
      simpler issue that was found.
      
      In Python 3, "int" and "long" are synonyms, so code like:
      
            else if (PyLong_Check (obj))
      ...
            else if (PyInt_Check (obj))
      
      .... will trigger this warning.  The fix is to conditionalize the
      PyInt_Check branches on Python 2.
      
      Tested by rebuilding, with both version of Python, on x86-64 Fedora 24.
      
      2016-09-20  Tom Tromey  <tom@tromey.com>
      
      	* python/py-value.c (convert_value_from_python): Make PyInt_Check
      	conditional on Python 2.
      	* python/py-arch.c (archpy_disassemble): Make PyInt_Check
      	conditional on Python 2.
      12c58cd4
  29. Jan 01, 2016
  30. Mar 07, 2015
    • Pedro Alves's avatar
      Split TRY_CATCH into TRY + CATCH · 492d29ea
      Pedro Alves authored
      This patch splits the TRY_CATCH macro into three, so that we go from
      this:
      
      ~~~
        volatile gdb_exception ex;
      
        TRY_CATCH (ex, RETURN_MASK_ERROR)
          {
          }
        if (ex.reason < 0)
          {
          }
      ~~~
      
      to this:
      
      ~~~
        TRY
          {
          }
        CATCH (ex, RETURN_MASK_ERROR)
          {
          }
        END_CATCH
      ~~~
      
      Thus, we'll be getting rid of the local volatile exception object, and
      declaring the caught exception in the catch block.
      
      This allows reimplementing TRY/CATCH in terms of C++ exceptions when
      building in C++ mode, while still allowing to build GDB in C mode
      (using setjmp/longjmp), as a transition step.
      
      TBC, after this patch, is it _not_ valid to have code between the TRY
      and the CATCH blocks, like:
      
        TRY
          {
          }
      
        // some code here.
      
        CATCH (ex, RETURN_MASK_ERROR)
          {
          }
        END_CATCH
      
      Just like it isn't valid to do that with C++'s native try/catch.
      
      By switching to creating the exception object inside the CATCH block
      scope, we can get rid of all the explicitly allocated volatile
      exception objects all over the tree, and map the CATCH block more
      directly to C++'s catch blocks.
      
      The majority of the TRY_CATCH -> TRY+CATCH+END_CATCH conversion was
      done with a script, rerun from scratch at every rebase, no manual
      editing involved.  After the mechanical conversion, a few places
      needed manual intervention, to fix preexisting cases where we were
      using the exception object outside of the TRY_CATCH block, and cases
      where we were using "else" after a 'if (ex.reason) < 0)' [a CATCH
      after this patch].  The result was folded into this patch so that GDB
      still builds at each incremental step.
      
      END_CATCH is necessary for two reasons:
      
      First, because we name the exception object in the CATCH block, which
      requires creating a scope, which in turn must be closed somewhere.
      Declaring the exception variable in the initializer field of a for
      block, like:
      
        #define CATCH(EXCEPTION, mask) \
          for (struct gdb_exception EXCEPTION; \
               exceptions_state_mc_catch (&EXCEPTION, MASK); \
      	 EXCEPTION = exception_none)
      
      would avoid needing END_CATCH, but alas, in C mode, we build with C90,
      which doesn't allow mixed declarations and code.
      
      Second, because when TRY/CATCH are wired to real C++ try/catch, as
      long as we need to handle cleanup chains, even if there's no CATCH
      block that wants to catch the exception, we need for stop at every
      frame in the unwind chain and run cleanups, then rethrow.  That will
      be done in END_CATCH.
      
      After we require C++, we'll still need TRY/CATCH/END_CATCH until
      cleanups are completely phased out -- TRY/CATCH in C++ mode will
      save/restore the current cleanup chain, like in C mode, and END_CATCH
      catches otherwise uncaugh exceptions, runs cleanups and rethrows, so
      that C++ cleanups and exceptions can coexist.
      
      IMO, this still makes the TRY/CATCH code look a bit more like a
      newcomer would expect, so IMO worth it even if we weren't considering
      C++.
      
      gdb/ChangeLog.
      2015-03-07  Pedro Alves  <palves@redhat.com>
      
      	* common/common-exceptions.c (struct catcher) <exception>: No
      	longer a pointer to volatile exception.  Now an exception value.
      	<mask>: Delete field.
      	(exceptions_state_mc_init): Remove all parameters.  Adjust.
      	(exceptions_state_mc): No longer pop the catcher here.
      	(exceptions_state_mc_catch): New function.
      	(throw_exception): Adjust.
      	* common/common-exceptions.h (exceptions_state_mc_init): Remove
      	all parameters.
      	(exceptions_state_mc_catch): Declare.
      	(TRY_CATCH): Rename to ...
      	(TRY): ... this.  Remove EXCEPTION and MASK parameters.
      	(CATCH, END_CATCH): New.
      	All callers adjusted.
      
      gdb/gdbserver/ChangeLog:
      2015-03-07  Pedro Alves  <palves@redhat.com>
      
      	Adjust all callers of TRY_CATCH to use TRY/CATCH/END_CATCH
      	instead.
      492d29ea
  31. Feb 11, 2015
    • Tom Tromey's avatar
      Fix redefinition errors in C++ mode · e36122e9
      Tom Tromey authored
      In C, we can forward declare static structure instances.  That doesn't
      work in C++ though.  C++ treats these as definitions.  So then the
      compiler complains about symbol redefinition, like:
      
       src/gdb/elfread.c:1569:29: error: redefinition of ‘const sym_fns elf_sym_fns_lazy_psyms’
       src/gdb/elfread.c:53:29: error: ‘const sym_fns elf_sym_fns_lazy_psyms’ previously declared here
      
      The intent of static here is naturally to avoid making these objects
      visible outside the compilation unit.  The equivalent in C++ would be
      to instead define the objects in the anonymous namespace.  But given
      that it's desirable to leave the codebase compiling as both C and C++
      for a while, this just makes the objects extern.
      
      (base_breakpoint_ops is already declared in breakpoint.h, so we can
      just remove the forward declare from breakpoint.c)
      
      gdb/ChangeLog:
      2015-02-11  Tom Tromey  <tromey@redhat.com>
      	    Pedro Alves <palves@redhat.com>
      
      	* breakpoint.c (base_breakpoint_ops): Delete.
      	* dwarf2loc.c (dwarf_expr_ctx_funcs): Make extern.
      	* elfread.c (elf_sym_fns_gdb_index, elf_sym_fns_lazy_psyms): Make extern.
      	* guile/guile.c (guile_extension_script_ops, guile_extension_ops): Make extern.
      	* ppcnbsd-tdep.c (ppcnbsd2_sigtramp): Make extern.
      	* python/py-arch.c (arch_object_type): Make extern.
      	* python/py-block.c (block_syms_iterator_object_type): Make extern.
      	* python/py-bpevent.c (breakpoint_event_object_type): Make extern.
      	* python/py-cmd.c (cmdpy_object_type): Make extern.
      	* python/py-continueevent.c (continue_event_object_type)
      	* python/py-event.h (GDBPY_NEW_EVENT_TYPE): Remove 'qual'
      	parameter.  Update all callers.
      	* python/py-evtregistry.c (eventregistry_object_type): Make extern.
      	* python/py-exitedevent.c (exited_event_object_type): Make extern.
      	* python/py-finishbreakpoint.c (finish_breakpoint_object_type): Make extern.
      	* python/py-function.c (fnpy_object_type): Make extern.
      	* python/py-inferior.c (inferior_object_type, membuf_object_type): Make extern.
      	* python/py-infevents.c (call_pre_event_object_type)
      	(inferior_call_post_event_object_type).
      	(memory_changed_event_object_type): Make extern.
      	* python/py-infthread.c (thread_object_type): Make extern.
      	* python/py-lazy-string.c (lazy_string_object_type): Make extern.
      	* python/py-linetable.c (linetable_entry_object_type)
      	(linetable_object_type, ltpy_iterator_object_type): Make extern.
      	* python/py-newobjfileevent.c (new_objfile_event_object_type)
      	(clear_objfiles_event_object_type): Make extern.
      	* python/py-objfile.c (objfile_object_type): Make extern.
      	* python/py-param.c (parmpy_object_type): Make extern.
      	* python/py-progspace.c (pspace_object_type): Make extern.
      	* python/py-signalevent.c (signal_event_object_type): Make extern.
      	* python/py-symtab.c (symtab_object_type, sal_object_type): Make extern.
      	* python/py-type.c (type_object_type, field_object_type)
      	(type_iterator_object_type): Make extern.
      	* python/python.c (python_extension_script_ops)
      	(python_extension_ops): Make extern.
      	* stap-probe.c (stap_probe_ops): Make extern.
      e36122e9
  32. Jan 01, 2015
  33. Jan 01, 2014
  34. Oct 03, 2013
    • Phil Muldoon's avatar
      2013-10-03 Phil Muldoon <pmuldoon@redhat.com> · 06ab7b19
      Phil Muldoon authored
      	* python/py-value.c (convert_value_from_python): Move PyInt_Check
      	conversion logic to occur after PyLong_Check.  Comment on order
      	change significance.
      	* python/py-arch.c (archpy_disassemble): Comment on order of
      	conversion for integers and longs.
      06ab7b19
  35. Aug 30, 2013
    • Phil Muldoon's avatar
      2013-08-30 Phil Muldoon <pmuldoon@redhat.com> · 96d9056e
      Phil Muldoon authored
      	PR python/15461
      
      	* python/py-arch.c (ARCHPY_REQUIRE_VALID): New macro.
      	(archpy_name): Check for valid architecture.
      	(archpy_disassemble): Ditto.
      
      
      2013-08-30  Phil Muldoon  <pmuldoon@redhat.com>
      
      	* gdb.python/py-arch.exp: Tests for invalid architecture.
      96d9056e
  36. May 20, 2013
    • Tom Tromey's avatar
      * python/py-arch.c (gdbpy_initialize_arch): Use · aa36459a
      Tom Tromey authored
      	gdb_pymodule_addobject.
      	* python/py-block.c (gdbpy_initialize_blocks): Use
      	gdb_pymodule_addobject.
      	* python/py-breakpoint.c (gdbpy_initialize_breakpoints): Use
      	gdb_pymodule_addobject.
      	* python/py-cmd.c (gdbpy_initialize_breakpoints): Use
      	gdb_pymodule_addobject.
      	* python/py-event.c (gdbpy_initialize_event_generic): Use
      	gdb_pymodule_addobject.
      	* python/py-evtregistry.c (gdbpy_initialize_eventregistry): Use
      	gdb_pymodule_addobject.
      	* python/py-evts.c (add_new_registry): Use
      	gdb_pymodule_addobject.
      	(gdbpy_initialize_py_events): Likewise.
      	* python/py-finishbreakpoint.c
      	(gdbpy_initialize_finishbreakpoints): Use
      	gdb_pymodule_addobject.
      	* python/py-frame.c (gdbpy_initialize_frames): Use
      	gdb_pymodule_addobject.
      	* python/py-function.c (gdbpy_initialize_functions): Use
      	gdb_pymodule_addobject.
      	* python/py-inferior.c (gdbpy_initialize_inferior): Use
      	gdb_pymodule_addobject.
      	* python/py-infthread.c (gdbpy_initialize_thread): Use
      	gdb_pymodule_addobject.
      	* python/py-objfile.c (gdbpy_initialize_objfile): Use
      	gdb_pymodule_addobject.
      	* python/py-param.c (gdbpy_initialize_parameters): Use
      	gdb_pymodule_addobject.
      	* python/py-progspace.c (gdbpy_initialize_pspace): Use
      	gdb_pymodule_addobject.
      	* python/py-symbol.c (gdbpy_initialize_symbols): Use
      	gdb_pymodule_addobject.
      	* python/py-symtab.c (gdbpy_initialize_symtabs): Use
      	gdb_pymodule_addobject.
      	* python/py-type.c (gdbpy_initialize_types): Use
      	gdb_pymodule_addobject.
      	* python/py-utils.c (gdb_pymodule_addobject): New function.
      	* python/py-value.c (gdbpy_initialize_values): Use
      	gdb_pymodule_addobject.
      	* python/python-internal.h (gdb_pymodule_addobject): Declare.
      	* python/python.c (_initialize_python): Use
      	gdb_pymodule_addobject.
      aa36459a
    • Tom Tromey's avatar
      * python/py-arch.c (gdbpy_initialize_arch): Return 'int'. · 999633ed
      Tom Tromey authored
      	Check errors.
      	* python/py-auto-load.c (gdbpy_initialize_auto_load): Return 'int'.
      	* python/py-block.c (gdbpy_initialize_blocks): Return 'int'.
      	Check errors.
      	* python/py-breakpoint.c (gdbpy_initialize_breakpoints): Return 'int'.
      	Check errors.
      	* python/py-cmd.c (gdbpy_initialize_commands): Return 'int'.
      	Check errors.
      	* python/py-event.c (gdbpy_initialize_event): Return 'int'.
      	Check errors.
      	* python/py-event.h (GDBPY_NEW_EVENT_TYPE): Change generated
      	init function to return 'int'.
      	* python/py-evtregistry.c (gdbpy_initialize_eventregistry):
      	Return 'int'.  Check errors.
      	* python/py-evts.c (gdbpy_initialize_py_events): Return 'int'.
      	Check errors.
      	* python/py-finishbreakpoint.c (gdbpy_initialize_finishbreakpoints):
      	Return 'int'.  Check errors.
      	* python/py-frame.c (gdbpy_initialize_frames): Return 'int'.
      	Check errors.
      	* python/py-function.c (gdbpy_initialize_functions): Return 'int'.
      	Check errors.
      	* python/py-gdb-readline.c (gdbpy_initialize_gdb_readline):
      	Check errors.
      	* python/py-inferior.c (gdbpy_initialize_inferior): Return 'int'.
      	Check errors.
      	* python/py-infthread.c (gdbpy_initialize_thread): Return 'int'.
      	Check errors.
      	* python/py-lazy-string.c (gdbpy_initialize_lazy_string): Return 'int'.
      	Check errors.
      	* python/py-objfile.c (gdbpy_initialize_objfile): Return 'int'.
      	Check errors.
      	* python/py-param.c (gdbpy_initialize_parameters): Return 'int'.
      	Check errors.
      	* python/py-progspace.c (gdbpy_initialize_pspace): Return 'int'.
      	Check errors.
      	* python/py-symbol.c (gdbpy_initialize_symbols): Return 'int'.
      	Check errors.
      	* python/py-symtab.c (gdbpy_initialize_symtabs): Return 'int'.
      	Check errors.
      	* python/py-type.c (gdbpy_initialize_types): Return 'int'.
      	Check errors.
      	* python/py-value.c (gdbpy_initialize_values): Return 'int'.
      	Check errors.
      	* python/python-internal.h (gdbpy_initialize_auto_load,
      	gdbpy_initialize_values, gdbpy_initialize_frames,
      	gdbpy_initialize_symtabs, gdbpy_initialize_commands,
      	gdbpy_initialize_symbols, gdbpy_initialize_symtabs,
      	gdbpy_initialize_blocks, gdbpy_initialize_types,
      	gdbpy_initialize_functions, gdbpy_initialize_pspace,
      	gdbpy_initialize_objfile, gdbpy_initialize_breakpoints,
      	gdbpy_initialize_finishbreakpoints,
      	gdbpy_initialize_lazy_string, gdbpy_initialize_parameters,
      	gdbpy_initialize_thread, gdbpy_initialize_inferior,
      	gdbpy_initialize_eventregistry, gdbpy_initialize_event,
      	gdbpy_initialize_py_events, gdbpy_initialize_stop_event,
      	gdbpy_initialize_signal_event,
      	gdbpy_initialize_breakpoint_event,
      	gdbpy_initialize_continue_event,
      	gdbpy_initialize_exited_event, gdbpy_initialize_thread_event,
      	gdbpy_initialize_new_objfile_event, gdbpy_initialize_arch):
      	Update.  Use CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION.
      	* python/python.c (gdb_python_initialized): New global.
      	(gdbpy_initialize_events): Return 'int'.  Check errors.
      	(_initialize_python): Check errors.  Set
      	gdb_python_initialized.
      999633ed
Loading