1. 15 Jan, 2019 2 commits
    • Tom Tromey's avatar
      Constify target_pass_signals and target_program_signals · 491adeca
      Tom Tromey authored
      This constifies the final parameter to target_pass_signals and
      target_program_signals and updates the rest of gdb.
      
      Note that I have no way to test the nto-procfs.c change.
      
      gdb/ChangeLog
      2019-01-14  Tom Tromey  <tom@tromey.com>
      
      	* target-debug.h (target_debug_print_signals): Constify.
      	* nto-procfs.c (nto_procfs_target::pass_signals): Update.
      	* procfs.c (procfs_target::pass_signals): Update.
      	* linux-nat.c (linux_nat_target::pass_signals): Update.
      	* linux-nat.h (class linux_nat_target) <pass_signals>: Update.
      	* target-delegates.c: Rebuild.
      	* remote.c (remote_target::program_signals): Update.
      	(remote_target::pass_signals): Update.
      	* target.c (target_pass_signals): Constify argument.
      	(target_program_signals): Likewise.
      	* target.h (struct target_ops) <pass_signals, program_signals>:
      	Constify argument.
      	(target_pass_signals, target_program_signals): Constify argument.
      491adeca
    • GDB Administrator's avatar
      Automatic date update in version.in · 183561e0
      GDB Administrator authored
      183561e0
  2. 14 Jan, 2019 10 commits
    • Tom Tromey's avatar
      Fix placement of output in TUI mode · bbd94648
      Tom Tromey authored
      The fix for PR tui/28819 regressed gdb command output a bit.  In
      "nonl" mode, pressing the Enter key will result in a newline not being
      echoed properly, so that gdb output for the command will begin on the
      same line as the input.
      
      This patch changes gdb_wgetch to echo the newline.  I have only tested
      this interactively, as the TUI doesn't have automated tests in
      general.
      
      gdb/ChangeLog
      2019-01-14  Tom Tromey  <tom@tromey.com>
      
      	PR tui/28819:
      	* tui/tui-io.c (gdb_wgetch): Print \r when needed.
      bbd94648
    • Павел Крюков's avatar
      Include <string.h> to dis-asm.h to get strchr declaration · 8f0a2148
      Павел Крюков authored
      Include <string.h> to dis-asm.h to get strchr declaration
      
      include/Changelog:
      2019-01-11  Pavel I. Kryukov  <kryukov@frtk.ru>
      
              * dis-asm.h: include <string.h>
      8f0a2148
    • Pedro Franco de Carvalho's avatar
      [PowerPC] Aliases for vector registers · 6f072a10
      Pedro Franco de Carvalho authored
      This patch defines pseudo-registers "v0" through "v31" as aliases that
      map to the corresponding raw "vr0" through "vr31" vector registers for
      Power.
      
      The motivation behind this is that although GDB defines these
      registers as "vrX", the disassembler prints them as "vX", e.g. as the
      operands in instructions such as "vaddubm v2,v1,v1".  This can be
      confusing to users trying to print out the values of the operands
      while inspecting the disassembled code.
      
      The new aliases are made not to belong to any register group, to avoid
      duplicated values in "info register vector" and "info register all".
      The arch-specific rs6000_pseudo_register_reggroup_p function had
      previously been removed since the other pseudo-registers could have
      their groups inferred by their type.  It restored with this patch to
      handle the aliases.  Membership for the other pseudo-registers is
      still determined using the default function.
      
      A new tests checks that GDB prints the expected values of vector
      registers after they are filled by the inferior, by using both the raw
      names and the aliases.  Two other existing tests are modified to also
      test the aliases.
      
      gdb/ChangeLog:
      2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
      
      	* ppc-tdep.h (struct gdbarch_tdep) <ppc_v0_alias_regnum>: New
      	field.
      	* rs6000-tdep.c: Include reggroups.h.
      	(IS_V_ALIAS_PSEUDOREG): Define.
      	(rs6000_register_name): Return names for the "vX" aliases.
      	(rs6000_pseudo_register_type): Return type for the "vX" aliases.
      	(rs6000_pseudo_register_reggroup_p): Restore.  Handle "vX"
      	aliases.  Call default_register_reggroup_p for all other
      	pseudo-registers.
      	(v_alias_pseudo_register_read, v_alias_pseudo_register_write):
      	New functions.
      	(rs6000_pseudo_register_read, rs6000_pseudo_register_write):
      	Handle "vX" aliases.
      	(v_alias_pseudo_register_collect): New function.
      	(rs6000_ax_pseudo_register_collect): Handle "vX" aliases.
      	(rs6000_gdbarch_init): Initialize "vX" aliases as
      	pseudo-registers.  Restore registration of
      	rs6000_pseudo_register_reggroup_p with
      	set_tdesc_pseudo_register_reggroup_p.
      
      gdb/testsuite/ChangeLog:
      2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
      
      	* gdb.arch/vsx-regs.exp: Add tests that use the vector register
      	aliases.
      	* gdb.arch/altivec-regs.exp: Likewise.  Fix indentation of two
      	tests.
      	* gdb.arch/powerpc-vector-regs.c: New file.
      	* gdb.arch/powerpc-vector-regs.exp: New file.
      
      gdb/doc/ChangeLog:
      2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
      
      	* gdb.texinfo (PowerPC Features): Document the alias
      	pseudo-registers for the org.gnu.gdb.power.altivec feature.
      6f072a10
    • Pedro Franco de Carvalho's avatar
      [PowerPC] Fix "info vector" test in gdb.arch/altivec-regs.exp · a7b8d682
      Pedro Franco de Carvalho authored
      This patch fixes one of the tests in gdb.arch/altivec-regs.exp that
      was passing an incorrect list to gdb_expect_list, which always
      matched.
      
      gdb/testsuite/ChangeLog:
      2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
      
      	* gdb.arch/altivec-regs.exp: Fix the list passed to
      	gdb_expect_list when testing "info vector".
      a7b8d682
    • Nick Clifton's avatar
      Correct PR number in prevvious delta · f466c305
      Nick Clifton authored
      f466c305
    • Maamoun Tarsha's avatar
      Add support to GNU ld to separate got related plt entries from normal ones in... · 5a12586d
      Maamoun Tarsha authored
      Add support to GNU ld to separate got related plt entries from normal ones in order to be able to switch the non-plt got entries to read-only after startup, conforming to revised Linux for zSeries ABI.
      
      	PR 20133
      	* emulparams/elf64_s390.sh (SEPARATE_GOTPLT): Define.
      	* emulparams/elf_s390.sh (SEPARATE_GOTPLT): Define.
      	* testsuite/ld-s390/gotreloc_31-1.dd: Update expected output.
      	* testsuite/ld-s390/tlsbin.dd: Likewise.
      	* testsuite/ld-s390/tlsbin.rd: Likewise.
      	* testsuite/ld-s390/tlsbin.sd: Likewise.
      	* testsuite/ld-s390/tlsbin_64.dd: Likewise.
      	* testsuite/ld-s390/tlsbin_64.rd: Likewise.
      	* testsuite/ld-s390/tlsbin_64.sd: Likewise.
      	* testsuite/ld-s390/tlspic.dd: Likewise.
      	* testsuite/ld-s390/tlspic.rd: Likewise.
      	* testsuite/ld-s390/tlspic.sd: Likewise.
      	* testsuite/ld-s390/tlspic_64.dd: Likewise.
      	* testsuite/ld-s390/tlspic_64.rd: Likewise.
      	* testsuite/ld-s390/tlspic_64.sd: Likewise.
      	* testsuite/ld-s390/s390.exp: Skip s390 tests for tpf targets.
      5a12586d
    • Rainer Orth's avatar
      Sync config.guess, config.sub from GCC · d63f2be2
      Rainer Orth authored
      	Merge from GCC:
      	PR target/88535
      	* config.guess: Import upstream version 2019-01-03.
      	* config.sub: Import upstream version 2019-01-01.
      d63f2be2
    • Srinath Parvathaneni's avatar
      Implement the assembly instructions yield, wfe, wfi and sev for ARMv6T2 in... · 55e8aae7
      Srinath Parvathaneni authored
      Implement the assembly instructions yield, wfe, wfi and sev for ARMv6T2 in both ARM mode and Thumb mode.
      
      	* config/tc-arm.c (arm_ext_v6k_v6t2): Define.
      	(insns) [ARM_VARIANT]: Modified.
      	(insns) [THUMB_VARIANT]: To implement few ARMv6K instructions
      	in ARMv6T2 as well.
      	* testsuite/gas/arm/archv6t2-1.d: New test.
      	* testsuite/gas/arm/archv6t2-1.s: Likewise.
      	* testsuite/gas/arm/archv6t2-2.d: Likewise.
      55e8aae7
    • Sebastian Huber's avatar
      ld: Clarify --wrap documentation · 4ea904ed
      Sebastian Huber authored
      ld/
      
      	* ld.texi (--wrap): Add example to emphasise that only undefined
      	references are replaced by the linker.
      4ea904ed
    • GDB Administrator's avatar
      Automatic date update in version.in · 8a2d34fe
      GDB Administrator authored
      8a2d34fe
  3. 13 Jan, 2019 2 commits
    • Max Filippov's avatar
      gdb: xtensa: fix register counters for xtensa-linux · 1a782351
      Max Filippov authored
      Commit 37d9e062 ("gdb: xtensa: handle privileged registers") changed
      how the tdep->num_regs and tdep->num_pseudo_regs are calculated, but
      didn't update these numbers in the gdbarch for the xtensa-linux target.
      As a result xtensa-linux-gdb behaves as xtensa-elf-gdb and cannot
      communicate with the linux gdbserver.
      Fix tdep->num_pseudo_regs calculation and call set_gdbarch_num_regs and
      set_gdbarch_num_pseudo_regs in xtensa_linux_init_abi.
      
      gdb/
      2019-01-13  Max Filippov  <jcmvbkbc@gmail.com>
      
      	* xtensa-linux-tdep.c (xtensa_linux_init_abi): Update
      	tdep->num_pseudo_regs. Add calls to set_gdbarch_num_regs and
      	set_gdbarch_num_pseudo_regs.
      1a782351
    • GDB Administrator's avatar
      Automatic date update in version.in · f589354d
      GDB Administrator authored
      f589354d
  4. 12 Jan, 2019 6 commits
    • Philippe Waroquiers's avatar
      Implement help/show values for 'set|show style'. · d73cff18
      Philippe Waroquiers authored
      Currently, the behaviour is:
        (gdb) show style
        (gdb) set style
        (gdb) show style address
        (gdb) set style address
        (gdb)
      
      With this patch, the behaviour is:
        (gdb) show style
        style address background:  The "address" background color is: none
        style address foreground:  The "address" foreground color is: blue
        style address intensity:  The "address" display intensity is: normal
        enabled:  CLI output styling is enabled.
        style filename background:  The "filename" background color is: none
        style filename foreground:  The "filename" foreground color is: green
        style filename intensity:  The "filename" display intensity is: normal
        style function background:  The "function" background color is: none
        style function foreground:  The "function" foreground color is: yellow
        style function intensity:  The "function" display intensity is: normal
        style variable background:  The "variable" background color is: none
        style variable foreground:  The "variable" foreground color is: cyan
        style variable intensity:  The "variable" display intensity is: normal
        (gdb) set style
        "set style" must be followed by an appropriate subcommand.
        List of set style subcommands:
      
        set style address -- Address display styling
        set style enabled -- Set whether CLI styling is enabled
        set style filename -- Filename display styling
        set style function -- Function name display styling
        set style variable -- Variable name display styling
      
        Type "help set style" followed by set style subcommand name for full documentation.
        Type "apropos word" to search for commands related to "word".
        Command name abbreviations are allowed if unambiguous.
        (gdb) show style address
        background:  The "filename" background color is: none
        foreground:  The "filename" foreground color is: green
        intensity:  The "filename" display intensity is: normal
        (gdb) set style address
        List of set style address subcommands:
      
        set style address background -- Set the background color for this property
        set style address foreground -- Set the foreground color for this property
        set style address intensity -- Set the display intensity color for this property
      
        Type "help set style address" followed by set style address subcommand name for full documentation.
        Type "apropos word" to search for commands related to "word".
        Command name abbreviations are allowed if unambiguous.
        (gdb)
      
      gdb/ChangeLog
      	* cli/cli-style.h (class cli_style_option): <add_setshow_commands>
      	Remove arg prefixname, add do_set and do_show.
      	Add member functions set_list and show_list.
      	* cli/cli-style.c (class cli_style_option): Update accordingly.
      	(style_set_list): Move to file scope.
      	(style_show_list): Likewise.
      	(set_style): Call help_list.
      	(show_style): Call cmd_show_list.
      	(_initialize_cli_style): New macro STYLE_ADD_SETSHOW_COMMANDS.
      	Update to use the new macro.
      d73cff18
    • Yoshinori Sato's avatar
      Add RXv3 instructions. · 4ce8c66d
      Yoshinori Sato authored
              * rx-decode.opc (DSIZE): New. double size.
              (_ld): New. dmov size attribute.
              (PSCALE): Add double size.
              (DCR, DDR, DDRH, DDRL, DCND): New. Double FPU registers.
              (SCR, SDR, SDRH, SDRL): Likewise.
              (S2DR, S2CR): Likewise.
              (SDD): New. double displacement.
              (DL): New. Set dmov size attribute.
              (rx_decode_opcode): Add RXv3 instructions.
              * rx-decode.c: Regenerate.
              * rx-dis.c (size_names): Add double entry.
              (opsize_names): Likewise.
              (double_register_names): New. Double FPU registers.
              (double_register_high_names): Likewise.
              (double_register_low_names): Likewise.
              (double_register_control_names): Likewise.
              (double_condition_names): dcmp condition.
              (print_insn_rx): Add  bfmov / bfmovz output.
              Add double FPU output.
      4ce8c66d
    • Joel Brobecker's avatar
      expand a bit the in-GDB help for the "catch exception" help text · 60a90376
      Joel Brobecker authored
      One of our users remarked that the help doesn't mention the fact that
      the "catch exception" supports the special argument "unhandled" to catch
      exceptions which do not have a handler. This patch changes the output
      of...
      
       | (gdb) help catch exception
       | Catch Ada exceptions, when raised.
       | With an argument, catch only exceptions with the given name.
      
      ... to ...
      
       | (gdb) help catch exception
       | Catch Ada exceptions, when raised.
       | Usage: catch exception [ ARG ]
       |
       | Without any argument, stop when any Ada exception is raised.
       | If ARG is "unhandled" (without the quotes), only stop when the exception
       | being raised does not have a handler (and will therefore lead to the task's
       | termination).
       | Otherwise, the catchpoint only stops when the name of the exception being
       | raised is the same as ARG.
      
      gdb/ChangeLog:
      
              * ada-lang.c (_initialize_ada_language): Expand the help text
              for the "catch exception" command.
      
      Tested on x86_64-linux, no regression.
      60a90376
    • Andrew Burgess's avatar
      gdb/testsuite: Don't allow paths to appear in test name · 6eb6fb67
      Andrew Burgess authored
      Having paths in the test names makes it harder to compare results
      between two runs in different directories.  Give the test a name so
      that the path doesn't appear.
      
      gdb/ChangeLog:
      
      	* gdb.base/style.exp: Don't include path in testname.
      6eb6fb67
    • Philippe Waroquiers's avatar
      Fix 'obj' may be used uninitialized warning in symtab.c:matching_obj_sections. · 9d7c67bf
      Philippe Waroquiers authored
      Fix warning:
      
      gdb/symtab.c: In function ‘int matching_obj_sections(obj_section*, obj_section*)’:
      gdb/symtab.c:1024:12: warning: ‘obj’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         if (obj->separate_debug_objfile_backlink != NULL
      
      2019-01-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
      
      	* symtab.c (matching_obj_sections): Initialize obj,
      	declare it closer to its usage.
      9d7c67bf
    • GDB Administrator's avatar
      Automatic date update in version.in · 7d62943c
      GDB Administrator authored
      7d62943c
  5. 11 Jan, 2019 2 commits
  6. 10 Jan, 2019 18 commits
    • Tom Tromey's avatar
      Replace inf_threads_iterator with next_iterator · 7cf47dc4
      Tom Tromey authored
      This changes inf_threads_iterator and some range adapters in
      thread-iter.h to use next_iterator and next_adapter instead.
      
      gdb/ChangeLog
      2019-01-10  Tom Tromey  <tom@tromey.com>
      
      	* thread-iter.h (inf_threads_iterator): Use next_iterator.
      	(basic_inf_threads_range): Remove.
      	(inf_threads_range, inf_non_exited_threads_range)
      	(safe_inf_threads_range): Use next_adapter.
      7cf47dc4
    • Keith Seitz's avatar
      gdb/23712: Test case for multidictionary · b56f80d8
      Keith Seitz authored
      This is a test derived from one of the reproducers in symtab/23010.
      The DIE tree used here is typical of compilations with LTO, where an
      artificial parent DIE of language C99 imports DIEs of other languages.
      
      gdb/testsuite/ChangeLog:
      
      	PR gdb/23712
      	PR symtab/23010
      	* gdb.dwarf2/multidictionary.exp: New file.
      b56f80d8
    • Keith Seitz's avatar
      gdb/23712: Remove dw2_add_symbol_to_list · d3cb6808
      Keith Seitz authored
      Finally, we can remove dw2_add_symbol_to_list since the wrapper function
      originally introduced to catch this multi-language scenario is no longer
      needed.  With multi-language dictionaries, we can now support adding
      symbols of multiple languages, negating the need for the assertion
      entirely.
      
      This patch should now fix gdb/23712 (and symtab/23010).  At least it will
      if the NULL buildsym_compunit problem doesn't strike first (see gdb/23773).
      
      gdb/ChangeLog:
      
      	PR gdb/23712
      	PR symtab/23010
      	* dwarf2read.c (dw2_add_symbol_to_list): Remove.
      	(fixup_go_packaging, new_symbol): Use add_symbol_to_list.
      d3cb6808
    • Keith Seitz's avatar
      gdb/23712: Cleanup/Remove temporary dictionary functions · 63a20375
      Keith Seitz authored
      Now that multidictionary's are being used, there is no longer any need
      to retain the four temporary functions introduced in the beginning of
      this series.
      
      This patch removes them.
      
      As an additional cleanup, since the single-language dictionaries are
      no longer used outside dictionary.c, make all of those functions
      static.
      
      gdb/ChangeLog:
      
      	PR gdb/23712
      	PR symtab/23010
      	* dictionary.c (pending_to_vector): Remove.
      	(dict_create_hashed_1, dict_create_linear_1, dict_add_pending_1):
      	Remove _1 suffix, replacing functions of the same name.  Update
      	all callers.
      	(dict_create_hashed, dict_create_hashed_expandable)
      	(dict_create_linear, dict_create_linear_expandable, dict_free)
      	(dict_add_symbol, dict_add_pending, dict_size, dict_empty):
      	Make functions static.
      63a20375
    • Keith Seitz's avatar
      gdb/23712: Use new multidictionary API · b026f593
      Keith Seitz authored
      This patch builds on the previous by enabling the `new' multidictionary
      API.  A lot of the hunks are simply textual replacements of "dict_"
      with "mdict_" and similar transformations.
      
      A word of warning, even with the use of multidictionaries, the code
      still does not satisfactorily fix the reported problems with gdb/23712
      (or gdb/23010). We still have additional changes to make before that
      happens.
      
      gdb/ChangeLog:
      
      	PR gdb/23712
      	PR symtab/23010
      	* dictionary.h (struct dictionary): Replace declaration with
      	multidictionary.
      	(dict_create_hashed, dict_create_hashed_expandable)
      	(dict_create_linear, dict_create_linear_expandable)
      	(dict_free, dict_add_symbol, dict_add_pending, dict_empty)
      	(dict_iterator_first, dict_iterator_next, dict_iter_match_first)
      	(dict_iter_match_next, dict_size): Rename to "mdict_" versions
      	taking multidictionary argument.
      	[ALL_DICT_SYMBOLS]: Update for multidictionary.
      	* block.h (struct block) <dict>: Change to multidictionary
      	and rename `multidict'.
      	* block.c, buildsym.c, jit.c, mdebugread.c, objfiles.c,
      	symmisc.c: Update all dictionary references to multidictionary.
      b026f593
    • Keith Seitz's avatar
      gdb/23712: Introduce multidictionary's · c7748ee9
      Keith Seitz authored
      gdb/23712 is a new manifestation of the now-infamous (at least to me)
      symtab/23010 assertion failure (DICT_LANGUAGE == SYMBOL_LANGAUGE).
      
      An example of the problem (using test case from symtab/23010):
      
      Reading symbols from /home/rdiez/rdiez/arduino/JtagDue/BuildOutput/JtagDue-obj-release/firmware.elf...done.
      (gdb) p SysTick_Handler
      dwarf2read.c:9715: internal-error: void dw2_add_symbol_to_list(symbol*, pending**): Assertion `(*listhead) == NULL || (SYMBOL_LANGUAGE ((*listhead)->symbol[0]) == SYMBOL_LANGUAGE (symbol))' failed.
      A problem internal to GDB has been detected,
      further debugging may prove unreliable.
      Quit this debugging session? (y or n)
      
      This assertion was added specifically to catch this condition (of adding
      symbols of different languages to a single pending list).
      
      The problems we're now seeing on systems utilizing DWARF debugging seem to
      be caused by the use of LTO, which adds a CU with an artificial DIE of
      language C99 which references DIEs in other CUs of language C++.
      
      Thus, we create a dictionary containing symbols of C99 but end up
      stuffing C++ symbols into it, and the dw2_add_symbol_to_list triggers.
      
      The approach taken here to fix this is to introduce multi-language
      dictionaries to "replace" the standard, single-language dictionaries
      used today.
      
      Note to reviewers: This patch introduces some temporary functions to
      aide with review.  This and other artifacts (such as "See dictionary.h"
      which appear incorrect) will all be valid at the end of the series.
      
      This first patch introduces the new multidictionary and its API (which
      is, by design, identical to the old dictionary interface).  It also
      mutates dict_create_hashed and dict_create_linear so that they take
      a std::vector instead of the usual struct pending linked list.  This will
      be needed later on.
      
      This patch does /not/ actually enable multidictionary's.  That is left
      for a subsequent patch in the series.
      
      I've done exhaustive performance testing with this approach, and I've
      attempted to minimize the overhead for the (overwhelmingly) most common
      one-language scenario.
      
      On average, a -g3 -O0 GDB (the one we developers use) will see
      approximately a 4% slowdown when initially reading symbols. [I've
      tested only GDB and firefox with -readnow.]  When using -O2, this
      difference shrinks to ~0.5%.  Since a number of runs with these
      patches actually run /faster/ than unpatched GDB, I conclude that
      these tests have at least a 0.5% error margin.
      
      On our own gdb.perf test suite, again, results appear to be pretty
      negligible.  Differences to unpatched GDB range from -7.8% (yes,
      patched version is again faster than unpatched) to 27%.  All tests
      lying outside "negligible," such as the 27% slowdown, involve a total
      run time of 0.0007 (or less) with smaller numbers of CUs/DSOs (usually 10
      or 100).  In all cases, the follow-up tests with more CUs/DSOs is never
      more than 3% difference to the baseline, unpatched GDB.
      
      In my opinion, these results are satisfactory.
      
      gdb/ChangeLog:
      
      	PR gdb/23712
      	PR symtab/23010
      	* dictionary.c: Include unordered_map.
      	(pending_to_vector): New function.
      	(dict_create_hashed_1, dict_create_linear_1, dict_add_pending_1):
      	Rewrite the non-"_1" functions to take vector instead
      	of linked list.
      	(dict_create_hashed, dict_create_linear, dict_add_pending): Use the
      	"new" _1 versions of the same name.
      	(multidictionary): Define.
      	(std::hash<enum language): New definition.
      	(collate_pending_symbols_by_language, mdict_create_hashed)
      	(mdict_create_hashed_expandable, mdict_create_linear)
      	(mdict_create_linear_expandable, mdict_free)
      	(find_language_dictionary, create_new_language_dictionary)
      	(mdict_add_symbol, mdict_add_pending, mdict_iterator_first)
      	(mdict_iterator_next, mdict_iter_match_first, mdict_iter_match_next)
      	(mdict_size, mdict_empty): New functions.
      	* dictionary.h (mdict_iterator): Define.
      c7748ee9
    • Pedro Alves's avatar
      Fix tracepoint.c:parse_tracepoint_definition leak (and one more) · 67aa1f3c
      Pedro Alves authored
      Coverity points out that gdb/tracepoint.c:parse_tracepoint_definition
      can leak 'cond' in this line:
      
            cond = (char *) xmalloc (2 * xlen + 1);
      
      That can leak because we're in a loop and 'cond' may have already been
      xmalloc'ed into in a previous iteration.  That won't normally happen,
      because we don't expect to see a tracepoint definition with multiple
      conditions listed, but, it doesn't hurt to be pedantically correct,
      in case some stub manages to send something odd back to GDB.
      
      At first I thought I'd just replace the xmalloc call with:
      
            cond = (char *) xrealloc (cond, 2 * xlen + 1);
      
      and be done with it.  However, my pedantic self realizes that
      warning() can throw as well (due to pagination + Ctrl-C), so I fixed
      it using gdb::unique_xmalloc_ptr instead.
      
      While doing this, I noticed that these vectors in struct uploaded_tp:
      
        std::vector<char *> actions;
        std::vector<char *> step_actions;
      
      hold heap-allocated strings, but nothing is freeing the strings,
      AFAICS.
      
      So I ended up switching all the heap-allocated strings in uploaded_tp
      to unique pointers.  This patch is the result of that.
      
      I also wrote an alternative, but similar patch that uses std::string
      throughout instead of gdb::unique_xmalloc_ptr, but in the end reverted
      it because the code didn't look that much better, and I kind of
      dislike replacing pointers with fat std::string's (3 or 4 times the
      size of a pointer) in structures.
      
      gdb/ChangeLog:
      2019-01-10  Pedro Alves  <palves@redhat.com>
      
      	* breakpoint.c (read_uploaded_action)
      	(create_tracepoint_from_upload): Adjust to use
      	gdb::unique_xmalloc_ptr.
      	* ctf.c (ctf_write_uploaded_tp):
      	(SET_ARRAY_FIELD): Use emplace_back.
      	(SET_STRING_FIELD): Adjust to use gdb::unique_xmalloc_ptr.
      	* tracefile-tfile.c (tfile_write_uploaded_tp):
      	* tracepoint.c (parse_tracepoint_definition): Adjust to use
      	gdb::unique_xmalloc_ptr.
      	* tracepoint.h (struct uploaded_tp) <cond, actions, step_actions,
      	at_string, cond_string, cmd_strings>: Replace char pointers
      	with gdb::unique_xmalloc_ptr.
      67aa1f3c
    • Pedro Alves's avatar
      Fix leak in solib-target.c:library_list_start_library · 2f667667
      Pedro Alves authored
      lm_info_target::name is nowadays std::string, so we're leaking the
      result of xstrdup.
      
      gdb/ChangeLog:
      2019-01-10  Pedro Alves  <palves@redhat.com>
      
      	* solib-target.c (library_list_start_library): Don't xstrdup name.
      2f667667
    • Pedro Alves's avatar
      Fix leak in mdebugread.c · 36cb7237
      Pedro Alves authored
      Coverity points out that all the "continue;" statements in the switch
      case in parse_partial_symbols leak STABSTRING.  This is because we
      only release STABSTRING at the end of the scope, with:
      
           	     	  if (stabstring
      		    && stabstring != debug_info->ss + fh->issBase + sh.iss)
      		  xfree (stabstring);
      
      but that bit of code is skipped if a case in the switch statement ends
      with "continue".
      
      Fix this by using gdb::unique_xmalloc_ptr to manage the heap-allocated
      version of 'stabsstring'.
      
      I don't know how to test this.
      
      gdb/ChangeLog:
      2019-01-10  Pedro Alves  <palves@redhat.com>
      
      	* mdebugread.c (parse_partial_symbols): Use
      	gdb::unique_xmalloc_ptr to manage heap-allocated 'stabsstring'.
      36cb7237
    • Andrew Burgess's avatar
      gdb: Fix incorrect variable name in scoped_switch_fork_info · da584958
      Andrew Burgess authored
      The previous commit:
      
        commit 1ef8573c
        Date:   Wed Jan 9 14:02:39 2019 +0000
      
            gdb: Improve scoped_switch_fork_info class
      
      contained a bug, an incorrect variable name was used. Fixed in this
      commit.
      
      gdb/ChangeLog:
      
      	* linux-fork.c (scoped_switch_fork_info)
      	<~scoped_switch_fork_info>: Fix incorrect variable name.
      da584958
    • Andrew Burgess's avatar
      gdb: Improve scoped_switch_fork_info class · 1ef8573c
      Andrew Burgess authored
      After committing this patch I got this feedback:
      
         https://sourceware.org/ml/gdb-patches/2019-01/msg00181.html
      
      This patch makes the constructor of scoped_switch_fork_info explicit,
      and wraps the core of the destructor in a TRY/CATCH block.
      
      I've run this through the testsuite on X86-64/GNU Linux, however, this
      code is not exercised, so this patch is untested.
      
      gdb/ChangeLog:
      
      	* linux-fork.c (scoped_switch_fork_info)
      	<scoped_switch_fork_info>: Make explicit.
      	<~scoped_switch_fork_info>: Wrap core in TRY/CATCH.
      1ef8573c
    • Nick Clifton's avatar
      Correct changelog entry. · 59aa9b0b
      Nick Clifton authored
      59aa9b0b
    • Nick Clifton's avatar
      Stop objdump from displaying control codes embedded in symbol names. · 12add40e
      Nick Clifton authored
      	PR 23963
      binutils* objdump.c (sanitize_string): New function.  Removes control
      	characters from symbol names.
      	(dump_section_header): Use new function.
      	(objdump_print_symname): Likewise.
      	(objdump_print_addr_with_sym): Likewise.
      	(show_line): Likewise.
      	(disassemble_bytes): Likewise.
      	(disassemble_section): Likewise.
      	(load_specific_debug_section): Likewise.
      	(read_section_stabs): Likewise.
      	(print_section_stabs): Likewise.
      	(dump_section): Likewise.
      	(dump_reloc_set): Likewise.
      	(dump_relocs_in_section): Likewise.
      	(dump_bfd): Likewise.
      	(display_any_bfd): Likewise.
      
      gas	* testsuite/gas/mips/mips16-branch-absolute-1.d: Adjust for the fact that
      	control characters are now displayed as escape sequences.
      	* testsuite/gas/mips/mips16-e.d: Likewise.
      	* testsuite/gas/mips/mips16-pcrel-0.d: Likewise.
      	* testsuite/gas/mips/mips16-pcrel-1.d: Likewise.
      	* testsuite/gas/mips/mips16-pcrel-delay-0.d: Likewise.
      	* testsuite/gas/mips/mips16-pcrel-delay-1.d: Likewise.
      	* testsuite/gas/mips/mips16-pcrel-n32-0.d: Likewise.
      	* testsuite/gas/mips/mips16-pcrel-n32-1.d: Likewise.
      	* testsuite/gas/mips/mips16-pcrel-n64-sym32-0.d: Likewise.
      	* testsuite/gas/mips/mips16-pcrel-n64-sym32-1.d: Likewise.
      	* testsuite/gas/mips/mips16e2@mips16-pcrel-0.d: Likewise.
      	* testsuite/gas/mips/mips16e2@mips16-pcrel-1.d: Likewise.
      	* testsuite/gas/mips/mips16e2@mips16-pcrel-delay-0.d: Likewise.
      	* testsuite/gas/mips/mips16e2@mips16-pcrel-delay-1.d: Likewise.
      	* testsuite/gas/mips/mips16e2@mips16-pcrel-n32-0.d: Likewise.
      	* testsuite/gas/mips/mips16e2@mips16-pcrel-n32-1.d: Likewise.
      	* testsuite/gas/mips/mips16e2@mips16-pcrel-n64-sym32-0.d:
      	Likewise.
      	* testsuite/gas/mips/mips16e2@mips16-pcrel-n64-sym32-1.d:
      	Likewise.
      	* testsuite/gas/mips/mipsel16-e.d: Likewise.
      	* testsuite/gas/mips/mipsr6@msa.d: Likewise.
      	* testsuite/gas/mips/mipsr6@relax-swap3.d: Likewise.
      	* testsuite/gas/mips/r6-64-n32.d: Likewise.
      	* testsuite/gas/mips/r6-64-n64.d: Likewise.
      	* testsuite/gas/mips/r6-n32.d: Likewise.
      	* testsuite/gas/mips/r6-n64.d: Likewise.
      	* testsuite/gas/mips/r6.d: Likewise.
      	* testsuite/gas/mips/tmips16-e.d: Likewise.
      	* testsuite/gas/mips/tmipsel16-e.d: Likewise.
      	* testsuite/gas/mn10300/relax.d: Likewise.
      12add40e
    • Tom Tromey's avatar
      Move psymtabs to their own obstack · 8d7bcccb
      Tom Tromey authored
      Previously, the psymtab obstack was just a pointer to the objfile
      obstack.  This patch changes psymtabs to use their own obstack,
      instead.  A gdb::optional is used to avoid unnecessary allocation when
      the obstack is not needed.
      
      After this patch, the psymtab code lifetime model is that, in the core
      psymtab code, objects allocated on the psymtab obstack may point to
      other such objects, or to objects on the per-BFD obstack -- but never
      to the objfile obstack.
      
      Note however that this invariant is only obeyed the core psymtab code,
      and even there not quite fully: there is still a link from the psymtab
      to the full symtab.
      
      Symbol readers are free to work however they like; and in particular,
      even after this patch, in practice all symbol readers violate this
      invariant via the read_symtab_private field.
      
      gdb/ChangeLog
      2019-01-10  Tom Tromey  <tom@tromey.com>
      
      	* objfiles.h (objfile::reset_psymtabs): Update.
      	* objfiles.c (objfile::objfile): Update.
      	* psymtab.h (psymtab_storage::obstack): Update.
      	(psymtab_storage::m_obstack): Use gdb::optional.
      	(class psymtab_storage): Update comment.  Remove objfile
      	parameter.
      	* psymtab.c (psymtab_storage::psymtab_storage): Update.
      8d7bcccb
    • Tom Tromey's avatar
      Make psymtab_storage::free_psymtabs private · b596a3c7
      Tom Tromey authored
      This adds a new psymtab allocation method to psymtab_storage and
      changes the free_psymtabs member to be private.  While not strictly
      necessary, this seems like a decent cleanup, and also makes it simpler
      to move psymtabs off of obstacks entirely, should that prove
      desirable.
      
      gdb/ChangeLog
      2019-01-10  Tom Tromey  <tom@tromey.com>
      
      	* psymtab.h (psymtab_storage::allocate_psymtab): New method.
      	<free_psymtabs>: Now private.
      	* psymtab.c (psymtab_storage::allocate_psymtab): Implement.
      	(allocate_psymtab): Use new method.
      b596a3c7
    • Tom Tromey's avatar
      Add psymtab_storage::allocate_dependencies · a9342b62
      Tom Tromey authored
      This adds a new method to psymtab_storage to allocate storage for
      psymtab dependencies, then changes the symbol readers to use it.  This
      has the effect of moving the storage to the psymtab storage obstack.
      
      gdb/ChangeLog
      2019-01-10  Tom Tromey  <tom@tromey.com>
      
      	* xcoffread.c (xcoff_end_psymtab): Use allocate_dependencies.
      	* psymtab.h (psymtab_storage::allocate_dependencies): New method.
      	* mdebugread.c (parse_partial_symbols): Use
      	allocate_dependencies.
      	* dwarf2read.c (dwarf2_create_include_psymtab): Use
      	allocate_dependencies.
      	(process_psymtab_comp_unit_reader)
      	(build_type_psymtab_dependencies): Likewise.
      	* dbxread.c (dbx_end_psymtab): Use allocate_dependencies.
      a9342b62
    • Tom Tromey's avatar
      Move more allocations to psymtab obstack · 5af70966
      Tom Tromey authored
      This moves a couple more psymtab-related allocations to the psymtab
      obstack.
      
      gdb/ChangeLog
      2019-01-10  Tom Tromey  <tom@tromey.com>
      
      	* psymtab.c (add_psymbol_to_bcache): Pass psymtab obstack to
      	PSYMBOL_SET_LANGUAGE.
      	(allocate_psymtab): Allocate psymtab on the psymtab obstack.
      5af70966
    • Tom Tromey's avatar
      Allocate the address map on the psymtab obstack · 5923a04c
      Tom Tromey authored
      After this patch, the psymtab address map will now be allocated on the
      psymtab obstack rather than the objfile obstack.  This also changes
      the psymtab storage object to make the obstack private; this will be
      used later.
      
      gdb/ChangeLog
      2019-01-10  Tom Tromey  <tom@tromey.com>
      
      	* psymtab.h (psymtab_storage::obstack): New method.
      	<m_obstack>: Rename from obstack; now private.
      	* psymtab.c (psymtab_storage): Update.
      	* dwarf2read.c (create_addrmap_from_index)
      	(create_addrmap_from_aranges, dwarf2_build_psymtabs_hard):
      	Update.
      5923a04c