binutils-gdb.git
3 years agoAutomatic date update in version.in
GDB Administrator [Sun, 18 Apr 2021 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoHandle unaligned mapping of .gdb_index
Tom Tromey [Sat, 17 Apr 2021 19:56:36 +0000 (13:56 -0600)]
Handle unaligned mapping of .gdb_index

The .gdb_index was designed such that all data would be aligned.
Unfortunately, we neglected to require this alignment in the objcopy
instructions in the manual.  As a result, in many cases, a .gdb_index
in the wild will not be properly aligned by mmap.  This yields
undefined behavior, which is PR gdb/23743.

This patch fixes the bug by always assuming that the mapping is
unaligned, and using extract_unsigned_integer when needed.  A new
helper class is introduced to make this less painful.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

PR gdb/23743:
* dwarf2/read.c (class offset_view): New.
(struct symbol_table_slot): Remove.
(struct mapped_index) <symbol_table, constant_pool>: Change type.
<symbol_name_index, symbol_vec_index>: New methods.
<symbol_name_slot_invalid, symbol_name_at, symbol_name_count>:
Rewrite.
(read_gdb_index_from_buffer): Update.
(struct dw2_symtab_iterator) <vec>: Change type.
(dw2_symtab_iter_init_common, dw2_symtab_iter_init)
(dw2_symtab_iter_next, dw2_expand_marked_cus): Update.
* dwarf2/index-write.c (class data_buf) <append_data>: Remove.
<append_array, append_offset>: New methods.
(write_hash_table, add_address_entry, write_gdbindex_1)
(write_debug_names): Update.
* dwarf2/index-common.h (byte_swap, MAYBE_SWAP): Remove.

3 years agoAvoid crash in write_psymtabs_to_index
Tom Tromey [Sat, 17 Apr 2021 19:40:04 +0000 (13:40 -0600)]
Avoid crash in write_psymtabs_to_index

If I try "save gdb-index" using the executable from
gdb.cp/cmpd-minsyms.exp, gdb will crash.  This happens due to a
missing NULL check.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* dwarf2/index-write.c (write_psymtabs_to_index): Check
partial_symtabs.

gdb/testsuite/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* gdb.dwarf2/gdb-index-nodebug.exp: New file.

3 years agoSimplify quick_symbol_functions::map_matching_symbols
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Simplify quick_symbol_functions::map_matching_symbols

quick_symbol_functions::map_matching_symbols is only used by the Ada
code.  Currently, it both expands certain psymtabs and then walks over
the full symtabs -- including any already-expanded ones -- calling a
callback.

It appears to work lazily as well, in that if the callback returns
false, iteration stops.  However, only the psymtab implementation does
this; the DWARF index implementations are not lazy.  It turns out,
though, that the only callback that is ever passed here never returns
false.

This patch simplifies this method by removing the callback.  The
method is also renamed.  In the new scheme, the caller is responsible
for walking the full symtabs, which removes some redundancy as well.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* psymtab.c (psymbol_functions::expand_matching_symbols): Rename
from map_matching_symbols.  Change parameters.
* psympriv.h (struct psymbol_functions) <expand_matching_symbols>:
Rename from map_matching_symbols.  Change parameters.
* dwarf2/read.c (struct dwarf2_gdb_index)
<expand_matching_symbols>: Rename from map_matching_symbols.
Change parameters.
(struct dwarf2_debug_names_index) <expand_matching_symbols>:
Rename from map_matching_symbols.  Change parameters.
(dwarf2_gdb_index::expand_matching_symbols): Rename from
dw2_map_matching_symbols.  Change parameters.
(dwarf2_gdb_index::expand_matching_symbols): Remove old
implementation.
(dwarf2_debug_names_index::expand_matching_symbols): Rename from
map_matching_symbols.  Change parameters.
* objfiles.h (struct objfile) <expand_matching_symbols>: Rename
from map_matching_symbols.  Change parameters.
* symfile-debug.c (objfile::expand_matching_symbols): Rename from
map_matching_symbols.  Change parameters.
* ada-lang.c (map_matching_symbols): New function.
(add_nonlocal_symbols): Update.

3 years agoRemove quick_symbol_functions::expand_symtabs_with_fullname
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Remove quick_symbol_functions::expand_symtabs_with_fullname

This removes quick_symbol_functions::expand_symtabs_with_fullname,
replacing it with a call to expand_symtabs_matching.  As with the
previous patches, the implementation is consolidated in the objfile
method.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* quick-symbol.h (struct quick_symbol_functions)
<expand_symtabs_with_fullname>: Remove.
* psymtab.c (psymbol_functions::expand_symtabs_with_fullname):
Remove.
* psympriv.h (struct psymbol_functions)
<expand_symtabs_with_fullname>: Remove.
* dwarf2/read.c (struct dwarf2_base_index_functions)
<expand_symtabs_with_fullname>: Remove.
(dwarf2_base_index_functions::expand_symtabs_with_fullname):
Remove.
* objfiles.h (struct objfile) <expand_symtabs_with_fullname>:
Update comment.
* symfile-debug.c (objfile::expand_symtabs_with_fullname):
Rewrite.

3 years agoRemove quick_symbol_functions::expand_symtabs_for_function
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Remove quick_symbol_functions::expand_symtabs_for_function

This removes quick_symbol_functions::expand_symtabs_for_function,
replacing it with a call to expand_symtabs_matching.  As with the
previous patches, the implementation is consolidated in the objfile
method.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* symfile-debug.c (objfile::expand_symtabs_for_function):
Rewrite.
* quick-symbol.h (struct quick_symbol_functions)
<expand_symtabs_for_function>: Remove.
* psymtab.c (psymbol_functions::expand_symtabs_for_function):
Remove.
* psympriv.h (struct psymbol_functions)
<expand_symtabs_for_function>: Remove.
* objfiles.h (struct objfile) <expand_symtabs_for_function>:
Update comment.
* dwarf2/read.c (struct dwarf2_gdb_index)
<expand_symtabs_for_function>: Remove.
(struct dwarf2_debug_names_index) <expand_symtabs_for_function>:
Remove.
(find_slot_in_mapped_hash): Remove.
(dw2_symtab_iter_init_common): Merge with dw2_symtab_iter_init.
(dw2_symtab_iter_init): Remove one overload.
(dwarf2_gdb_index::expand_symtabs_for_function)
(dwarf2_debug_names_index::expand_symtabs_for_function): Remove.

3 years agoRemove quick_symbol_functions::map_symtabs_matching_filename
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Remove quick_symbol_functions::map_symtabs_matching_filename

This replaces quick_symbol_functions::map_symtabs_matching_filename
with a call to expand_symtabs_matching.  As with the previous patch,
rather than update all callers, the implementation is consolidated in
objfile::map_symtabs_matching_filename.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* symfile-debug.c (objfile::map_symtabs_matching_filename):
Rewrite.
* quick-symbol.h (struct quick_symbol_functions)
<map_symtabs_matching_filename>: Remove.
* psymtab.c (partial_map_expand_apply)
(psymbol_functions::map_symtabs_matching_filename): Remove.
* psympriv.h (struct psymbol_functions)
<map_symtabs_matching_filename>: Remove.
* objfiles.h (struct objfile) <map_symtabs_matching_filename>:
Update comment.
* dwarf2/read.c (struct dwarf2_base_index_functions)
<map_symtabs_matching_filename>: Remove.
(dw2_map_expand_apply)
(dwarf2_base_index_functions::map_symtabs_matching_filename):
Remove.

3 years agoRemove quick_symbol_functions::lookup_symbol
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Remove quick_symbol_functions::lookup_symbol

This removes quick_symbol_functions, replacing it with calls to
expand_symtabs_matching.  Because the replacement is somewhat verbose,
objfile::lookup_symbol is not removed.  This consolidates some
duplicated code into this one spot.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* symfile-debug.c (objfile::lookup_symbol): Rewrite.
* quick-symbol.h (struct quick_symbol_functions) <lookup_symbol>:
Remove.
* psymtab.c (psymbol_functions::lookup_symbol): Remove.
* psympriv.h (struct psymbol_functions) <lookup_symbol>: Remove.
* objfiles.h (struct objfile) <lookup_symbol>: Add comment.
* dwarf2/read.c (struct dwarf2_gdb_index) <lookup_symbol>:
Remove.
(struct dwarf2_debug_names_index) <lookup_symbol>: Remove.
(dwarf2_gdb_index::lookup_symbol)
(dwarf2_debug_names_index::lookup_symbol): Remove.

3 years agoAdd 'domain' parameter to expand_symtabs_matching
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Add 'domain' parameter to expand_symtabs_matching

Currently, expand_symtabs_matching only accepts a search_domain
parameter.  However, lookup_symbol uses a domain_enum instead, and the
two, confusingly, do quite different things -- one cannot emulate the
other.  So, this patch adds a domain_enum parameter to
expand_symtabs_matching, with UNDEF_DOMAIN used as a wildcard.

This is another step toward replacing lookup_symbol with
expand_symtabs_matching.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* symtab.c (global_symbol_searcher::expand_symtabs): Update.
* symmisc.c (maintenance_expand_symtabs): Update.
* symfile.c (expand_symtabs_matching): Update.
* symfile-debug.c (objfile::expand_symtabs_matching): Add 'domain'
parameter.
* quick-symbol.h (struct quick_symbol_functions)
<expand_symtabs_matching>: Add 'domain' parameter.
* psymtab.c (recursively_search_psymtabs)
(psymbol_functions::expand_symtabs_matching): Add 'domain'
parameter.
* psympriv.h (struct psymbol_functions) <expand_symtabs_matching>:
Add 'domain' parameter.
* objfiles.h (struct objfile) <expand_symtabs_matching>: Add
'domain' parameter.
* linespec.c (iterate_over_all_matching_symtabs): Update.
* dwarf2/read.c (struct dwarf2_gdb_index)
<expand_symtabs_matching>: Add 'domain' parameter.
(struct dwarf2_debug_names_index) <expand_symtabs_matching>: Add
'domain' parameter.
(dw2_expand_symtabs_matching)
(dwarf2_gdb_index::expand_symtabs_matching)
(dw2_debug_names_iterator)
(dwarf2_debug_names_index::expand_symtabs_matching): Add 'domain'
parameter.

3 years agoAdd search_flags to expand_symtabs_matching
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Add search_flags to expand_symtabs_matching

This adds a block search flags parameter to expand_symtabs_matching.
All callers are updated to search both the static and global blocks,
as that was the implied behavior before this patch.

This is a step toward replacing lookup_symbol with
expand_symtabs_matching.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* symtab.c (global_symbol_searcher::expand_symtabs)
(default_collect_symbol_completion_matches_break_on): Update.
* symmisc.c (maintenance_expand_symtabs): Update.
* symfile.h (expand_symtabs_matching): Add search_flags
parameter.
* symfile.c (expand_symtabs_matching): Add search_flags
parameter.
* symfile-debug.c (objfile::expand_symtabs_matching): Add
search_flags parameter.
* quick-symbol.h (struct quick_symbol_functions)
<expand_symtabs_matching>: Add search_flags parameter.
* python/py-symbol.c (gdbpy_lookup_static_symbols): Update.
* psymtab.c (recursively_search_psymtabs)
(psymbol_functions::expand_symtabs_matching): Add search_flags
parameter.
* psympriv.h (struct psymbol_functions) <expand_symtabs_matching>:
Add search_flags parameter.
* objfiles.h (struct objfile) <expand_symtabs_matching>: Add
search_flags parameter.
* linespec.c (iterate_over_all_matching_symtabs): Update.
* dwarf2/read.c (struct dwarf2_gdb_index)
<expand_symtabs_matching>: Add search_flags parameter.
(struct dwarf2_debug_names_index) <expand_symtabs_matching>: Add
search_flags parameter.
(dw2_map_matching_symbols): Update.
(dw2_expand_marked_cus, dw2_expand_symtabs_matching)
(dwarf2_gdb_index::expand_symtabs_matching): Add search_flags
parameter.
(dw2_debug_names_iterator): Change block_index to search flags.
<m_block_index>: Likewise.
(dw2_debug_names_iterator::next)
(dwarf2_debug_names_index::lookup_symbol)
(dwarf2_debug_names_index::expand_symtabs_for_function)
(dwarf2_debug_names_index::map_matching_symbols)
(dwarf2_debug_names_index::map_matching_symbols): Update.
(dwarf2_debug_names_index::expand_symtabs_matching): Add
search_flags parameter.
* ada-lang.c (ada_add_global_exceptions)
(collect_symbol_completion_matches): Update.

3 years agoLet expand_symtabs_matching short-circuit
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Let expand_symtabs_matching short-circuit

This changes expand_symtabs_exp_notify_ftype to return bool, and
updates all the uses.  Now, if the notification function returns
false, the call is short-circuited and stops examining symtabs.  This
is a step toward replacing map_symtabs_matching_filename with
expand_symtabs_matching.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* symtab.c (default_collect_symbol_completion_matches_break_on):
Update.
* symfile.h (expand_symtabs_matching): Return bool.
* symfile.c (expand_symtabs_matching): Return bool.
* symfile-debug.c (objfile::expand_symtabs_matching): Return
bool.
* quick-symbol.h (expand_symtabs_exp_notify_ftype): Return bool.
(struct quick_symbol_functions) <expand_symtabs_matching>: Return
bool.
* psymtab.c (psymbol_functions::expand_symtabs_matching): Return
bool.
* psympriv.h (struct psymbol_functions)
<expand_symtabs_matching>: Return bool.
* objfiles.h (struct objfile) <expand_symtabs_matching>: Return
bool.
* dwarf2/read.c (struct dwarf2_gdb_index)
<expand_symtabs_matching>: Return bool.
(struct dwarf2_debug_names_index) <expand_symtabs_matching>:
Return bool.
(dw2_expand_symtabs_matching_symbol): Return bool.
(dw2_expand_symtabs_matching_one, dw2_expand_marked_cus)
(dw2_expand_symtabs_matching)
(dwarf2_gdb_index::expand_symtabs_matching)
(dwarf2_debug_names_index::expand_symtabs_matching)
(dwarf2_debug_names_index::expand_symtabs_matching): Return bool.

3 years agoAdd block_search_flags
Tom Tromey [Sat, 17 Apr 2021 15:35:04 +0000 (09:35 -0600)]
Add block_search_flags

This adds block_search_flags, a flag enum.  This will be used to by
certain search functions so that the caller can control which blocks
are searched more precisely.

gdb/ChangeLog
2021-04-17  Tom Tromey  <tom@tromey.com>

* quick-symbol.h (enum block_search_flag_values): New.
(block_search_flags): New enum flags type.

3 years agoAutomatic date update in version.in
GDB Administrator [Sat, 17 Apr 2021 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoRewrite the Rust expression parser
Tom Tromey [Fri, 16 Apr 2021 22:34:07 +0000 (16:34 -0600)]
Rewrite the Rust expression parser

The Rust expression parser was written to construct its own AST, then
lower this to GDB expressions.  I did this primarily because the old
expressions were difficult to work with; after rewriting those, I
realized I could remove the AST from the Rust parser.

After looking at this, I realized it might be simpler to rewrite the
parser.  This patch reimplements it as a recursive-descent parser.  I
kept a fair amount of the existing code -- the lexer is pulled in
nearly unchanged.

There are several benefits to this approach:

* The parser is shorter now (from 2882 LOC to 2351).
* The parser is just ordinary C++ code that can be debugged in the
  usual way.
* Memory management in the parser is now straightforward, as
  parsing methods simply return a unique pointer or vector.

This required a couple of minor changes to the test suite, as some
errors have changed.

While this passes the tests, it's possible there are lurking bugs,
particularly around error handling.

gdb/ChangeLog
2021-04-16  Tom Tromey  <tom@tromey.com>

* rust-parse.c: New file.
* rust-exp.y: Remove.
* Makefile.in (COMMON_SFILES): Add rust-parse.c.
(SFILES): Remove rust-exp.y.
(YYFILES, local-maintainer-clean): Remove rust-exp.c.

gdb/testsuite/ChangeLog
2021-04-16  Tom Tromey  <tom@tromey.com>

* gdb.rust/simple.exp: Change error text.
* gdb.rust/expr.exp: Change error text.

3 years agoFix syntax error in Rust test
Tom Tromey [Fri, 16 Apr 2021 22:34:07 +0000 (16:34 -0600)]
Fix syntax error in Rust test

The Rust test case simple.exp does:

    print slice as &[i32][0]

However, this is a syntax error in Rust.  Parens are needed around the
"as".

gdb/testsuite/ChangeLog
2021-04-16  Tom Tromey  <tom@tromey.com>

* gdb.rust/simple.exp: Add parens to 'as' test.

3 years agogdb/testsuite: use -gdwarf-4 in simavr board
Simon Marchi [Fri, 16 Apr 2021 15:01:26 +0000 (11:01 -0400)]
gdb/testsuite: use -gdwarf-4 in simavr board

By default, when using the -g switch, avr-gcc generates stabs debug
information.  I think it would make more sense to test GDB against DWARF
information, because stabs is obsolete by now, and nobody work on it.
So change the simavr board to pass -gdwarf-4 as the debug flag.

The downside is that users are probably more likely to use just -g, so
we don't test GDB the same way as users are likely to use it.  But in
this case, if somebody comes and asks for help with GDB for AVR, I
suggest we encourage them to use -gdwarf-4.

I can't give stats about how that changes test results, because the
testsuite is too broken.  There is an internal error that happens quite
frequently that needs to be investigated:

    /home/simark/src/wt/avr/gdb/trad-frame.h:143: internal-error: LONGEST trad_frame_saved_reg::addr() const: Assertion `m_kind == trad_frame_saved_reg_kind::ADDR' failed.

I sent a question on the gcc mailing list, asking why stabs is the
default:

    https://gcc.gnu.org/pipermail/gcc/2021-April/235309.html

gdb/testsuite/ChangeLog:

* boards/simavr.exp: Set debug_flags.

Change-Id: I70e471fad3a79ab1d79d13dda8436bb9eb666e0a

3 years agoaarch64: Define RME system registers
Przemyslaw Wirkus [Fri, 16 Apr 2021 14:33:38 +0000 (15:33 +0100)]
aarch64: Define RME system registers

This patch introduces RME (Realm Management Extension) system registers.

gas/ChangeLog:

2021-03-01  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* testsuite/gas/aarch64/rme-invalid.d: New test.
* testsuite/gas/aarch64/rme-invalid.l: New test.
* testsuite/gas/aarch64/rme-invalid.s: New test.
* testsuite/gas/aarch64/rme.d: New test.
* testsuite/gas/aarch64/rme.s: New test.

opcodes/ChangeLog:

2021-03-01  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* aarch64-opc.c: Add RME system registers.

3 years agoPrint bfloat16 DWARF types correctly
Luis Machado [Wed, 14 Apr 2021 14:20:18 +0000 (11:20 -0300)]
Print bfloat16 DWARF types correctly

Even if the DWARF information contains a bfloat16 base type (__bf16), a
variable of such type will still be printed using the IEEE half float format,
which is wrong.

This patch teaches GDB how to pick the bfloat16 format for __bf16 types in
DWARF (based on the base type name) and uses IEEE half float for all the other
16-bit float formats.

Tested on aarch64-linux/x86_64-linux.

OK?

gdb/ChangeLog:

2021-04-16  Luis Machado  <luis.machado@linaro.org>

* arch-utils.c (default_floatformat_for_type): Handle bfloat16.

gdb/testsuite:

2021-04-16  Luis Machado  <luis.machado@linaro.org>

* gdb.dwarf2/dw2-bfloat16.exp: New file.

3 years agoPR27567, Linking PE files adds alignment section flags to executables
Alan Modra [Fri, 16 Apr 2021 12:59:05 +0000 (22:29 +0930)]
PR27567, Linking PE files adds alignment section flags to executables

So don't set those flags for an executable.  In the patch I also test
DYNAMIC even though the PE bfd code doesn't appear to set it for dlls.
I figure it doesn't hurt to include that flag too.

PR 27567
bfd/
* coffcode.h (styp_to_sec_flags): Use an unsigned long styp_flags.
(coff_write_object_contents): Pass bfd to COFF_ENCODE_ALIGNMENT,
ignore alignment checks when return is false.  Formatting.
include/
* coff/internal.h (struct internal_scnhdr): Make s_flags unsigned long.
* coff/pe.h (COFF_ENCODE_ALIGNMENT): Don't set align flags for an
executable and return false.  Do so for a relocatable object and
evaluate to true.
* coff/ti.h (COFF_ENCODE_ALIGNMENT): Add bfd arg and evaluate to true.
(COFF_DECODE_ALIGNMENT): Formatting.
* coff/z80.h (COFF_ENCODE_ALIGNMENT): Similarly.
(COFF_DECODE_ALIGNMENT): Similarly.

3 years agoRISC-V: PR27436, make operand C> work the same as >.
Nelson Chu [Fri, 16 Apr 2021 06:50:32 +0000 (14:50 +0800)]
RISC-V: PR27436, make operand C> work the same as >.

gas/
    PR 27436
    * config/tc-riscv.c (riscv_ip): make operand C> work the same as >.
    * testsuite/gas/riscv/shamt-32.d: New testcase.
    * testsuite/gas/riscv/shamt-32.l: Likewise.
    * testsuite/gas/riscv/shamt-32.s: Likewise.
    * testsuite/gas/riscv/shamt-64.d: Likewise.
    * testsuite/gas/riscv/shamt-64.l: Likewise.
    * testsuite/gas/riscv/shamt-64.s: Likewise.

3 years agoUpdate the ChangeLog, and add the missing entries.
Nelson Chu [Fri, 16 Apr 2021 08:48:27 +0000 (16:48 +0800)]
Update the ChangeLog, and add the missing entries.

3 years agoRISC-V: compress "addi d,CV,z" to "c.mv d,CV"
Lifang Xia [Thu, 15 Apr 2021 02:51:14 +0000 (10:51 +0800)]
RISC-V: compress "addi d,CV,z" to "c.mv d,CV"

PR 27732
gas/
* testsuite/gas/riscv/c-zero-imm.d: Compress addi a4,a4,0 to
c.mv a4,a4.
* testsuite/gas/riscv/c-zero-imm.s: Likewise.
opcodes/
* riscv-opc.c (riscv_opcodes): New insn alias for addi. Compress
"addi d,CV,z" to "c.mv d,CV".

3 years agoundefined reference to get_stat_atime
Alan Modra [Fri, 16 Apr 2021 02:42:50 +0000 (12:12 +0930)]
undefined reference to get_stat_atime

PR 27725
* rename.c (get_stat_atime, get_stat_mtime): Make static.
(get_stat_atime_ns, get_stat_mtime_ns): Likewise.

3 years agoAutomatic date update in version.in
GDB Administrator [Fri, 16 Apr 2021 00:00:17 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agosim erc32: Add include path for readline.
John Baldwin [Thu, 15 Apr 2021 23:03:15 +0000 (16:03 -0700)]
sim erc32: Add include path for readline.

Add a READLINE_CFLAGS variable which adds the include path to the
in-tree readline when using the in-tree readline library.

sim/erc32/ChangeLog:

* Makefile.in (READLINE_SRC, READLINE_CFLAGS): Add.
(SIM_EXTRA_CFLAGS): Add READLINE_CFLAGS.
* configure: Rebuild.
* configure.ac (READLINE_CFLAGS): Add.

3 years agosim mn10300: Fix igen generation.
John Baldwin [Thu, 15 Apr 2021 23:03:15 +0000 (16:03 -0700)]
sim mn10300: Fix igen generation.

Only pass the top-level instruction decode table (mn10300.igen) to
igen via -i.  The additional files passed previously caused igen to
exit its getopt loop in main and exit silently without generating any
output.  In addition, when am33-2.igen was added, it was not included
from mn10300.igen, so was never used.

sim/mn10300/ChangeLog:

* Makefile.in: (tmp-igen) Only pass mn10300.igen to igen.
* mn10300.igen: Include am33-2.igen.

3 years agosim lm32: Use a known-good shell with genmloop.sh.
John Baldwin [Thu, 15 Apr 2021 23:03:15 +0000 (16:03 -0700)]
sim lm32: Use a known-good shell with genmloop.sh.

Explicitly use a known-good shell found by autoconf for executing
additional scripts in genmloop.sh rather than the building user's
shell.

sim/lm32/ChangeLog:

* Makefile.in: Pass -shell to genmloop.sh.

3 years agosim frv: Add a missing return value for frvbf_check_acc_range.
John Baldwin [Thu, 15 Apr 2021 23:03:15 +0000 (16:03 -0700)]
sim frv: Add a missing return value for frvbf_check_acc_range.

Claim that the accumulator indices are out of range without raising an
exception if the CPU doesn't support media instructions.

sim/frv/ChangeLog:

* traps.c (frvbf_check_acc_range): Add missing return value.

3 years agosim: Add SIM_EXTRA_CFLAGS after CSEARCH.
John Baldwin [Thu, 15 Apr 2021 23:03:15 +0000 (16:03 -0700)]
sim: Add SIM_EXTRA_CFLAGS after CSEARCH.

The bfin sim adds include paths for the SDL libraries.  These include
paths might include headers for different version of binutils.  Move
SIM_EXTRA_CFLAGS after CSEARCH to ensure local includes are always
preferred to external includes.

sim/common/ChangeLog:

* Make-common.in (CONFIG_CFLAGS): Remove SIM_EXTRA_CFLAGS.
(ALL_CLAGS, COMMON_DEP_CFLAGS): Add SIM_EXTRA_CFLAGS after
CSEARCH.

3 years agogdb fbsd-nat: Use new-style debug macros
John Baldwin [Thu, 15 Apr 2021 22:39:52 +0000 (15:39 -0700)]
gdb fbsd-nat: Use new-style debug macros

gdb/ChangeLog:

* fbsd-nat.c (fbsd_lwp_debug_printf, fbsd_nat_debug_printf): New,
use throughout file.

3 years agogdb/testsuite: don't include paths in test names
Andrew Burgess [Thu, 15 Apr 2021 20:32:57 +0000 (21:32 +0100)]
gdb/testsuite: don't include paths in test names

Give a test a proper name in order to avoid including a path in the
test name.

gdb/testsuite/ChangeLog:

* gdb.python/py-parameter.exp: Give a test a proper name to avoid
including a path in the test name.

3 years agogdb/testsuite: use foreach_with_prefix in gdb.threads/fork-plus-threads.exp
Simon Marchi [Thu, 15 Apr 2021 18:45:47 +0000 (14:45 -0400)]
gdb/testsuite: use foreach_with_prefix in gdb.threads/fork-plus-threads.exp

I noticed that using foreach_with_prefix could make things a bit
less verbose.  No changes in behavior expected.

gdb/testsuite/ChangeLog:

* gdb.threads/fork-plus-threads.exp: Use foreach_with_prefix.

Change-Id: I06aa6e3d10a9cfb6ada11547aefe8c70b636ac81

3 years agoAvoid crash in Ada value printing with optimized-out array
Tom Tromey [Thu, 15 Apr 2021 16:14:11 +0000 (10:14 -0600)]
Avoid crash in Ada value printing with optimized-out array

The Ada value-printing code could crash when printing an array which
had been optimized out.

The crash is difficult to reproduce, but I did manage to write a test
that at least shows that the previous behavior was incorrect -- before
the patch, the array is printed as if it is valid and every value is 0.

gdb/ChangeLog
2021-04-15  Tom Tromey  <tromey@adacore.com>

* ada-valprint.c (ada_value_print_array): Handle optimized-out
arrays.

gdb/testsuite/ChangeLog
2021-04-15  Tom Tromey  <tromey@adacore.com>

* gdb.dwarf2/arr-stride.exp: Add test.

3 years agoUse common_val_print_checked in print_variable_and_value
Tom Tromey [Thu, 15 Apr 2021 16:14:11 +0000 (10:14 -0600)]
Use common_val_print_checked in print_variable_and_value

GDB was crashing in "bt full" for a large Ada program.  I tracked this
down to a combination of bugs.

The first bug, fixed here, is that print_variable_and_value calls
common_val_print.  Normally only the value-printing implementation
should call this; from the top level, common_val_print_checked is
preferred, because it correctly handles values that are wholly
optimized out.

I wasn't able to write a test case for this.

gdb/ChangeLog
2021-04-15  Tom Tromey  <tromey@adacore.com>

* printcmd.c (print_variable_and_value): Use
common_val_print_checked.

3 years agoUse block_symbol in var_value_operation
Tom Tromey [Thu, 15 Apr 2021 16:05:00 +0000 (10:05 -0600)]
Use block_symbol in var_value_operation

I noticed that var_value_operation takes a block and a symbol, and
most callers destructure a block_symbol to pass in.  It seems better
for this class to simply hold a block_symbol instead.

Tested on x86-64 Fedora 32.

gdb/ChangeLog
2021-04-15  Tom Tromey  <tromey@adacore.com>

* rust-exp.y (rust_parser::convert_ast_to_expression): Update.
* parse.c (parser_state::push_symbol, parser_state::push_dollar):
Update.
* p-exp.y (variable): Update.
* m2-exp.y (variable): Update.
* go-exp.y (variable): Update.
* expprint.c (dump_for_expression): New overload.
* expop.h (check_objfile): New overload.
(check_constant): New overload.
(class var_value_operation): Use block_symbol.
<get_symbol>: Rewrite.
* eval.c (var_value_operation::evaluate)
(var_value_operation::evaluate_funcall)
(var_value_operation::evaluate_for_address)
(var_value_operation::evaluate_for_address)
(var_value_operation::evaluate_with_coercion)
(var_value_operation::evaluate_for_sizeof)
(var_value_operation::evaluate_for_cast): Update.
* d-exp.y (PrimaryExpression): Update.
* c-exp.y (variable): Update.
* ax-gdb.c (var_value_operation::do_generate_ax): Update.
* ada-lang.c (ada_var_value_operation::evaluate_for_cast)
(ada_var_value_operation::evaluate)
(ada_var_value_operation::resolve)
(ada_funcall_operation::resolve): Update.
* ada-exp.y (write_var_from_sym, write_object_renaming)
(write_ambiguous_var, write_var_or_type, write_name_assoc)
(maybe_overload): Update.
* ada-exp.h (class ada_var_value_operation) <get_block>: Rewrite.

3 years agoPR27734, get_stat_atime_ns/get_stat_mtime_ns might not use parameter
Pekka Seppänen [Thu, 15 Apr 2021 14:37:28 +0000 (00:07 +0930)]
PR27734, get_stat_atime_ns/get_stat_mtime_ns might not use parameter

PR 27725
* rename.c (get_stat_atime_ns): Add ATTRIBUTE_UNUSED.
(get_stat_mtime_ns): Likewise.

3 years agogdb: add "set startup-quietly" command
Tom Tromey [Sun, 5 Jul 2020 19:02:40 +0000 (13:02 -0600)]
gdb: add "set startup-quietly" command

This adds a new command to change GDB to behave as though "-quiet"
were always given.  This new command can be added to the gdbearlyinit
file to affect future GDB sessions.

gdb/ChangeLog:

* NEWS: Add entry.
* main.c (captured_main_1): Call check_quiet_mode.
* top.c (startup_quiet): New global.
(check_quiet_mode): New function.
(show_startup_quiet): New function.
(init_main): Register new command.
* top.h (check_quiet_mode): Declare.

gdb/doc/ChangeLog:

* gdb.texinfo (Mode Options): Mention "set startup-quietly".

gdb/testsuite/ChangeLog:

* gdb.base/startup-file.exp: Add more tests.

3 years agogdb: process early initialization files and command line options
Andrew Burgess [Fri, 25 Sep 2020 15:28:05 +0000 (16:28 +0100)]
gdb: process early initialization files and command line options

Adds the ability to process commands at a new phase during GDB's
startup.  This phase is earlier than the current initialisation file
processing, before GDB has produced any output.

The number of commands that can be processed at this early stage will
be limited, and it is expected that the only commands that would be
processed at this stage will relate to some of the fundamentals of how
GDB starts up.

Currently the only commands that it makes sense to add to this early
initialization file are those like 'set style version ....' as the
version string is displayed during startup before the standard
initialization files are parsed.  As such this commit fully resolved
bug cli/25956.

This commit adds a mechanism to execute these early initialization
files from a users HOME directory, as well as some corresponding
command line flags for GDB.

The early initialization files that GDB will currently check for are
~/.config/gdb/gdbearlyinit (on Linux like systems) or ~/.gdbearlyinit
if the former is not found.

The output of 'gdb --help' has been extended to include a list of the
early initialization files being processed.

gdb/ChangeLog:

PR cli/25956
* NEWS: Mention new early init files and command line options.
* config.in: Regenerate.
* configure: Regenerate.
* configure.ac: Define GDBEARLYINIT.
* main.c (get_earlyinit_files): New function.
(enum cmdarg_kind): Add CMDARG_EARLYINIT_FILE and
CMDARG_EARLYINIT_COMMAND.
(captured_main_1): Add support for new command line flags, and for
processing startup files.
(print_gdb_help): Include startup files in the output.

gdb/doc/ChangeLog:

PR cli/25956
* gdb.texinfo (File Options): Mention new command line options.
(Startup): Discuss when early init files are processed.
(Initialization Files): Add description of early init files.
(Output Styling): Update description of 'version' style.
(gdb man): Mention early init files.

gdb/testsuite/ChangeLog:

PR cli/25956
* gdb.base/early-init-file.c: New file.
* gdb.base/early-init-file.exp: New file.
* lib/gdb-utils.exp (style): Handle style 'none'.

3 years agogdb: refactor the initialization file lookup code
Andrew Burgess [Thu, 14 Jan 2021 14:32:35 +0000 (14:32 +0000)]
gdb: refactor the initialization file lookup code

In preparation for the next patch, which adds startup files, this
commit refactors the code for looking up the initialization files so
that the code can be more easily reused in the next commit.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* main.c (relocate_gdbinit_path_maybe_in_datadir): Rename to...
(relocate_file_path_maybe_in_datadir): ...this.
(class gdb_initfile_finder): New class.
(get_init_files): Now uses gdb_initfile_finder.
(print_gdb_help): Print 'None found' when there are no init files.

3 years agoPR27725, better objcopy -p times
Alan Modra [Wed, 14 Apr 2021 15:06:42 +0000 (00:36 +0930)]
PR27725, better objcopy -p times

Nanosecond rather than second resolution.

PR 27725
* configure.ac: Check for sys/time.h and utimensat.  Use standard
checks for mkstemp and mkdtemp.  Whitespace.  Check for nanosecond
members of struct stat.
* rename.c: Prefer sys/time.h for utimes over utime.h for utime.
(STAT_TIMESPEC, STAT_TIMESPEC_NS): Define
(get_stat_atime_ns, get_stat_mtime_ns): New inline functions.
(get_stat_atime, get_stat_mtime): Likewise.
(set_times): Choose first available of utimensat, utimes, utime.
Use above inline functions to set timespec and timeval values.
* configure: Regenerate.
* config.in: Regenerate.
* testsuite/binutils-all/objcopy.exp (objcopy_test): Add test of
file timestamp when --preserve-dates is used.

3 years agoMake objcopy -p work when an output file is specified
Alan Modra [Wed, 14 Apr 2021 16:03:13 +0000 (01:33 +0930)]
Make objcopy -p work when an output file is specified

More fallout from the PR27456 fixes.

PR 27456
* rename.c (smart_rename): When TO and FROM are equal, just set
file timestamp.
* objcopy.c (strip_main, copy_main): Always call smart_rename.

3 years agoRISC-V: PR27584, surpress local and empty name symbols for nm.
Nelson Chu [Wed, 14 Apr 2021 02:00:05 +0000 (10:00 +0800)]
RISC-V: PR27584, surpress local and empty name symbols for nm.

The local ".L0" symbol are usually generated to mark where the
auipc instruction is, and clang also uses ".LBB" to do the same
thing.  Besides, clang also uses the empty name symbols for label
differences.  Arm surpress their mapping symbols by regarding them
as special symbols, and MIPS surpress all local symbols.  Therefore,
RISC-V probably need to surpress the local and empty name symbols
for nm and related tools.  User can use "--special-syms" to show
these surpressed symbols.

bfd/
    PR27584
    * elfnn-riscv.c (riscv_elf_is_target_special_symbol): Added to
    omit local and empty symbols since they usually generated to
    mark the auipc instructions.

3 years agoCSKY: Fix special_function in howto table
Lifang Xia [Wed, 14 Apr 2021 09:18:13 +0000 (17:18 +0800)]
CSKY: Fix special_function in howto table

The special_function for reloc should be 'bfd_elf_generic_reloc',
reloc list:
R_CKCORE_PCREL_IMM16BY2,
R_CKCORE_PCREL_IMM16BY4,
R_CKCORE_PCREL_IMM10BY4,
R_CKCORE_PCREL_IMM18BY2,
R_CKCORE_PCREL_FLRW_IMM8BY4

bfd/
* elf32-csky.c (csky_elf_howto_table)
<R_CKCORE_PCREL_IMM16BY2>: Set special_function to
bfd_elf_generic_reloc.
<R_CKCORE_PCREL_IMM16BY4>: Likewise.
<R_CKCORE_PCREL_IMM10BY4>: Likewise.
<R_CKCORE_PCREL_IMM18BY2>: Likewise.
<R_CKCORE_PCREL_FLRW_IMM8BY4>: Likewise.

3 years agoAutomatic date update in version.in
GDB Administrator [Thu, 15 Apr 2021 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agotestsuite, dwarf2: use @DW_INL_declared_inlined in a test
Tankut Baris Aktemur [Wed, 14 Apr 2021 17:03:59 +0000 (19:03 +0200)]
testsuite, dwarf2: use @DW_INL_declared_inlined in a test

gdb/testsuite/ChangeLog:
2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* gdb.dwarf2/dw2-inline-with-lexical-scope.exp: Use
@DW_INL_declared_inlined for the inline attribute.

3 years agogdb/dwarf2: fix "info locals" for clang-compiled inlined functions
Tankut Baris Aktemur [Mon, 8 Feb 2021 15:48:39 +0000 (16:48 +0100)]
gdb/dwarf2: fix "info locals" for clang-compiled inlined functions

GDB reports duplicate local vars with "<optimized out>" values for
inlined functions that are compiled with Clang.

Suppose we have

  __attribute__((always_inline))
  static void aFunction() {
    int a = 42;
    if(a > 2) {
      int value = a;
      value += 10; /* break here */
    }
  }

The "info locals" command at the "break here" line gives the following
output:

  ...
  Breakpoint 1, aFunction () at test.c:6
  6           value += 10; /* break here */
  (gdb) info locals
  value = 42
  a = 42
  value = <optimized out>
  (gdb)

The reason is, inlined functions that are compiled by Clang do not
contain DW_AT_abstract_origin attributes in the DW_TAG_lexical_block
entries.  See

  https://bugs.llvm.org/show_bug.cgi?id=49953

E.g. the DIE of the inlined function above is

0x00000087:     DW_TAG_inlined_subroutine
                  DW_AT_abstract_origin (0x0000002a "aFunction")
                  DW_AT_low_pc  (0x00000000004004b2)
                  DW_AT_high_pc (0x00000000004004d2)
                  DW_AT_call_file       ("/tmp/test.c")
                  DW_AT_call_line       (11)
                  DW_AT_call_column     (0x03)

0x0000009b:       DW_TAG_variable
                    DW_AT_location      (DW_OP_fbreg -4)
                    DW_AT_abstract_origin       (0x00000032 "a")

0x000000a3:       DW_TAG_lexical_block
                    DW_AT_low_pc        (0x00000000004004c3)
                    DW_AT_high_pc       (0x00000000004004d2)

0x000000b0:         DW_TAG_variable
                      DW_AT_location    (DW_OP_fbreg -8)
                      DW_AT_abstract_origin     (0x0000003e "value")

This causes GDB to fail matching the concrete lexical scope with the
corresponding abstract entry.  Hence, the local vars of the abstract
function that are contained in the lexical scope are read separately
(and thus, in addition to) the local vars of the concrete scope.
Because the abstract definitions of the vars do not contain location
information, we see the extra 'value = <optimized out>' above.

This bug is highly related to PR gdb/25695, but the root cause is not
exactly the same.  In PR gdb/25695, GCC emits an extra
DW_TAG_lexical_block without an DW_AT_abstract_origin that wraps the
body of the inlined function.  That is, the trees of the abstract DIE
for the function and its concrete instance are structurally not the
same.  In the case of using Clang, the trees have the same structure.

To tackle the Clang case, when traversing the children of the concrete
instance root, keep a reference to the child of the abstract DIE that
corresponds to the concrete child, so that we can match the two DIEs
heuristically in case of missing DW_AT_abstract_origin attributes.

The updated gdb.opt/inline-locals.exp test has been checked with GCC
5-10 and Clang 5-11.

gdb/ChangeLog:
2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* dwarf2/read.c (inherit_abstract_dies): Keep a reference to the
corresponding child of the abstract DIE when iterating the
children of the concrete DIE.

gdb/testsuite/ChangeLog:
2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* gdb.opt/inline-locals.c (scoped): New function.
(main): Call 'scoped'.
* gdb.opt/inline-locals.exp: Update with "info locals" tests
for scoped variables.
* gdb.dwarf2/dw2-inline-with-lexical-scope.c: New file.
* gdb.dwarf2/dw2-inline-with-lexical-scope.exp: New file.

3 years agogdb/doc: add missing parentheses around prompt in some examples
Andrew Burgess [Wed, 14 Apr 2021 12:14:27 +0000 (13:14 +0100)]
gdb/doc: add missing parentheses around prompt in some examples

While reading the manual for -info-os I noticed that the GDB prompt is
given as 'gdb' when it should really be '(gdb)'.  This is because the
prompt is created with: '@value{GDBP}'.

The GDBP variable (the GDB program name) is intended for use as the
prompt string (though this is not used consistently throughout the
manual), however it is normally used like '(@value{GDBP})', but in a
couple of places the enclosing parentheses are missing.

In this commit I do the following:

 - Change '@value{GDBP}' to '(@value{GDBP})' wherever the variable
   represents a prompt string.

 - Replaces '(gdb)' with '(@value{GDBP})' in one example where we are
   already using '(@value{GDBP})', this makes that one example
   consistent.

I have NOT:

 - Changed all instances of '(gdb)' with '(@value{GDBP})', this would
   be a huge change.

gdb/doc/ChangeLog:

* gdb.texinfo (GDB/MI Miscellaneous Commands): Add missing
parentheses to GDB prompt in example, and replace '(gdb)' with
'(@value{GDBP})' in one example where the latter was already in
use.

3 years agoRemove use of _WIN32_WCE
Tom Tromey [Wed, 14 Apr 2021 12:45:44 +0000 (06:45 -0600)]
Remove use of _WIN32_WCE

This removes the one last use of _WIN32_WCE from gdbserver.

gdbserver/ChangeLog
2021-04-14  Tom Tromey  <tromey@adacore.com>

* win32-low.cc (windows_nat::handle_load_dll): Don't check
_WIN32_WCE.

3 years agoelf: Set p_memsz to p_filesz for loadable PT_NOTE segment
H.J. Lu [Wed, 14 Apr 2021 12:30:59 +0000 (05:30 -0700)]
elf: Set p_memsz to p_filesz for loadable PT_NOTE segment

Since p_memsz of the loadable PT_NOTE segment should be the same as
p_filesz, set p_memsz on the loadable PT_NOTE segment when updating
p_filesz.

bfd/

PR binutils/27708
* elf.c (assign_file_positions_for_non_load_sections): Set
p_memsz to p_filesz for the loadable PT_NOTE segment.

binutils/

PR binutils/27708
* testsuite/binutils-all/x86-64/pr27708.dump: New file.
* testsuite/binutils-all/x86-64/pr27708.exe.bz2: Likewise.
* testsuite/binutils-all/x86-64/x86-64.exp: Run binutils/27708
test.

3 years agoIgnore trailing bytes at the end of a Windows Resource Version structure.
Mark Harmstone [Wed, 14 Apr 2021 10:53:30 +0000 (11:53 +0100)]
Ignore trailing bytes at the end of a Windows Resource Version structure.

PR 27686
* resbin.c (bin_to_res_version): Ignore any trailing bytes at the
end of the structure.

3 years agotestsuite, gdb: recognize DW_OP_fbreg in lib/dwarf.exp
Tankut Baris Aktemur [Wed, 14 Apr 2021 08:02:34 +0000 (10:02 +0200)]
testsuite, gdb: recognize DW_OP_fbreg in lib/dwarf.exp

gdb/testsuite/ChangeLog:
2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* lib/dwarf.exp (_location): Recognize DW_OP_fbreg as an op.

3 years agoRemove unneeded tests for definitions of NT_BSDNETCORE values.
Frederic Cambus [Wed, 14 Apr 2021 10:15:01 +0000 (11:15 +0100)]
Remove unneeded tests for definitions of NT_BSDNETCORE values.

binutils* readelf.c (get_netbsd_elfcore_note_type): Remove unneeded #ifdef
checks for NT_NETBSDCORE_AUXV and NT_NETBSDCORE_LWPSTATUS.

bfd * elf.c (elfcore_grok_netbsd_note): Remove unneeded #ifdef
checks for NT_NETBSDCORE_AUXV and NT_NETBSDCORE_LWPSTATUS.

3 years agoPR27631, ubsan: elf32-metag.c:1550:10
Alan Modra [Wed, 14 Apr 2021 07:56:45 +0000 (17:26 +0930)]
PR27631, ubsan: elf32-metag.c:1550:10

PR 27631
* elf32-metag.c (elf_metag_relocate_section): Don't use &hh->elf
when hh might be NULL, test for NULL first.

3 years agoPR27630, ubsan: elf32-arm.c:6587:20
Alan Modra [Wed, 14 Apr 2021 07:52:33 +0000 (17:22 +0930)]
PR27630, ubsan: elf32-arm.c:6587:20

PR 27630
* elf32-arm.c (elf32_arm_size_stubs): Don't use &hash->root when
hash might be NULL, cast instead.

3 years agoPR27716, build failure for msdosdjgpp: PATH_MAX undeclared
Alan Modra [Wed, 14 Apr 2021 03:12:27 +0000 (12:42 +0930)]
PR27716, build failure for msdosdjgpp: PATH_MAX undeclared

We shouldn't be using arbitrary limits like PATH_MAX in GNU programs.
This patch also fixes some memory leaks in readelf when processing
separate debug info.

PR 27716
binutils/
* objdump.c (show_line): Don't limit paths to PATH_MAX.
* readelf.c (struct filedata): Change program_interpreter from
a char array to a char pointer.
(process_program_headers): Sanity check PT_INTERP p_filesz.
Malloc program_interpreter using p_filesz and read directly from
file.
(process_dynamic_section): Check program_interpreter is non-NULL.
(free_filedata): New function, split out from..
(process_object): ..here.
(close_debug_file): Call free_filedata.
* sysdep.h: Don't include sys/param.h.
(PATH_MAX): Don't define.
* configure.ac: Don't check for sys/param.h.
* configure: Regenerate.
gprof/
* gprof.h (PATH_MAX): Don't define.
* corefile.c (core_create_line_syms): Don't use PATH_MAX for initial
file name size.
* source.c (annotate_source): Malloc file name buffer.  Always
trim off "-ann" when dos 8.3 annotate file matches original.
* utils.c (print_name_only): Malloc file name buffer.

3 years agoRe: PR27723, Internal error in select_cie_for_fde
Alan Modra [Tue, 13 Apr 2021 23:53:12 +0000 (09:23 +0930)]
Re: PR27723, Internal error in select_cie_for_fde

Let's make sure what we allow in the CIE initial instructions and what
select_cie_for_fde compares for a match is always in sync.  Also
correct the previous patch that allowed DW_CFA_GNU_window_save to be
part of the CIE initial instructions, which was likely a mistake.

PR 27723
* dw2gencfi.c (initial_cie_insn): New function, extracted from..
(select_cie_for_fde): ..here.  Simplify.

3 years agoAutomatic date update in version.in
GDB Administrator [Wed, 14 Apr 2021 00:00:16 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoPR27723, Internal error in select_cie_for_fde
Alan Modra [Tue, 13 Apr 2021 13:51:04 +0000 (23:21 +0930)]
PR27723, Internal error in select_cie_for_fde

PR 27723
* dw2gencfi.c (select_cie_for_fde): Handle DW_CFA_val_offset,
DW_CFA_GNU_window_save and DW_CFA_restore_state.

3 years agoRemove WinCE code from gdbreplay
Pedro Alves [Mon, 12 Apr 2021 19:23:54 +0000 (20:23 +0100)]
Remove WinCE code from gdbreplay

gdbserver/ChangeLog:

* gdbreplay.c [__MINGW32CE__] (COUNTOF, errno, strerror): Remove.

3 years agoRemove some unused typedefs from gdbserver
Tom Tromey [Tue, 13 Apr 2021 16:32:29 +0000 (10:32 -0600)]
Remove some unused typedefs from gdbserver

I noticed that gdbserver/win32-low.cc has a few typedefs that are not
used.  This patch removes them.

gdbserver/ChangeLog
2021-04-13  Tom Tromey  <tromey@adacore.com>

* win32-low.cc (winapi_CreateToolhelp32Snapshot)
(winapi_Module32First, winapi_Module32Next): Remove typedefs.

3 years ago[gdb] Fix regoff_t incompatibility
Tom de Vries [Tue, 13 Apr 2021 15:38:53 +0000 (17:38 +0200)]
[gdb] Fix regoff_t incompatibility

I did an experiment with importing the regex module in gnulib, and trying to
build gdb.

The first problem I ran into was that:
- regoff_t was defined as long int, and
- the address of a regoff_t variable i in ui_file_style::parse was passed
  as int * to function extended_color.

Fix this by changing the types of some function parameters of functions
read_semi_number and extended_color from int * to regoff_t *.

Tested on x86_64-linux.

gdb/ChangeLog:

2021-04-13  Tom de Vries  <tdevries@suse.de>

* ui-style.c (read_semi_number, extended_color): Change idx parameter
type to regoff_t *.

3 years agoFix build failure for 32-bit targets with --enable-targets=all
Luis Machado [Tue, 13 Apr 2021 12:19:52 +0000 (09:19 -0300)]
Fix build failure for 32-bit targets with --enable-targets=all

Replace use of %lx with %s.

gdb/ChangeLog:

2021-04-13  Luis Machado  <luis.machado@linaro.org>

* rs6000-tdep.c (ppc_displaced_step_fixup): Use %s to print
hex values.

3 years agoDocument the effect of --as-needed on --rpath on Linux based systems.
Nick Clifton [Tue, 13 Apr 2021 13:37:06 +0000 (14:37 +0100)]
Document the effect of --as-needed on --rpath on Linux based systems.

* ld.texi (Options): Add note about the effect of --as-needed on
the --rpath and --rpath-link options on Linux based systems.

3 years agoRemove process_stratum_target::hostio_last_error abstraction
Pedro Alves [Mon, 12 Apr 2021 19:23:54 +0000 (20:23 +0100)]
Remove process_stratum_target::hostio_last_error abstraction

Now that the WinCE port is gone, all ports map host I/O errors from
errno, so this abstraction is no longer necessary.

Basically undoes:
  https://sourceware.org/pipermail/gdb-patches/2008-January/055511.html
  https://sourceware.org/pipermail/gdb-patches/attachments/20080131/f44e7012/attachment.bin

gdbserver/ChangeLog:

* Makefile.in (SFILES): Remove hostio-errno.cc.
* configure: Regenerate.
* configure.ac (GDBSERVER_DEPFILES): No longer add
$srv_hostio_err_objs.
* configure.srv (srv_hostio_err_objs): Delete.
* hostio-errno.cc: Delete.
* hostio.cc (hostio_error): Inline hostio_last_error_from_errno
here.
* hostio.h (hostio_last_error_from_errno): Delete.
* target.cc (process_stratum_target::hostio_last_error): Delete.
* target.h (class process_stratum_target) <hostio_last_error>:
Delete.

3 years agobfd: avoid infinite loop when static linking XCOFF
Clément Chigot [Tue, 13 Apr 2021 06:32:55 +0000 (08:32 +0200)]
bfd: avoid infinite loop when static linking XCOFF

git commit b95a0a3177bc changed a "return FALSE" to "continue", and
missed updating the while loop iterator.

* xcofflink.c (xcoff_link_check_ar_symbols): Update esym earlier.

3 years agoPR27722, error: array subscript has type char
Alan Modra [Tue, 13 Apr 2021 06:30:10 +0000 (16:00 +0930)]
PR27722, error: array subscript has type char

PR 27722
* libdep_plugin.c (str2vec): Don't pass a potentially signed char
to isspace.

3 years agoRemove now unneeded #ifdef check for NT_NETBSD_PAX.
Frederic Cambus [Mon, 12 Apr 2021 13:07:17 +0000 (15:07 +0200)]
Remove now unneeded #ifdef check for NT_NETBSD_PAX.

NT_NETBSD_PAX was defined in commit be3b926d8d2dde16a55e9e303fadf95164e13ebf.

binutils/ChangeLog:

* readelf.c (process_netbsd_elf_note): Remove now unneeded #ifdef
check for NT_NETBSD_PAX.

3 years agoRISC-V: Don't report the mismatched version warning for the implicit extensions.
Nelson Chu [Tue, 13 Apr 2021 04:32:16 +0000 (12:32 +0800)]
RISC-V: Don't report the mismatched version warning for the implicit extensions.

bfd/
    * elfnn-riscv.c (riscv_version_mismatch): Do not report the warning
    when the version of input or output is RISCV_UNKNOWN_VERSION, since
    the extension is added implicitly.
    * elfxx-riscv.c: Updated the obsolete comments.
    (RISCV_UNKNOWN_VERSION): Moved to elfxx-riscv.h.
    * elfxx-riscv.h (RISCV_UNKNOWN_VERSION): Added.

3 years agoAutomatic date update in version.in
GDB Administrator [Tue, 13 Apr 2021 00:00:18 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years ago[PATCH,rs6000] Fix vsx-regs.exp testcase failure
Will Schmidt [Mon, 12 Apr 2021 19:17:43 +0000 (14:17 -0500)]
[PATCH,rs6000] Fix vsx-regs.exp testcase failure

Hi,
  This test exercise updates to the F* and VS* registers
and verifies updates to the same.  Note that the registers
overlap; the doubleword[1] portion of any VS0-VS31
register contains the F0-F31 register contents, so any updates
to one can be measured in the other.

Per a brief investigation, we see that dl_main() currently
uses some VSX instructions, so the VS* values are not
going to be zero when this testcase reaches main, where these
tests begin.  The test harness does not explicitly
initialize the full VS* values, so the first test loop
that updates the F* values means our VS* values are
uninitalized and will fail the first set of checks.
This update explicitly initializes the doubleword[0] portion
of the VS* registers, to allow this test to succeed.

2021-04-12  Will Schmidt  <will_schmidt@vnet.ibm.com>

gdb/testsuite/ChangeLog:
        * gdb.arch/vsx-regs.exp: Initialize vs* doublewords.

3 years ago[PATCH] gdb-power10-single-step
Will Schmidt [Mon, 12 Apr 2021 19:11:02 +0000 (14:11 -0500)]
[PATCH] gdb-power10-single-step

Hi,
  This is based on a patch originally written by Alan Modra.
Powerpc / Power10 ISA 3.1 adds prefixed instructions, which
are 8 bytes in length.  This is in contrast to powerpc previously
always having 4 byte instruction length.  This patch implements
changes to allow GDB to better detect prefixed instructions, and
handle single stepping across the 8 byte instructions.

Added #defines to help test for PNOP and prefix instructions.
Update ppc_displaced_step_copy_insn() to handle pnop and prefixed
instructions whem R=0 (non-pc-relative).

Updated ppc_displaced_step_fixup() to properly handle the offset
value matching the current instruction size

Updated the for-loop within ppc_deal_with_atomic_sequence() to
count instructions properly in case we have a mix of 4-byte and
8-byte instructions within the atomic_sequence_length.

Added testcase and harness to exercise pc-relative load/store
instructions with R=0.

2021-04-12  Will Schmidt  <will_schmidt@vnet.ibm.com>

        gdb/ChangeLog:
        * rs6000-tdep.c:  Add support for single-stepping of
        prefixed instructions.

        gdb/testsuite/ChangeLog:
        * gdb.arch/powerpc-plxv-nonrel.s:  Testcase using
        non-relative plxv instructions.
        * gdb.arch/powerpc-plxv-nonrel.exp: Testcase harness.

3 years ago[PATCH, rs6000, v3][PR gdb/27525] displaced stepping across addpcis/lnia.
Will Schmidt [Mon, 12 Apr 2021 18:35:54 +0000 (13:35 -0500)]
[PATCH, rs6000, v3][PR gdb/27525] displaced stepping across addpcis/lnia.

  This addresses PR gdb/27525.     The lnia and other variations
of the addpcis instruction write the value of the NIA into a target register.
If we are single-stepping across a breakpoint, the instruction is executed
from a displaced location, and thusly the written value of the PC/NIA
will be incorrect.   The changes here will measure the displacement
offset, and adjust the target register value to compensate.

YYYY-MM-DD  Will Schmidt  <will_schmidt@vnet.ibm.com>

gdb/ChangeLog:

        * rs6000-tdep.c (ppc_displaced_step_fixup): Update to handle
        the addpcis/lnia instruction.

gdb/testsuite/ChangeLog:

        * gdb.arch/powerpc-addpcis.exp: Testcase harness to
        exercise single-stepping over subpcis,lnia,addpcis instructions
        with displacement.
        * gdb.arch/powerpc-addpcis.s: Testcase with stream
        of addpcis/lnia/subpcis instructions.
        * gdb.arch/powerpc-lnia.exp: Testcase harness to exercise
        single-stepping over lnia instructions with displacement.
        * gdb.arch/powerpc-lnia.s: Testcase with stream of
        lnia instructions.

3 years ago[rs6000] Create a powerpc-power10.exp test
Will Schmidt [Mon, 12 Apr 2021 18:17:56 +0000 (13:17 -0500)]
[rs6000] Create a powerpc-power10.exp test

Inspired by the existing powerpc-power9.exp test, this is a
new test to cover the power10 instruction disassembly.

gdb/testsuite/ChangeLog:
2021-04-12  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gdb.arch/powerpc-power10.s: New test for instructions.
* gdb.arch/powerpc-power10.exp: Harness to run the test.

3 years agoAdd myself to gdb/MAINTAINERS
Will Schmidt [Mon, 12 Apr 2021 17:17:52 +0000 (12:17 -0500)]
Add myself to gdb/MAINTAINERS

    gdb/ChangeLog:

        * MAINTAINERS (Write After Approval): Add myself.

3 years agom68hc11 gas testsuite wart
Alan Modra [Mon, 12 Apr 2021 15:02:11 +0000 (00:32 +0930)]
m68hc11 gas testsuite wart

Writing to a potentially read-only source directory is not good.

* testsuite/gas/m68hc11/m68hc11.exp (gas_m68hc11_message): Don't
write to $srcdir.  Use gas_host_run and read output file rather
than gas_start/gas_finish.

3 years agoRS6000 Add support to print vector register contents as float128
Carl Love [Fri, 26 Mar 2021 21:54:47 +0000 (16:54 -0500)]
RS6000 Add support to print vector register contents as float128

This patch adds a floating point 128-bit composite field to the vsx
register type.  When printing the register with p/f the float128 field will
be printed as a 128-bit floating point value.  A test case to verify the new
vsx register field is visible and correctly prints out the value of a 128-bit
floating point value is also added.

gdb/ChangeLog:

* rs6000-tdep.c (rs6000_builtin_type_vec128): Add t_float128 variable.
(rs6000_builtin_type_vec128): Add append_composite_type_field for
float128.

gdb/testsuite/ChangeLog:

* gdb.arch/vsx-vsr-float128.c: New test file.
* gdb.arch/vsx-vsr-float128.exp: New expect file.

3 years agogdb, gdbserver: remove WinCE support code
Simon Marchi [Mon, 12 Apr 2021 15:10:57 +0000 (11:10 -0400)]
gdb, gdbserver: remove WinCE support code

The support for WinCE was removed with commit 84b300de3666 ("gdbserver:
remove support for ARM/WinCE").  There is some leftover code for WinCE
support, guarded by the _WIN32_WCE macro, which I didn't know of at the
time.

I didn't remove the _WIN32_WCE references in the tests, because in
theory we still support the WinCE architecture in GDB (when debugging
remotely).  So someone could run a test with that (although I'd be
really surprised).

gdb/ChangeLog:

* nat/windows-nat.c: Remove all code guarded by _WIN32_WCE.
* nat/windows-nat.h: Likewise.

gdbserver/ChangeLog:

* win32-low.cc: Remove all code guarded by _WIN32_WCE.
* win32-low.h: Likewise.

Change-Id: I7a871b897e2135dc195b10690bff2a01d9fac05a

3 years agoENABLE_CHECKING in bfd, opcodes, binutils, ld
Alan Modra [Mon, 12 Apr 2021 09:03:45 +0000 (18:33 +0930)]
ENABLE_CHECKING in bfd, opcodes, binutils, ld

gas already has this.  Here it enables checking hash table type passed
to elf_link_hash_lookup and elf_link_hash_traverse.

bfd/
* elf-bfd.h (ENABLE_CHECKING): Define.
(elf_link_hash_lookup): Abort if wrong type of hash table.
(elf_link_hash_traverse): Likewise.
* configure.ac (--enable-checking): Add support.
* config.in: Regenerate.
* configure: Regenerate.
binutils/
* configure.ac (--enable-checking): Add support.
* config.in: Regenerate.
* configure: Regenerate.
ld/
* configure.ac (--enable-checking): Add support.
* config.in: Regenerate.
* configure: Regenerate.
opcodes/
* configure.ac (--enable-checking): Add support.
* config.in: Regenerate.
* configure: Regenerate.

3 years agogdbserver: constify the 'pid_to_exec_file' target op
Tankut Baris Aktemur [Mon, 12 Apr 2021 12:14:06 +0000 (14:14 +0200)]
gdbserver: constify the 'pid_to_exec_file' target op

gdbserver/ChangeLog:
2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* target.h (class process_stratum_target) <pid_to_exec_file>:
Constify the return type.  Update the definition/references below.
* target.cc (process_stratum_target::pid_to_exec_file)
* linux-low.h (class linux_process_target) <pid_to_exec_file>
* linux-low.cc (linux_process_target::pid_to_exec_file)
* netbsd-low.h (class netbsd_process_target) <pid_to_exec_file>
* netbsd-low.cc (netbsd_process_target::pid_to_exec_file)
* server.cc (handle_qxfer_exec_file)

3 years agogdb, testsuite, btrace: relax unneeded stepi expected output
Markus Metzger [Mon, 8 Mar 2021 14:50:24 +0000 (15:50 +0100)]
gdb, testsuite, btrace: relax unneeded stepi expected output

In gdb.btrace/reconnect.exp, we test that we can disconnect and reconnect
again to a GDB session that is recording with the btrace recording format.
It does not really matter what we are recording.

The test assumed that stepping from _start will bring us into an area
without debug information.  This is not correct on all systems.

Relax the expected output to also support systems where we do have debug
information for that code.

3 years agoconvert elf_link_hash macros to inline functions
Alan Modra [Mon, 12 Apr 2021 07:46:03 +0000 (17:16 +0930)]
convert elf_link_hash macros to inline functions

Involves a bit of editing as we now need to be more precise in pointer
types.

bfd/
* elf-bfd.h (is_elf_hash_table): Convert macro to inline function.
(elf_link_hash_lookup, elf_link_hash_traverse): Likewise.
(elf_hash_table, elf_hash_table_id): Likewise.
* elf32-arm.c (elf32_arm_setup_section_lists): Delete redundant
is_elf_hash_table check.
* elf32-csky.c (elf32_csky_setup_section_lists): Likewise.
* elf32-hppa.c (clobber_millicode_symbols): Correct param types.
* elf64-alpha.c (elf64_alpha_output_extsym): Likewise.
* elfnn-ia64.c (elfNN_ia64_global_dyn_info_free: Likewise.
(elfNN_ia64_global_dyn_sym_thunk: Likewise.
* elf64-ia64-vms.c (elf64_ia64_global_dyn_info_free): Likewise.
(elf64_ia64_global_dyn_sym_thunk): Likewise.
(elf64_vms_link_add_object_symbols): Pass base type of hash table
to is_elf_hash_table.
* elflink.c (_bfd_elf_dynamic_symbol_p): Likewise.
(_bfd_elf_symbol_refs_local_p, _bfd_elf_add_dynamic_entry): Likewise.
(_bfd_elf_strip_zero_sized_dynamic_sections): Likewise.
(_bfd_elf_link_check_relocs, elf_link_add_object_symbols): Likewise.
(bfd_elf_final_link): Likewise.
* elfnn-aarch64.c (elfNN_aarch64_setup_section_lists): Likewise.
* elf64-ppc.c (ppc64_elf_set_toc): Likewise.  Use bfd_link_hash_lookup.
ld/
* emultempl/mipself.em (mips_create_output_section_statements):
Pass base type of hash table to is_elf_hash_table.
* ldelf.c (ldelf_after_open): Likewise.

3 years agoelf_backend_archive_symbol_lookup
Alan Modra [Mon, 12 Apr 2021 07:46:58 +0000 (17:16 +0930)]
elf_backend_archive_symbol_lookup

elf_backend_archive_symbol_lookup might be called when the linker hash
table has entries of type generic_link_hash_entry.  This happens for
instance when running the mmix target linker testsuite where the
output is mmo but input is elf64-mmix.

* elf-bfd.h (struct elf_backend_data): Return bfd_link_hash_entry*
from elf_backend_archive_symbol_lookup.
(_bfd_elf_archive_symbol_lookup): Return bfd_link_hash_entry*.
* elf64-ppc.c (ppc64_elf_archive_symbol_lookup): Likewise.  Check
we have a ppc_hash_table before accessing ppc_link_hash_entry
fields.
* elflink.c (_bfd_elf_archive_symbol_lookup): Return
bfd_link_hash_entry*.
(elf_link_add_archive_symbols): Adjust to suit.

3 years agoRISC-V: The version of i-ext should be RISCV_UNKNOWN_VERSION when expanding g-ext.
Nelson Chu [Mon, 12 Apr 2021 09:59:57 +0000 (17:59 +0800)]
RISC-V: The version of i-ext should be RISCV_UNKNOWN_VERSION when expanding g-ext.

Fix the wrong version of i-ext when expanding g-ext.  This was changed by
the previous patch accidently.

bfd/
    * elfxx-riscv.c (riscv_parse_std_ext): Fixed the wrong versions of
    i-ext when expanding g-ext.

3 years agoRISC-V: Add i-ext as the implicit extension when e-ext is set.
Nelson Chu [Mon, 12 Apr 2021 08:58:47 +0000 (16:58 +0800)]
RISC-V: Add i-ext as the implicit extension when e-ext is set.

The linker does not care the default versions of the extensions, since
it does not have the default ISA spec setting.  Therefore, linker won't
insert the implicit extensions for the input objects.  But we used to
insert the i-ext as the explicit extension, even if the e-ext is set.
This causes linker to report "cannot find default versions of the ISA
extension `i'" errors when linking the input objects with e-ext.

This patch fixes the above linker problem, and also remove the confused
riscv_ext_dont_care_version function.  Unless these "dont care" extensions
are set in the input architecture explicitly, otherwise we always insert
them as the implicit ones.  Afterwards, let riscv_arch_str1 surpress them
not to output to the architecture string if their versions are
RISCV_UNKNOWN_VERSION.

bfd/
    * elfxx-riscv.c (riscv_ext_dont_care_version): Removed.
    (riscv_parse_add_subset): Always add the implicit extensions, even if
    their versions are RISCV_UNKNOWN_VERSION.
    (riscv_parse_std_ext): Delay to add i-ext as the implicit extension
    in the riscv_parse_add_implicit_subsets.  Besides, add g-ext as the
    implicit extension after it has been expanded.
    (riscv_parse_add_implicit_subsets): Updated.

3 years agosim: cgen: move cgen_cpu_max_extra_bytes logic into the common code
Mike Frysinger [Fri, 12 Aug 2016 14:12:41 +0000 (22:12 +0800)]
sim: cgen: move cgen_cpu_max_extra_bytes logic into the common code

Every arch handles this the same way, so move it to the common code.
This will also make unifying the sim_cpu structure easier.

3 years agoPower10 bignum operands
Alan Modra [Sun, 11 Apr 2021 23:32:46 +0000 (09:02 +0930)]
Power10 bignum operands

When built on a 32-bit host without --enable-64-bit-bfd, powerpc-linux
and other 32-bit powerpc targeted binutils fail to assemble some
power10 prefixed instructions with 34-bit fields.  A typical error
seen when running the testsuite is
.../gas/testsuite/gas/ppc/prefix-pcrel.s:10: Error: bignum invalid
In practice this doesn't matter for addresses:  32-bit programs don't
need or use the top 2 bits of a d34 field when calculating addresses.
However it may matter when loading or adding 64-bit constants with
paddi.  A power10 processor in 32-bit mode still has 64-bit wide GPRs.
So this patch enables limited support for O_big PowerPC operands, and
corrects sign extension of 32-bit constants using X_extrabit.

* config/tc-ppc.c (insn_validate): Use uint64_t for operand values.
(md_assemble): Likewise.  Handle bignum operands.
(ppc_elf_suffix): Handle O_big.  Remove unnecessary input_line_pointer
check.
* expr.c: Delete unnecessary forward declarations.
(generic_bignum_to_int32): Return uint32_t.
(generic_bignum_to_int64): Return uint64_t.  Compile always.
(operand): Twiddle X_extrabit for unary '~'.  Set X_unsigned and
clear X_extrabit for unary '!'.
* expr.h (generic_bignum_to_int32): Declare.
(generic_bignum_to_int64): Declare.
* testsuite/gas/ppc/prefix-pcrel.s,
* testsuite/gas/ppc/prefix-pcrel.d: Add more instructions.

3 years agoPR27719, lang_mark_undefineds trashes memory
Alan Modra [Sun, 11 Apr 2021 14:04:21 +0000 (23:34 +0930)]
PR27719, lang_mark_undefineds trashes memory

It's not enough to test that the output is ELF before casting
bfd_link_hash_entry to elf_link_hash_entry.  Some ELF targets (d30v,
dlx, pj, s12z, xgate) use the generic linker support in bfd/linker.c
and thus their symbols are of type generic_link_hash_entry.

Not all of the places this patch touches can result in wrong accesses,
but I thought it worth ensuring that all occurrences of
elf_link_hash_entry in ld/ were obviously correct.

PR 27719
* ldlang.c (lang_mark_undefineds, undef_start_stop): Test that
the symbol hash table is the correct type before accessing
elf_link_hash_entry symbols.
* plugin.c (is_visible_from_outside): Likewise.
* emultempl/armelf.em (ld${EMULATION_NAME}_finish): Likewise.
* emultempl/solaris2.em (elf_solaris2_before_allocation): Likewise.

3 years agoRISC-V: Support to parse the multi-letter prefix in the architecture string.
Nelson Chu [Wed, 7 Apr 2021 04:50:19 +0000 (12:50 +0800)]
RISC-V: Support to parse the multi-letter prefix in the architecture string.

The original discussion is as follows,
https://github.com/riscv/riscv-isa-manual/issues/637

I never considered the prefixes may have multiple letters, like zxm.
But the ISA spec has been updated for a long time that I haven't noticed.
This patch rewrites the part of architecture parser to support parsing
the multi-letter prefixes.  Besides, I also improve the parser to report
errors in details.  One of the most obvious improvement is - Do not parse
the prefixed extensions according to the orders in the parse_config.
If we do so, then we used to get "unexpected ISA string at end" errors,
but the message is a little bit  hard to know what is happening.  I Remove
the confused message, and let riscv_parse_prefixed_ext to report the details.

bfd/
    * elfxx-riscv.c (riscv_std_z_ext_strtab): Moved forward.
    (riscv_std_s_ext_strtab): Likewise.
    (riscv_std_h_ext_strtab): Likewise.
    (riscv_std_zxm_ext_strtab): Added for the zxm prefix.
    (enum riscv_prefix_ext_class): Moved forward and renamed from
    riscv_isa_ext_class.  Reorder them according to the parsing order,
    since the enum values are used to check the orders in the
    riscv_compare_subsets.
    (struct riscv_parse_prefix_config): Moved forward and renamed from
    riscv_parse_config_t.  Also removed the ext_valid_p field, the
    related functions are replaced by riscv_valid_prefixed_ext.
    (parse_config): Moved forward and updated.  The more letters of the
    prefix string, the more forward it must be defined.  Otherwise, we
    will get the wrong mapping when using strncmp in riscv_get_prefix_class.
    (riscv_get_prefix_class): Moved forward.  Support to parse the
    multi-letter prefix, like zxm.
    (riscv_known_prefixed_ext): New function, check if the prefixed
    extension is supported according to the right riscv_std_*_ext_strtab.
    (riscv_valid_prefixed_ext): New function, used to replace the
    riscv_ext_*_valid_p functions.
    (riscv_init_ext_order): Do not set the values for prefix keywords
    since they may have multiple letters for now.
    (riscv_compare_subsets): Set the order values of prefix keywords
    to negative numbers according to the riscv_prefix_ext_class.
    (riscv_parse_std_ext): Call riscv_get_prefix_class to see if we
    have parsed the prefixed extensions.
    (riscv_parse_prefixed_ext): Updated and removed the parameter config.
    Report error when the prefix is unknown.
    (riscv_parse_subset): Do not parse the prefixed extensions according
    to the orders in the parse_config.  Remove the confused message and
    let riscv_parse_prefixed_ext to report the details.
    * elfxx-riscv.h (enum riscv_isa_ext_class): Moved to elfxx-riscv.c.
    (riscv_get_prefix_class): Removed to static.
gas/
    * testsuite/gas/riscv/march-fail-order-x-std.d: Renamed from
    march-fail-porder-x-std.d.
    * testsuite/gas/riscv/march-fail-order-z-std.d: Renamed from
    march-fail-porder-z-std.d.
    * testsuite/gas/riscv/march-fail-order-x-z.d: Renamed from
    march-fail-porder-x-z.d.
    * testsuite/gas/riscv/march-fail-order-zx-std.l: Added to replace
    march-fail-porder.l.
    * testsuite/gas/riscv/march-fail-order-x-z.l: Likewise.
    * testsuite/gas/riscv/march-fail-order-x.l: Updated.
    * testsuite/gas/riscv/march-fail-order-z.l: Likewise.
    * testsuite/gas/riscv/march-fail-single-prefix-h.d: Renamed from
    march-fail-single-char-h.d.
    * testsuite/gas/riscv/march-fail-single-prefix-s.d: Renamed from
    march-fail-single-char-s.d.
    * testsuite/gas/riscv/march-fail-single-prefix-x.d: Renamed from
    march-fail-single-char-x.d.
    * testsuite/gas/riscv/march-fail-single-prefix-z.d: Renamed from
    march-fail-single-char-z.d.
    * testsuite/gas/riscv/march-fail-single-prefix-zmx.d: Added.
    * testsuite/gas/riscv/march-fail-single-prefix.l: Added to replace
    march-fail-single-prefix.l.
    * testsuite/gas/riscv/march-fail-unknown-zxm.d: Added.
    * testsuite/gas/riscv/march-fail-unknown-std.l: Updated.
    * testsuite/gas/riscv/march-fail-unknown.l: Likewise.

3 years agoAutomatic date update in version.in
GDB Administrator [Mon, 12 Apr 2021 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoImprove support for loading DLLs at run time in gdbserver.
Eli Zaretskii [Sun, 11 Apr 2021 18:37:29 +0000 (21:37 +0300)]
Improve support for loading DLLs at run time in gdbserver.

This fixes win32-low.cc in the same way as a recent change in
windows-nat.c did for GDB: if the lpImageName member of the load-DLL
debug event doesn't allow us to find the file name of the DLL, then
loop over all the DLLs mapped into the inferior to find the one loaded
at the same base address as given by the lpBaseOfDll member of the
debug event.

gdbserver/ChangeLog:

2021-04-11  Eli Zaretskii  <eliz@gnu.org>

* win32-low.cc (win32_add_dll): New function, with body almost
identical to what win32_add_all_dlls did.  Accepts one argument;
if that is non-NULL, returns the file name of the DLL that is
loaded at the base address equal to that argument, or NULL if not
found.  If the argument is NULL, add all the DLLs loaded by the
inferior to the list of solibs and return NULL.
(win32_add_all_dlls): Now a thin wrapper around win32_add_dll.
(windows_nat::handle_load_dll) [!_WIN32_WCE]: If get_image_name
failed to glean the file name of the DLL, call win32_add_dll to
try harder using the lpBaseOfDll member of the load-DLL event.

3 years agoAutomatic date update in version.in
GDB Administrator [Sun, 11 Apr 2021 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoFix handling DLL loads at run time
Eli Zaretskii [Sat, 10 Apr 2021 08:33:08 +0000 (11:33 +0300)]
Fix handling DLL loads at run time

This patch makes handling a DLL load at run time (using LoadLibrary)
much more reliable when its file name cannot be obtained using the
lpImageName pointer provided by the DLL load debug event.  The
solution is to enumerate all the DLLs loaded by the inferior, looking
for the DLL that's loaded at base address provided by the lpBaseOfDll
pointer of the debug event.  Correctly resolving the DLL file name is
important, because without that GDB doesn't record the DLL in the list
of solibs, and then later is unable to show functions in that DLL in
the backtraces, which produces corrupted and truncated backtraces.
See this thread for the problems that causes:

  https://sourceware.org/pipermail/gdb-patches/2021-March/177022.html

gdb/ChangeLog:

2021-04-10  Eli Zaretskii  <eliz@gnu.org>

* windows-nat.c (windows_nat::handle_load_dll): Call
windows_add_dll if get_image_name failed to glean the name of the
DLL by using the lpImageName pointer.
(windows_add_all_dlls): Now a thin wrapper around windows_add_dll.
(windows_add_dll): Now does what windows_add_all_dlls did before,
but also accepts an argument LOAD_ADDR, which, if non-NULL,
specifies the address where the DLL was loaded into the inferior,
and looks for the single DLL loaded at that address.

3 years agoAutomatic date update in version.in
GDB Administrator [Sat, 10 Apr 2021 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoAdd missing ChangeLog entry for sim/rx change.
Luis Machado [Fri, 9 Apr 2021 14:39:00 +0000 (11:39 -0300)]
Add missing ChangeLog entry for sim/rx change.

3 years ago[AArch64] Fix include order for MTE
Luis Machado [Fri, 9 Apr 2021 14:19:22 +0000 (11:19 -0300)]
[AArch64] Fix include order for MTE

Similarly to commit 665af52ec2a52184d39a76d6e724fa4733dbab3c, fix a build
failure seen with an updated glibc, due to the enum/constant mismatch.

The old include file order eventually makes asm/ptrace.h get included before
sys/ptrace.h.

This patch fixes it. Seems fairly obvious and I'll push it shortly.

gdb/ChangeLog:

2021-04-09  Luis Machado  <luis.machado@linaro.org>

* nat/aarch64-mte-linux-ptrace.c: Update include file order.

3 years ago[sim,rx] Silence warning that turns into a build error
Luis Machado [Thu, 8 Apr 2021 19:49:04 +0000 (16:49 -0300)]
[sim,rx] Silence warning that turns into a build error

On a 32-bit build, I ran into the following:

sim/rx/fpu.c:789:6: error: "*((void *)&a+8)" may be used uninitialized in this function [-Werror=maybe-uninitialized]
rv = fp_implode (&a);

To silence this, just initialize the struct with 0's.

sim/rx/ChangeLog:

2021-04-09  Luis Machado  <luis.machado@linaro.org>

* fpu.c (rxfp_itof): Initialize structure.

3 years agoAArch64: Fix Diagnostic messaging for LD/ST Exclusive.
Tejas Belagod [Fri, 9 Apr 2021 11:29:32 +0000 (12:29 +0100)]
AArch64: Fix Diagnostic messaging for LD/ST Exclusive.

A summary of what this patch set fixes:

For instructions

STXR w0,x2,[x0]
STLXR w0,x2,[x0]

The warning we emit currently is misleading:

Warning: unpredictable: identical transfer and status registers --`stlxr w0,x2,[x0]'
Warning: unpredictable: identical transfer and status registers --`stxr w0,x2,[x0]'

it ought to be:

Warning: unpredictable: identical base and status registers --`stlxr w0,x2,[x0]'
Warning: unpredictable: identical base and status registers --`stxr w0,x2,[x0]'

For instructions:

ldaxp x0,x0,[x0]
ldxp x0,x0,[x0]

The warning we emit is incorrect

Warning: unpredictable: identical transfer and status registers --`ldaxp x0,x0,[x0]'
Warning: unpredictable: identical transfer and status registers --`ldxp x0,x0,[x0]'

it ought to be:

Warning: unpredictable load of register pair -- `ldaxp x0,x0,[x0]'
Warning: unpredictable load of register pair -- `ldxp x0,x0,[x0]'

For instructions

stlxp   w0, x2, x2, [x0]
stxp    w0, x2, x2, [x0]

We don't emit any warning when it ought to be:

Warning: unpredictable: identical base and status registers --`stlxp w0,x2,x2,[x0]'
Warning: unpredictable: identical base and status registers --`stxp w0,x2,x2,[x0]'

gas/ChangeLog:

2021-04-09  Tejas Belagod  <tejas.belagod@arm.com>

* config/tc-aarch64.c (warn_unpredictable_ldst): Clean-up diagnostic messages
for LD/ST Exclusive instructions.
* testsuite/gas/aarch64/diagnostic.s: Add a diagnostic test for STLXP.
* testsuite/gas/aarch64/diagnostic.l: Fix-up test after message clean-up.

3 years agoAArch64: Fix Atomic LD64/ST64 classification.
Tejas Belagod [Fri, 9 Apr 2021 11:21:38 +0000 (12:21 +0100)]
AArch64: Fix Atomic LD64/ST64 classification.

Patch 1: Fix diagnostics for exclusive load/stores and reclassify
 Armv8.7-A ST/LD64 Atomics.

Following upstream pointing out some inconsistencies in diagnostics,

https://sourceware.org/pipermail/binutils/2021-February/115356.html

attached is a patch set that fixes the issues. I believe a combination
of two patches mainly contributed to these bugs:

https://sourceware.org/pipermail/binutils/2020-November/113961.html
https://sourceware.org/pipermail/binutils/2018-June/103322.html

A summary of what this patch set fixes:

For instructions

STXR w0,x2,[x0]
STLXR w0,x2,[x0]

The warning we emit currently is misleading:

Warning: unpredictable: identical transfer and status registers --`stlxr w0,x2,[x0]'
Warning: unpredictable: identical transfer and status registers --`stxr w0,x2,[x0]'

it ought to be:

Warning: unpredictable: identical base and status registers --`stlxr w0,x2,[x0]'
Warning: unpredictable: identical base and status registers --`stxr w0,x2,[x0]'

For instructions:

ldaxp x0,x0,[x0]
ldxp x0,x0,[x0]

The warning we emit is incorrect

Warning: unpredictable: identical transfer and status registers --`ldaxp x0,x0,[x0]'
Warning: unpredictable: identical transfer and status registers --`ldxp x0,x0,[x0]'

it ought to be:

Warning: unpredictable load of register pair -- `ldaxp x0,x0,[x0]'
Warning: unpredictable load of register pair -- `ldxp x0,x0,[x0]'

For instructions

stlxp   w0, x2, x2, [x0]
stxp    w0, x2, x2, [x0]

We don't emit any warning when it ought to be:

Warning: unpredictable: identical base and status registers --`stlxp w0,x2,x2,[x0]'
Warning: unpredictable: identical base and status registers --`stxp w0,x2,x2,[x0]'

For instructions:

st64bv  x0, x2, [x0]
st64bv  x2, x0, [x0]

We incorrectly warn when its not necessary. This is because we classify them
incorrectly as ldstexcl when it should be lse_atomics in the opcode table.
The incorrect classification makes it pick up the warnings from warning on
exclusive load/stores.

Patch 2: Reclassify Armv8.7-A ST/LD64 Atomics.

This patch reclassifies ST64B{V,V0}, LD64B as lse_atomics rather than ldstexcl
according to their encoding class as specified in the architecture. This also
has the fortunate side-effect of spurious unpredictable warnings getting
eliminated.

For eg. For instruction:

st64bv  x0, x2, [x0]

We incorrectly warn when its not necessary:

Warning: unpredictable: identical transfer and status registers --`st64bv x0,x2,[x0]'

This is because we classify them incorrectly as ldstexcl when it should be
lse_atomics in the opcode table. The incorrect classification makes it pick
up the warnings from warning on exclusive load/stores. This patch fixes it
by reclassifying it and no warnings are issued for this instruction.

opcodes/ChangeLog:

2021-04-09  Tejas Belagod  <tejas.belagod@arm.com>

* aarch64-tbl.h (struct aarch64_opcode aarch64_opcode_table): Reclassify
LD64/ST64 instructions to lse_atomic instead of ldstexcl.

3 years agoPowerPC disassembly of pcrel references
Alan Modra [Tue, 6 Apr 2021 09:33:35 +0000 (19:03 +0930)]
PowerPC disassembly of pcrel references

This adds some annotation to Power10 pcrel instructions, displaying
the target address (ie. pc + D34 field) plus a symbol if there is one
at exactly that target address.  pld from the .got or .plt will also
look up the entry and display it, symbolically if there is a dynamic
relocation on the entry.

include/
* dis-asm.h (struct disassemble_info): Add dynrelbuf and dynrelcount.
binutils/
* objdump.c (struct objdump_disasm_info): Delete dynrelbuf and
dynrelcount.
(find_symbol_for_address): Adjust for dynrelbuf and dynrelcount move.
(disassemble_section, disassemble_data): Likewise.
opcodes/
* ppc-dis.c (struct dis_private): Add "special".
(POWERPC_DIALECT): Delete.  Replace uses with..
(private_data): ..this.  New inline function.
(disassemble_init_powerpc): Init "special" names.
(skip_optional_operands): Add is_pcrel arg, set when detecting R
field of prefix instructions.
(bsearch_reloc, print_got_plt): New functions.
(print_insn_powerpc): For pcrel instructions, print target address
and symbol if known, and decode plt and got loads too.
gas/
* testsuite/gas/ppc/prefix-pcrel.d: Update expected output.
* testsuite/gas/ppc/prefix-reloc.d: Likewise.
* gas/testsuite/gas/ppc/vsx_32byte.d: Likewise.
ld/
* testsuite/ld-powerpc/inlinepcrel-1.d: Update expected output.
* testsuite/ld-powerpc/inlinepcrel-2.d: Likewise.
* testsuite/ld-powerpc/notoc2.d: Likewise.
* testsuite/ld-powerpc/notoc3.d: Likewise.
* testsuite/ld-powerpc/pcrelopt.d: Likewise.
* testsuite/ld-powerpc/startstop.d: Likewise.
* testsuite/ld-powerpc/tlsget.d: Likewise.
* testsuite/ld-powerpc/tlsget2.d: Likewise.
* testsuite/ld-powerpc/tlsld.d: Likewise.
* testsuite/ld-powerpc/weak1.d: Likewise.
* testsuite/ld-powerpc/weak1so.d: Likewise.

3 years agoAutomatic date update in version.in
GDB Administrator [Fri, 9 Apr 2021 00:00:18 +0000 (00:00 +0000)]
Automatic date update in version.in