1. Feb 13, 2017
    • Nick Clifton's avatar
      Fix invalid memory access attempting to read the compression header of a... · ebdf1ebf
      Nick Clifton authored
      Fix invalid memory access attempting to read the compression header of a too-small compressed section.
      
      	PR binutils/21149
      	* readelf.c (get_compression_header): Add size parameter.  Check
      	size against sizeof compression header before attempting to
      	extract the header.
      	(process_section_headers): Pass size to get_compression_header.
      	(dump_section_as_strings): Likewise.
      	(dump_section_as_bytes): Likewise.
      	(load_specific_debug_section): Likewise.
      ebdf1ebf
    • Nick Clifton's avatar
      Fix check for buffer overflow when processing version information. · 4aeb00ad
      Nick Clifton authored
      	PR binutils/21148
      	* readelf.c (process_version_sections): Include size of auxillary
      	version information when checking for buffer overflow.
      4aeb00ad
    • Nick Clifton's avatar
      Fix access violation when reporting sections that could not be dumped. · 0ee3043f
      Nick Clifton authored
      	PR binutils/21147
      	* readelf.c (process_section_contents): Fix off by one error
      	reporting un-dumped sections.
      0ee3043f
    • Nick Clifton's avatar
      Fix read-after-free error in readelf when processing multiple, relocated... · f84ce13b
      Nick Clifton authored
      Fix read-after-free error in readelf when processing multiple, relocated sections in an MSP430 binary.
      
      	PR binutils/21139
      	* readelf.c (target_specific_reloc_handling): Add num_syms
      	parameter.  Check for symbol table overflow before accessing
      	symbol value.  If reloc pointer is NULL, discard all saved state.
      	(apply_relocations): Pass num_syms to target_specific_reloc_handling.
      	Call target_specific_reloc_handling with a NULL reloc pointer
      	after processing all of the relocs.
      f84ce13b
    • Luis Machado's avatar
      Improve load command's help text · 5cf30ebf
      Luis Machado authored
      This fairly obvious patch adds usage text to the load command's help text.
      
      Originally it did not have usage and mentioned things like FILE and OFFSET
      without explaining how those should be passed in the command.
      
      gdb/ChangeLog:
      
      2017-02-13  Luis Machado  <lgustavo@codesourcery.com>
      
      	* symfile (_initialize_symfile): Add usage text to the load command's
      	help text.
      
      gdb/doc/ChangeLog:
      
      2017-02-13  Luis Machado  <lgustavo@codesourcery.com>
      
      	* gdb.texinfo (Target Commands): Document the optional offset
      	argument for the load command.
      5cf30ebf
    • Luis Machado's avatar
      Fix gdb.linespec/explicit.exp · bf5f525c
      Luis Machado authored
      This patch addresses timeout failures i noticed while testing aarch64-elf.
      
      FAIL: gdb.linespec/explicit.exp: complete unique function name (timeout)
      FAIL: gdb.linespec/explicit.exp: complete non-unique function name (timeout)
      FAIL: gdb.linespec/explicit.exp: complete non-existant function name (timeout)
      FAIL: gdb.linespec/explicit.exp: complete unique file name (timeout)
      FAIL: gdb.linespec/explicit.exp: complete non-unique file name (timeout)
      
      The timeouts were caused by an attempt to match a bell character (x07) that
      doesn't show up on my particular test setup.
      
      The bell character is output whenever one tries to complete a pattern and there
      are multiple possible matches. When there is only one possible match, GDB will
      complete the input pattern without outputting the bell character.
      
      The reason for the discrepancy in this test's behavior is due to the use of
      "main" for a unique name test.
      
      On glibc-based systems, GDB may notice the "main_arena" symbol, which is
      a data global part of glibc's malloc implementation. Therefore a bell character
      will be output because we have a couple possible completion matches.
      
      GDB should not be outputting such a data symbol as a possible match, but this
      problem may/will be addressed in a future change and is besides the point of
      this particular change.
      
      On systems that are not based on glibc, GDB will not see any other possible
      matches for completing "main", so there will be no bell characters.
      
      The use of main is a bit fragile though, so the patch adds a new local function
      with a name that has a greater chance of being unique and adjusts the test to
      iuse it.
      
      I've also added the regular expression switch (-re) to all the
      gdb_test_multiple calls that were missing it. Hopefully this will reduce the
      chances of someone wasting time trying to match a regular expression (a much
      more common use case) when, in reality, the pattern is supposed to be matched
      literally.
      
      gdb/testsuite/ChangeLog
      
      2017-02-13  Luis Machado  <lgustavo@codesourcery.com>
      
      	* gdb.linespec/explicit.c (my_unique_function_name): New function.
      	(main): Call my_unique_function_name.
      	* gdb.linespec/explicit.exp: Use my_unique_function_name to test
      	completion of patterns with a single match.
      	Add missing -re switches to gdb_test_multiple calls.
      bf5f525c
    • Luis Machado's avatar
      Make gdb.arch/i386-biarch-core.exp more robust · 13a66184
      Luis Machado authored
      This test attempts to load a x86 core file no matter what target
      architectures the tested GDB supports. If GDB doesn't know how to handle
      a i386 target, it is very likely the core file will not be recognized.
      
      In this case we should still attempt to load a core file to make sure GDB
      doesn't crash or throws an internal error.  But we should not proceed to
      try to read memory unconditionally.
      
      This patch makes the test check for proper i386 arch support in GDB and bails
      out if i386 is not supported and the core file format is not recognized.
      
      This addresses the spurious aarch64-elf failures i'm seeing for this test.
      
      gdb/testsuite/ChangeLog:
      
      2017-02-13  Luis Machado  <lgustavo@codesourcery.com>
      
      	* gdb.arch/i386-biarch-core.exp: Check for i386 arch support and
      	return if core file is not recognized.
      13a66184
    • Nick Clifton's avatar
      Fix readelf writing to illegal addresses whilst processing corrupt input files... · 03f7786e
      Nick Clifton authored
      Fix readelf writing to illegal addresses whilst processing corrupt input files containing symbol-difference relocations.
      
      	PR binutils/21137
      	* readelf.c (target_specific_reloc_handling): Add end parameter.
      	Check for buffer overflow before writing relocated values.
      	(apply_relocations): Pass end to target_specific_reloc_handling.
      03f7786e
    • Mike Frysinger's avatar
    • GDB Administrator's avatar
      Automatic date update in version.in · b1499fc2
      GDB Administrator authored
      b1499fc2
  2. Feb 12, 2017
  3. Feb 11, 2017
    • Alan Modra's avatar
      Fix use after free in cgen instruction lookup · 54064fdb
      Alan Modra authored
      	* cgen-opc.c (cgen_lookup_insn): Delete buf and base_insn temps.
      	Use insn_bytes_value and insn_int_value directly instead.  Don't
      	free allocated memory until function exit.
      54064fdb
    • GDB Administrator's avatar
      Automatic date update in version.in · 09ec4d31
      GDB Administrator authored
      09ec4d31
    • Simon Marchi's avatar
      Do not send queries on secondary UIs · 26a06916
      Simon Marchi authored
      This is a follow-up to
      
        https://sourceware.org/ml/gdb-patches/2017-02/msg00261.html
      
      This patch restricts queries to the main UI, which allows to avoid two
      different problems.
      
      The first one is that GDB is issuing queries on secondary MI channels
      for which a TTY is allocated.  The second one is that GDB is not able to
      handle queries on two (CLI) UIs simultaneously.  Restricting queries to
      the main UI allows to bypass these two problems.
      
      More details on how/why these two problems happen:
      
      1. Queries on secondary MI UI
      
        The current criterion to decide if we should query the user is whether
        the input stream is a TTY.  The original way to start GDB in MI mode
        from a front-end was to create a subprocess with pipes to its
        stdin/stdout.  In this case, the input was considered non-interactive
        and queries were auto-answered.  Now that front-ends can create the MI
        channel as a separate UI connected to a dedicated TTY, GDB now
        considers this input stream as interactive and sends queries to it.
        By restricting queries to the main UI, we make sure we never query on
        the secondary MI UI.
      
      2. Simultaneous queries
      
        As Pedro stated it, when you have two queries on two different CLI UIs
        at the same time, you end up with the following pseudo stack:
      
        #0 gdb_readline_wrapper
        #1 defaulted_query                 // for UI #2
        #2 handle_command
        #3 execute_command ("handle SIGTRAP" ....
        #4 stdin_event_handler             // input on UI #2
        #5 gdb_do_one_event
        #7 gdb_readline_wrapper
        #8 defaulted_query                 // for UI #1
        #9 handle_command
        #10 execute_command ("handle SIGINT" ....
        #11 stdin_event_handler            // input on UI #1
        #12 gdb_do_one_event
        #13 gdb_readline_wrapper
      
        trying to answer the query on UI #1 will therefore answer for UI #2.
      
        By restricting the queries to the main UI, we ensure that there will
        never be more than one pending query, since you can't have two queries
        on a UI at the same time.
      
      I added a snippet to gdb.base/new-ui.exp to verify that we get a query
      on the main UI, but that we don't on the secondary one (or, more
      precisely, that it gets auto-answered).
      
      gdb/ChangeLog:
      
      	* utils.c (defaulted_query): Don't query on secondary UIs.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.base/new-ui.exp (do_test): Test queries behavior on main
      	and extra UIs.
      26a06916
    • Simon Marchi's avatar
      new-ui.exp: Use proc_with_prefix · b761ca9e
      Simon Marchi authored
      gdb/testsuite/ChangeLog:
      
      	* gdb.base/new-ui.exp (do_test, do_test_invalid_args): Use
      	proc_with_prefix.
      b761ca9e
    • Tom Tromey's avatar
      Remove unused variable in rust-lang.c · 0b145e37
      Tom Tromey authored
      I found another unused "cleanup" local variable, this time in
      rust-lang.c.  This patch removes it.  Committing as obvious.
      
      gdb/ChangeLog
      2017-02-10  Tom Tromey  <tom@tromey.com>
      
      	* rust-lang.c (rust_get_disr_info): Remove unused variable.
      0b145e37
    • Tom Tromey's avatar
      Fix Python test to use lowercase command · b964bee0
      Tom Tromey authored
      While testing this series I saw some errors from the Python test
      suite.  There were a couple of tests using "P" as a command; this
      changes them to "p".
      
      gdb/testsuite/ChangeLog
      2017-02-10  Tom Tromey  <tom@tromey.com>
      
      	* gdb.python/py-xmethods.exp: Use "p" command, not "P".
      b964bee0
    • Tom Tromey's avatar
      Remove unnecessary local variables · 2d8365c4
      Tom Tromey authored
      I found an unused local variables in a couple of places in the Python
      code; this removes them.
      
      gdb/ChangeLog
      2017-02-10  Tom Tromey  <tom@tromey.com>
      
      	* python/py-value.c (valpy_richcompare_throw): Remove unnecessary
      	"cleanup" local.
      	* python/py-type.c (typy_legacy_template_argument): Remove
      	unnecessary "cleanup" local.
      2d8365c4
    • Tom Tromey's avatar
      Remove some gotos from Python · 2bb8f231
      Tom Tromey authored
      This patch slightly refactors a couple of spots in the Python code to
      avoid some gotos.
      
      gdb/ChangeLog
      2017-02-10  Tom Tromey  <tom@tromey.com>
      
      	* python/python.c (do_start_initialization): New function, from
      	_initialize_python.
      	(_initialize_python): Call do_start_initialization.
      	* python/py-linetable.c (ltpy_iternext): Use explicit returns, not
      	goto.
      2bb8f231
    • Tom Tromey's avatar
      Change one more spot to use gdbpy_ref · 1bdfaf42
      Tom Tromey authored
      This patch changes one more spot in the Python layer to use gdbpy_ref.
      
      gdb/ChangeLog
      2017-02-10  Tom Tromey  <tom@tromey.com>
      
      	* python/py-prettyprint.c (pretty_print_one_value): Use
      	gdbpy_ref.
      1bdfaf42
    • Tom Tromey's avatar
      Use gdbpy_ref to simplify some logic · 88b6faea
      Tom Tromey authored
      This uses the new gdbpy_ref template to simplify logic in various
      parts of the Python layer; for example removing repeated error code or
      removing gotos.
      
      gdb/ChangeLog
      2017-02-10  Tom Tromey  <tom@tromey.com>
      
      	* python/py-cmd.c (cmdpy_destroyer): Use gdbpy_ref.
      	* python/py-breakpoint.c (gdbpy_breakpoint_deleted): Use
      	gdbpy_ref.
      	* python/py-type.c (field_new): Use gdbpy_ref.
      	* python/py-symtab.c (symtab_and_line_to_sal_object): Use
      	gdbpy_ref.
      	* python/py-progspace.c (pspy_new): Use gdbpy_ref.
      	(py_free_pspace): Likewise.
      	(pspace_to_pspace_object): Likewise.
      	* python/py-objfile.c (objfpy_new): Use gdbpy_ref.
      	(py_free_objfile): Likewise.
      	(objfile_to_objfile_object): Likewise.
      	* python/py-inferior.c (delete_thread_object): Use
      	gdbpy_ref.
      	(infpy_read_memory): Likewise.
      	(py_free_inferior): Likewise.
      	* python/py-evtregistry.c (create_eventregistry_object): Use
      	gdbpy_ref.
      	* python/py-event.c (create_event_object): Use gdbpy_ref.
      88b6faea
    • 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
    • Tom Tromey's avatar
      Remove some ui_out-related cleanups from Python · d4b0bb18
      Tom Tromey authored
      This patch introduces a bit of infrastructure -- namely, a minimal
      std::optional analogue called gdb::optional, and an RAII template
      class that works like make_cleanup_ui_out_tuple_begin_end or
      make_cleanup_ui_out_list_begin_end -- and then uses these in the
      Python code.  This removes a number of cleanups and generally
      simplifies this code.
      
      std::optional is only available in C++17.  Normally I would have had
      this code check __cplusplus, but my gcc apparently isn't new enough to
      find <optional>, even with -std=c++1z; so, because I could not test
      it, the patch does not do this.
      
      gdb/ChangeLog
      2017-02-10  Tom Tromey  <tom@tromey.com>
      
      	* ui-out.h (ui_out_emit_type): New class.
      	(ui_out_emit_tuple, ui_out_emit_list): New typedefs.
      	* python/py-framefilter.c (py_print_single_arg): Use gdb::optional
      	and ui_out_emit_tuple.
      	(enumerate_locals): Likewise.
      	(py_mi_print_variables, py_print_locals, py_print_args): Use
      	ui_out_emit_list.
      	(py_print_frame): Use gdb::optional, ui_out_emit_tuple,
      	ui_out_emit_list.
      	* common/gdb_optional.h: New file.
      d4b0bb18
    • Martin Galvan's avatar
      gdb/MAINTAINERS: Update my e-mail address · f67f945c
      Martin Galvan authored
      gdb/ChangeLog:
      
      2017-02-10  Martin Galvan  <martingalvan@sourceware.org>
      
              * MAINTAINERS (Write After Approval): Update my e-mail address.
      f67f945c
    • Martin Galvan's avatar
      PR gdb/21122: Fix documentation mistakes for breakpoint commands · 18da0c51
      Martin Galvan authored
      Currently, the breakpoint documentation refers to some commands taking breakpoint
      "ranges" as arguments. We discussed this with Pedro and concluded that it would
      be more accurate to speak in terms of breakpoint "lists", whose elements can optionally
      be ranges. I also fixed a couple of minor mistakes in the docs.
      
      gdb/ChangeLog:
      
      	* breakpoint.c (_initialize_breakpoint): Update the help description
      	of the 'commands' command to indicate that it takes a list argument.
      
      gdb/doc/ChangeLog:
      
      	* gdb.texinfo (Breakpoints): Reword documentation to speak in terms of
      	space-separated breakpoint lists.  Also add a missing @table command
      	and @cindex for breakpoint lists.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.base/help.exp: Update match pattern for testing 'help commands'.
      18da0c51
  4. Feb 10, 2017
  5. Feb 09, 2017
    • Gary Benson's avatar
      Fix NULL pointer dereference · ff6fa247
      Gary Benson authored
      This commit fixes a segmentation fault on tab completion when
      certain debuginfo is installed:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=1398387
      
      gdb/ChangeLog:
      
      	* symtab.c (add_symtab_completions): Prevent NULL pointer
      	dereference.
      ff6fa247
    • GDB Administrator's avatar
      Automatic date update in version.in · 9d5c5dd7
      GDB Administrator authored
      9d5c5dd7
    • Andrew Burgess's avatar
      ld/arc: Change default linker emulation for nps400 · d7488716
      Andrew Burgess authored
      If we are configuring for an arc/linux target, and --with-cpu=nps400 is
      used at configure time then change the default linker emulation to the
      nps specific version.  All of the alternative linker emulations are
      still available using the -mNAME option for ld.
      
      ld/ChangeLog:
      
      	* configure.tgt (arc*-*-linux*): Change the default linker
      	emulation based on --with-cpu selection.
      	* NEWS: Mention new configuration option.
      d7488716
    • Pedro Alves's avatar
      Eliminate interp::quiet_p · a474bd8e
      Pedro Alves authored
      This commit removes interp::quiet_p / interp_quiet_p /
      interp_set_quiet, because AFAICS, it doesn't really do anything.
      
      interp_quiet is only ever checked inside interp_set nowadays:
      
        if (!first_time && !interp_quiet_p (interp))
          {
            xsnprintf (buffer, sizeof (buffer),
      		 "Switching to interpreter \"%.24s\".\n", interp->name);
            current_uiout->text (buffer);
          }
      
      I did a bit of archaelogy, and found that back in 4a8f6654 (2003), it
      was also called in another place, to decide whether to print the CLI
      prompt.
      
      AFAICS, that condition is always false today, making that if/then
      block always dead code.  If we remove that code, then there are no
      interp_quiet_p uses left in the tree, so we can remove it all.
      
      There are two paths that lead to interp_set calls:
      
      #1 - When installing the top level interpreter.  In this case,
      FIRST_TIME is true.
      
      #2 - In interpreter_exec_cmd.  In this case, the interpreter is always
      set quiet before interp_set is called.
      
      Grepping a gdb.log of an x86_64 GNU/Linux run for "Switching to
      interpreter" (before this patch) doesn't find any hits.
      
      I suspect the intention of this message was to support something like
      a "set interpreter ..." command that would change the interpreter
      permanently.  But there's no such command.
      
      Tested on x86_64 Fedora 23.
      
      gdb/ChangeLog:
      2017-02-08  Pedro Alves  <palves@redhat.com>
      
      	* interps.c (interp::interp): Remove reference to quiet_p.
      	(interp_set): Make static.  Remove dead "Switching to" output
      	code.
      	(interp_quiet_p, interp_set_quiet): Delete.
      	(interpreter_exec_cmd): Don't set the interpreter quiet.
      	* interps.h (interp_quiet_p): Make static.
      	(class interp) <quiet_p>: Remove field
      a474bd8e
    • Jerome Guitton's avatar
      Command abbreviation in define · 604c4576
      Jerome Guitton authored
      When defining a new macro, "command" is not recognized as an alias for
      "commands":
      
       (gdb) define breakmain
       Type commands for definition of "breakmain".
       End with a line saying just "end".
       >break main
       >command
       >echo "IN MAIN\n"
       >end
       (gdb)
      
      There is a special case for while-stepping, where 'ws' and 'stepping' are
      recognized explicitely. Instead of adding more special cases, this change
      uses cli-decode.
      
      gdb/ChangeLog:
      	* cli/cli-decode.c (find_command_name_length): Make it extern.
      	* cli/cli-decode.h (find_command_name_length): Declare.
      	* cli/cli-script.c (command_name_equals, line_first_arg):
      	New functions.
      	(process_next_line): Use cli-decode to parse command names.
      	(build_command_line): Make args a constant pointer.
      
      gdb/testsuite/ChangeLog:
      
      	* gdb.base/define.exp: Add test for command abbreviations
      	in define.
      604c4576
    • Jerome Guitton's avatar
      Command names: make them case sensitive · 3d7b173c
      Jerome Guitton authored
      Case-insensitive search for command names is an obscure undocumented
      feature, which seems to be unused, is not tested and not quite
      consistent. Remove it.
      
      gdb/ChangeLog:
      
      	* cli-decode.c (lookup_cmd_1, lookup_cmd_composition):
      	Remove case-insensitive search.
      3d7b173c
  6. Feb 08, 2017
  7. Feb 07, 2017
    • Sheldon Lobo's avatar
      bfd: Fix objdump --dynamic-reloc for SPARC 64-bit to show symbol names. · 3d044c0c
      Sheldon Lobo authored
      Fixes ld/testsuite/ld-elf/shared.exp "Build libpr16496b.so".
      
      The root cause is in bfd/elf64-sparc.c, elf64_sparc_slurp_one_reloc_table(),
      bfd_get_symcount() was used for dynamic mode as well. The fix is to use
      bfd_get_dynamic_symcount().
      
      This has been tested with sparc64-linux-gnu, and it does not introduce any
      regressions.
      
      bfd/ChangeLog:
      
      2017-02-06  Sheldon Lobo  <sheldon.lobo@oracle.com>
      
      	Fix sparc64 dynamic relocation processing to use the dynamic
              symbol count.
      	* elf64-sparc.c (elf64_sparc_slurp_one_reloc_table): Use 'dynamic'
      	to determine if bfd_get_symcount() or bfd_get_dynamic_symcount()
      	should be used.
      3d044c0c
    • GDB Administrator's avatar
      Automatic date update in version.in · 8a78ba5c
      GDB Administrator authored
      8a78ba5c
  8. Feb 06, 2017