platform/upstream/binutils.git
5 years agogdb: Fix incorrect variable name in scoped_switch_fork_info
Andrew Burgess [Thu, 10 Jan 2019 17:00:48 +0000 (17:00 +0000)]
gdb: Fix incorrect variable name in scoped_switch_fork_info

The previous commit:

  commit 1ef8573cc77c91feeef3edab74d383d20809eb33
  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.

5 years agogdb: Improve scoped_switch_fork_info class
Andrew Burgess [Wed, 9 Jan 2019 14:02:39 +0000 (14:02 +0000)]
gdb: Improve scoped_switch_fork_info class

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.

5 years agoCorrect changelog entry.
Nick Clifton [Thu, 10 Jan 2019 15:23:03 +0000 (15:23 +0000)]
Correct changelog entry.

5 years agoStop objdump from displaying control codes embedded in symbol names.
Nick Clifton [Thu, 10 Jan 2019 15:19:33 +0000 (15:19 +0000)]
Stop objdump from displaying control codes embedded in symbol names.

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.

5 years agoMove psymtabs to their own obstack
Tom Tromey [Thu, 10 May 2018 22:23:57 +0000 (16:23 -0600)]
Move psymtabs to their own obstack

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.

5 years agoMake psymtab_storage::free_psymtabs private
Tom Tromey [Thu, 10 May 2018 22:23:56 +0000 (16:23 -0600)]
Make psymtab_storage::free_psymtabs private

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.

5 years agoAdd psymtab_storage::allocate_dependencies
Tom Tromey [Thu, 10 May 2018 22:23:55 +0000 (16:23 -0600)]
Add psymtab_storage::allocate_dependencies

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.

5 years agoMove more allocations to psymtab obstack
Tom Tromey [Thu, 10 May 2018 22:23:54 +0000 (16:23 -0600)]
Move more allocations to psymtab obstack

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.

5 years agoAllocate the address map on the psymtab obstack
Tom Tromey [Thu, 10 May 2018 22:23:53 +0000 (16:23 -0600)]
Allocate the address map on the psymtab obstack

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.

5 years agoIntroduce objfile::reset_psymtabs
Tom Tromey [Thu, 10 May 2018 22:23:52 +0000 (16:23 -0600)]
Introduce objfile::reset_psymtabs

This introduces a new method, objfile::reset_psymtabs, and changes
reread_symbols to use it.  This method simply destroys the existing
partial symbols and recreates the psymtab_storage object.

This patch fixes a latent bug -- namely, that reread_symbols should
clear objfile::psymbol_map, but does not.  I can submit that
separately if you'd prefer.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* symfile.c (reread_symbols): Call objfile->reset_psymtabs.
* objfiles.h (objfile::reset_psymtabs): New method.

5 years agoIntroduce class psymtab_storage
Tom Tromey [Thu, 10 May 2018 22:23:51 +0000 (16:23 -0600)]
Introduce class psymtab_storage

This introduces a new psymtab_storage class, which holds all
psymbol-related objects that are independent of the objfile.  (This
latter contraint explains why psymbol_map was not moved; though this
could still be done with some work.)

This patch does not yet change where psymtab allocation is done --
that comes later.  This just wraps everything in a single object to
make further transformations simpler.

Note that a shared_ptr is used to link from the objfile to the
psymtab_storage object.  The end goal here is to allow a given symbol
reader to simply attach to the psymtab_storage object to the BFD, then
reuse it in later invocations; shared_ptr makes this simple to reason
about.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* symmisc.c (print_symbol_bcache_statistics): Update.
(print_objfile_statistics): Update.
* symfile.c (reread_symbols): Update.
* psymtab.h (class psymtab_storage): New.
* psymtab.c (psymtab_storage): New constructor.
(~psymtab_storage): New destructor.
(require_partial_symbols): Update.
(ALL_OBJFILE_PSYMTABS_REQUIRED): Rewrite.
(find_pc_sect_psymtab, find_pc_sect_psymbol)
(match_partial_symbol, lookup_partial_symbol, dump_psymtab)
(psym_dump, recursively_search_psymtabs, psym_has_symbols)
(psym_find_compunit_symtab_by_address, sort_pst_symbols)
(start_psymtab_common, end_psymtab_common)
(add_psymbol_to_bcache, add_psymbol_to_list, init_psymbol_list)
(allocate_psymtab): Update.
(psymtab_storage::discard_psymtab): Rename from discard_psymtab.
Update.
(dump_psymtab_addrmap, maintenance_print_psymbols)
(maintenance_check_psymtabs): Update.
(class objfile_psymtabs): Move to objfiles.h.
* psympriv.h (discard_psymtab): Now inline.
(psymtab_discarder::psymtab_discarder): Update.
(psymtab_discarder::~psymtab_discarder): Update.
(ALL_OBJFILE_PSYMTABS): Rewrite.
* objfiles.h (struct objfile) <psymtabs, psymtabs_addrmap,
free_psymtabs, psymbol_cache, global_psymbols, static_psymbols>:
Remove fields.
<partial_symtabs>: New field.
(class objfile_psymtabs): Move from psymtab.h.  Update.
* objfiles.c (objfile::objfile): Initialize partial_symtabs, not
psymbol_cache.
(objfile::~objfile): Don't destroy psymbol_cache.
* mdebugread.c (parse_partial_symbols): Update.
* dwarf2read.c (create_addrmap_from_index)
(create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab)
(process_psymtab_comp_unit_reader, dwarf2_build_psymtabs_hard)
(add_partial_subprogram, dwarf2_ranges_read): Update.
* dwarf-index-write.c (write_address_map)
(write_one_signatured_type, recursively_write_psymbols)
(class debug_names, class debug_names, write_psymtabs_to_index):
Update.

5 years agoChange symbol_set_names to take an objfile_per_bfd_storage
Tom Tromey [Thu, 10 May 2018 22:23:49 +0000 (16:23 -0600)]
Change symbol_set_names to take an objfile_per_bfd_storage

This changes symbol_set_names to take an objfile_per_bfd_storage
argument, and updates the users.  It also changes PSYMBOL_SET_NAMES to
take this argument directly; I feel this clarifies the storage
location of objects created in psymtab.c.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* symtab.h (SYMBOL_SET_NAMES): Update.
(symbol_set_names): Update.
(MSYMBOL_SET_NAMES): Update.
* symtab.c (symbol_set_names): Change argument to be an
objfile_per_bfd_storage.
* psymtab.c (add_psymbol_to_bcache): Update.
* psympriv.h (PSYMBOL_SET_NAMES): Take per_bfd argument.

5 years agoChange create_demangled_names_hash to take an objfile_per_bfd_storage
Tom Tromey [Thu, 10 May 2018 22:23:48 +0000 (16:23 -0600)]
Change create_demangled_names_hash to take an objfile_per_bfd_storage

This changes create_demangled_names_hash to take an
objfile_per_bfd_storage parameter.  This makes it clearer where it is
storing the objects it allocates.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* symtab.c (create_demangled_names_hash): Change argument to be an
objfile_per_bfd_storage.
(symbol_set_names): Update.

5 years agoSimplify calls to init_psymbol_list
Tom Tromey [Thu, 10 May 2018 22:23:47 +0000 (16:23 -0600)]
Simplify calls to init_psymbol_list

Existing callers to init_psymbol_list were checking to see if psymbols
had already been initialized.  It seemed better to me to do this check
directly in init_psymbol_list, simplifying the callers.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* xcoffread.c (xcoff_initial_scan): Unconditionally call
init_psymbol_list.
* psymtab.c (init_psymbol_list): Do nothing if already called.
* psympriv.h (init_psymbol_list): Add comment.
* dwarf2read.c (dwarf2_build_psymtabs): Unconditionally call
init_psymbol_list.
* dbxread.c (dbx_symfile_read): Unconditionally call
init_psymbol_list.

5 years agoChange add_psymbol_to_list to use an enum
Tom Tromey [Thu, 10 May 2018 22:23:46 +0000 (16:23 -0600)]
Change add_psymbol_to_list to use an enum

This changes add_psymbol_to_list to use an enum, rather than a pointer
to a vector, to decide where to put the new symbol.  This reduces the
number of direct references to the static_psymbols and global_psymbols
members of the objfile, which is handy in a later patch.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* xcoffread.c (scan_xcoff_symtab): Update.
* psymtab.c (add_psymbol_to_list): Replace "list" parameter with
"where".
* mdebugread.c (parse_partial_symbols)
(handle_psymbol_enumerators): Update.
* dwarf2read.c (add_partial_symbol, load_partial_dies): Update.
* dbxread.c (read_dbx_symtab): Update.
* psympriv.h (psymbol_placement): New enum.
(add_psymbol_to_list): Update.

5 years agoRemove parameters from start_psymtab_common
Tom Tromey [Thu, 10 May 2018 22:23:45 +0000 (16:23 -0600)]
Remove parameters from start_psymtab_common

start_psymtab_common takes references to the global_psymbols and
static_psymbols vectors, but it also has an objfile parameter.  This
is redundant, so this patch simplifies the function by removing those
reference parameters.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* xcoffread.c (xcoff_start_psymtab): Remove global_psymbols and
static_psymbols parameters.
(scan_xcoff_symtab): Update.
* psymtab.c (start_psymtab_common): Remove global_psymbols and
static_psymbols parameters.
* psympriv.h (start_psymtab_common): Update.
* mdebugread.c (parse_partial_symbols): Update.
* dwarf2read.c (create_partial_symtab): Update.
* dbxread.c (read_dbx_symtab): Update.
(start_psymtab): Remove global_psymbols and static_psymbols
parameters.

5 years agoRemove some unneeded psymtab initializations
Tom Tromey [Thu, 10 May 2018 22:23:44 +0000 (16:23 -0600)]
Remove some unneeded psymtab initializations

allocate_psymtab has long cleared the new psymtab that is returned.
This patch documents this behavior and then removes some redundant
initializations.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* xcoffread.c (xcoff_end_psymtab): Remove some initializations.
* psymtab.c (allocate_psymtab): Add comment.
* psympriv.h (allocate_psymtab): Add comment.
* dwarf2read.c (dwarf2_create_include_psymtab): Remove some
initializations.
* dbxread.c (dbx_end_psymtab): Remove some initializations.

5 years agoMove some declarations to mdebugread.h
Tom Tromey [Thu, 10 May 2018 22:23:43 +0000 (16:23 -0600)]
Move some declarations to mdebugread.h

This moves a couple of mdebugread-related declarations from symfile.h
to mdebugread.h, which seemed more appropriate.

gdb/ChangeLog
2019-01-10  Tom Tromey  <tom@tromey.com>

* symfile.h (mdebug_build_psymtabs, elfmdebug_build_psymtabs):
Don't declare.
* mipsread.c: Include mdebugread.h.
* mdebugread.h (mdebug_build_psymtabs, elfmdebug_build_psymtabs):
Declare.
* elfread.c: Include mdebugread.h.

5 years agoSync libiberty sources with gcc master versions.
Nick Clifton [Thu, 10 Jan 2019 09:44:13 +0000 (09:44 +0000)]
Sync libiberty sources with gcc master versions.

. * libiberty: Sync with gcc.  Bring in:
2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

PR other/16615

* cp-demangle.c: Mechanically replace "can not" with "cannot".
* floatformat.c: Likewise.
* strerror.c: Likewise.

2018-12-22  Jason Merrill  <jason@redhat.com>

Remove support for demangling GCC 2.x era mangling schemes.
* cplus-dem.c: Remove cplus_mangle_opname, cplus_demangle_opname,
internal_cplus_demangle, and all subroutines.
(libiberty_demanglers): Remove entries for ancient GNU (pre-3.0),
Lucid, ARM, HP, and EDG demangling styles.
(cplus_demangle): Remove 'work' variable.  Don't call
internal_cplus_demangle.

include * Merge from GCC:
2018-12-22  Jason Merrill  <jason@redhat.com>

* demangle.h: Remove support for ancient GNU (pre-3.0), Lucid,
ARM, HP, and EDG demangling styles.

5 years agoRemove ALL_OBJFILE_PSYMTABS
Tom Tromey [Sat, 24 Nov 2018 21:22:25 +0000 (14:22 -0700)]
Remove ALL_OBJFILE_PSYMTABS

This removes the ALL_OBJFILE_PSYMTABS macro, replacing its uses with
ranged for loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* dbxread.c (dbx_end_psymtab): Use objfile_psymtabs.
* mdebugread.c (parse_partial_symbols): Use objfile_psymtabs.
* psymtab.c (ALL_OBJFILE_PSYMTABS_REQUIRED): Remove.
(psym_map_symtabs_matching_filename, find_pc_sect_psymtab)
(psym_lookup_symbol, psym_find_last_source_symtab)
(psym_forget_cached_source_info, psym_print_stats)
(psym_expand_symtabs_for_function, psym_expand_all_symtabs)
(psym_expand_symtabs_with_fullname, psym_map_symbol_filenames)
(psym_map_matching_symbols, psym_expand_symtabs_matching)
(psym_find_compunit_symtab_by_address)
(maintenance_print_psymbols, maintenance_info_psymtabs)
(maintenance_check_psymtabs): Use ranged for.
* psymtab.h (class objfile_psymtabs): New.
(require_partial_symbols): Return objfile_psymtabs.
* psympriv.h (ALL_OBJFILE_PSYMTABS): Remove.

5 years agoRemove ALL_OBJSECTIONS
Tom Tromey [Sat, 24 Nov 2018 18:54:26 +0000 (11:54 -0700)]
Remove ALL_OBJSECTIONS

This removes the ALL_OBJSECTIONS macro, replacing its uses with ranged
for loops.

The special code in this macro for noticing a "break" from the inner
loop was only needed in a single place; so rather than try to
replicate this, I've simply replaced that use with a "goto".

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* symfile.c (overlay_invalidate_all, find_pc_overlay)
(find_pc_mapped_section, list_overlays_command)
(map_overlay_command, unmap_overlay_command)
(simple_overlay_update): Use all_objfiles.
* spu-tdep.c (spu_overlay_update): Use all_objfiles.
* printcmd.c (info_symbol_command): Use all_objfiles.
* objfiles.h (ALL_OBJSECTIONS): Remove.
* maint.c (maintenance_translate_address): Use all_objfiles.
* gcore.c (gcore_create_callback): Use all_objfiles.
(objfile_find_memory_regions): Likewise.

5 years agoRemove ALL_OBJFILES and ALL_FILETABS
Tom Tromey [Sat, 24 Nov 2018 16:58:20 +0000 (09:58 -0700)]
Remove ALL_OBJFILES and ALL_FILETABS

This removes the ALL_OBJFILES and ALL_FILETABS macros, replacing them
with ranged for loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* symtab.c (find_line_symtab, info_sources_command)
(make_source_files_completion_list): Use objfile_compunits.
* source.c (select_source_symtab): Use objfile_compunits.
* objfiles.h (struct objfile): Update comment.
(ALL_OBJFILES): Remove.
(ALL_FILETABS): Remove.
* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Use
objfile_compunits.

5 years agoRemove ALL_OBJFILE_FILETABS
Tom Tromey [Sat, 24 Nov 2018 16:51:44 +0000 (09:51 -0700)]
Remove ALL_OBJFILE_FILETABS

This removes ALL_OBJFILE_FILETABS, replacing its uses with ranged for
loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* symmisc.c (print_objfile_statistics, dump_objfile)
(maintenance_print_symbols): Use compunit_filetabs.
* source.c (forget_cached_source_info_for_objfile): Use
compunit_filetabs.
* objfiles.h (ALL_OBJFILE_FILETABS): Remove.
(ALL_FILETABS): Use compunit_filetabs.
* objfiles.c (objfile_relocate1): Use compunit_filetabs.
* coffread.c (coff_symtab_read): Use compunit_filetabs.

5 years agoRemove ALL_COMPUNIT_FILETABS
Tom Tromey [Sat, 24 Nov 2018 16:49:24 +0000 (09:49 -0700)]
Remove ALL_COMPUNIT_FILETABS

This removes ALL_COMPUNIT_FILETABS, replacing its uses with ranged for
loops.

Because this is still used in the ALL_OBJFILE_FILETABS macro, in some
places a declaration had to be removed or renamed to avoid shadowing.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* symtab.h (ALL_COMPUNIT_FILETABS): Remove.
(compunit_filetabs): New.
* symtab.c (iterate_over_some_symtabs, find_pc_sect_line): Use
compunit_filetabs.
(info_sources_command, make_source_files_completion_list): Remove
declaration.
* symmisc.c (print_objfile_statistics, dump_objfile)
(maintenance_print_symbols): Remove declaration.
(maintenance_info_symtabs): Use compunit_filetabs.
(maintenance_info_line_tables): Likewise.
* source.c (select_source_symtab): Change local variable name.
(forget_cached_source_info_for_objfile): Remove declaration.
* objfiles.h (ALL_OBJFILE_FILETABS): Use compunit_filetabs.
* objfiles.c (objfile_relocate1): Remove declaration.
* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Remove
declaration.
* maint.c (count_symtabs_and_blocks): Use compunit_filetabs.
* coffread.c (coff_symtab_read): Remove declaration.
* buildsym.c (buildsym_compunit::end_symtab_with_blockvector): Use
compunit_filetabs.

5 years agoRemove ALL_COMPUNITS
Tom Tromey [Sat, 24 Nov 2018 16:20:18 +0000 (09:20 -0700)]
Remove ALL_COMPUNITS

This removes the ALL_COMPUNITS, replacing its uses with two nested
ranged for loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* symtab.c (lookup_objfile_from_block)
(find_pc_sect_compunit_symtab, search_symbols)
(default_collect_symbol_completion_matches_break_on): Use
objfile_compunits.
* objfiles.h (ALL_COMPUNITS): Remove.
* maint.c (count_symtabs_and_blocks): Use objfile_compunits.
* cp-support.c (add_symbol_overload_list_qualified): Use
objfile_compunits.
* ada-lang.c (ada_collect_symbol_completion_matches)
(ada_add_global_exceptions): Use objfile_compunits.

5 years agoRemove ALL_OBJFILE_COMPUNITS
Tom Tromey [Sat, 24 Nov 2018 16:00:42 +0000 (09:00 -0700)]
Remove ALL_OBJFILE_COMPUNITS

This removes ALL_OBJFILE_COMPUNITS, replacing its uses with ranged for
loops.  Because ALL_COMPUNITS is also updated, in some places a
declaration must be deleted to avoid shadowing.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* source.c (select_source_symtab)
(forget_cached_source_info_for_objfile): Remove declaration.
* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Remove
declaration.
* maint.c (count_symtabs_and_blocks): Remove declaration.
* cp-support.c (add_symbol_overload_list_qualified): Remove
declaration.
* coffread.c (coff_symtab_read): Remove declaration.
* symtab.c (lookup_symbol_in_objfile_symtabs)
(basic_lookup_transparent_type_1): Use objfile_compunits.
(lookup_objfile_from_block, find_pc_sect_compunit_symtab)
(info_sources_command, search_symbols)
(default_collect_symbol_completion_matches_break_on)
(make_source_files_completion_list): Remove declaration.
* ada-lang.c (add_nonlocal_symbols): Use objfile_compunits.
(ada_collect_symbol_completion_matches)
(ada_add_global_exceptions): Remove declaration.
* linespec.c (iterate_over_all_matching_symtabs): Use
objfile_compunits.
* objfiles.h (ALL_OBJFILE_COMPUNITS): Remove.
(class objfile_compunits): New.
(ALL_COMPUNITS): Use objfile_compunits.
* symmisc.c (print_objfile_statistics, maintenance_info_symtabs)
(maintenance_check_symtabs, maintenance_info_line_tables): Use
objfile_compunits.
* objfiles.c (objfile_relocate1): Use objfile_compunits.

5 years agoRemove ALL_MSYMBOLS and ALL_OBJFILE_MSYMBOLS
Tom Tromey [Sat, 24 Nov 2018 00:32:08 +0000 (17:32 -0700)]
Remove ALL_MSYMBOLS and ALL_OBJFILE_MSYMBOLS

This removes the ALL_MSYMBOLS and ALL_OBJFILE_MSYMBOLS macros,
replacing their uses with ranged for loops.

In a couple of spots, a new declaration was needed in order to work
around shadowing; these are just temporary and are removed in a
subsequent patch.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* symtab.c (search_symbols)
(default_collect_symbol_completion_matches_break_on): Use
objfile_msymbols.
* ada-lang.c (ada_lookup_simple_minsym)
(ada_collect_symbol_completion_matches): Use objfile_msymbols.
* minsyms.c (find_solib_trampoline_target): Use objfile_msymbols.
* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Use
objfile_msymbols.
* coffread.c (coff_symfile_read): Use objfile_msymbols.
* symmisc.c (dump_msymbols): Use objfile_msymbols.
* objc-lang.c (find_methods): Use objfile_msymbols.
(info_selectors_command, info_classes_command): Likewise.
* stabsread.c (scan_file_globals): Use objfile_msymbols.
* objfiles.h (class objfile_msymbols): New.
(ALL_OBJFILE_MSYMBOLS): Remove.
(ALL_MSYMBOLS): Remove.

5 years agoRemove ALL_OBJFILES_SAFE
Tom Tromey [Sat, 24 Nov 2018 00:09:34 +0000 (17:09 -0700)]
Remove ALL_OBJFILES_SAFE

This removes the ALL_OBJFILES_SAFE macro, replacing the uses with
ranged for loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* common/next-iterator.h (next_adapter): Add Iterator template
parameter.
* objfiles.h (ALL_OBJFILES_SAFE): Remove.
(class all_objfiles_safe): New.
* jit.c (jit_inferior_exit_hook): Use all_objfiles_safe.
* objfiles.c (put_objfile_before): Update comment.
(add_separate_debug_objfile): Likewise.
(free_all_objfiles): Use all_objfiles_safe.
(objfile_purge_solibs): Likewise.

5 years agoRemove most uses of ALL_OBJFILES
Tom Tromey [Fri, 23 Nov 2018 19:20:05 +0000 (12:20 -0700)]
Remove most uses of ALL_OBJFILES

This removes most uses of ALL_OBJFILES, replacing them with ranged for
loops.  The remaining uses are all in macros, and will be removed in
subsequent patches.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* symtab.c (iterate_over_symtabs, matching_obj_sections)
(expand_symtab_containing_pc, lookup_static_symbol)
(basic_lookup_transparent_type, find_pc_sect_compunit_symtab)
(find_symbol_at_address, find_line_symtab, find_main_name): Use
all_objfiles.
* probe.c (find_probe_by_pc, collect_probes): Use all_objfiles.
* breakpoint.c (create_overlay_event_breakpoint)
(create_longjmp_master_breakpoint)
(create_std_terminate_master_breakpoint)
(create_exception_master_breakpoint): Use all_objfiles.
* linux-thread-db.c (try_thread_db_load_from_pdir)
(has_libpthread): Use all_objfiles.
* ada-lang.c (add_nonlocal_symbols): Use all_objfiles.
* linespec.c (iterate_over_all_matching_symtabs)
(search_minsyms_for_name): Use all_objfiles.
* maint.c (maintenance_info_sections): Use all_objfiles.
* main.c (captured_main_1): Use all_objfiles.
* spu-tdep.c (spu_objfile_from_frame): Use all_objfiles.
* guile/scm-objfile.c (gdbscm_objfiles): Use all_objfiles.
* guile/scm-pretty-print.c
(ppscm_find_pretty_printer_from_objfiles): Use all_objfiles.
* solib-spu.c (append_ocl_sos): Use all_objfiles.
* symmisc.c (maintenance_print_symbols): Use all_objfiles.
(maintenance_print_msymbols): Use all_objfiles.
* source.c (select_source_symtab): Use all_objfiles.
* jit.c (jit_find_objf_with_entry_addr): Use all_objfiles.
* symfile.c (remove_symbol_file_command)
(expand_symtabs_matching, map_symbol_filenames): Use
all_objfiles.
* ppc-linux-tdep.c (ppc_linux_spe_context_inferior_created): Use
all_objfiles.
* dwarf2-frame.c (dwarf2_frame_find_fde): Use all_objfiles.
* objc-lang.c (find_methods): Use all_objfiles.
* objfiles.c (have_partial_symbols, have_full_symbols)
(have_minimal_symbols, qsort_cmp)
(default_iterate_over_objfiles_in_search_order): Use
all_objfiles.
* hppa-tdep.c (find_unwind_entry): Use all_objfiles.
* psymtab.c (maintenance_print_psymbols): Use all_objfiles.
(maintenance_check_psymtabs): Use all_objfiles.
(ALL_PSYMTABS): Remove.
* compile/compile-object-run.c (do_module_cleanup): Use
all_objfiles.
* blockframe.c (find_pc_partial_function): Use all_objfiles.
* cp-support.c (add_symbol_overload_list_qualified): Use
all_objfiles.
* windows-tdep.c (windows_iterate_over_objfiles_in_search_order):
Use all_objfiles.
* dwarf-index-write.c (save_gdb_index_command): Use all_objfiles.
* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): Use
all_objfiles.
* python/py-objfile.c (objfpy_lookup_objfile_by_name)
(objfpy_lookup_objfile_by_build_id): Use all_objfiles.
* python/py-prettyprint.c (find_pretty_printer_from_objfiles):
Uses all_objfiles.
* solib.c (solib_read_symbols): Use all_objfiles

5 years agoRemove ALL_PSPACE_OBJFILES
Tom Tromey [Fri, 23 Nov 2018 18:58:27 +0000 (11:58 -0700)]
Remove ALL_PSPACE_OBJFILES

This removes the ALL_PSPACE_OBJFILES macro in favor of ranged for
loops.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* probe.c (parse_probes_in_pspace): Use all_objfiles.
* guile/scm-progspace.c (gdbscm_progspace_objfiles): Use
all_objfiles.
* objfiles.h (ALL_PSPACE_OBJFILES): Remove.
* symmisc.c (print_symbol_bcache_statistics)
(print_objfile_statistics, maintenance_print_objfiles)
(maintenance_info_symtabs, maintenance_check_symtabs)
(maintenance_expand_symtabs, maintenance_info_line_tables): Use
all_objfiles.
* source.c (forget_cached_source_info): Use all_objfiles.
* symfile-debug.c (set_debug_symfile): Use all_objfiles.
* elfread.c (elf_gnu_ifunc_resolve_by_cache)
(elf_gnu_ifunc_resolve_by_got): Use all_objfiles.
* objfiles.c (update_section_map): Use all_objfiles.
(shared_objfile_contains_address_p): Likewise.
* psymtab.c (maintenance_info_psymtabs): Use all_objfiles.
* python/py-progspace.c (pspy_get_objfiles): Use all_objfiles.

5 years agoIntroduce all_objfiles and next_iterator
Tom Tromey [Fri, 15 Jun 2018 05:12:16 +0000 (22:12 -0700)]
Introduce all_objfiles and next_iterator

This introduces an iterable object which can be used to iterate over
objfiles.  It also introduces a generic "next_iterator", which can be
used to iterate over types that have a "next" field.

gdb/ChangeLog
2019-01-09  Tom Tromey  <tom@tromey.com>

* common/next-iterator.h: New file.
* objfiles.h (class all_objfiles): New.
(struct objfile_iterator): New.

5 years agoAutomatic date update in version.in
GDB Administrator [Thu, 10 Jan 2019 00:00:28 +0000 (00:00 +0000)]
Automatic date update in version.in

5 years agoMerge from gcc: use "cannot" instead of "can not" in libiberty and include.
Sandra Loosemore [Wed, 9 Jan 2019 21:59:16 +0000 (13:59 -0800)]
Merge from gcc: use "cannot" instead of "can not" in libiberty and include.

2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

Merge from GCC:

2019-01-09  Sandra Loosemore  <sandra@codesourcery.com>

PR other/16615 [2/5]

include/
* libiberty.h: Mechanically replace "can not" with "cannot".
* plugin-api.h: Likewise.

libiberty/
* cp-demangle.c: Mechanically replace "can not" with "cannot".
* floatformat.c: Likewise.
* strerror.c: Likewise.

5 years agoNEWS: Move changed commands description to Changed commands section.
Philippe Waroquiers [Wed, 9 Jan 2019 21:37:52 +0000 (22:37 +0100)]
NEWS: Move changed commands description to Changed commands section.

2019-01-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

* NEWS: Move the description of the changed "frame", "select-frame",
and "info frame" commands to the Changed commands section.

5 years agoS12Z: Don't crash when disassembling invalid instructions.
John Darrington [Fri, 4 Jan 2019 08:44:58 +0000 (09:44 +0100)]
S12Z: Don't crash when disassembling invalid instructions.

Check for null before dereferencing an operand pointer.  Normally
this situation should never arise, but could happen if a "partial"
instruction is encountered at the end of a file or section.

opcodes/
* s12z-dis.c (print_insn_s12z):  Do not dereference an
operand if it is null.

5 years agoS12Z: Fix disassembly of indexed OPR operands with zero index.
John Darrington [Mon, 31 Dec 2018 07:48:10 +0000 (07:48 +0000)]
S12Z: Fix disassembly of indexed OPR operands with zero index.

gas/
* testsuite/gas/s12z/jsr.s: New case.
* testsuite/gas/s12z/jsr.d: New case.
opcodes/
* s12z-dis.c (opr_emit_disassembly): Do not omit an index if it is
zero.

5 years agogdb: Remove support for old mangling schemes
Simon Marchi [Wed, 9 Jan 2019 17:57:16 +0000 (12:57 -0500)]
gdb: Remove support for old mangling schemes

An upcoming sync with gcc's libiberty [1] will remove support for old
mangling schemes (GNU v2, Lucid, ARM, HP and EDG).  It will remove the
cplus_demangle_opname function, so we need to get rid of its usages in
GDB (it's a GNU v2 specific function).

I think the changes are mostly relatively obvious, some hacks that were
necessary to support overloaded operators with GNU v2 mangling are not
needed anymore.

The change in stabsread.c is perhaps less obvious.  I think we could get
rid of more code in that region that is specific to old mangling
schemes, but I chose to do only the minimal changes required to remove
the cplus_demangle_opname uses.  There is also a detailed comment just
above that explaining how GNU v2 and v3 mangled symbols are handled, I
decided to leave it as-is, since I wasn't sure which part to remove,
change or leave there.

[1] The commit "Remove support for demangling GCC 2.x era mangling
schemes.", specifically.

gdb/ChangeLog:

* gdbtypes.c (check_stub_method_group): Remove handling of old
mangling schemes.
* linespec.c (find_methods): Likewise.
* stabsread.c (read_member_functions): Likewise.
* valops.c (search_struct_method): Likewise.
(value_struct_elt_for_reference): Likewise.
* NEWS: Mention this change.

gdb/testsuite/ChangeLog:

* gdb.cp/demangle.exp (test_gnu_style_demangling): Rename to...
(test_gnuv3_style_demangling): ... this.
(test_lucid_style_demangling): Remove.
(test_arm_style_demangling): Remove.
(test_hp_style_demangling): Remove.
(do_tests): Remove calls to the above.

gdb/doc/ChangeLog:

* gdb.texinfo (Print Settings): Remove mention of specific
demangle-style values, just refer to the in-process help.

5 years agogdb: Avoid signed integer overflow when printing source lines
Andrew Burgess [Mon, 7 Jan 2019 07:26:35 +0000 (07:26 +0000)]
gdb: Avoid signed integer overflow when printing source lines

When printing source lines with calls to print_source_lines we need to
pass a start line number and an end line number.  The end line number
is calculated by calling get_lines_to_list and adding this value to
the start line number.  For example this code from list_command:

    print_source_lines (cursal.symtab, first,
                        first + get_lines_to_list (), 0);

The problem is that get_lines_to_list returns a value based on the
GDB setting `set listsize LISTSIZE`.  By default LISTSIZE is 10,
however, its also possible to set LISTSIZE to unlimited, in which
case get_lines_to_list will return INT_MAX.

As the parameter signature for print_source_lines is:

  void print_source_lines (struct symtab *, int, int,
                           print_source_lines_flags);

and `first` in the above code is an `int`, then when LISTSIZE is
`unlimited` the above code will result in signed integer overflow,
which is undefined.

The solution in this patch is a new class source_lines_range that can
be constructed from a single line number and a direction (forward or
backward).  The range is then constructed from the line number and the
value of get_lines_to_list.

gdb/ChangeLog:

* cli/cli-cmds.c (list_command): Pass a source_lines_range to
print_source_lines.
* source.c (print_source_lines_base): Update line number check.
(print_source_lines): New function.
(source_lines_range::source_lines_range): New function.
* source.h (class source_lines_range): New class.
(print_source_lines): New declaration.

5 years agoUpdated Spanish translation for the ld sub-directory.
Nick Clifton [Wed, 9 Jan 2019 12:34:28 +0000 (12:34 +0000)]
Updated Spanish translation for the ld sub-directory.

* po/es.po: Updated Spanish translation.

5 years agoCorrect PR number in changelog entry.
Nick Clifton [Wed, 9 Jan 2019 12:31:34 +0000 (12:31 +0000)]
Correct PR number in changelog entry.

5 years agoFix a heap use after free memory access fault when displaying error messages about...
Nick Clifton [Wed, 9 Jan 2019 12:25:16 +0000 (12:25 +0000)]
Fix a heap use after free memory access fault when displaying error messages about malformed archives.

PR 14049
* readelf.c (process_archive): Use arch.file_name in error
messages until the qualified name is available.

5 years agogdb/testsuite: Remove interactive prompt case from mi_gdb_test
Andrew Burgess [Thu, 3 Jan 2019 21:13:52 +0000 (21:13 +0000)]
gdb/testsuite: Remove interactive prompt case from mi_gdb_test

I noticed that when running this test:

  make check-gdb RUNTESTFLAGS="--target_board=native-gdbserver gdb.mi/mi-break.exp"

I would occasionally see some UNRESOLVED test results like this:

  (gdb)
  PASS: gdb.mi/mi-break.exp: mi-mode=separate: breakpoint at main
  Expecting: ^(kill[
  ]+)?(.*[
  ]+[(]gdb[)]
  [ ]*)
  kill
  &"kill\n"
  ~"Kill the program being debugged? (y or n) [answered Y; input not from terminal]\n"
  =thread-group-exited,id="i1"
  ERROR: Got interactive prompt.
  UNRESOLVED: gdb.mi/mi-break.exp: mi-mode=separate:

The problem appears to be that the expect buffer fills up to include
the '(y or n)' prompt without including the following lines.

The pattern supplied by the outer test script is looking for the
following lines.  As the following lines are not present then expect
matches on the interactive prompt case rather than the case for the
user supplied pattern.

The problem with this is that we are not really at an interactive
prompt, GDB is providing an answer for us and then moving on.  When I
examine a successful run of the test the output from GDB is identical,
the only difference is where expect happens to buffer the output from
GDB.

This patch remove all special handling of the interactive prompt
case.  This means that if we ever break GDB and start seeing an
unexpected interactive prompt then tests will rely on a timeout to
fail, instead of having dedicated interactive prompt detection, but
this solves the problem that an auto-answered prompt looks very
similar to an interactive prompt.

With this patch in place I can now leave the following loop running
indefinitely, where before it would fail usually after ~10
iterations.

  while make check-gdb RUNTESTFLAGS="--target_board=native-gdbserver gdb.mi/mi-break.exp"; \
  do /bin/true; \
  done

gdb/testsuite/ChangeLog:

* lib/mi-support.exp (mi_gdb_test): Remove interactive prompt
case.

5 years agoFix leak in linespec.c
Philippe Waroquiers [Mon, 7 Jan 2019 15:02:51 +0000 (16:02 +0100)]
Fix leak in linespec.c

Valgrind reports a leak in many tests, such as:
==9382== 16 bytes in 1 blocks are definitely lost in loss record 236 of 3,282
==9382==    at 0x4C2BE6D: malloc (vg_replace_malloc.c:309)
==9382==    by 0x4197AF: xrealloc (common-utils.c:64)
==9382==    by 0x51D16A: xresizevec<linespec_canonical_name> (poison.h:170)
==9382==    by 0x51D16A: add_sal_to_sals(linespec_state*, std::vector<symtab_and_line, std::allocator<symtab_and_line> >*, symtab_and_line*, char const*, int) (linespec.c:1041)
==9382==    by 0x51E2BF: create_sals_line_offset (linespec.c:2215)
==9382==    by 0x51E2BF: convert_linespec_to_sals(linespec_state*, linespec*) (linespec.c:2358)
==9382==    by 0x521B5D: convert_explicit_location_to_sals (linespec.c:2473)

Fix leak by xfree-ing self->canonical_names in linespec_state_destructor.
The leak probably appeared with the patch 'Remove cleanup from linespec.c',
as there was a cleanup to xfree canonical_names before the patch.

Tested on Debian/amd64, native and under valgrind.

2019-01-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

* linespec.c (linespec_state_destructor): Free self->canonical_names.

5 years agoAdjust bfd/warning.m4 egrep patterns
Andrew Paprocki [Wed, 9 Jan 2019 03:21:08 +0000 (13:51 +1030)]
Adjust bfd/warning.m4 egrep patterns

Adjust the `bfd/warning.m4` `egrep` patterns to handle preprocessors
that do not define `__GNUC__`, leaving the string in the output.

bfd/
* warning.m4: Adjust egrep pattern for non-GNU compilers.
* configure: Regenerate.
binutils/
* configure: Regenerate.
gas/
* configure: Regenerate.
gold/
* configure: Regenerate.
gprof/
* configure: Regenerate.
ld/
* configure: Regenerate.
opcodes/
* configure: Regenerate.

5 years agocxxfilt test failures
Alan Modra [Wed, 9 Jan 2019 00:07:52 +0000 (10:37 +1030)]
cxxfilt test failures

Fixes these:
bfin-elf  +FAIL: cxxfilt: demangling _Z1fIvJiELb0EEvPDOT1_EFT_DpT0_E
bfin-elf  +FAIL: cxxfilt: demangling _Z14int_if_addableI1YERiP1AIXszpldecvPT_Li0EdecvS4_Li0EEE
h8300-elf  +FAIL: cxxfilt: demangling _Z1fIvJiELb0EEvPDOT1_EFT_DpT0_E
h8300-elf  +FAIL: cxxfilt: demangling _Z14int_if_addableI1YERiP1AIXszpldecvPT_Li0EdecvS4_Li0EEE
i686-pe  +FAIL: cxxfilt: demangling _Z1fIvJiELb0EEvPDOT1_EFT_DpT0_E
i686-pe  +FAIL: cxxfilt: demangling _Z14int_if_addableI1YERiP1AIXszpldecvPT_Li0EdecvS4_Li0EEE
i686-vxworks  +FAIL: cxxfilt: demangling _Z1fIvJiELb0EEvPDOT1_EFT_DpT0_E
i686-vxworks  +FAIL: cxxfilt: demangling _Z14int_if_addableI1YERiP1AIXszpldecvPT_Li0EdecvS4_Li0EEE
m32c-elf  +FAIL: cxxfilt: demangling _Z1fIvJiELb0EEvPDOT1_EFT_DpT0_E
m32c-elf  +FAIL: cxxfilt: demangling _Z14int_if_addableI1YERiP1AIXszpldecvPT_Li0EdecvS4_Li0EEE

* testsuite/binutils-all/cxxfilt.exp: Pass --no-strip-underscores
unconditionally to tests needing the option rather than via a
list of targets.

5 years agoAutomatic date update in version.in
GDB Administrator [Wed, 9 Jan 2019 00:00:35 +0000 (00:00 +0000)]
Automatic date update in version.in

5 years agoFix build failure with macOS bison
Tom Tromey [Sun, 6 Jan 2019 16:49:11 +0000 (09:49 -0700)]
Fix build failure with macOS bison

PR gdb/24060 points out a compilation failure of the C, Fortran and Pascal
parsers when they are built using the macOS system bison.  The bug is a name
clash between the VARIABLE token name and the VARIABLE enumerator in ui-out.h.

This patch renames VARIABLE in c-exp.y, f-exp.y and p-exp.y to DOLLAR_VARIABLE
to avoid the clash.  It also renames similar variables in other .y files so
that all languages use the same name.

gdb/ChangeLog
2019-01-07  Tom Tromey  <tom@tromey.com>
2019-01-07  Simon Marchi  <simon.marchi@ericsson.com>

PR gdb/24060:
* ada-exp.y (DOLLAR_VARIABLE): Rename from SPECIAL_VARIABLE.
* ada-lex.l (DOLLAR_VARIABLE): Likewise.
* c-exp.y (DOLLAR_VARIABLE): Rename from VARIABLE.
* f-exp.y (DOLLAR_VARIABLE): Likewise.
* m2-exp.y (DOLLAR_VARIABLE): Rename from INTERNAL_VAR.
* p-exp.y (DOLLAR_VARIABLE): Rename from VARIABLE.

5 years agoRemove support for old gnu v2 name mangling.
Nick Clifton [Tue, 8 Jan 2019 16:53:02 +0000 (16:53 +0000)]
Remove support for old gnu v2 name mangling.

PR 24044
* cxxfilt.c (hp_symbol_characters): Delete.
(main): Remove depcreated demangling styles.
* stabs.c (parse_stab_argtypes): Remove support for old gnu v2
demangling opnames.
* testsuite/binutils-all/cxxfilt.exp: Use the
--no-strip-underscore option for targets that do prefix their
symbols with underscores.
Update tests to elimiate those that use gnu v2 encoding.

5 years ago[AArch64][gas] Add -mcpu support for Arm Ares
Kyrylo Tkachov [Tue, 8 Jan 2019 15:18:32 +0000 (15:18 +0000)]
[AArch64][gas] Add -mcpu support for Arm Ares

This adds support for the Arm Ares CPU for AArch64.
It implements the Armv8.2-A architecture with the optional features
of statistical profiling, dot product and FP16 on by default.

Note: Ares is a codename to enable early adopters and in time
we will add the final product name once it's announced.

    * config/tc-aarch64.c (aarch64_cpus): Add ares.
    * doc/c-aarch64.texi (-mcpu): Document ares value.

5 years agoAdd testcase for PR/24065.
Tamar Christina [Tue, 8 Jan 2019 14:52:53 +0000 (14:52 +0000)]
Add testcase for PR/24065.

This adds a new testcase for objcopy -O ihex to test
that it correctly works.

binutils/ChangeLog:

PR 24065
* testsuite/binutils-all/copy-6.d: New test.
* testsuite/binutils-all/objcopy.exp: Use it.

5 years agogdb: Move declarations from symtab.h to source.h
Andrew Burgess [Mon, 7 Jan 2019 09:16:16 +0000 (09:16 +0000)]
gdb: Move declarations from symtab.h to source.h

Declarations for functions in source.c are split between source.h and
symtab.h.  This commit moves the small number that are in symtab.h
into source.h.  There's just one file that needs to add an include of
source.h in order to build.

I've moved the function header comments from source.c to source.h
inline with the recommended GDB style.

gdb/ChangeLog:

* source.c (select_source_symtab): Move header comment to
declaration in source.h.
(forget_cached_source_info_for_objfile): Likewise.
(forget_cached_source_info): Likewise.
(identify_source_line): Likewise.
* source.h (identify_source_line): Move declaration from symtab.h
and add comment from source.c
(print_source_lines): Likewise.
(forget_cached_source_info_for_objfile): Likewise.
(forget_cached_source_info): Likewise.
(select_source_symtab): Likewise.
(enum print_source_lines_flag): Move definition from symtab.h.
* symtab.h (identify_source_line): Move declaration to source.h.
(print_source_lines): Likewise.
(forget_cached_source_info_for_objfile): Likewise.
(forget_cached_source_info): Likewise.
(select_source_symtab): Likewise.
(enum print_source_lines_flag): Move definition to source.h.
* tui/tui-hooks.c: Add 'source.h' include.

5 years agogdb: Handle requests to print source lines backward
Andrew Burgess [Sun, 6 Jan 2019 23:53:22 +0000 (23:53 +0000)]
gdb: Handle requests to print source lines backward

...by which I mean from high line number to low, not, actually
backward character by character!

Commit:

  commit 62f29fda90cf1d5a1899f57ef78452471c707fd6
  Date:   Tue Oct 9 22:21:05 2018 -0600

      Highlight source code using GNU Source Highlight

introduced a regression in the test gdb.linespec/explicit.exp, in
which a request is made to GDB to print a reverse sequence of lines,
from +10 to -10 from the current line number.  The expected behaviour
is that GDB prints nothing.  The above commit changed this so that GDB
now prints:

  Line number 32 out of range; /path/to/gdb/testsuite/gdb.linespec/explicit.c has 71 lines.

which is a little confusing.

This commit fixes the regression, and restores the behaviour that GDB
prints nothing.

While I was passing I noticed a call to `back` on a std::string that I
was concerned could be empty if the request for source lines returns
an empty string.  I don't know if it would be possible for a request
for lines to return an empty string, I guess it should be impossible,
in which case, maybe this should be an assertion, but adding a `empty`
check, seems like an easy and cheap safety net.

gdb/ChangeLog:

* source.c (print_source_lines_base): Handle requests to print
reverse line number sequences, and guard against empty lines
string.

5 years agogdb: Fix skip of `\r` before `\n` in source output
Andrew Burgess [Sun, 6 Jan 2019 23:31:45 +0000 (23:31 +0000)]
gdb: Fix skip of `\r` before `\n` in source output

In this commit:

  commit 62f29fda90cf1d5a1899f57ef78452471c707fd6
  Date:   Tue Oct 9 22:21:05 2018 -0600

      Highlight source code using GNU Source Highlight

A bug was introduced such that when displaying source code from a file
with lines `\r\n` GDB would print `^M` at the end of each line.

This caused a regression on the test gdb.fortran/nested-funcs.exp,
which happens to have `\r\n` line endings.

gdb/ChangeLog:

* source.c (print_source_lines_base): Fix skip of '\r' if next
character is '\n'.

5 years agoPR24065, 32-bit objcopy fails with 64-bit address ... out of range
Alan Modra [Tue, 8 Jan 2019 11:51:57 +0000 (22:21 +1030)]
PR24065, 32-bit objcopy fails with 64-bit address ... out of range

PR 23699
PR 24065
* ihex.c (ihex_write_object_contents): Properly check 32-bit
address range.

5 years agorun_dump_test source in build directory
Alan Modra [Tue, 8 Jan 2019 06:17:52 +0000 (16:47 +1030)]
run_dump_test source in build directory

Some existing tests build .s and .d files for run_dump_test, using an
absolute #source: line in the .d file.  This patch changes that scheme
a little to instead use "#source: ./..." in .d files rather than
"#source: $objdir/...", which is more useful in cases where the .d
file is not generated.

This allows RX gas test files to be built in the build directory,
rather than in a source directory (which might be read-only).

binutils/
* testsuite/lib/binutils-common.exp (run_dump_test): Don't prepend
$srcdir/$subdir to source file name if it starts with "./".
gas/
* testsuite/gas/rx/rx.exp: Create generated test source in
current directory.
* testsuite/gas/rx/Xtod.d, * testsuite/gas/rx/abs.d,
* testsuite/gas/rx/adc.d, * testsuite/gas/rx/add.d,
* testsuite/gas/rx/and.d, * testsuite/gas/rx/bclr.d,
* testsuite/gas/rx/bcnd.d, * testsuite/gas/rx/bfmov.d,
* testsuite/gas/rx/bmcnd.d, * testsuite/gas/rx/bnot.d,
* testsuite/gas/rx/bra.d, * testsuite/gas/rx/brk.d,
* testsuite/gas/rx/bset.d, * testsuite/gas/rx/bsr.d,
* testsuite/gas/rx/btst.d, * testsuite/gas/rx/clrpsw.d,
* testsuite/gas/rx/cmp.d, * testsuite/gas/rx/dabs.d,
* testsuite/gas/rx/dadd.d, * testsuite/gas/rx/dbt.d,
* testsuite/gas/rx/dcmp.d, * testsuite/gas/rx/ddiv.d,
* testsuite/gas/rx/div.d, * testsuite/gas/rx/divu.d,
* testsuite/gas/rx/dmov.d, * testsuite/gas/rx/dmul.d,
* testsuite/gas/rx/dneg.d, * testsuite/gas/rx/dpopm.d,
* testsuite/gas/rx/dpushm.d, * testsuite/gas/rx/dround.d,
* testsuite/gas/rx/dsqrt.d, * testsuite/gas/rx/dsub.d,
* testsuite/gas/rx/dtoX.d, * testsuite/gas/rx/emaca.d,
* testsuite/gas/rx/emsba.d, * testsuite/gas/rx/emul.d,
* testsuite/gas/rx/emula.d, * testsuite/gas/rx/emulu.d,
* testsuite/gas/rx/fadd.d, * testsuite/gas/rx/fcmp.d,
* testsuite/gas/rx/fdiv.d, * testsuite/gas/rx/fmul.d,
* testsuite/gas/rx/fsqrt.d, * testsuite/gas/rx/fsub.d,
* testsuite/gas/rx/ftoi.d, * testsuite/gas/rx/ftou.d,
* testsuite/gas/rx/gprel.d, * testsuite/gas/rx/int.d,
* testsuite/gas/rx/itof.d, * testsuite/gas/rx/jmp.d,
* testsuite/gas/rx/jsr.d, * testsuite/gas/rx/machi.d,
* testsuite/gas/rx/maclh.d, * testsuite/gas/rx/maclo.d,
* testsuite/gas/rx/max.d, * testsuite/gas/rx/min.d,
* testsuite/gas/rx/mov.d, * testsuite/gas/rx/movco.d,
* testsuite/gas/rx/movli.d, * testsuite/gas/rx/movu.d,
* testsuite/gas/rx/msbhi.d, * testsuite/gas/rx/msblh.d,
* testsuite/gas/rx/msblo.d, * testsuite/gas/rx/mul.d,
* testsuite/gas/rx/mulhi.d, * testsuite/gas/rx/mullh.d,
* testsuite/gas/rx/mullo.d, * testsuite/gas/rx/mvfacgu.d,
* testsuite/gas/rx/mvfachi.d, * testsuite/gas/rx/mvfaclo.d,
* testsuite/gas/rx/mvfacmi.d, * testsuite/gas/rx/mvfc.d,
* testsuite/gas/rx/mvfcp.d, * testsuite/gas/rx/mvfdc.d,
* testsuite/gas/rx/mvfdr.d, * testsuite/gas/rx/mvtacgu.d,
* testsuite/gas/rx/mvtachi.d, * testsuite/gas/rx/mvtaclo.d,
* testsuite/gas/rx/mvtc.d, * testsuite/gas/rx/mvtcp.d,
* testsuite/gas/rx/mvtdc.d, * testsuite/gas/rx/neg.d,
* testsuite/gas/rx/nop.d, * testsuite/gas/rx/not.d,
* testsuite/gas/rx/opecp.d, * testsuite/gas/rx/or.d,
* testsuite/gas/rx/pop.d, * testsuite/gas/rx/popc.d,
* testsuite/gas/rx/popm.d, * testsuite/gas/rx/push.d,
* testsuite/gas/rx/pushc.d, * testsuite/gas/rx/pushm.d,
* testsuite/gas/rx/r-bcc.d, * testsuite/gas/rx/r-bra.d,
* testsuite/gas/rx/racl.d, * testsuite/gas/rx/racw.d,
* testsuite/gas/rx/rdacl.d, * testsuite/gas/rx/rdacw.d,
* testsuite/gas/rx/revl.d, * testsuite/gas/rx/revw.d,
* testsuite/gas/rx/rmpa.d, * testsuite/gas/rx/rolc.d,
* testsuite/gas/rx/rorc.d, * testsuite/gas/rx/rotl.d,
* testsuite/gas/rx/rotr.d, * testsuite/gas/rx/round.d,
* testsuite/gas/rx/rstr.d, * testsuite/gas/rx/rte.d,
* testsuite/gas/rx/rtfi.d, * testsuite/gas/rx/rts.d,
* testsuite/gas/rx/rtsd.d, * testsuite/gas/rx/sat.d,
* testsuite/gas/rx/satr.d, * testsuite/gas/rx/save.d,
* testsuite/gas/rx/sbb.d, * testsuite/gas/rx/sccnd.d,
* testsuite/gas/rx/scmpu.d, * testsuite/gas/rx/setpsw.d,
* testsuite/gas/rx/shar.d, * testsuite/gas/rx/shll.d,
* testsuite/gas/rx/shlr.d, * testsuite/gas/rx/smovb.d,
* testsuite/gas/rx/smovf.d, * testsuite/gas/rx/smovu.d,
* testsuite/gas/rx/sstr.d, * testsuite/gas/rx/stnz.d,
* testsuite/gas/rx/stz.d, * testsuite/gas/rx/sub.d,
* testsuite/gas/rx/suntil.d, * testsuite/gas/rx/swhile.d,
* testsuite/gas/rx/tst.d, * testsuite/gas/rx/utof.d,
* testsuite/gas/rx/wait.d, * testsuite/gas/rx/xchg.d,
* testsuite/gas/rx/xor.d: Add #source line.
ld/
* testsuite/ld-elf/sec64k.exp: Use . rather than $objdir in
generated source file names.
* testsuite/ld-m68k/m68k-got.exp: Likewise.

5 years agoAutomatic date update in version.in
GDB Administrator [Tue, 8 Jan 2019 00:00:27 +0000 (00:00 +0000)]
Automatic date update in version.in

5 years agoRevert "Sync libiberty sources with master version in gcc repository. Updated stabs...
Simon Marchi [Mon, 7 Jan 2019 23:05:36 +0000 (18:05 -0500)]
Revert "Sync libiberty sources with master version in gcc repository.  Updated stabs demangling and cxxfilt tests to match."

The previous commit breaks the GDB build, which is still using functions
cplus_demangle_opname & co.  Since removing these usages is not an
obvious fix, let's revert this patch until we get rid of them.

5 years agoSync libiberty sources with master version in gcc repository. Updated stabs demangli...
Nick Clifton [Mon, 7 Jan 2019 13:18:53 +0000 (13:18 +0000)]
Sync libiberty sources with master version in gcc repository.  Updated stabs demangling and cxxfilt tests to match.

PR 24044
* stabs.c (parse_stab_argtypes): Remove call to
cplus_mangle_opcode.
* testsuite/binutils-all/cxxfilt.exp: Replace tests of v2 encoding
with v3 encoding.  Add escape for known failures.

5 years ago[arm][gas] Add -mcpu support for Arm Ares
Kyrylo Tkachov [Mon, 7 Jan 2019 09:22:55 +0000 (09:22 +0000)]
[arm][gas] Add -mcpu support for Arm Ares

This adds support for the Arm Ares CPU in the arm port.
It implements the Armv8.2-A architecture with the relevant optional
features
of dot product and FP16 on by default.

Note: Ares is a codename to enable early adopters and in time
we will add the final product name once it's announced.

* config/tc-arm.c (arm_cpus): Add ares.
* doc/c-arm.texi (-mcpu): Document ares value.

5 years agos12z regen
Alan Modra [Mon, 7 Jan 2019 04:33:43 +0000 (15:03 +1030)]
s12z regen

* configure: Regenerate.
* po/POTFILES.in: Regenerate.

5 years agoAutomatic date update in version.in
GDB Administrator [Mon, 7 Jan 2019 00:01:08 +0000 (00:01 +0000)]
Automatic date update in version.in

5 years agoRemove remaining cleanups from c-exp.y
Tom Tromey [Thu, 3 Jan 2019 02:22:44 +0000 (19:22 -0700)]
Remove remaining cleanups from c-exp.y

This removes the remaining cleanups from c-exp.y by moving some
globals into c_parse_state, and changing expansion_obstack to be an
auto_obstack.

gdb/ChangeLog
2019-01-06  Tom Tromey  <tom@tromey.com>

* c-exp.y (struct c_parse_state) <macro_original_text,
expansion_obstack>: New member.
(macro_original_text, expansion_obstack): Remove globals.
(scan_macro_expansion, scanning_macro_expansion)
(finished_macro_expansion): Update.
(scan_macro_cleanup): Remove.
(yylex, c_parse): Update.

5 years agoRemove string-related cleanup from c-exp.y
Tom Tromey [Thu, 3 Jan 2019 02:13:15 +0000 (19:13 -0700)]
Remove string-related cleanup from c-exp.y

This removes a string-related cleanup from c-exp.y, by adding a new
member to c_parse_state to store the strings.

gdb/ChangeLog
2019-01-06  Tom Tromey  <tom@tromey.com>

* c-exp.y (struct c_parse_state) <strings>: New member.
(operator_stoken): Update.

5 years agoUse std::vector in type stacks
Tom Tromey [Thu, 3 Jan 2019 02:12:32 +0000 (19:12 -0700)]
Use std::vector in type stacks

This removes the use of VEC from parse.c and, at the same time,
removes some related cleanups from c-exp.y.

gdb/ChangeLog
2019-01-06  Tom Tromey  <tom@tromey.com>

* parser-defs.h (type_ptr): Remove typedef.  Don't declare VEC.
(union type_stack_elt) <typelist_val>: Now a pointer to
std::vector.
(type_stack_cleanup): Don't declare.
(push_typelist): Update.
* parse.c (pop_typelist): Return a std::vector.
(push_typelist): Take a std::vector.
(follow_types): Update.  Do not free args.
(type_stack_cleanup): Remove.
* c-exp.y (struct c_parse_state): New.
(cpstate): New global.
(type_aggregate_p, exp, ptr_operator, parameter_typelist)
(nonempty_typelist): Update.
(func_mod): Create a new vector.
(c_parse): Create a c_parse_state.
(check_parameter_typelist): Do not delete params.
(function_method): Update.  Do not delete type_list.

5 years agoFix crash in "finish"
Tom Tromey [Sat, 29 Dec 2018 17:46:07 +0000 (10:46 -0700)]
Fix crash in "finish"

PR gdb/28155 notes a crash in "finish" that occurs with a particular
source file compiled by clang.

The bug is the typical gdb problem of a missing call to check_typedef.
clang emits a function whose return type is a typedef to void.
get_return_value asserts that the return type is not void, but the
callers were not using check_typedef first.

gdb/ChangeLog
2019-01-06  Tom Tromey  <tom@tromey.com>

PR gdb/28155:
* python/py-finishbreakpoint.c (bpfinishpy_init): Use
check_typedef.
* infcmd.c (finish_command_fsm_should_stop): Use check_typedef.
(print_return_value): Likewise.

gdb/testsuite/ChangeLog
2019-01-06  Tom Tromey  <tom@tromey.com>

PR gdb/28155:
* gdb.dwarf2/typedef-void-finish.exp: New file.

5 years agoAutomatic date update in version.in
GDB Administrator [Sun, 6 Jan 2019 00:00:54 +0000 (00:00 +0000)]
Automatic date update in version.in

5 years agoRemove the exception and cleanup checkers
Tom Tromey [Mon, 24 Dec 2018 21:56:03 +0000 (14:56 -0700)]
Remove the exception and cleanup checkers

Now that gdb is transitioning away from cleanups, there is no reason
to keep the cleanup and exception checker scripts around.  This patch
removes them.

gdb/ChangeLog
2019-01-05  Tom Tromey  <tom@tromey.com>

* contrib/cleanup_check.py: Remove.
* contrib/gcc-with-excheck: Remove.
* contrib/exsummary.py: Remove.
* contrib/excheck.py: Remove.

5 years agoRX: binutils - Add RXv3 support.
Yoshinori Sato [Tue, 25 Dec 2018 11:04:47 +0000 (20:04 +0900)]
RX: binutils - Add RXv3 support.

* readelf.c (get_machine_flags): Add RXv3 output.

5 years agoRX: bfd - Add RXv3 support.
Yoshinori Sato [Tue, 25 Dec 2018 10:58:54 +0000 (19:58 +0900)]
RX: bfd - Add RXv3 support.

        * bfd/archures.c: Add bfd_mach_rx_v2 and bfd_mach_rx_v3.
        * bfd/bfd-in2.h: Regenerate.
        * bfd/cpu-rx.c (arch_info_struct): Add RXv2 and RXv3 entry.
        * bfd/elf32-rx.c (elf32_rx_machine): Add RXv2 and RXv3 support.

5 years agoRX: gas - Add RXv3 instruction support.
Yoshinori Sato [Tue, 25 Dec 2018 11:52:53 +0000 (20:52 +0900)]
RX: gas - Add RXv3 instruction support.

Instruction manual.
https://www.renesas.com/us/en/doc/products/mpumcu/doc/rx_family/r01us0316ej0100-rxv3sm.pdf

* config/rx-defs.h (rx_cpu_types): Add type RXV3 and RXV3FPU.
(rx_bfield): Add prototype.
(rx_post): Likewise.
* config/rx-parse.y: Add v3 instructions and Double FPU registers.
(DSIZE): Define.
(POST): Define.
(rx_check_v3): New. check v3 type.
(rx_check_dfpu): New. check have double support.
(double_condition_table): New. dcmp<cond> contiditon.
(check_condition): Multiple condition support.
(rx_lex): RXv3 instructions support.
Add parse dcmp<cond> instruction and Double FPU registers.
(immediate): Disable optimize in dmov #imm case.
(displacement): Add double displacement in dmov instraction.
* config/tc-rx.c (rx_use_conventional_section_names):
Invert default value in rx-*-linux target.
(cpu_type): Add additional ELF flags.
(cpu_type_list): Add RXv3.
(md_parse_option): Refer elf_flags from cpu_type_list.
(md_show_usage): Add rxv3 and rxv3-dfpu.
(rx_bytesT): Add post byte.
(rx_bfield): New. generate bfmov / bfmovz "imm" field.
(rx_post): New. Set instruction post byte.
(md_assemble): Add post byte.
doc/c-rx.texi: Add cpu types.
* testsuite/gas/rx/Xtod.d: New.
* testsuite/gas/rx/Xtod.sm: New.
* testsuite/gas/rx/bfmov.d: New.
* testsuite/gas/rx/bfmov.sm: New.
* testsuite/gas/rx/dabs.d: New.
* testsuite/gas/rx/dabs.sm: New.
* testsuite/gas/rx/dadd.d: New.
* testsuite/gas/rx/dadd.sm: New.
* testsuite/gas/rx/dcmp.d: New.
* testsuite/gas/rx/dcmp.sm: New.
* testsuite/gas/rx/ddiv.d: New.
* testsuite/gas/rx/ddiv.sm: New.
* testsuite/gas/rx/dmov.d: New.
* testsuite/gas/rx/dmov.sm: New.
* testsuite/gas/rx/dmul.d: New.
* testsuite/gas/rx/dmul.sm: New.
* testsuite/gas/rx/dneg.d: New.
* testsuite/gas/rx/dneg.sm: New.
* testsuite/gas/rx/dpopm.d: New.
* testsuite/gas/rx/dpopm.sm: New.
* testsuite/gas/rx/dpushm.d: New.
* testsuite/gas/rx/dpushm.sm: New.
* testsuite/gas/rx/dround.d: New.
* testsuite/gas/rx/dround.sm: New.
* testsuite/gas/rx/dsqrt.d: New.
* testsuite/gas/rx/dsqrt.sm: New.
* testsuite/gas/rx/dsub.d: New.
* testsuite/gas/rx/dsub.sm: New.
* testsuite/gas/rx/dtoX.d: New.
* testsuite/gas/rx/dtoX.sm: New.
* testsuite/gas/rx/macros.inc: Add double FPU registers.
* testsuite/gas/rx/mvfdc.d: New.
* testsuite/gas/rx/mvfdc.sm: New.
* testsuite/gas/rx/mvfdr.d: New.
* testsuite/gas/rx/mvfdr.sm: New.
* testsuite/gas/rx/mvtdc.d: New.
* testsuite/gas/rx/mvtdc.sm: New.
* testsuite/gas/rx/rstr.d: New.
* testsuite/gas/rx/rstr.sm: New.
* testsuite/gas/rx/rx.exp: Use rxv3-dfpu option.
* testsuite/gas/rx/save.d: New.
* testsuite/gas/rx/save.sm: New.
* testsuite/gas/rx/xor.d: New.
* testsuite/gas/rx/xor.sm: Add pattern.

5 years agoRX: include - Add RXv3 support.
Yoshinori Sato [Tue, 25 Dec 2018 11:44:15 +0000 (20:44 +0900)]
RX: include - Add RXv3 support.

* elf/rx.h (EF_RX_CPU_MASK): Update new bits.
(E_FLAG_RX_V3): New RXv3 type.
* opcode/rx.h (RX_Size): Add double size.
(RX_Operand_Type): Add double FPU registers.
(RX_Opcode_ID): Add new instuctions.

5 years agoGDB crash re-running program on Windows (native)
Joel Brobecker [Sat, 5 Jan 2019 07:55:08 +0000 (11:55 +0400)]
GDB crash re-running program on Windows (native)

Running any program twice on Windows current results in GDB crashing:

    $ gdb -q any_program
    (gdb) run
    $ gdb dummy -batch -ex run -ex run
    [New Thread 684960.0xe5878]
    [New Thread 684960.0xd75ac]
    [New Thread 684960.0xddac8]
    [New Thread 684960.0xc1f50]
    [Thread 684960.0xd75ac exited with code 0]
    [Thread 684960.0xddac8 exited with code 0]
    [Thread 684960.0xc1f50 exited with code 0]
    [Inferior 1 (process 684960) exited normally]
    (gdb) run
    Segmentation fault

The crash happens while processing the CREATE_PROCESS_DEBUG_EVENT
for  the second run; in particular, we have in get_windows_debug_event:

    | case CREATE_PROCESS_DEBUG_EVENT:
    |   [...]
    |   if (main_thread_id)
    |     windows_delete_thread (ptid_t (current_event.dwProcessId, 0,
    |                                    main_thread_id),
    |                            0);

The problem is that main_thread_id is the TID of the main thread from
the *previous* inferior, and this code is trying to delete that
thread. The problem is that it is constructing a PTID by pairing
the TID of the previous inferior with the PID of the new inferior.
As a result, when we dig inside windows_delete_thread to see
how it would handle that, we see...

    | delete_thread (find_thread_ptid (ptid));

Since the PTID is bogus, we end up calling delete_thread with
a NULL thread_info. It used to be harmless, turning the delete_thread
into a nop, but the following change...

    | commit 080363310650c93ad8e93018bcb6760ba5d32d1c
    | Date:   Thu Nov 22 16:09:14 2018 +0000
    | Subject: Per-inferior thread list, thread ranges/iterators, down with ALL_THREADS, etc.

... changed delete_thread to get the list of threads from
the inferior, which itself is now accessed via the given
thread_info. This is the corresponding diff that shows the change:

    | -  for (tp = thread_list; tp; tpprev = tp, tp = tp->next)
    | +  for (tp = thr->inf->thread_list; tp; tpprev = tp, tp = tp->next)

As a result of this, passing a NULL thread_info is no longer
an option!

Stepping back a bit, the reason behind deleting the thread late
could be found in a patch from Dec 2003, which laconically explains:

    | commit 87a45c96062d658ca83b50aa060a648bf5f5f1ff
    | Date:   Fri Dec 26 00:39:04 2003 +0000
    |
    | * win32-nat.c (get_child_debug_event): Keep main thread id around
    | even after thread exits since Windows insists on continuing to
    | report events against it.

A look at the gdb-patches archives did not provide any additional
clues (https://www.sourceware.org/ml/gdb-patches/2003-12/msg00478.html).
It is not clear whether this is still needed or not. This patch
assumes that whatever isue there was, the versions of Windows
we currently support no longer have it.

With that in mind, this commit fixes the issue by deleting the thread
when the inferior sends the exit-process event as opposed to deleting it
later, while starting a new inferior.

This also restores the printing of the thread-exit notification for
the main thread, which was missing before. Looking at the transcript
of the example shown above, we can see 4 thread creation notifications,
and only 3 notifications for thread exits. Now creation and exit
notifications are balanced.

In the handling of EXIT_THREAD_DEBUG_EVENT, the main_thread_id
check is removed because deemed unnecessary: The main thread was
introduced by a CREATE_PROCESS_DEBUG_EVENT, and thus the kernel
is expected to report its death via EXIT_PROCESS_DEBUG_EVENT.

And finally, because the behavior of delete_thread did change
(albeit when getting a value we probably never expected to receive),
this patch also adds a gdb_assert. The purpose is to provide some
immediate information in case there are other callers that mistakenly
call delete_thread with a NULL thread info. This can be useful
information when direct debugging of GDB isn't an option.

gdb/ChangeLog:

* thread.c (delete_thread_1): Add gdb_assert that THR is not
NULL. Initialize tpprev to NULL instead of assigning it
to NULL on the next statement.
* windows-nat.c (windows_delete_thread): Remove check for
main_thread_id before printing thread exit notifications.
(get_windows_debug_event) <EXIT_THREAD_DEBUG_EVENT>:
Remove thread ID check against main_thread_id.
<CREATE_PROCESS_DEBUG_EVENT>: Remove call to
windows_delete_thread.
<EXIT_PROCESS_DEBUG_EVENT>: Add call to windows_delete_thread.

5 years agoAutomatic date update in version.in
GDB Administrator [Sat, 5 Jan 2019 00:00:37 +0000 (00:00 +0000)]
Automatic date update in version.in

5 years agoUse upper case for more metasyntactic variables in gdb
Tom Tromey [Mon, 24 Dec 2018 21:41:40 +0000 (14:41 -0700)]
Use upper case for more metasyntactic variables in gdb

I noticed a few places where a Usage line in gdb did not use upper
case for metasyntactic variables.  This patch fixes all the instances
I found.

Tested on x86-64 Fedora 28.

gdb/ChangeLog
2019-01-04  Tom Tromey  <tom@tromey.com>

* compile/compile.c (_initialize_compile): Use upper case for
metasyntactic variables.
* symmisc.c (_initialize_symmisc): Use upper case for
metasyntactic variables.
* psymtab.c (_initialize_psymtab): Use upper case for
metasyntactic variables.
* demangle.c (demangle_command): Use upper case for metasyntactic
variables.
(_initialize_demangler): Likewise.
* ax-gdb.c (_initialize_ax_gdb): Use upper case for metasyntactic
variables.

5 years agoFix potential buffer overrun whilst scanning macro strings.
Wu Heng [Fri, 4 Jan 2019 16:18:59 +0000 (16:18 +0000)]
Fix potential buffer overrun whilst scanning macro strings.

PR 24010
* macro.c (get_any_string): Check for end of input whilst scanning
for separators.

5 years agoFix bug parsing angle bracketed string sequences.
Wu Heng [Fri, 4 Jan 2019 15:58:02 +0000 (15:58 +0000)]
Fix bug parsing angle bracketed string sequences.

PR 24009
* read.c (stringer): Fix handling of missing '>' character at end
of <...> sequence.

5 years agoChange the default for the CSKY target to be little endian.
Lifang Xia [Fri, 4 Jan 2019 13:56:46 +0000 (13:56 +0000)]
Change the default for the CSKY target to be little endian.

* config.bfd (csky-*-elf* | csky-*-linux*): Modify the csky
default target, little endian target is more suitable.

5 years agoFix a possible integer overflow problem when examining corrupt binaries using a 32...
Nick Clifton [Fri, 4 Jan 2019 13:44:34 +0000 (13:44 +0000)]
Fix a possible integer overflow problem when examining corrupt binaries using a 32-bit binutil.

PR 24005
* objdump.c (load_specific_debug_section): Check for integer
overflow before attempting to allocate contents.

5 years agoFix ridiculously small memory leak.
Nick Clifton [Fri, 4 Jan 2019 12:11:51 +0000 (12:11 +0000)]
Fix ridiculously small memory leak.

PR 24001
* objcopy.c (copy_object): Free dhandle after writing out the
debug information.
* objdump.c (dump_bfd): Free dhandle after printing out the debug
information.

5 years agoPR24061, powerpc-ibm-aix-ar sets bogus file permissions when extracting
Alan Modra [Fri, 4 Jan 2019 01:48:36 +0000 (12:18 +1030)]
PR24061, powerpc-ibm-aix-ar sets bogus file permissions when extracting

Mode field should be read in octal, all the rest in decimal.  Do so.

PR 24061
PR 21786
* coff-rs6000.c (GET_VALUE_IN_FIELD): Add base parameter and
adjust all callers.
(EQ_VALUE_IN_FIELD): Likewise.
* coff64-rs6000.c (GET_VALUE_IN_FIELD): Likewise.

5 years agoAutomatic date update in version.in
GDB Administrator [Fri, 4 Jan 2019 00:00:29 +0000 (00:00 +0000)]
Automatic date update in version.in

5 years agoUse xstrdup in tui_set_source_content
Tom Tromey [Wed, 2 Jan 2019 18:41:44 +0000 (11:41 -0700)]
Use xstrdup in tui_set_source_content

valgrind pointed out that the string copy in tui_set_source_content
was not allocating space for the trailing \0:

==3941== Invalid write of size 1
==3941==    at 0x4C3239F: strcpy (vg_replace_strmem.c:512)
==3941==    by 0x72036B: strcpy (string_fortified.h:90)
==3941==    by 0x72036B: tui_set_source_content(symtab*, int, int) (tui-source.c:203)

Looking closer, I don't think there's a need to check the line width
here, so this patch changes it to use xstrdup.

Tested by re-running the TUI under valgrind.  There are still other
valgrind reports from TUI code, but this one is gone.

gdb/ChangeLog
2019-01-03  Tom Tromey  <tom@tromey.com>

* tui/tui-source.c (tui_set_source_content): Use xstrdup.

5 years agoAvoid questionable casts in py-symtab.c
Tom Tromey [Thu, 27 Dec 2018 19:16:06 +0000 (12:16 -0700)]
Avoid questionable casts in py-symtab.c

py-symtab.c has some questionable casts of Py_None to symtab_object*.
This patch avoids these casts by instead using downcasts at the
appropriate places.

gdb/ChangeLog
2019-01-03  Tom Tromey  <tom@tromey.com>

* python/py-symtab.c (salpy_str): Update.
(struct salpy_sal_object) <symtab>: Now a PyObject.
(salpy_dealloc): Update.
(del_objfile_sal): Use gdbpy_ref.

5 years agoImprove reference counting in py-type.c
Tom Tromey [Thu, 27 Dec 2018 19:08:09 +0000 (12:08 -0700)]
Improve reference counting in py-type.c

This improves the reference counting in py-type.c by using gdbpy_ref
and gdbpy_ref::new_reference in more places.

gdb/ChangeLog
2019-01-03  Tom Tromey  <tom@tromey.com>

* python/py-type.c (convert_field): Use new_reference.  Return
gdbpy_ref.
(make_fielditem): Return gdbpy_ref.
(typy_fields): Update.
(typy_getitem): Update.
(field_name): Return gdbpy_ref.  Use new_reference.
(typy_iterator_iternext): Update.

5 years agoSimplify gdbpy_stop_recording
Tom Tromey [Thu, 27 Dec 2018 18:57:28 +0000 (11:57 -0700)]
Simplify gdbpy_stop_recording

This simplifies gdbpy_stop_recording, by having it use Py_RETURN_NONE
rather than writing it out manually, and by usin the idiomatic
GDB_PY_HANDLE_EXCEPTION.

gdb/ChangeLog
2019-01-03  Tom Tromey  <tom@tromey.com>

* python/py-record.c (gdbpy_stop_recording): Use Py_RETURN_NONE.

5 years agoRemove more uses of explicit reference counting in Python
Tom Tromey [Thu, 27 Dec 2018 18:53:20 +0000 (11:53 -0700)]
Remove more uses of explicit reference counting in Python

This changes some more place in the Python code to use gdbpy_ref
rather than explicit reference counting.  While doing this I found a
latent bug in typy_fields_items -- it was not checking for errors in
one spot.  I also changed valpy_dealloc to use Py_XDECREF rather than
an explicit "if".

gdb/ChangeLog
2019-01-03  Tom Tromey  <tom@tromey.com>

* python/py-value.c (valpy_dealloc): Use Py_XDECREF.
* python/py-type.c (typy_fields_items): Use gdbpy_ref.
* python/py-progspace.c (pspy_set_printers): Use gdbpy_ref.
(pspy_set_frame_filters, pspy_set_frame_unwinders)
(pspy_set_type_printers): Likewise.
* python/py-function.c (fnpy_init): Use gdbpy_ref.
* python/py-cmd.c (cmdpy_init): Use gdbpy_ref.
* python/py-objfile.c (objfpy_set_printers): Use gdbpy_ref.
(objfpy_set_frame_filters, objfpy_set_frame_unwinders)
(objfpy_set_type_printers): Likewise.

5 years agoUse a wrapper for PyErr_Fetch
Tom Tromey [Thu, 27 Dec 2018 18:32:01 +0000 (11:32 -0700)]
Use a wrapper for PyErr_Fetch

This introduces a new class that wraps PyErr_Fetch and PyErr_Restore,
and then changes all the callers in gdb to use it.  This reduces the
amount of explicit reference counting that is done in the Python code.
I also found and fixed a latent bug in gdbpy_print_stack -- it was not
correctly checking some error conditions, nor clearing the exception
when needed.

gdb/ChangeLog
2019-01-03  Tom Tromey  <tom@tromey.com>

* python/python.c (gdbpy_enter, ~gdbpy_enter): Update.
(gdbpy_print_stack): Use gdbpy_err_fetch.
* python/python-internal.h (class gdbpy_err_fetch): New class.
(class gdbpy_enter) <m_error_type, m_error_value,
m_error_traceback>: Remove.
<m_error>: New member.
(gdbpy_exception_to_string): Don't declare.
* python/py-varobj.c (py_varobj_iter_next): Use gdbpy_err_fetch.
* python/py-value.c (convert_value_from_python): Use
gdbpy_err_fetch.
* python/py-utils.c (gdbpy_err_fetch::to_string): Rename from
gdbpy_exception_to_string.
(gdbpy_handle_exception): Use gdbpy_err_fetch.
* python/py-prettyprint.c (print_stack_unless_memory_error): Use
gdbpy_err_fetch.

5 years agogdb: Remove cleanup from linux_nat_target::follow_fork
Andrew Burgess [Mon, 31 Dec 2018 22:20:56 +0000 (22:20 +0000)]
gdb: Remove cleanup from linux_nat_target::follow_fork

Remove cleanup from linux_nat_target::follow_fork, instead add a new
unique_ptr specialisation for holding lwp_info pointers and use this
to ensure the pointer is cleaned up when needed.

gdb/ChangeLog:

* linux-nat.c (delete_lwp_cleanup): Delete.
(struct lwp_deleter): New struct.
(lwp_info_up): New typedef.
(linux_nat_target::follow_fork): Delete cleanup, and make use of
lwp_info_up.

5 years agogdb: Remove cleanup from linux-fork.c:inferior_call_waitpid
Andrew Burgess [Mon, 31 Dec 2018 21:23:14 +0000 (21:23 +0000)]
gdb: Remove cleanup from linux-fork.c:inferior_call_waitpid

Replace cleanup in linux-fork.c:inferior_call_waitpid with a RAII
object.

gdb/ChangeLog:

* linux-fork.c (class scoped_switch_fork_info): New class.
(inferior_call_waitpid): Update to use scoped_switch_fork_info.

5 years agogdb: Remove final cleanup from find_overload_match
Andrew Burgess [Mon, 31 Dec 2018 17:44:17 +0000 (17:44 +0000)]
gdb: Remove final cleanup from find_overload_match

This patch removes the setup of a null_cleanup in
valops.c:find_overload_match, and all the calls to do_cleanups.

gdb/ChangeLog:

* valops.c (find_overload_match): Remove use of null_cleanup, and
calls to do_cleanups.

5 years agogdb: Remove a cleanup from find_overload_match
Andrew Burgess [Mon, 31 Dec 2018 17:41:38 +0000 (17:41 +0000)]
gdb: Remove a cleanup from find_overload_match

This patch changes cp-support.c:cp_func_name to return a
'gdb::unique_xmalloc_ptr<char>' instead of a 'char *'.  This allows a
cleanup to be removed from valops.c:find_overload_match.

gdb/ChangeLog:

* compile/compile-cplus-types.c
(compile_cplus_instance::decl_name): Handle changes to
cp_func_name.
* cp-support.c (cp_func_name): Update header comment, update
return type.
* cp-support.h (cp_func_name): Update return type in declaration.
* valops.c (find_overload_match): Move temp_func local to top
level of function and change its type.  Use temp_func to hold and
delete temporary string obtained from cp_func_name.

5 years agogdb/remote: Remove a cleanup in remote_check_symbols
Andrew Burgess [Mon, 31 Dec 2018 14:05:09 +0000 (14:05 +0000)]
gdb/remote: Remove a cleanup in remote_check_symbols

Convert one of the variables that requires a cleanup from a 'char *'
to a 'gdb::char_vector' in remote_target::remote_check_symbols.

Tested on x86-64/Linux with target_board native-gdbserver and
native-extended-gdbserver.

gdb/ChangeLog:

* remote.c (remote_target::remote_check_symbols): Convert `msg` to
gdb::char_vector, remove cleanup, and update uses of `msg`.

5 years agoRISC-V: Fix wrong use of s0 register name.
Jim Wilson [Thu, 3 Jan 2019 19:12:17 +0000 (11:12 -0800)]
RISC-V: Fix wrong use of s0 register name.

s0 is listed as both an int register name and an FP register name.  The FP reg
name is wrong.  This looks like a simple editting error, and has an easy fix.
Tested with riscv64-linux build and check, with no regressions.

gdb/
* riscv-tdep.c (riscv_freg_feature): Drop s0 name from f8.

5 years agoS12Z: opcodes: Separate the decoding of operations from their display.
John Darrington [Thu, 3 Jan 2019 17:30:40 +0000 (18:30 +0100)]
S12Z: opcodes: Separate the decoding of operations from their display.

This change adds an abstraction layer between the decoding of machine
operations and their disassembled textual representation.  This allows
the decoding routines to be re-used for other purposes (at the expense)
of slightly slower running time.

ChangeLog: opcodes/

   * s12z-opc.c: New file.
   * s12z-opc.h: New file.
   * s12z-dis.c: Removed all code not directly related to display
     of instructions.  Used the interface provided by the new files
     instead.
   * Makefile.am (TARGET_LIBOPCODES_CFILES) Add s12z-opc.c.
   * Makefile.in: regenerate.
   * configure.ac (bfd_s12z_arch): Correct the dependencies.
   * configure: regenerate.

5 years agoAdd 'extern C' if simulator is written in C++
Павел Крюков [Mon, 31 Dec 2018 11:53:54 +0000 (14:53 +0300)]
Add 'extern C' if simulator is written in C++

sim/common/Changelog:
2018-12-31  Pavel I. Kryukov  <kryukov@frtk.ru>

        * sim-base.h: Add 'extern C' if header is compiled with C++

5 years agoDon't build readline/libreadline.a, when --with-system-readline is supplied
Дилян Палаузов [Wed, 12 Dec 2018 07:46:03 +0000 (07:46 +0000)]
Don't build readline/libreadline.a, when --with-system-readline is supplied

https://sourceware.org/bugzilla/show_bug.cgi?id=18632

The bundled libreadline is always built, even if the system is
./configure'd --with-system-readline and the build libreadline.a is not
used.

Proposed patch:

Fix ./configure.ac not to proceed readline/, when --with-system-
readline is provided

5 years agoAutomatic date update in version.in
GDB Administrator [Thu, 3 Jan 2019 00:00:34 +0000 (00:00 +0000)]
Automatic date update in version.in

5 years agoRemove a cleanup from target-descriptions.c
Tom Tromey [Wed, 2 Jan 2019 15:03:13 +0000 (08:03 -0700)]
Remove a cleanup from target-descriptions.c

This removes a cleanup from target-descriptions.c, by changing it to
use a unique_ptr instead.  Note that a deletion adapter is used, even
though target_desc is allocated with new, to avoid moving target_desc
to target-descriptions.h.

gdb/ChangeLog
2019-01-02  Tom Tromey  <tom@tromey.com>

* xml-tdesc.c (xml_cache): Hold a target_desc_up.
(tdesc_parse_xml): Remove cleanups.
* target-descriptions.h (make_cleanup_free_target_description):
Don't declare.
(target_desc_deleter): New struct.
(target_desc_up): New typedef.
* target-descriptions.c (target_desc_deleter::operator()): Rename
from free_target_description.
(make_cleanup_free_target_description): Remove.

5 years agoRemove cleanups from linespec.c
Tom Tromey [Wed, 2 Jan 2019 16:17:43 +0000 (09:17 -0700)]
Remove cleanups from linespec.c

This removes the remaining cleanups from linespec.c.  This adds a
constructor and destructor to linespec_parser, but in a minimal way --
the parser could still benefit from a bit more C++-ification.

gdb/ChangeLog
2019-01-02  Tom Tromey  <tom@tromey.com>

* linespec.c (struct linespec_parser): Rename from ls_parser.  Add
constructor, destructor.
(linespec_parser): Remove typedef.
(~linespec_parser): Rename from linespec_parser_delete.
(linespec_lex_to_end, linespec_complete_label)
(linespec_complete): Update.
(decode_line_full): Remove cleanups.
(decode_line_1): Update.

5 years agoChange inferior_to_inferior_object to return a gdbpy_ref
Tom Tromey [Wed, 2 Jan 2019 16:58:14 +0000 (09:58 -0700)]
Change inferior_to_inferior_object to return a gdbpy_ref

Most callers of inferior_to_inferior_object already use a gdbpy_ref,
so this changes inferior_to_inferior_object to return one.  Doing this
revealed that create_thread_object was not correctly handling the case
where inferior_to_inferior_object failed, so this patch fixes this as
well.

gdb/ChangeLog
2019-01-02  Tom Tromey  <tom@tromey.com>

* python/python-internal.h (inferior_to_inferior_object): Change
return type.
* python/py-exitedevent.c (create_exited_event_object): Update.
* python/py-inferior.c (inferior_to_inferior_object): Return
gdbpy_ref.
(python_new_inferior, python_inferior_deleted)
(thread_to_thread_object, delete_thread_object)
(build_inferior_list, gdbpy_selected_inferior): Update.
* python/py-infthread.c (create_thread_object): Update.  Also fail
if inferior_to_inferior_object fails.