binutils-gdb.git
3 years agogdb/continuations: use lambdas instead of function pointers
Tankut Baris Aktemur [Thu, 22 Apr 2021 15:22:39 +0000 (17:22 +0200)]
gdb/continuations: use lambdas instead of function pointers

Use lambdas and std::list to track inferior continuations.  This is a
refactoring.

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

* inferior.h (class inferior) <continuations>: Change the type
to be an std::list of std::function's.
Update the references and uses below.
* continuations.c (struct continuation): Delete.
(make_continuation): Delete.
(do_my_continuations_1): Delete.
(do_my_continuations): Delete.
(discard_my_continuations_1): Delete.
(discard_my_continuations): Delete.
(add_inferior_continuation): Update.
(do_all_inferior_continuations): Update.
(discard_all_inferior_continuations): Update.
* continuations.h (add_inferior_continuation): Update to take
an std::function as the parameter.
* infcmd.c (struct attach_command_continuation_args): Delete.
(attach_command_continuation): Delete.
(attach_command_continuation_free_args): Delete.
(attach_command): Update.
(notice_new_inferior): Update.

3 years agogdb/continuations: do minor cleanup
Tankut Baris Aktemur [Thu, 22 Apr 2021 15:22:39 +0000 (17:22 +0200)]
gdb/continuations: do minor cleanup

Inferior continuations are no longer used by the until and finish
command.  It is used only by the attach command and the remote target
upon detecting new inferiors.  Update the comment accordingly.

Also update another comment about non-existent thread continuations and
remove an unused #include.

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

* continuations.h: Update the general comment.
* inferior.h (class inferior) <continuations>: Update the comment.
* interps.c: Do not include "continuations.h".

3 years agogdb/continuations: remove the 'err' from 'do_all_inferior_continuations'
Tankut Baris Aktemur [Thu, 22 Apr 2021 15:22:38 +0000 (17:22 +0200)]
gdb/continuations: remove the 'err' from 'do_all_inferior_continuations'

The 'err' parameter of 'do_all_inferior_continuations' is effectively
unused.  There is only one place where the function is called, and
there the argument is a literal 0.  So, remove the parameter.

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

* continuations.h (do_all_inferior_continuations): Remove the 'err'
parameter.  Update the references below.
* continuations.c (do_my_continuations_1)
(do_my_continuations)
(do_all_inferior_continuations): Update.
* inf-loop.c (inferior_event_handler): Update.
* infcmd.c (attach_command_continuation): Update.

3 years agogdb/infcmd: update the comment for 'attach_post_wait'
Tankut Baris Aktemur [Thu, 22 Apr 2021 15:22:38 +0000 (17:22 +0200)]
gdb/infcmd: update the comment for 'attach_post_wait'

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

* infcmd.c (attach_post_wait): Update the function comment.

3 years agogdb/infcmd: remove the unused parameter 'args' in 'attach_post_wait'
Tankut Baris Aktemur [Thu, 22 Apr 2021 15:22:38 +0000 (17:22 +0200)]
gdb/infcmd: remove the unused parameter 'args' in 'attach_post_wait'

The 'arg' parameter of 'attach_post_wait' is unused.  Remove it.

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

* infcmd.c (attach_post_wait): Remove the unused parameter 'args'.
Update the references below.
(struct attach_command_continuation_args)
(attach_command_continuation)
(attach_command_continuation_free_args)
(attach_command)
(notice_new_inferior): Update to remove the reference to 'args'.

3 years ago[gdb] Fix assert in remote_async_get_pending_events_handler
Tom de Vries [Thu, 22 Apr 2021 15:01:00 +0000 (17:01 +0200)]
[gdb] Fix assert in remote_async_get_pending_events_handler

Occassionally I run into the following assert:
...
(gdb) PASS: gdb.multi/multi-target-continue.exp: inferior 5
Remote debugging from host ::1, port 49990^M
Process multi-target-continue created; pid = 31241^M
src/gdb/remote-notif.c:113: internal-error: \
  void remote_async_get_pending_events_handler(gdb_client_data): \
  Assertion `target_is_non_stop_p ()' failed.^M
...

The assert checks target_is_non_stop_p, which is related to the current
target.

Fix this by changing the assert such that it checks non-stopness related to
the event it's handling.

Tested on x86_64-linux.

gdb/ChangeLog:

2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
    Tom de Vries  <tdevries@suse.de>

PR remote/27710
* remote.c (remote_target_is_non_stop_p): New function.
* remote.h (remote_target_is_non_stop_p): Declare.
* remote-notif.c (remote_async_get_pending_events_handler): Fix assert
to check non-stopness using notif_state->remote rather current target.

3 years agofix string table generation for XCOFF64 .debug section
Cl?ment Chigot [Thu, 22 Apr 2021 14:31:02 +0000 (15:31 +0100)]
fix string table generation for XCOFF64 .debug section

bfd * hash.c (struct bfd_strtab_hash): Remove xcoff field.
Add length_field_size field.
(_bfd_stringtab_init): Change prototype.
Adapt to new length_field_size.
(_bfd_xcoff_stringtab_init): Likewise.
(_bfd_stringtab_add): Likewise.
(_bfd_stringtab_emit): Likewise.
* libbfd-in.h (_bfd_xcoff_stringtab_init):
Change prototype.
* libbfd.h: Regenerate.
* xcofflink.c (_bfd_xcoff_bfd_link_hash_table_create):
Call _bfd_xcoff_stringtab_init with isxcoff64 value.

3 years agoImprove code coverage of Rust testing
Tom Tromey [Thu, 22 Apr 2021 13:16:36 +0000 (07:16 -0600)]
Improve code coverage of Rust testing

I enabled code coverage and ran the gdb test suite, and noticed that
the new Rust parser was missing testing on a few lines that were easy
to cover.  This patch mostly adds tests for certain syntax errors; but
this process also uncovered a couple of real bugs: I must have
cut-and-pasted the 'sizeof' parsing code from some other code, because
it is checking for KW_MUT (the old bison parser did not do this), and
the array length check is actually impossible because a negative
number like '-1' is parsed as two tokens.

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

* rust-parse.c (rust_parser::parse_sizeof): Remove KW_MUT code.
(struct typed_val_int) <val>: Now ULONGEST.
(rust_parser::parse_array_type): Remove negative check.
(rust_lex_int_test): Change 'value' to ULONGEST.

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

* gdb.rust/modules.exp: Add checks for syntax errors.
* gdb.rust/expr.exp: Add checks for syntax errors.
* gdb.rust/simple.exp: Add checks for syntax errors.

3 years agoHarmonize and improve auxiliary entries support for XCOFF
Cl?ment Chigot [Thu, 22 Apr 2021 11:28:50 +0000 (12:28 +0100)]
Harmonize and improve auxiliary entries support for XCOFF

bfd/ChangeLog:
* coff-rs6000.c (_bfd_xcoff_swap_aux_in): Add errors for
unsupported storage class or auxialiry entries.
Improve and adapt to new aux structures.
Add C_DWARF support.
(_bfd_xcoff_swap_aux_out): Likewise.
* coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Likewise.
(_bfd_xcoff64_swap_aux_out): Likewise.

binutils/ChangeLog:
* od-xcoff.c (dump_xcoff32_symbols): Adapt to new
aux structures.

include/ChangeLog:
* coff/internal.h (union internal_auxent):
 Add x_sect structure.
* coff/rs6000.h (union external_auxent): Rework to
match official documentation.
* coff/rs6k64.h (union external_auxent): Likewise.
(_AUX_SECT): New define.

3 years agox86-64/PE: adjust PR ld/26659 testcase for Cygwin
Jan Beulich [Thu, 22 Apr 2021 08:55:07 +0000 (10:55 +0200)]
x86-64/PE: adjust PR ld/26659 testcase for Cygwin

While the testcase put in place by 74edb473c9ec ("PE/Windows x86_64: Fix
weak undef symbols after image base change") is fine for MingW, it fails
for Cygwin. This is because the default image base is different there
(for whatever reason).

3 years agogdb: allow default_addressable_memory_unit_size to handle more cases
Andrew Burgess [Wed, 21 Apr 2021 09:59:38 +0000 (10:59 +0100)]
gdb: allow default_addressable_memory_unit_size to handle more cases

Currently default_addressable_memory_unit_size always returns 1,
indicating 1 byte is 1 octet.  If a target has something other than
this (common) setup then the target should override the
default_addressable_memory_unit_size.

However, the bfd library already knows about each targets octets per
byte, so it seems redundant making targets override this method to
tell GDB something it already knows (through bfd).

In this commit I propose to make default_addressable_memory_unit_size
return a value based on bfd's bits per byte.  I checked, and for every
target that GDB currently supports the bits per byte in bfd is 8, so
the current behaviour will not change.

In fact, the only targets in bfd that have bits per byte set to
something other than 8 can be found in cpu-tic4x.c and cpu-tic54x.c, I
don't believe these are supported by GDB right now.

I don't propose to remove the ability to override
default_addressable_memory_unit_size, this allows targets additional
flexibility for how to handle weird combinations of byte sizes.

This change was motivated by an out of tree target I was working on,
but it seemed like it was a good change that others might benefit
from.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* arch-utils.c (default_addressable_memory_unit_size): Return a
value based on bfd's bits per byte.

3 years agosim: regen against sim/m4/
Mike Frysinger [Thu, 22 Apr 2021 00:39:24 +0000 (20:39 -0400)]
sim: regen against sim/m4/

My scripts weren't updated to use new -I../m4 as the first arg.

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

3 years agosim: use -Werror when probing for supported warning flags
Simon Marchi [Wed, 21 Apr 2021 18:51:10 +0000 (14:51 -0400)]
sim: use -Werror when probing for supported warning flags

When building with clang, we get:

    error: unknown warning option '-Wmissing-parameter-type' [-Werror,-Wunknown-warning-option]

This is because clang only warns by default when encountering an unknown
warning option, and the probe for supported warning flags is done
without -Werror.  All flags are therefore accepted by configure, but
then it breaks when actually compiling a source file with -Werror.

This is equivalent to this commit in gdb:

    3e019bdc20eb81b91ab5bc774386201b874c0bac
    gdb: Use -Werror when checking for (un)supported warning flags

We then see some other compilation errors when building with clang and
-Werror, they can be dealt with later.

3 years agoShrink size of dwarf2_per_cu_data
Tom Tromey [Wed, 21 Apr 2021 22:10:44 +0000 (16:10 -0600)]
Shrink size of dwarf2_per_cu_data

I noticed some holes in struct dwarf2_per_cu_data.  This patch
rearranges the type slightly, and shrinks the size of some fields.
This reduces it from 136 bytes to 112 bytes (on x86-64).

I also reduced the size of the DWARF "version" fields in a couple of
spots.  It seemed needless to use a short to hold a value that ranges
from 2 to 5, and this also helped the goal of shrinking
dwarf2_per_cu_data.

2021-04-21  Tom Tromey  <tom@tromey.com>

* dwarf2/read.h (struct dwarf2_per_cu_data) <dwarf_version>: Now
unsigned char.
(struct dwarf2_per_cu_data): Rearrange.
* dwarf2/comp-unit.h (struct comp_unit_head) <version>: Now
unsigned char.
(struct comp_unit_head): Rearrange.
* dwarf2/comp-unit.c (read_comp_unit_head): Update.

3 years agoFix test case gdb.base/valgrind-bt.exp.
Carl Love [Thu, 15 Apr 2021 22:21:51 +0000 (17:21 -0500)]
Fix test case gdb.base/valgrind-bt.exp.

gdb/testsuite/ChangeLog:

* gdb.base/valgrind-bt.exp: Add gdb_test "break main".
Update expected string for gdb_test "bt".

* lib/valgrind.exp: Add set remotetimeout 3.
Increase vgdb wait from 1 to 2.
Add max-invoke-ms option to vgdb command line.

3 years ago[gdb/build] Hardcode --with-included-regex
Tom de Vries [Wed, 21 Apr 2021 19:54:03 +0000 (21:54 +0200)]
[gdb/build] Hardcode --with-included-regex

Currently gdb has a configure option:
...
$ ./src/gdb/configure --help
  ...
  --without-included-regex
                          don't use included regex; this is the default on
                          systems with version 2 of the GNU C library (use
                          with caution on other system)
...

The configure option controls config.h macro USE_INCLUDED_REGEX, which is
used in gdb/gdb_regex.h to choose between:
- using regex from libiberty (which is included in the binutils-gdb.git repo,
  hence the 'included' in USE_INCLUDED_REGEX), or
- using regex.h.

In the former case, the symbol regcomp is remapped to a symbol xregcomp, which
is then provided by libiberty.

In the latter case, the symbol regcomp is resolved at runtime, usually binding
to libc.  However, there is no mechanism in place to enforce this.

PR27681 is an example of where that causes problems.  On openSUSE Tumbleweed,
the ncurses package got the --with-pcre2 configure switch enabled, and solved
the resulting dependencies using:
...
 $ cat /usr/lib64/libncursesw.so
 /* GNU ld script */
-INPUT(/lib64/libncursesw.so.6 AS_NEEDED(-ltinfo -ldl))
+INPUT(/lib64/libncursesw.so.6 AS_NEEDED(-ltinfo -ldl -lpcre2-posix -lpcre2-8))
...

This lead to regcomp being bound to libpcre2-posix instead of libc.

This causes problems in several ways:
- by compiling using regex.h, we've already chosen a specific regex_t
  implementation, and the one from pcre2-posix is not the same.
- in gdb_regex.c we use GNU regex function re_search, which pcre2-posix
  doesn't provide, so while regcomp binds to pcre2-posix, re_search binds to
  libc.

A note on the latter: it's actually a bug to compile a regex using regcomp and
then pass it to re_search.  The GNU regex interface requires one to use
re_compile_pattern or re_compile_fastmap.  But as long we're using one of the
GNU regex incarnations in gnulib, glibc or libiberty, we get away with this.

The PR could be fixed by adding -lc in a specific position in the link line,
to force regcomp to be bound to glibc.  But this solution was considered
in the discussion in the PR as being brittle, and possibly causing problems
elsewhere.

Another solution offered was to restrict regex usage to posix, and no longer
use the GNU regex API.  This however could mean having to reproduce some of
that functionality locally, which would mean maintaining the same
functionality in more than one place.

The solution chosen here, is to hardcode --with-included-regex, that is, using
libiberty.

The option of using glibc for regex was introduced because glibc became the
authorative source for GNU regex, so it offered the possibility to link
against a more up-to-date regex version.

In that aspect, this patch is a step back.  But we have the option of using a
more up-to-date regex version as a follow-up step: by using the regex from
gnulib.

Tested on x86_64-linux.

gdb/ChangeLog:

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

PR build/27681
* configure.ac: Remove --without-included-regex/--with-included-regex.
* config.in: Regenerate.
* configure: Regenerate.
* gdb_regex.h: Assume USE_INCLUDED_REGEX is defined.

3 years agoExtend the description of PE header flags.
Eli Zaretskii [Wed, 21 Apr 2021 16:38:52 +0000 (17:38 +0100)]
Extend the description of PE header flags.

PR 27760
include * coff/pe.h (IMAGE_DLLCHARACTERISTICS_APPCONTAINER): Define.
(IMAGE_DLLCHARACTERISTICS_GUARD_CF): Define.

bfd * peXXigen.c (_bfd_XX_print_private_bfd_data_common): Add display
of IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP,
IMAGE_FILE_NET_RUN_FROM_SWAP and IMAGE_FILE_UP_SYSTEM_ONLY flags.
Decode the contents of the DllCharacteristics field.

3 years agogdb/breakpoint: add a 'force_condition' parameter to 'create_breakpoint'
Tankut Baris Aktemur [Wed, 21 Apr 2021 14:42:40 +0000 (16:42 +0200)]
gdb/breakpoint: add a 'force_condition' parameter to 'create_breakpoint'

The 'create_breakpoint' function takes a 'parse_extra' argument that
determines whether the condition, thread, and force-condition
specifiers should be parsed from the extra string or be used from the
function arguments.  However, for the case when 'parse_extra' is
false, there is no way to pass the force-condition specifier.  This
patch adds it as a new argument.

Also, in the case when parse_extra is false, the current behavior is
as if the condition is being forced.  This is a bug.  The default
behavior should reject the breakpoint.  See below for a demo of this
incorrect behavior.  (The MI command '-break-insert' uses the
'create_breakpoint' function with parse_extra=0.)

  $ gdb -q --interpreter=mi3 /tmp/simple
  =thread-group-added,id="i1"
  =cmd-param-changed,param="history save",value="on"
  =cmd-param-changed,param="auto-load safe-path",value="/"
  ~"Reading symbols from /tmp/simple...\n"
  (gdb)
  -break-insert -c junk -f main
  &"warning: failed to validate condition at location 1, disabling:\n  "
  &"No symbol \"junk\" in current context.\n"
  ^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="<MULTIPLE>",cond="junk",times="0",original-location="main",locations=[{number="1.1",enabled="N",addr="0x000000000000114e",func="main",file="/tmp/simple.c",fullname="/tmp/simple.c",line="2",thread-groups=["i1"]}]}
  (gdb)
  break main if junk
  &"break main if junk\n"
  &"No symbol \"junk\" in current context.\n"
  ^error,msg="No symbol \"junk\" in current context."
  (gdb)
  break main -force-condition if junk
  &"break main -force-condition if junk\n"
  ~"Note: breakpoint 1 also set at pc 0x114e.\n"
  &"warning: failed to validate condition at location 1, disabling:\n  "
  &"No symbol \"junk\" in current context.\n"
  ~"Breakpoint 2 at 0x114e: file /tmp/simple.c, line 2.\n"
  =breakpoint-created,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="<MULTIPLE>",cond="junk",times="0",original-location="main",locations=[{number="2.1",enabled="N",addr="0x000000000000114e",func="main",file="/tmp/simple.c",fullname="/tmp/simple.c",line="2",thread-groups=["i1"]}]}
  ^done
  (gdb)

After applying this patch, we get the behavior below:

  (gdb)
  -break-insert -c junk -f main
  ^error,msg="No symbol \"junk\" in current context."

This restores the behavior that is present in the existing releases.

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

* breakpoint.h (create_breakpoint): Add a new parameter,
'force_condition'.
* breakpoint.c (create_breakpoint): Use the 'force_condition'
argument when 'parse_extra' is false to check if the condition
is invalid at all of the breakpoint locations.
Update the users below.
(break_command_1)
(dprintf_command)
(trace_command)
(ftrace_command)
(strace_command)
(create_tracepoint_from_upload): Update.
* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Update.
* python/py-breakpoint.c (bppy_init): Update.
* python/py-finishbreakpoint.c (bpfinishpy_init): Update.

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

* gdb.mi/mi-break.exp: Extend with checks for invalid breakpoint
conditions.

3 years agotestsuite, gdb.mi: fix duplicate test names in mi-break.exp
Simon Marchi [Wed, 21 Apr 2021 14:42:39 +0000 (16:42 +0200)]
testsuite, gdb.mi: fix duplicate test names in mi-break.exp

gdb/testsuite/ChangeLog:
2021-04-21  Simon Marchi  <simon.marchi@polymtl.ca>
    Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* gdb.mi/mi-break.exp: Fix the duplicate test names.

3 years agogdb/breakpoint: display "N" on MI for disabled-by-condition locations
Tankut Baris Aktemur [Wed, 21 Apr 2021 14:42:39 +0000 (16:42 +0200)]
gdb/breakpoint: display "N" on MI for disabled-by-condition locations

For breakpoint locations that are disabled because of an invalid
condition, CLI displays "N*" in the 'enabled' field, where '*' refers
to the footnote below the table:

  (*): Breakpoint condition is invalid at this location.

This is not necessary for MI, where we shall simply print "N" without
the footnote.

Update the document to mention the "N" value for the MI.  Also remove
the line about the 'enable' field, because there is no such field for
locations.

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

* breakpoint.c (print_one_breakpoint_location): Display "N" for
disabled-by-condition locations on MI-like output.
(breakpoint_1): Do not display the disabled-by-condition footnote
if the output is MI-like.

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

* gdb.texinfo (GDB/MI Breakpoint Information): Update the
description for the 'enabled' field of breakpoint locations.

3 years agoAdd ability to select numeric base when displaying symbol values in readelf.
Nick Lott [Wed, 21 Apr 2021 14:33:13 +0000 (15:33 +0100)]
Add ability to select numeric base when displaying symbol values in readelf.

PR 27672
* readelf.c (sym_base): New variable.
(enum print_mode): Add more modes.
(print_vma): Add suport for new modes.
(options): Add sym-base.
(usage): Add sym-base.
(parse_args): Add support for --sym-base.
(print_dynamic_symbol_size): New function.
(print_dynamic_symbol): Use new function.
* doc/binutils.texi: Document the new feature.
* NEWS: Mention the new feature.

3 years agoupdate-netbsd.sh: fix script name, update year range in copyright.
Frederic Cambus [Wed, 21 Apr 2021 14:05:14 +0000 (08:05 -0600)]
update-netbsd.sh: fix script name, update year range in copyright.

Fix the script name and year range in update-netbsd.sh.

gdb/ChangeLog
2021-04-21  Frederic Cambus  <fred@statdns.com>

* syscalls/update-netbsd.sh: Fix script name display in usage, and
update year range in generated copyright notices.

3 years agoFix an assertion failure in the BFD library when parsing a corrupt SREC format file.
Nick Clifton [Wed, 21 Apr 2021 10:09:11 +0000 (11:09 +0100)]
Fix an assertion failure in the BFD library when parsing a corrupt SREC format file.

PR 27759
* srec.c (srec_read_section): Replace assertions with error
returns.

3 years agoAdjust readelf's output so that section symbols without a name as shown with their...
Nick Clifton [Wed, 21 Apr 2021 09:34:32 +0000 (10:34 +0100)]
Adjust readelf's output so that section symbols without a name as shown with their section name.

binutils* readelf.c (print_dynamic_symbol): Print the section name for
section symbols without a name of their own.
* testsuite/binutils-all/mips/global-local-symtab-sort-n64t.d:
Adjust expected output to allow for named section symbols.
* testsuite/binutils-all/mips/global-local-symtab-sort-o32t.d:
Likewise.
* testsuite/binutils-all/readelf.s-64: Likewise.
* testsuite/binutils-all/readelf.ss-64-unused: Likewise.
* testsuite/binutils-all/readelf.ss-tmips: Likewise.
* testsuite/binutils-all/readelf.ss-unused: Likewise.

ld * testsuite/ld-aarch64/variant_pcs-now.d: Adjust expected output
to allow for named section symbols.
* testsuite/ld-aarch64/variant_pcs-r.d: Likewise.
* testsuite/ld-aarch64/variant_pcs-shared.d: Likewise.
* testsuite/ld-alpha/tlsbin.rd: Likewise.
* testsuite/ld-alpha/tlsbinr.rd: Likewise.
* testsuite/ld-alpha/tlspic.rd: Likewise.
* testsuite/ld-arm/rodata-merge-map.sym: Likewise.
* testsuite/ld-arm/script-type.sym: Likewise.
* testsuite/ld-cris/libdso-2.d: Likewise.
* testsuite/ld-cris/pr16044.d: Likewise.
* testsuite/ld-elf/sec64k.exp: Likewise.
* testsuite/ld-ia64/tlsbin.rd: Likewise.
* testsuite/ld-ia64/tlspic.rd: Likewise.
* testsuite/ld-mips-elf/global-local-symtab-sort-n64t.d: Likewise.
* testsuite/ld-mips-elf/global-local-symtab-sort-o32t.d: Likewise.
* testsuite/ld-mmix/bspec1.d: Likewise.
* testsuite/ld-mmix/bspec2.d: Likewise.
* testsuite/ld-mmix/local1.d: Likewise.
* testsuite/ld-mmix/local3.d: Likewise.
* testsuite/ld-mmix/local5.d: Likewise.
* testsuite/ld-mmix/local7.d: Likewise.
* testsuite/ld-mmix/undef-3.d: Likewise.
* testsuite/ld-powerpc/tlsso.r: Likewise.
* testsuite/ld-powerpc/tlsso32.r: Likewise.
* testsuite/ld-powerpc/tlstocso.r: Likewise.
* testsuite/ld-s390/tlsbin.rd: Likewise.
* testsuite/ld-s390/tlsbin_64.rd: Likewise.
* testsuite/ld-s390/tlspic.rd: Likewise.
* testsuite/ld-s390/tlspic_64.rd: Likewise.
* testsuite/ld-sparc/gotop32.rd: Likewise.
* testsuite/ld-sparc/gotop64.rd: Likewise.
* testsuite/ld-sparc/tlssunbin32.rd: Likewise.
* testsuite/ld-sparc/tlssunbin64.rd: Likewise.
* testsuite/ld-sparc/tlssunnopic32.rd: Likewise.
* testsuite/ld-sparc/tlssunnopic64.rd: Likewise.
* testsuite/ld-sparc/tlssunpic32.rd: Likewise.
* testsuite/ld-sparc/tlssunpic64.rd: Likewise.
* testsuite/ld-tic6x/common.d: Likewise.
* testsuite/ld-tic6x/shlib-1.rd: Likewise.
* testsuite/ld-tic6x/shlib-1b.rd: Likewise.
* testsuite/ld-tic6x/shlib-1r.rd: Likewise.
* testsuite/ld-tic6x/shlib-1rb.rd: Likewise.
* testsuite/ld-tic6x/shlib-app-1.rd: Likewise.
* testsuite/ld-tic6x/shlib-app-1b.rd: Likewise.
* testsuite/ld-tic6x/shlib-app-1r.rd: Likewise.
* testsuite/ld-tic6x/shlib-app-1rb.rd: Likewise.
* testsuite/ld-tic6x/shlib-noindex.rd: Likewise.
* testsuite/ld-tic6x/static-app-1.rd: Likewise.
* testsuite/ld-tic6x/static-app-1b.rd: Likewise.
* testsuite/ld-tic6x/static-app-1r.rd: Likewise.
* testsuite/ld-tic6x/static-app-1rb.rd: Likewise.

gas * testsuite/gas/aarch64/dwarf.d: Adjust expected output to allow
for named section symbols.
* testsuite/gas/arm/thumbver.d: Likewise.
* testsuite/gas/bfin/loop_temps.d: Likewise.
* testsuite/gas/elf/section2.e-arc: Likewise.
* testsuite/gas/elf/section2.e-arm: Likewise.
* testsuite/gas/elf/section2.e-csky: Likewise.
* testsuite/gas/elf/section2.e-m32r: Likewise.
* testsuite/gas/elf/section2.e-mips: Likewise.
* testsuite/gas/elf/section2.e-msp430: Likewise.
* testsuite/gas/elf/section2.e-riscv: Likewise.
* testsuite/gas/elf/section2.e-rl78: Likewise.
* testsuite/gas/elf/section2.e-rx: Likewise.
* testsuite/gas/elf/section2.e-score: Likewise.
* testsuite/gas/elf/section2.e-tic6x: Likewise.
* testsuite/gas/elf/section2.e-unused: Likewise.
* testsuite/gas/elf/section2.e-v850: Likewise.
* testsuite/gas/elf/section2.e-xtensa: Likewise.
* testsuite/gas/ia64/alias-ilp32.d: Likewise.
* testsuite/gas/ia64/alias.d: Likewise.
* testsuite/gas/ia64/global.d: Likewise.
* testsuite/gas/microblaze/relax_size.elf: Likewise.
* testsuite/gas/microblaze/relax_size2.elf: Likewise.
* testsuite/gas/mips/global-local-symtab-sort-n64t.d: Likewise.
* testsuite/gas/mips/global-local-symtab-sort-o32t.d: Likewise.
* testsuite/gas/mmix/bspec-1.d: Likewise.
* testsuite/gas/mmix/byte-1.d: Likewise.
* testsuite/gas/mmix/comment-1.d: Likewise.
* testsuite/gas/mmix/loc-1.d: Likewise.
* testsuite/gas/mmix/loc-2.d: Likewise.
* testsuite/gas/mmix/loc-3.d: Likewise.
* testsuite/gas/mmix/loc-4.d: Likewise.
* testsuite/gas/mmix/loc-5.d: Likewise.
* testsuite/gas/tic6x/scomm-directive-4.d: Likewise.

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

3 years agoRework the R_NEG support on both gas and ld for the PowerPC AIX targets, in order...
Cl?ment Chigot [Tue, 20 Apr 2021 13:40:43 +0000 (14:40 +0100)]
Rework the R_NEG support on both gas and ld for the PowerPC AIX targets, in order to manage C++ exceptions built with GCC.

bfd PR binutils/21700
* reloc.c (BFD_RELOC_PPC_NEG): New relocation.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* coff-rs6000.c (_bfd_xcoff_reloc_type_lookup): Add
BFD_RELOC_PPC_NEG handler.
(xcoff_reloc_type_neg): Correctly substract addend.
* coff64-rs6000.c (xcoff64_howto_table): Add R_NEG_32
howto.
(xcoff64_rtype2howto): Add handler for R_NEG_32.
(xcoff64_reloc_type_lookup): Add BFD_RELOC_PPC_NEG handler.
* xcofflink.c (xcoff_need_ldrel_p): Check output section
for R_POS-like relocations. New argument added.
(xcoff_mark): Adapt to new xcoff_need_ldrel_p argument.
(xcoff_link_input_bfd): Likewise.

gas * config/tc-ppc.c (ppc_get_csect_to_adjust): New function.
(ppc_fix_adjustable): Manage fx_subsy part.
(tc_gen_reloc): Create second relocation when both
fx_addsy and fx_subsy are provided.
* config/tc-ppc.h (RELOC_EXPANSION_POSSIBLE): New define.
(MAX_RELOC_EXPANSION): Likewise.
(TC_FORCE_RELOCATION_SUB_SAME): Likewise
(UNDEFINED_DIFFERENCE_OK): Likewise
* testsuite/gas/all/gas.exp: Skip difference between two
undefined symbols test.

ld * testsuite/ld-powerpc/aix52.exp: Add new test.
* testsuite/ld-powerpc/aix-neg-reloc-32.d: New test.
* testsuite/ld-powerpc/aix-neg-reloc-64.d: New test.
* testsuite/ld-powerpc/aix-neg-reloc.ex: New test.
* testsuite/ld-powerpc/aix-neg-reloc.s: New test.

3 years agosim: rl78/rx: drop unnecessary getopt.h probing
Mike Frysinger [Tue, 20 Apr 2021 13:21:28 +0000 (09:21 -0400)]
sim: rl78/rx: drop unnecessary getopt.h probing

Since getopt.h is provided by libiberty, there's no need to probe for
a system version of it.  Plus we already assume it exists in other
parts of the sim.

3 years agoMAINTAINERS: Remove Martin Schwidefsky as s390 maintainer
Andreas Krebbel [Tue, 20 Apr 2021 07:18:02 +0000 (09:18 +0200)]
MAINTAINERS: Remove Martin Schwidefsky as s390 maintainer

https://lwn.net/ml/linux-kernel/20190521162350.GA17107@osiris/

ChangeLog:

2021-04-20  Andreas Krebbel  <krebbel@linux.ibm.com>

* MAINTAINERS: Remove Martin Schwidefsky as s390 maintainer and
add him to Past Maintainers.
Update my email address.

3 years agogdb: Fix reduce/reduce conflicts for qualifier_seq_noopt in the C parser.
Felix Willgerodt [Tue, 20 Apr 2021 06:44:17 +0000 (08:44 +0200)]
gdb: Fix reduce/reduce conflicts for qualifier_seq_noopt in the C parser.

This fixes a problem with GDB's address space qualifier parsing.  GDB uses
'@' as a way to express an address space in expression evaluation.  This can
currently lead to a crash for "Add support for the __flash qualifier on AVR"
(487d975399dfcb2bb2f0998a7d12bd62acdd9fa1), the only user I am aware of.

Program:
~~~
const __flash char data_in_flash = 0xab;

int
main (void)
{
  const __flash char *pointer_to_flash = &data_in_flash;
}
~~~

Before:
~~~
(gdb) p data_in_flash
$1 = -85 '\253'
(gdb) p *(const char * @flash) pointer_to_flash
$2 = -85 '\253'
(gdb) p *(@flash const char *) pointer_to_flash
type-stack.c:201: internal-error: type* type_stack::follow_types(type*): unrecognized tp_ value in follow_types
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)
~~~

After:
~~~
(gdb) p data_in_flash
$1 = -85 '\253'
(gdb) p *(const char *) pointer_to_flash
$2 = 0 '\000'
(gdb) p *(const char * @flash) pointer_to_flash
$3 = -85 '\253'
(gdb) p *(@flash const char *) pointer_to_flash
$4 = 0 '\000'
(gdb)
~~~

Note that how the binding of this qualifier is interpreted and resolved for an
address/pointer is target specific.  Hence only the prepended qualifier works
for AVR, even if it seems syntactically incorrect.  I won't change this for
AVR, as I am not familiar with that target.

Bison now also complains about less conflicts:

Before:
  YACC   c-exp.c
gdb/gdb/c-exp.y: warning: 153 shift/reduce conflicts [-Wconflicts-sr]
gdb/gdb/c-exp.y: warning: 70 reduce/reduce conflicts [-Wconflicts-rr]

After:
  YACC   c-exp.c
gdb/gdb/c-exp.y: warning: 60 shift/reduce conflicts [-Wconflicts-sr]
gdb/gdb/c-exp.y: warning: 69 reduce/reduce conflicts [-Wconflicts-rr]

gdb/ChangeLog:
2021-04-20  Felix Willgerodt  <felix.willgerodt@intel.com>

* c-exp.y (qualifier_seq_noopt): Replace qualifier_seq with
qualifier_seq_noopt.

3 years agogdb: Allow address space qualifier parsing in C++.
Felix Willgerodt [Tue, 20 Apr 2021 06:43:08 +0000 (08:43 +0200)]
gdb: Allow address space qualifier parsing in C++.

The goal of this patch is to allow target dependent address space qualifiers
in the C++ expression parser.  This can be useful for memory examination on
targets that actually use different address spaces in hardware without
having to deep-dive into implementation details of the whole solution.

GDB uses the @ symbol to parse address space qualifiers.  The only current
user that I am aware of is the __flash support for avr, which was added in
"Add support for the __flash qualifier on AVR"
(487d975399dfcb2bb2f0998a7d12bd62acdd9fa1)
and only works for C.

One use-case of the AVR patch is:

~~~
const __flash char data_in_flash = 0xab;

int
main (void)
{
  const __flash char *pointer_to_flash = &data_in_flash;
}
~~~

~~~
(gdb) print pointer_to_flash
$1 = 0x1e8 <data_in_flash> "\253"
(gdb) print/x *pointer_to_flash
$2 = 0xab
(gdb) x/x pointer_to_flash
0x1e8 <data_in_flash>: 0xXXXXXXab
(gdb)
(gdb) p/x *(char* @flash) pointer_to_flash
$3 = 0xab
~~~

I want to enable a similar usage of e.g. @local in C++.

Before this patch (using "set debug parser on"):

~~~
(gdb) p *(int* @local) 0x1234
(...)
Reading a token: Next token is token '@' ()
Shifting token '@' ()
Entering state 46
Reading a token: Next token is token UNKNOWN_CPP_NAME (ssym<name=local, sym=(null), field_of_this=0>)
A syntax error in expression, near `local) &x'.
~~~

After:
~~~
(gdb) p *(int* @local) 0x1234
(...)
Reading a token: Next token is token '@' ()
Shifting token '@' ()
Entering state 46
Reading a token: Next token is token UNKNOWN_CPP_NAME (ssym<name=local, sym=(null), field_of_this=0>)
Shifting token UNKNOWN_CPP_NAME (ssym<name=local, sym=(null), field_of_this=0>)
Entering state 121
Reducing stack by rule 278 (line 1773):
   $1 = token UNKNOWN_CPP_NAME (ssym<name=local, sym=(null), field_of_this=0>)
-> $$ = nterm name ()
Stack now 0 49 52 76 222 337 46
Entering state 167
Reducing stack by rule 131 (line 1225):
   $1 = token '@' ()
   $2 = nterm name ()
Unknown address space specifier: "local"
~~~

The "Unknown address space qualifier" is the right behaviour, as I ran this
on a target that doesn't have multiple address spaces and therefore obviously
no support for such qualifiers.

gdb/ChangeLog:
2021-04-20  Felix Willgerodt  <felix.willgerodt@intel.com>

* c-exp.y (single_qualifier): Handle UNKNOWN_CPP_NAME.

gdb/testsuite/ChangeLog:
2021-04-20  Felix Willgerodt  <felix.willgerodt@intel.com>

* gdb.base/address_space_qualifier.exp: New file.

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

3 years agogdb: use compiled_regex instead of std::regex
Andrew Burgess [Thu, 15 Apr 2021 17:30:57 +0000 (18:30 +0100)]
gdb: use compiled_regex instead of std::regex

In GDB we should be using compiled_regex instead of std::regex.
Replace one use in producer.c.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* producer.c: Replace 'regex' include with 'gdb_regex.h'.
(producer_is_icc): Replace use of std::regex with gdb's
compiled_regex.

3 years agoFix a problem running the archiver program in MRI mode on archives containing LTO...
Nick Clifton [Mon, 19 Apr 2021 16:38:39 +0000 (17:38 +0100)]
Fix a problem running the archiver program in MRI mode on archives containing LTO compiled objects.

PR 21702
* arsup.c (ar_addmod): Enable plugin support, if available.

3 years agoFix an assembler testuite failure when checking a toolchain configured with --target...
Nick Clifton [Mon, 19 Apr 2021 16:36:43 +0000 (17:36 +0100)]
Fix an assembler testuite failure when checking a toolchain configured with --target=rs6000-aix3.3.

* testsuite/gas/all/gas.exp: Add rs6000*-*-aix* to the list of
targets which should skip the undefined symbols test.

3 years agoaarch64: New instructions for maintenance of GPT entries cached in a TLB
Przemyslaw Wirkus [Mon, 19 Apr 2021 14:00:07 +0000 (15:00 +0100)]
aarch64: New instructions for maintenance of GPT entries cached in a TLB

This patch adds support to four new system registers (RPAOS, RPALOS, PAALLOS,
PAALL) in conjunction with TLBI instruction. This change is part of RME (Realm
Management Extension).

gas/ChangeLog:

2021-04-19  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* NEWS: Update news.
* testsuite/gas/aarch64/rme.d: Update test.
* testsuite/gas/aarch64/rme.s: Update test.

opcodes/ChangeLog:

2021-04-19  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* aarch64-opc.c: Add new registers (RPAOS, RPALOS, PAALLOS, PAALL) support for
TLBI instruction.

3 years agoaarch64: Add new data cache maintenance operations
Przemyslaw Wirkus [Mon, 19 Apr 2021 13:54:46 +0000 (14:54 +0100)]
aarch64: Add new data cache maintenance operations

This patch adds support to two new system registers (CIPAPA, CIGDPAPA) in
conjunction with DC instruction. This change is part of RME (Realm Management
Extension).

gas/ChangeLog:

2021-04-19  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* testsuite/gas/aarch64/rme.d: Update test.
* testsuite/gas/aarch64/rme.s: Update test.

opcodes/ChangeLog:

2021-04-19  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>

* aarch64-opc.c: Add new register (CIPAPA, CIGDPAPA) support for
DC instruction.

3 years agoarm64: add two initializers
Jan Beulich [Mon, 19 Apr 2021 13:41:35 +0000 (15:41 +0200)]
arm64: add two initializers

Old enough gcc can't cope and would warn about the variables potentially
remaining uninitialized.

3 years agoFix kfail patterns in inline-locals.exp
Tom Tromey [Mon, 19 Apr 2021 13:16:34 +0000 (07:16 -0600)]
Fix kfail patterns in inline-locals.exp

PR gdb/27742 points out that my recent change to
print_variable_and_value caused a regression in inline-locals.exp.  I
can't reproduce this, but I came up with this patch based on the
output shown in the bug.

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

PR gdb/27742:
* gdb.opt/inline-locals.exp: Update kfail patterns.

3 years agogas: drop sprint_value()
Jan Beulich [Mon, 19 Apr 2021 11:28:35 +0000 (13:28 +0200)]
gas: drop sprint_value()

Its (documented) behavior is unhelpful in particular in 64-bit build
environments: While printing large 32-bit numbers in decimal already
isn't very meaningful to most people, this even more so goes for yet
larger 64-bit numbers. bfd_sprintf_vma() still tries to limit the number
of digits printed (without depending on a build system property), but
uniformly produces hex output.

3 years agoFix compile time warning about unused functions.
Nick Clifton [Mon, 19 Apr 2021 08:41:04 +0000 (09:41 +0100)]
Fix compile time warning about unused functions.

binutils * rename.c: (get_stat_atime_ns): Add prototype.
(get_stat_mtime_ns): Add prototype.

3 years agosim: switch to AC_CHECK_HEADERS_ONCE
Mike Frysinger [Mon, 19 Apr 2021 03:44:36 +0000 (23:44 -0400)]
sim: switch to AC_CHECK_HEADERS_ONCE

This avoids duplicate tests for headers between common m4, arches,
and any other sources that would trigger header tests.

3 years agosim: msp430: delete unused getopt.h probe
Mike Frysinger [Mon, 19 Apr 2021 03:33:31 +0000 (23:33 -0400)]
sim: msp430: delete unused getopt.h probe

This port doesn't include it anywhere, so drop the test.

3 years agosim: moxie: switch syscalls to common nltvals
Mike Frysinger [Mon, 19 Apr 2021 02:48:31 +0000 (22:48 -0400)]
sim: moxie: switch syscalls to common nltvals

Rather than hand duplicate the syscall constants, switch to the
common nltvals framework.  I made sure the constants have the
same values before & after too :).

3 years agosim: sh: switch syscalls to common nltvals
Mike Frysinger [Mon, 19 Apr 2021 02:43:06 +0000 (22:43 -0400)]
sim: sh: switch syscalls to common nltvals

Rather than hand duplicate the syscall table, switch to the common
nltvals framework.  We have to tweak the constant names, but we get
everything else for free.  I made sure the constants have the same
values before & after too :).

3 years agosim: rx: switch syscalls to common nltvals
Mike Frysinger [Mon, 19 Apr 2021 02:35:19 +0000 (22:35 -0400)]
sim: rx: switch syscalls to common nltvals

Rather than hand duplicate the syscall table, switch to the common
nltvals framework.  We have to tweak the constant names, but we get
everything else for free.  I made sure the constants have the same
values before & after too :).

3 years agosim: m32c: switch syscalls to common nltvals
Mike Frysinger [Mon, 19 Apr 2021 02:31:19 +0000 (22:31 -0400)]
sim: m32c: switch syscalls to common nltvals

Rather than hand duplicate the syscall table, switch to the common
nltvals framework.  We have to tweak the constant names, but we get
everything else for free.  I made sure the constants have the same
values before & after too :).

3 years agosim: iq2000: switch syscalls to common nltvals
Mike Frysinger [Mon, 19 Apr 2021 02:24:37 +0000 (22:24 -0400)]
sim: iq2000: switch syscalls to common nltvals

Rather than hand duplicate the syscall table, switch to the common
nltvals framework.  We have to tweak the constant names, but we get
everything else for free.  I made sure the constants have the same
values before & after too :).

3 years agosim: switch to AC_CHECK_FUNCS_ONCE & merge a little
Mike Frysinger [Mon, 19 Apr 2021 01:50:07 +0000 (21:50 -0400)]
sim: switch to AC_CHECK_FUNCS_ONCE & merge a little

This avoids duplicate tests for functions between common m4, arches,
and any other sources that would trigger func tests.

Also manually delete known duplicate function tests between the m4,
bfin, and v850 ports.

3 years agosim: mn10300: delete unused func & header tests
Mike Frysinger [Mon, 19 Apr 2021 01:30:24 +0000 (21:30 -0400)]
sim: mn10300: delete unused func & header tests

These appear to have been blindly copied from the v850 port many years
ago as the code has never been used.  Just delete it all and be done.

3 years agosim: syscall: add getpid support
Mike Frysinger [Mon, 19 Apr 2021 00:53:03 +0000 (20:53 -0400)]
sim: syscall: add getpid support

Hoist the Blackfin implementation up to the common one.

3 years agosim: d10v: fix build warnings
Mike Frysinger [Mon, 19 Apr 2021 01:13:34 +0000 (21:13 -0400)]
sim: d10v: fix build warnings

The printf fix uses our PRIxTA for our sim address type.

Then cast away the const (since the underlying code safely treats it
as such) even if it's ugly.

Finally touch up the argv iterator pointer to match the new func arg.

With this tidied up, we can delete the SIM_AC_OPTION_WARNINGS(no) call
to get the default common behavior where -Werror is enabled.

3 years agosim: cr16: fix build warnings
Mike Frysinger [Mon, 19 Apr 2021 01:01:00 +0000 (21:01 -0400)]
sim: cr16: fix build warnings

The printf fix is obvious enough, but the hash one is a real bug:
cr16/interp.c: In function 'sim_open':
cr16/interp.c:560:17: error: 'h' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  560 |               h = h->next;
      |               ~~^~~~~~~~~

It happens to not cause a problem currently because the first entry in
the generated table that this loop operates matches a codepath where h
is initialized.  Then when later entries don't match, the previous value
is pointing at the end of a valid hash table already, and the rest of
the code does nothing.

With this tidied up, we can delete the SIM_AC_OPTION_WARNINGS(no) call
to get the default common behavior where -Werror is enabled.

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

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.