binutils-gdb.git
3 years agoChange target_bfd_reopen to take a gdb_bfd_ref_ptr
Tom Tromey [Mon, 22 Feb 2021 16:47:37 +0000 (09:47 -0700)]
Change target_bfd_reopen to take a gdb_bfd_ref_ptr

While looking at Andrew's recent target sections series, I saw that
target_bfd_reopen took a "bfd *", leading to a call to new_reference.
However, because the only caller of target_bfd_reopen is already using
gdb_bfd_ref_ptr, this code can be simplified and the explicit call to
new_reference can be removed.

gdb/ChangeLog
2021-02-22  Tom Tromey  <tromey@adacore.com>

* solib-svr4.c (enable_break): Update.
* bfd-target.c (class target_bfd) <target_bfd>: Change parameter
type.
(target_bfd_reopen): Change parameter type.
* bfd-target.h (target_bfd_reopen): Change parameter type.

3 years agogdb: add asserts in thread code
Simon Marchi [Mon, 22 Feb 2021 16:42:03 +0000 (11:42 -0500)]
gdb: add asserts in thread code

Unlike the previous patch, I don't propose that we take this patch into
gdb-10-branch.

This patch adds two asserts, prompted by investigating and fixing the
bug fixed by the previous patch.

The assert in find_thread_ptid would have caught the original issue
before the segfault (I think it's slightly more use friendly).

The assert in add_thread_silent would have made it clear that the
solution proposed in [1] isn't the right one.  The solution ended up
passing nullptr as a target to add_thread.  We don't want that, because
add_thread_silent uses it to look up the inferior to which to add the
thread.  If the target is nullptr, we could find an inferior with the
same pid, but belonging to an unrelated target.  So we always want a
non-nullptr target in add_thread_silent.

gdb/ChangeLog:

* thread.c (add_thread_silent): Add assert.
(find_thread_ptid): Add assert.

[1] https://sourceware.org/pipermail/gdb-patches/2021-February/176202.html

Change-Id: Ie593ee45c5eb02235e8e9fbcda612d48ce883852

3 years agogdb: push target earlier in procfs_target::attach (PR 27435)
Simon Marchi [Mon, 22 Feb 2021 16:41:32 +0000 (11:41 -0500)]
gdb: push target earlier in procfs_target::attach (PR 27435)

Since this is a GDB 9 -> 10 regression, I would like to push it to
gdb-10-branch.

This is a follow-up to:

  https://sourceware.org/pipermail/gdb-patches/2021-February/176202.html

This patch fixes a segfault seen when attaching to a process on Solaris.
The steps leading to the segfault are:

 - procfs_target::attach calls do_attach, at this point the inferior's
   process slot in the target stack is empty.
 - do_attach adds a thread with `add_thread (&the_procfs_target, ptid)`
 - in add_thread_silent, the passed target (&the_procfs_target) is
   passed to find_inferior_ptid
 - find_inferior_ptid returns nullptr, as there is no inferior with this
   ptid that has &the_procfs_target as its process target
 - the nullptr `inf` is passed to find_thread_ptid, which dereferences
   it, causing a segfault
 - back in procfs_target::attach, after do_attach, we push the
   the_procfs_target on the inferior's target stack, although we never
   reach this because the segfault happens before.

To fix this, I think we need to do the same as is done in
inf_ptrace_target::attach: push the target early and unpush it in case
the attach fails (and keep it if the attach succeeds).

Implement it by moving target_unpush_up to target.h, so it can be
re-used here.  Make procfs_target::attach use it.  Note that just like
is mentioned in inf_ptrace_target::attach, we should push the target
before calling target_pid_to_str, so that calling target_pid_to_str ends
up in procfs_target::pid_to_str.

Tested by trying to attach on a process on gcc211 on the gcc compile
farm.

gdb/ChangeLog:

PR gdb/27435
* inf-ptrace.c (struct target_unpusher): Move to target.h.
(target_unpush_up): Likewise.
* procfs.c (procfs_target::attach): Push target early.  Use
target_unpush_up to unpush target in case of error.
* target.h (struct target_unpusher): Move here.
(target_unpush_up): Likewise.

Change-Id: I88aff8b20204e1ca1d792e27ac6bc34fc1aa0d52

3 years agoDon't handle BFD_RELOC_16 in XCOFF reloc_type_lookup
Alan Modra [Mon, 22 Feb 2021 03:29:34 +0000 (13:59 +1030)]
Don't handle BFD_RELOC_16 in XCOFF reloc_type_lookup

It's not needed for sizing fixups since 0e2779e98dc, and wrong to emit
this reloc to the object file.

* coff-rs6000.c (_bfd_xcoff_reloc_type_lookup): Remove BFD_RELOC_16.
* coff64-rs6000.c (xcoff64_reloc_type_lookup): Likewise.

3 years agoAutomatic date update in version.in
GDB Administrator [Mon, 22 Feb 2021 00:00:14 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agosim: common: split up acinclude.m4 into individual m4 files
Mike Frysinger [Sun, 7 Feb 2021 03:51:30 +0000 (22:51 -0500)]
sim: common: split up acinclude.m4 into individual m4 files

This file is quite large and is getting unmanageable.  Split it apart
to follow aclocal best practices by putting one-macro-per-file.  There
shouldn't be any real functional changes here as can be seen in the
configure script regens.

3 years agoWarn when a script redefines a symbol
Alan Modra [Sat, 20 Feb 2021 05:15:44 +0000 (15:45 +1030)]
Warn when a script redefines a symbol

Note that we don't even warn if scripts adjust a symbol as in
ld-elf/var1 and ld-scripts/pr14962.

include/
* bfdlink.h (struct bfd_link_info): Add warn_multiple_definition.
ld/
* ldexp.c (exp_fold_tree_1): Warn on script defining a symbol
defined in an object file.
* ldmain.c (multiple_definition): Heed info->warn_multiple_definition.
* testsuite/ld-scripts/defined5.d: Expect a warning.

3 years agolibctf AC_CANONICAL_TARGET
Alan Modra [Sat, 20 Feb 2021 07:35:20 +0000 (18:05 +1030)]
libctf AC_CANONICAL_TARGET

AC_CANONICAL_TARGET is needed for @target@ substitution in the
makefile.  AC_CANONICAL_HOST and AC_CANONICAL_BUILD are alread invoked
indirectly, make them explicit.

* configure.ac: Invoke AC_CANONICAL_TARGET, AC_CANONICAL_HOST
and AC_CANONICAL_BUILD.
* configure: Regenerate.
* Makefile.in: Regenerate.

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

3 years agolibctf: add a NEWS
Nick Alcock [Wed, 17 Feb 2021 17:02:02 +0000 (17:02 +0000)]
libctf: add a NEWS

I'm dividing this into three groups for now: new features, bugfixes,
and bugfixes also present on a stable branch.

Only user-visible bugfixes, not build-system fixes, are listed.

3 years agolibctf, include: find types of symbols by name
Nick Alcock [Wed, 17 Feb 2021 15:21:12 +0000 (15:21 +0000)]
libctf, include: find types of symbols by name

The existing ctf_lookup_by_symbol and ctf_arc_lookup_symbol functions
suffice to look up the types of symbols if the caller already has a
symbol number.  But the caller often doesn't have one of those and only
knows the name of the symbol: also, in object files, the caller might
not have a useful symbol number in any sense (and neither does libctf:
the 'symbol number' we use in that case literally starts at 0 for the
lexicographically first-sorted symbol in the symtypetab and counts those
symbols, so it corresponds to nothing useful).

This means that even though object files have a symtypetab (generated by
the compiler or by ld -r), the only way we can look up anything in it is
to iterate over all symbols in turn with ctf_symbol_next until we find
the one we want.

This is unhelpful and pointlessly inefficient.

So add a pair of functions to look up symbols by name in a dict and in a
whole archive: ctf_lookup_by_symbol_name and ctf_arc_lookup_symbol_name.
These are identical to the existing functions except that they take
symbol names rather than symbol numbers.

To avoid insane repetition, we do some refactoring in the process, so
that both ctf_lookup_by_symbol and ctf_arc_lookup_symbol turn into thin
wrappers around internal functions that do both lookup by symbol index
and lookup by name.  This massively reduces code duplication because
even the existing lookup-by-index stuff wants to use a name sometimes
(when looking up in indexed sections), and the new lookup-by-name stuff
has to turn it into an index sometimes (when looking up in non-indexed
sections): doing it this way lets us share most of that.

The actual name->index lookup is done by ctf_lookup_symbol_idx.  We do
not anticipate this lookup to be as heavily used as ld.so symbol lookup
by many orders of magnitude, so using the ELF symbol hashes would
probably take more time to read them than is saved by using the hashes,
and it adds a lot of complexity.  Instead, do a linear search for the
symbol name, caching all the name -> index mappings as we go, so that
future searches are likely to hit in the cache.  To avoid having to
repeat this search over and over in a CTF archive when
ctf_arc_lookup_symbol_name is used, have cached archive lookups (the
sort done by ctf_arc_lookup_symbol* and the ctf_archive_next iterator)
pick out the first dict they cache in a given archive and store it in a
new ctf_archive field, ctfi_crossdict_cache.  This can be used to store
cross-dictionary cached state that depends on things like the ELF symbol
table rather than the contents of any one dict.  ctf_lookup_symbol_idx
then caches its name->index mappings in the dictionary named in the
crossdict cache, if any, so that ctf_lookup_symbol_idx in other dicts
in the same archive benefit from the previous linear search, and the
symtab only needs to be scanned at most once.

(Note that if you call ctf_lookup_by_symbol_name in one specific dict,
and then follow it with a ctf_arc_lookup_symbol_name, the former will
not use the crossdict cache because it's only populated by the dict
opens in ctf_arc_lookup_symbol_name. This is harmless except for a small
one-off waste of memory and time: it's only a cache, after all.  We can
fix this later by using the archive caching machinery more
aggressively.)

In ctf-archive, we do similar things, turning ctf_arc_lookup_symbol into
a wrapper around a new function that does both index -> ID and name ->
ID lookups across all dicts in an archive.  We add a new
ctfi_symnamedicts cache that maps symbol names to the ctf_dict_t * that
it was found in (so that linear searches for symbols don't need to be
repeated): but we also *remove* a cache, the ctfi_syms cache that was
memoizing the actual ctf_id_t returned from every call to
ctf_arc_lookup_symbol.  This is pointless: all it saves is one call to
ctf_lookup_by_symbol, and that's basically an array lookup and nothing
more so isn't worth caching.  (Equally, given that symbol -> index
mappings are cached by ctf_lookup_by_symbol_name, those calls are nearly
free after the first call, so there's no point caching the ctf_id_t in
that case either.)

We fix up one test that was doing manual symbol lookup to use
ctf_arc_lookup_symbol instead, and enhance it to check that the caching
layer is not totally broken: we also add a new test to do lookups in a
.o file, and another to do lookups in an archive with conflicted types
and make sure that sort of multi-dict lookup is actually working.

include/ChangeLog
2021-02-17  Nick Alcock  <nick.alcock@oracle.com>

* ctf-api.h (ctf_arc_lookup_symbol_name): New.
(ctf_lookup_by_symbol_name): Likewise.

libctf/ChangeLog
2021-02-17  Nick Alcock  <nick.alcock@oracle.com>

* ctf-impl.h (ctf_dict_t) <ctf_symhash>: New.
<ctf_symhash_latest>: Likewise.
(struct ctf_archive_internal) <ctfi_crossdict_cache>: New.
<ctfi_symnamedicts>: New.
<ctfi_syms>: Remove.
(ctf_lookup_symbol_name): Remove.
* ctf-lookup.c (ctf_lookup_symbol_name): Propagate errors from
parent properly.  Make static.
(ctf_lookup_symbol_idx): New, linear search for the symbol name,
cached in the crossdict cache's ctf_symhash (if available), or
this dict's (otherwise).
(ctf_try_lookup_indexed): Allow the symname to be passed in.
(ctf_lookup_by_symbol): Turn into a wrapper around...
(ctf_lookup_by_sym_or_name): ... this, supporting name lookup too,
using ctf_lookup_symbol_idx in non-writable dicts.  Special-case
name lookup in dynamic dicts without reported symbols, which have
no symtab or dynsymidx but where name lookup should still work.
(ctf_lookup_by_symbol_name): New, another wrapper.
* ctf-archive.c (enosym): Note that this is present in
ctfi_symnamedicts too.
(ctf_arc_close): Adjust for removal of ctfi_syms.  Free the
ctfi_symnamedicts.
(ctf_arc_flush_caches): Likewise.
(ctf_dict_open_cached): Memoize the first cached dict in the
crossdict cache.
(ctf_arc_lookup_symbol): Turn into a wrapper around...
(ctf_arc_lookup_sym_or_name): ... this.  No longer cache
ctf_id_t lookups: just call ctf_lookup_by_symbol as needed (but
still cache the dicts those lookups succeed in).  Add
lookup-by-name support, with dicts of successful lookups cached in
ctfi_symnamedicts.  Refactor the caching code a bit.
(ctf_arc_lookup_symbol_name): New, another wrapper.
* ctf-open.c (ctf_dict_close): Free the ctf_symhash.
* libctf.ver (LIBCTF_1.2): New version.  Add
ctf_lookup_by_symbol_name, ctf_arc_lookup_symbol_name.
* testsuite/libctf-lookup/enum-symbol.c (main): Use
ctf_arc_lookup_symbol rather than looking up the name ourselves.
Fish it out repeatedly, to make sure that symbol caching isn't
broken.
(symidx_64): Remove.
(symidx_32): Remove.
* testsuite/libctf-lookup/enum-symbol-obj.lk: Test symbol lookup
in an unlinked object file (indexed symtypetab sections only).
* testsuite/libctf-writable/symtypetab-nonlinker-writeout.c
(try_maybe_reporting): Check symbol types via
ctf_lookup_by_symbol_name as well as ctf_symbol_next.
* testsuite/libctf-lookup/conflicting-type-syms.*: New test of
lookups in a multi-dict archive.

3 years agosim: merge configure.tgt into configure.ac
Mike Frysinger [Sat, 16 Jan 2021 05:03:32 +0000 (00:03 -0500)]
sim: merge configure.tgt into configure.ac

One fewer file to worry about & manage.

3 years agoreadelf: Replace procesor with processor
H.J. Lu [Sat, 20 Feb 2021 13:55:42 +0000 (05:55 -0800)]
readelf: Replace procesor with processor

binutils/

PR binutils/27445
* readelf.c (print_gnu_property_note): Replace procesor with
processor.

ld/

PR binutils/27445
* testsuite/ld-i386/property-x86-isa1.d: Replace procesor with
processor.
* testsuite/ld-x86-64/property-x86-isa1-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-isa1.d: Likewise.

3 years agoFail run_dump_test when an error is expected but not seen
Alan Modra [Sat, 20 Feb 2021 05:12:22 +0000 (15:42 +1030)]
Fail run_dump_test when an error is expected but not seen

* testsuite/lib/binutils-common.exp: Whitespace fixes throughout.
(run_dump_test): Fail if expecting errors from a file like we do
for error strings, if no error is seen.

3 years agoInclude ld-lib.exp from ctf-lib.exp
Alan Modra [Thu, 18 Feb 2021 10:18:16 +0000 (20:48 +1030)]
Include ld-lib.exp from ctf-lib.exp

* testsuite/config/default.exp (ld_L_opt): Define.
* testsuite/lib/ctf-lib.exp (load_common_lib): Delete.  Instead load
ld-lib.exp.
(run_host_cmd, run_host_cmd_yesno, check_compiler_available): Delete.
(compile_one_cc, check_ctf_available): Delete.

3 years agoAutomatic date update in version.in
GDB Administrator [Sat, 20 Feb 2021 00:00:18 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoFix compile time warnings when building riscv assembler.
Nick Clifton [Fri, 19 Feb 2021 10:14:09 +0000 (10:14 +0000)]
Fix compile time warnings when building riscv assembler.

* config/tc-riscv.c (riscv_ip): Fix compile time warnings about
misleading indentation.

3 years agoamd64-linux-siginfo.c: Adjust include order to avoid gnulib error
Kevin Buettner [Fri, 19 Feb 2021 05:46:58 +0000 (22:46 -0700)]
amd64-linux-siginfo.c: Adjust include order to avoid gnulib error

On Fedora rawhide, after updating to glibc-2.33, I'm seeing the
following build failure:

  CXX    nat/amd64-linux-siginfo.o
In file included from /usr/include/bits/sigstksz.h:24,
                 from /usr/include/signal.h:315,
                 from ../gnulib/import/signal.h:52,
                 from /ironwood1/sourceware-git/rawhide-gnulib/bld/../../worktree-gnulib/gdbserver/../gdb/nat/amd64-linux-siginfo.c:20:
../gnulib/import/unistd.h:663:3: error: #error "Please include config.h first."
  663 |  #error "Please include config.h first."
      |   ^~~~~

glibc-2.33 has changed signal.h to now include <bits/sigstksz.h> which,
in turn, includes <unistd.h>. For a gdb build, this causes the gnulib
version of unistd.h to be pulled in first.  The build failure shown
above happens because gnulib's config.h has not been included before
the include of <signal.h>.

The fix is simple - we just rearrange the order of the header file
includes to make sure that gdbsupport/commondefs.h is included before
attempting to include signal.h.  Note that gdbsupport/commondefs.h
includes <gnulib/config.h>.

Build and regression tested on Fedora 33.  On Fedora rawhide, GDB
builds again.

gdb/ChangeLog:

* nat/amd64-linux-siginfo.c: Include "gdbsupport/common-defs.h"
(which in turn includes <gnulib/config.h>) before include
of <signal.h>.

3 years agoRISC-V: PR27158, fixed UJ/SB types and added CSS/CL/CS types for .insn.
Nelson Chu [Tue, 26 Jan 2021 10:02:38 +0000 (18:02 +0800)]
RISC-V: PR27158, fixed UJ/SB types and added CSS/CL/CS types for .insn.

* Renamed obsolete UJ/SB types and RVC types, also added CSS/CL(CS) types,

[VALID/EXTRACT/ENCODE macros]
BTYPE_IMM:            Renamed from SBTYPE_IMM.
JTYPE_IMM:            Renamed from UJTYPE_IMM.
CITYPE_IMM:           Renamed from RVC_IMM.
CITYPE_LUI_IMM:       Renamed from RVC_LUI_IMM.
CITYPE_ADDI16SP_IMM:  Renamed from RVC_ADDI16SP_IMM.
CITYPE_LWSP_IMM:      Renamed from RVC_LWSP_IMM.
CITYPE_LDSP_IMM:      Renamed from RVC_LDSP_IMM.
CIWTYPE_IMM:          Renamed from RVC_UIMM8.
CIWTYPE_ADDI4SPN_IMM: Renamed from RVC_ADDI4SPN_IMM.
CSSTYPE_IMM:          Added for .insn without special encoding.
CSSTYPE_SWSP_IMM:     Renamed from RVC_SWSP_IMM.
CSSTYPE_SDSP_IMM:     Renamed from RVC_SDSP_IMM.
CLTYPE_IMM:           Added for .insn without special encoding.
CLTYPE_LW_IMM:        Renamed from RVC_LW_IMM.
CLTYPE_LD_IMM:        Renamed from RVC_LD_IMM.
RVC_SIMM3:            Unused and removed.
CBTYPE_IMM:           Renamed from RVC_B_IMM.
CJTYPE_IMM:           Renamed from RVC_J_IMM.

* Added new operands and removed the unused ones,

C5: Unsigned CL(CS) immediate, added for .insn directive.
C6: Unsigned CSS immediate, added for .insn directive.
Ci: Unused and removed.
C<: Unused and removed.

bfd/
    PR 27158
    * elfnn-riscv.c (perform_relocation): Updated encoding macros.
    (_bfd_riscv_relax_call): Likewise.
    (_bfd_riscv_relax_lui): Likewise.
    * elfxx-riscv.c (howto_table): Likewise.
gas/
    PR 27158
    * config/tc-riscv.c (riscv_ip): Updated encoding macros.
    (md_apply_fix): Likewise.
    (md_convert_frag_branch): Likewise.
    (validate_riscv_insn): Likewise.  Also arranged operands, including
    added C5 and C6 operands, and removed unused Ci and C< operands.
    * doc/c-riscv.texi: Updated and added CSS/CL/CS types.
    * testsuite/gas/riscv/insn.d: Added CSS/CL/CS instructions.
    * testsuite/gas/riscv/insn.s: Likewise.
gdb/
    PR 27158
    * riscv-tdep.c (decode_ci_type_insn): Updated encoding macros.
    (decode_j_type_insn): Likewise.
    (decode_cj_type_insn): Likewise.
    (decode_b_type_insn): Likewise.
    (decode): Likewise.
include/
    PR 27158
    * opcode/riscv.h: Updated encoding macros.
opcodes/
    PR 27158
    * riscv-dis.c (print_insn_args): Updated encoding macros.
    * riscv-opc.c (MASK_RVC_IMM): defined to ENCODE_CITYPE_IMM.
    (match_c_addi16sp): Updated encoding macros.
    (match_c_lui): Likewise.
    (match_c_lui_with_hint): Likewise.
    (match_c_addi4spn): Likewise.
    (match_c_slli): Likewise.
    (match_slli_as_c_slli): Likewise.
    (match_c_slli64): Likewise.
    (match_srxi_as_c_srxi): Likewise.
    (riscv_insn_types): Added .insn css/cl/cs.
sim/
    PR 27158
    * riscv/sim-main.c (execute_i): Updated encoding macros.

3 years agoWrong ELF class plugin vs. gcc ld version
Alan Modra [Thu, 18 Feb 2021 04:13:14 +0000 (14:43 +1030)]
Wrong ELF class plugin vs. gcc ld version

When building 32-bit binutils with CC="gcc -m32" CXX="g++ -m32" we can
fail the gcc ld version test due to an error attempting to load a
64-bit plugin into 32-bit ld-new.  This results in bogus errors about
"Your compiler driver ignores -B when choosing ld."

* testsuite/lib/ld-lib.exp: Whitespace.
(load_common_lib): Expand single use and delete this proc.
(run_host_cmd): Use -fno-lto when getting gcc's ld version.
Use -B for clang too.

3 years agopr26548 test
Alan Modra [Thu, 18 Feb 2021 03:19:42 +0000 (13:49 +1030)]
pr26548 test

I forgot that .sleb128 handles bignums, so this test should run fine
for 32-bit targets on 32-bit hosts.

* testsuite/binutils-all/readelf.exp (pr26548): Run for 32-bit too.

3 years agobinutils: Avoid renaming over existing files
Siddhesh Poyarekar [Fri, 19 Feb 2021 02:35:33 +0000 (08:05 +0530)]
binutils: Avoid renaming over existing files

Renaming over existing files needs additional care to restore
permissions and ownership, which may not always succeed.
Additionally, other properties of the file such as extended attributes
may be lost, making the operation flaky.

For predictable results, resort to rename() only if the file does not
exist, otherwise copy the file contents into the existing file.  This
ensures that no additional tricks are needed to retain file
properties.

This also allows dropping of the redundant set_times on the tmpfile in
objcopy/strip since now we no longer rename over existing files.

binutils/

* ar.c (write_archive): Remove TARGET_STAT.  Adjust call to
SMART_RENAME.
* arsup.c (ar_save): Likewise.
* objcopy (strip_main): Don't copy TMPFD.  Don't set times on
temporary file and adjust call to SMART_RENAME.
(copy_main): Likewise.
* rename.c [!S_ISLNK]: Remove definitions.
(try_preserve_permissions): Remove function.
(smart_rename): Remove FD, PRESERVE_DATES arguments.  Use
rename system call only if TO does not exist.
* bucomm.h (smart_rename): Adjust declaration.

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

3 years agoIntroduce expression::evaluate
Tom Tromey [Thu, 18 Feb 2021 18:23:33 +0000 (11:23 -0700)]
Introduce expression::evaluate

This introduces a new method, expression::evaluate, and changes the
top-level expression-evaluation functions to use it.  Stack temporary
handling is moved into this new method, which makes sense because that
handling was only done when "*pos == 0".

This patch avoids some temporary regressions related to stack
temporary in the larger expression rewrite series.  I've pulled it out
separately because it seems like a reasonable change in its own right,
and because it's better to avoid making that series even longer.

Regression tested on x86-64 Fedora 32.

gdb/ChangeLog
2021-02-18  Tom Tromey  <tom@tromey.com>

* expression.h (struct expression) <evaluate>: Declare method.
* eval.c (evaluate_subexp): Simplify.
(expression::evaluate): New method.
(evaluate_expression, evaluate_type): Use expression::evaluate.

3 years agoFix a problem merging empty annobin notes on ppc64le targets.
Nick Clifton [Thu, 18 Feb 2021 11:43:26 +0000 (11:43 +0000)]
Fix a problem merging empty annobin notes on ppc64le targets.

* objcopy.c (merge_gnu_build_notes): Handle notes with a start
address that is higher than the end address.

3 years agogdb/testsuite: only run gdb.arch/i386-biarch-core.exp on suitable targets
Andrew Burgess [Thu, 4 Feb 2021 20:36:30 +0000 (20:36 +0000)]
gdb/testsuite: only run gdb.arch/i386-biarch-core.exp on suitable targets

Restrict the test gdb.arch/i386-biarch-core.exp to only run on
suitable targets.

gdb/testsuite/ChangeLog:

* gdb.arch/i386-biarch-core.exp: Add target check.

3 years agold: remove stray debug fprintf
Andrew Burgess [Wed, 3 Feb 2021 10:03:01 +0000 (10:03 +0000)]
ld: remove stray debug fprintf

In this commit:

  commit ace667e59aede65c400381f1cff704b61e8ccb0b
  Date:   Mon Jul 18 21:00:00 2016 +0100

      ld: Restore file offset after a plugin fails to claim a file

I inadvertently left in a stray fprintf call.  Removed in this commit.

ld/ChangeLog:

* testplugin.c (record_read_length): Remove debug fprintf.

3 years agogdb: add missing full stops in --help
Marco Barisione [Thu, 18 Feb 2021 09:15:14 +0000 (09:15 +0000)]
gdb: add missing full stops in --help

The descriptions for most options printed by gdb --help end with a full
stop but, before this patch, not the ones for --args and --interpreter.

This makes the line containing --args a bit longer but still not longer
than the previously longest line, that is the one for the --tty option.

gdb/ChangeLog:

* main.c (print_gdb_help): Add full stops at the end of the
descriptions for the --args and --interpreter options.

3 years agoRISC-V: Add bfd/cpu-riscv.h to support all spec versions controlling.
Nelson Chu [Thu, 28 Jan 2021 02:45:56 +0000 (10:45 +0800)]
RISC-V: Add bfd/cpu-riscv.h to support all spec versions controlling.

Make the opcode/riscv-opc.c and include/opcode/riscv.h tidy, move the
spec versions stuff to bfd/cpu-riscv.h.  Also move the csr stuff and
ext_version_table to gas/config/tc-riscv.c for internal use.  To avoid
too many repeated code, define general RISCV_GET_SPEC_NAME/SPEC_CLASS
macros.  Therefore, assembler/dis-assembler/linker/gdb can get all spec
versions related stuff from cpu-riscv.h and cpu-riscv.c, since the stuff
are defined there uniformly.

bfd/
    * Makefile.am: Added cpu-riscv.h.
    * Makefile.in: Regenerated.
    * po/SRC-POTFILES.in: Regenerated.
    * cpu-riscv.h: Added to support spec versions controlling.
    Also added extern arrays and functions for cpu-riscv.c.
    (enum riscv_spec_class): Define all spec classes here uniformly.
    (struct riscv_spec): Added for all specs.
    (RISCV_GET_SPEC_CLASS): Added to reduce repeated code.
    (RISCV_GET_SPEC_NAME): Likewise.
    (RISCV_GET_ISA_SPEC_CLASS): Added to get ISA spec class.
    (RISCV_GET_PRIV_SPEC_CLASS): Added to get privileged spec class.
    (RISCV_GET_PRIV_SPEC_NAME): Added to get privileged spec name.
    * cpu-riscv.c (struct priv_spec_t): Replaced with struct riscv_spec.
    (riscv_get_priv_spec_class): Replaced with RISCV_GET_PRIV_SPEC_CLASS.
    (riscv_get_priv_spec_name): Replaced with RISCV_GET_PRIV_SPEC_NAME.
    (riscv_priv_specs): Moved below.
    (riscv_get_priv_spec_class_from_numbers): Likewise, updated.
    (riscv_isa_specs): Moved from include/opcode/riscv.h.
    * elfnn-riscv.c: Included cpu-riscv.h.
    (riscv_merge_attributes): Initialize in_priv_spec and out_priv_spec.
    * elfxx-riscv.c: Included cpu-riscv.h and opcode/riscv.h.
    (RISCV_UNKNOWN_VERSION): Moved from include/opcode/riscv.h.
    * elfxx-riscv.h: Removed extern functions to cpu-riscv.h.
gas/
    * config/tc-riscv.c: Included cpu-riscv.h.
    (enum riscv_csr_clas): Moved from include/opcode/riscv.h.
    (struct riscv_csr_extra): Likewise.
    (struct riscv_ext_version): Likewise.
    (ext_version_table): Moved from opcodes/riscv-opc.c.
    (default_isa_spec): Updated type to riscv_spec_class.
    (default_priv_spec): Likewise.
    (riscv_set_default_isa_spec): Updated.
    (init_ext_version_hash): Likewise.
    (riscv_init_csr_hash): Likewise, also fixed indent.
include/
    * opcode/riscv.h: Moved stuff and make the file tidy.
opcodes/
    * riscv-dis.c: Included cpu-riscv.h, and removed elfxx-riscv.h.
    (default_priv_spec): Updated type to riscv_spec_class.
    (parse_riscv_dis_option): Updated.
    * riscv-opc.c: Moved stuff and make the file tidy.

3 years agoFix completion related libstdc++ assert when using -D_GLIBCXX_DEBUG
Kevin Buettner [Sat, 13 Feb 2021 00:53:51 +0000 (17:53 -0700)]
Fix completion related libstdc++ assert when using -D_GLIBCXX_DEBUG

This commit fixes a libstdc++ assertion failure encountered when
running gdb.base/completion.exp.  In order to see this problem,
GDB must be built with the follow CFLAGS and CXXFLAGS as part
of the configure line:

  CFLAGS='-D_GLIBCXX_DEBUG' CXXFLAGS='-D_GLIBCXX_DEBUG'

(Also, this problem was encountered using Fedora rawhide.  It might
not be reproducible in Fedora versions prior to Fedora 34.)

Using the gdb.base/completion.exp test program, the problem can be
observed as follows:

[kev@rawhide-1 gdb]$ ./gdb -q testsuite/outputs/gdb.base/completion/completion
Reading symbols from testsuite/outputs/gdb.base/completion/completion...
(gdb) start
Temporary breakpoint 1 at 0x401179: file ../../worktree-master/gdb/testsuite/gdb.base/break.c, line 43.
Starting program: testsuite/outputs/gdb.base/completion/completion

Temporary breakpoint 1, main (argc=1, argv=0x7fffffffd718, envp=0x7fffffffd728) at ../../worktree-master/gdb/testsuite/gdb.base/break.c:43
43     if (argc == 12345) {  /* an unlikely value < 2^16, in case uninited */ /* set breakpoint 6 here */
(gdb) p <TAB>/usr/include/c++/11/string_view:211: constexpr const value_type& std::basic_string_view<_CharT, _Traits>::operator[](std::basic_string_view<_CharT, _Traits>::size_type) const [with _CharT = char; _Traits = std::char_traits<char>; std::basic_string_view<_CharT, _Traits>::const_reference = const char&; std::basic_string_view<_CharT, _Traits>::size_type = long unsigned int]: Assertion '__pos < this->_M_len' failed.
Aborted (core dumped)

(Note that I added "<TAB>" to make it clear where the tab key was
pressed.)

gdb/ChangeLog:

* ada-lang.c (ada_fold_name): Check for non-empty string prior
to accessing it.
(ada_lookup_name_info): Likewise.

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

3 years ago[PR cli/17290] gdb/doc: Fix show remote interrupt-*.
Lancelot SIX [Sat, 13 Feb 2021 23:38:28 +0000 (23:38 +0000)]
[PR cli/17290] gdb/doc: Fix show remote interrupt-*.

Add the missing 'remote' in:
  - @item show remote interrupt-sequence
  - @item show remote interrupt-on-connect

3 years agoh8300 complains about new section defined without attributes
Alan Modra [Wed, 17 Feb 2021 06:18:41 +0000 (16:48 +1030)]
h8300 complains about new section defined without attributes

* testsuite/gas/elf/section28.d: xfail h8300.

3 years agoread_leb128 overflow checking
Alan Modra [Tue, 16 Feb 2021 13:16:40 +0000 (23:46 +1030)]
read_leb128 overflow checking

There is a tiny error left in dwarf.c:read_leb128 after Nick fixed the
signed overflow problem in code I wrote.  It's to do with sleb128
values that have unnecessary excess bytes.  For example, -1 is
represented as 0x7f, the most efficient encoding, but also as
0xff,0x7f or 0xff,0xff,0x7f and so on.  None of these sequences
overflow any size signed value, but read_leb128 will report an
overflow given enough excess bytes.  This patch fixes that problem,
and since the proper test for signed values with excess bytes can
easily be adapted to also test a sleb byte with just some bits that
overflow the result, I changed the code to not use signed right
shifts.  (The C standard ISO/IEC 9899:1999 6.5.7 says signed right
shifts of negative values have an implementation defined value.  A
long time ago I even used a C compiler for a certain microprocessor
that always did unsigned right shifts.  Mind you, it is very unlikely
to be compiling binutils with such a compiler.)

bfd/
* wasm-module.c: Guard include of limits.h.
(CHAR_BIT): Provide backup define.
(wasm_read_leb128): Use CHAR_BIT to size "result" in bits.
Correct signed overflow checking.
opcodes/
* wasm32-dis.c: Include limits.h.
(CHAR_BIT): Provide backup define.
(wasm_read_leb128): Use CHAR_BIT to size "result" in bits.
Correct signed overflow checking.
binutils/
* dwarf.c: Include limits.h.
(CHAR_BIT): Provide backup define.
(read_leb128): Use CHAR_BIT to size "result" in bits.  Correct
signed overflow checking.
* testsuite/binutils-all/pr26548.s,
* testsuite/binutils-all/pr26548.d,
* testsuite/binutils-all/pr26548e.d: New tests.
* testsuite/binutils-all/readelf.exp: Run them.
(readelf_test): Drop unused "xfails" parameter.  Update all uses.

3 years agoRISC-V: PR27200, allow the first input non-ABI binary to be linked with any one.
Nelson Chu [Fri, 22 Jan 2021 02:16:12 +0000 (18:16 -0800)]
RISC-V: PR27200, allow the first input non-ABI binary to be linked with any one.

RISC-V only defines two float ABIs, soft-float and double-float, and the
value of soft-float is 0x0.  But 0x0 usually means unknown/default setting
for many targets, and the non-ABI binary, which is generated by "ld/objcopy
-b binary", also has the 0x0 elf header flags, this may be confused.

We probably can define a new unknown/default ABI value to make them more
clear, but that will need more bits in the elf header flags, and also need
to discuss in the riscv psabi spec.

Training linker have a default ABI setting, and can be changed by ld
options or configure options is another solution, like what assemblr
usually do.  So all objects, including the binary files, will have
explicit ABI setting.  But the binary files will no longer be linked
with any object, users need to recompile them with the exactly ABI
they want.  It may be inconvenience sometimes.  Besides, I think linker
doesn't need to know the default arch/abi so far, just set them according
to the linked objects should be enough.

Therefore, without changing the riscv psabi, and keep the non-ABI binary
can be linked with any object, we don't check the ABI flags if no code
section in the PR24389.  Just that we find the first input non-ABI binary
still cannot be linked with others in the PR27200.  This patch fixs the
problem by delaying the elf_flags_init(obfd) check, since the flags of
non-ABI object with no code cannot be copyed to output BFD, we should
skip it, even if it is the first linked object.

However, there is a strange "break" at the end of loop in the PR24389.
The "break" cause the ld testcase "Link with zlib-gabi compressed debug
output 1" fails for rv64gc-linux toolchain, after applying the above
change.  The root cause is that - the "break" make linker only checks
the "first" section of input BFD rather than the entire sections.
I have checked that AARCH64 and ARM both have the "break" at the end
of loop, but ARC doesn't.  I suppose we should remove the "break" like
what ARC do, or use a pair of braces for the if statement.

I have passed the elf/linux toolchain regressions, so the change should
be fine.

bfd/
    PR 27200
    * elfnn-riscv.c (_bfd_riscv_elf_merge_private_bfd_data): Delay
    copying the elf flags from input BFD to output BFD, until we have
    checked if the input BFD has no code section or not.  Also fix the
    problem that we only check the first section rather than the entire
    sections for input BFD.

3 years agoAutomatic date update in version.in
GDB Administrator [Wed, 17 Feb 2021 00:00:12 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoCorrection of gdb.dwarf2/pr13961.S
Alok Kumar Sharma [Tue, 16 Feb 2021 16:56:43 +0000 (22:26 +0530)]
Correction of gdb.dwarf2/pr13961.S

Please consider output of objdump for the executable generated from pr13961.S
-------------
Contents of the .debug_info section:
...
 <1><62>: Abbrev Number: 2 (DW_TAG_class_type)
    <63>   DW_AT_name        : foo2
    <68>   DW_AT_byte_size   : 4
    <69>   DW_AT_decl_file   : 1
    <6a>   DW_AT_decl_line   : 1
    <6b>   DW_AT_sibling     : <0x3f> !!! There is no DIE <0x3f>
...
Contents of the .debug_types section:
...
 <1><25>: Abbrev Number: 8 (DW_TAG_class_type) !! Hand-inserted of size=5
    <26>   DW_AT_specification: <0x2a>
 <1><2a>: Abbrev Number: 2 (DW_TAG_class_type)
    <2b>   DW_AT_name        : foo
    <2f>   DW_AT_byte_size   : 4
    <30>   DW_AT_decl_file   : 1
    <31>   DW_AT_decl_line   : 1
    <32>   DW_AT_sibling     : <0x3f> !!! There is no DIE <0x3f>, should be <44>
 <2><36>: Abbrev Number: 3 (DW_TAG_member)
    <37>   DW_AT_name        : bar
    <3b>   DW_AT_decl_file   : 1
    <3c>   DW_AT_decl_line   : 4
    <3d>   DW_AT_type        : <0x3f> !!! There is no DIE <0x3f>
    <41>   DW_AT_data_member_location: 0
    <42>   DW_AT_accessibility: 1       (public)
 <2><43>: Abbrev Number: 0
 <1><44>: Abbrev Number: 4 (DW_TAG_base_type)
    <45>   DW_AT_byte_size   : 4
    <46>   DW_AT_encoding    : 5        (signed)
    <47>   DW_AT_name        : int
...
---------------
The original assembly is generated from a source file and then
modified to insert DIE, with that the subsequent DIE references
should have been updated, which were not.
It is now getting updated to replace hardcoded DIE references with
label-calculated references.

gdb/testsuite/ChangeLog:

2021-02-16  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>

* gdb.dwarf2/pr13961.S: Corrected invalide DIE references.

3 years agogas: Allow SHF_GNU_RETAIN on all sections
H.J. Lu [Tue, 16 Feb 2021 12:55:42 +0000 (04:55 -0800)]
gas: Allow SHF_GNU_RETAIN on all sections

Since SHF_GNU_RETAIN is allowed on all sections, strip SHF_GNU_RETAIN
when checking incorrect section attributes.

PR gas/27412
* config/obj-elf.c (obj_elf_change_section): Strip SHF_GNU_RETAIN
when checking incorrect section attributes.
* testsuite/gas/elf/elf.exp: Run section28 and section29.
* testsuite/gas/elf/section28.d: New file.
* testsuite/gas/elf/section28.s: Likewise.
* testsuite/gas/elf/section29.d: Likewise.
* testsuite/gas/elf/section29.s: Likewise.

3 years agox86: CVTPI2PD has special behavior
Jan Beulich [Tue, 16 Feb 2021 10:34:25 +0000 (11:34 +0100)]
x86: CVTPI2PD has special behavior

CVTPI2PD with a memory operand, unlike CVTPI2PS, doesn't engage MMX
logic. Therefore it
- has a proper AVX equivalent (CVTDQ2PD) and hence can be subject to
  SSE2AVX translation and SSE checking,
- should not record MMX use in the respective ELF note.

3 years agox86: honor template rather than actual operands when updating i.xstate
Jan Beulich [Tue, 16 Feb 2021 10:33:04 +0000 (11:33 +0100)]
x86: honor template rather than actual operands when updating i.xstate

This undoes a change to md_assemble() that 32930e4edbc0 ("x86: Support
GNU_PROPERTY_X86_ISA_1_V[234] marker") did without any explanation. This
broke a CVTPI2PS property test that a subsequent test will add, and the
updates to existing tests also demonstrate what was wrong: For example,
AVX insns update the full YMM, even if a Vex128 variant is in use.

3 years agox86: record register use for SIMD insns without respective explicit operands
Jan Beulich [Tue, 16 Feb 2021 10:32:18 +0000 (11:32 +0100)]
x86: record register use for SIMD insns without respective explicit operands

VZERO{ALL,UPPER} modify YMM registers despite having no operands.

While {,V}{LD,ST}MXCSR don't modify XMM registers, MXCSR and XMMn
collectively form underlying machine state.

3 years agox86: make common property tests common
Jan Beulich [Tue, 16 Feb 2021 10:30:49 +0000 (11:30 +0100)]
x86: make common property tests common

There's no need to run the exact same test twice. Move the tests which
don't differ between 32- and 64-bit to the "Common tests" section.

3 years agox86: have preprocessor expand macros
Jan Beulich [Tue, 16 Feb 2021 10:27:40 +0000 (11:27 +0100)]
x86: have preprocessor expand macros

There's no point having i386-gen's set_bitfield() to handle any aliases,
now that we pass the opcode table through the C preprocessor anyway.

3 years agox86: make 16-bit ENQCMD test actually test ENQCMD
Jan Beulich [Tue, 16 Feb 2021 10:26:58 +0000 (11:26 +0100)]
x86: make 16-bit ENQCMD test actually test ENQCMD

3 years agoDwarf: fix build with old gcc
Jan Beulich [Tue, 16 Feb 2021 10:26:00 +0000 (11:26 +0100)]
Dwarf: fix build with old gcc

4.3-ish warns about a possibly uninitialized variable, which results in
a build failure due to -Werror.

3 years agoubsan: shift exponent is too large
Alan Modra [Tue, 16 Feb 2021 08:57:24 +0000 (19:27 +1030)]
ubsan: shift exponent is too large

* libbfd.c (_bfd_read_unsigned_leb128): Avoid excessive shift.
(_bfd_safe_read_leb128, _bfd_read_signed_leb128): Likewise.

3 years agoPR27426, More bugs in dwarf2dbg.c
Alan Modra [Tue, 16 Feb 2021 04:09:04 +0000 (14:39 +1030)]
PR27426, More bugs in dwarf2dbg.c

PR 27426
* dwarf2dbg.c (allocate_filename_to_slot): Allocate the dirs array
in another place.

3 years agodemand_copy_C_string NUL check
Alan Modra [Tue, 16 Feb 2021 04:02:36 +0000 (14:32 +1030)]
demand_copy_C_string NUL check

* read.c (demand_copy_C_string): Really check for embedded zeros.

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

3 years agoIBM Z: Implement instruction set extensions
Andreas Krebbel [Mon, 15 Feb 2021 13:20:00 +0000 (14:20 +0100)]
IBM Z: Implement instruction set extensions

opcodes/

        * s390-mkopc.c (main): Accept arch14 as cpu string.
        * s390-opc.txt: Add new arch14 instructions.

include/

        * opcode/s390.h (enum s390_opcode_cpu_val): Add
        S390_OPCODE_ARCH14.

gas/

        * config/tc-s390.c (s390_parse_cpu): New entry for arch14.
        * doc/c-s390.texi: Document arch14 march option.
        * testsuite/gas/s390/s390.exp: Run the arch14 related tests.
        * testsuite/gas/s390/zarch-arch14.d: New test.
        * testsuite/gas/s390/zarch-arch14.s: New test.

3 years agobfd: use $(LN_S) in favor of "cp -p" when populating pre-built *.texi
Jan Beulich [Mon, 15 Feb 2021 11:10:41 +0000 (12:10 +0100)]
bfd: use $(LN_S) in favor of "cp -p" when populating pre-built *.texi

"cp -p" has been observed to fail on Cygwin when the build tree is on a
local drive but the sources are on a Samba share. We don't really need
full copies of the files here - symlinks suffice.

3 years agoobjdump: don't cache section contents in load_specific_debug_section
Alan Modra [Mon, 15 Feb 2021 01:34:11 +0000 (12:04 +1030)]
objdump: don't cache section contents in load_specific_debug_section

* objdump.c (load_specific_debug_section): Don't call
bfd_cache_section_contents.  Rearrange so that
bfd_get_full_section_contents is not called on path where
bfd_simple_get_relocated_section_contents is called.
Don't set section->user_data.
(free_debug_section): Always free section->start.  Don't twiddle
section flags.
* readelf.c (load_specific_debug_section): Don't set user_data.
* dwarf.h (struct dwarf_section): Remove use_data field.
* dwarf.c (NO_ABBREVS, ABBREV): Adjust to suit.

3 years agonds32_elf_get_relocated_section_contents
Alan Modra [Sun, 14 Feb 2021 23:18:50 +0000 (09:48 +1030)]
nds32_elf_get_relocated_section_contents

nds32_elf_get_relocated_section_contents uses nds32_get_section_contents
to read sections contents, but nds32_get_section_contents has the wrong
behaviour as it calls bfd_malloc_and_get_section.  That function always
mallocs its output buffer, whereas get_relocated_section_contents must
support an already allocated buffer.

bfd/
* elf32-nds32.c (nds32_get_section_contents): Replace
bfd_malloc_and_get_section with bfd_get_full_section_contents.
(nds32_elf_relax_delete_blanks): Init contents.
(nds32_elf_relax_section, nds32_relax_fp_as_gp): Likewise.
binutils/
* testsuite/binutils-all/compress.exp: Remove nds32 xfails.
* testsuite/binutils-all/objdump.exp: Likewise.

3 years agoalpha_ecoff_get_relocated_section_contents
Alan Modra [Mon, 15 Feb 2021 01:30:48 +0000 (12:00 +1030)]
alpha_ecoff_get_relocated_section_contents

Use bfd_get_full_section_contents and tidy the start of this function
to match current generic get_relocated_section_contents.

* coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Use
bfd_get_full_section_contents.

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

3 years agoModernise _bfd_elf_mips_get_relocated_section_contents
Alan Modra [Sun, 14 Feb 2021 09:27:05 +0000 (19:57 +1030)]
Modernise _bfd_elf_mips_get_relocated_section_contents

In particular, bfd_get_full_section_contents rather than
bfd_get_section_contents so that compressed sections are handled
properly.

Necessary for mips if objdump is to not cache debug sections.

* elfxx-mips.c (_bfd_elf_mips_get_relocated_section_contents): Apply
all fixes to bfd_generic_get_relocated_section_contents since this
function was split out.

3 years agoobjdump: don't add an extra entry to syms array
Alan Modra [Sun, 14 Feb 2021 06:10:01 +0000 (16:40 +1030)]
objdump: don't add an extra entry to syms array

Space for a NULL is there in every backend bfd_get_symtab_upper_bound
or bfd_get_dynamic_symtab_upper_bound when the symbol count is non-zero,
and placed as a terminator by bfd_canonicalize_symtab.  Many backends
even return a single NULL entry array for zero symbol count, and while
there are a few that return a NULL array for no symbols, that case is
handled fine in objdump.  So don't have objdump add yet another NULL
entry.

* objdump.c (slurp_symtab): Don't add an extra entry for NULL
to the symbol array.
(slurp_dynamic_symtab): Likewise.
(dump_bfd): Formatting.  Copy terminating NULL from extra_syms.

3 years agoRegen for binutils/aclocal.m4 change
Alan Modra [Sun, 14 Feb 2021 06:07:10 +0000 (16:37 +1030)]
Regen for binutils/aclocal.m4 change

* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.

3 years agold testsuite: change unresolved to unsupported/fail
Alan Modra [Fri, 12 Feb 2021 23:21:17 +0000 (09:51 +1030)]
ld testsuite: change unresolved to unsupported/fail

"unresolved" as a test result means runtest returns an error, which
can be confusing when there is no apparent error unless you look in
.log files.  In particular many tests are skipped without reporting an
error if no target C compiler is found, but if a target C compiler is
found but won't compile a testcase for some reason we used to mark the
test as unresolved.  Which is no more worthy of an error than when
lacking a C compiler entirely.

* testsuite/ld-cdtest/cdtest.exp,
* testsuite/ld-checks/checks.exp,
* testsuite/ld-elf/binutils.exp,
* testsuite/ld-elf/compress.exp,
* testsuite/ld-elf/dwarf.exp,
* testsuite/ld-elf/exclude.exp,
* testsuite/ld-elf/frame.exp,
* testsuite/ld-elf/indirect.exp,
* testsuite/ld-elf/linux-x86.exp,
* testsuite/ld-elf/sec-to-seg.exp,
* testsuite/ld-elf/tls_common.exp,
* testsuite/ld-elfcomm/elfcomm.exp,
* testsuite/ld-elfvers/vers.exp,
* testsuite/ld-elfvsb/elfvsb.exp,
* testsuite/ld-elfweak/elfweak.exp,
* testsuite/ld-ifunc/binutils.exp,
* testsuite/ld-mips-elf/mips-elf-flags.exp,
* testsuite/ld-misc/defsym.exp,
* testsuite/ld-mn10300/mn10300.exp,
* testsuite/ld-plugin/lto.exp,
* testsuite/ld-plugin/plugin.exp,
* testsuite/ld-scripts/align.exp,
* testsuite/ld-scripts/assert.exp,
* testsuite/ld-scripts/crossref.exp,
* testsuite/ld-scripts/defined.exp,
* testsuite/ld-scripts/extern.exp,
* testsuite/ld-scripts/log2.exp,
* testsuite/ld-scripts/map-address.exp,
* testsuite/ld-scripts/phdrs.exp,
* testsuite/ld-scripts/phdrs2.exp,
* testsuite/ld-scripts/script.exp,
* testsuite/ld-scripts/section-flags.exp,
* testsuite/ld-scripts/sizeof.exp,
* testsuite/ld-scripts/weak.exp,
* testsuite/ld-selective/selective.exp,
* testsuite/ld-sh/sh.exp,
* testsuite/ld-shared/shared.exp,
* testsuite/ld-srec/srec.exp,
* testsuite/ld-tic6x/tic6x.exp,
* testsuite/ld-undefined/undefined.exp,
* testsuite/ld-undefined/weak-undef.exp,
* testsuite/lib/ld-lib.exp: Don't use unresolved except after
perror.  Instead report "unsupported" or "fail".

3 years agoAutomatic date update in version.in
GDB Administrator [Sun, 14 Feb 2021 00:00:12 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agosim: testsuite: push $arch out to targets
Mike Frysinger [Sat, 16 Jan 2021 04:23:46 +0000 (23:23 -0500)]
sim: testsuite: push $arch out to targets

This is needed to move to automake & its dejagnu-provided logic,
and eventually by the unified sim logic.  The $arch is used only
to figure out which `run` program to use when running tests, and
as we move to a single top-level build, we can delete this and
use sim/run directly.

3 years agosim: rx: mitigate fread warning
Mike Frysinger [Sat, 13 Feb 2021 07:42:50 +0000 (02:42 -0500)]
sim: rx: mitigate fread warning

Current toolchains warn about unused result from fread, so mitigate
the edge case if fread returns short data.  It's not great, but it
gets things building again.

3 years agosim: switch to AC_CONFIG_MACRO_DIRS
Mike Frysinger [Sun, 7 Feb 2021 00:46:16 +0000 (19:46 -0500)]
sim: switch to AC_CONFIG_MACRO_DIRS

Rather than hand maintain m4 includes in various autotool files,
use AC_CONFIG_MACRO_DIRS to declare the relevant search paths.
This simplifies the code, makes it more robust, and cleans out
unused logic from configure.

3 years agosim: common: delete unused aclocal.m4
Mike Frysinger [Sun, 7 Feb 2021 00:42:30 +0000 (19:42 -0500)]
sim: common: delete unused aclocal.m4

This was missed when we deleted the common/configure build logic.

3 years agoconfig/debuginfod: do not include pkg.m4 directly
Mike Frysinger [Sun, 7 Feb 2021 00:24:29 +0000 (19:24 -0500)]
config/debuginfod: do not include pkg.m4 directly

Any code using AC_DEBUGINFOD from this dir is using -I../config when
running aclocal, so an explicit include on pkg.m4 is unnecessary:
aclocal will find the pkg.m4 in this dir just as easily.  This is
seen in the only two dirs that use AC_DEBUGINFOD (binutils & gdb)
as their aclocal.m4 already has m4_include on config m4 files.

The include as written only works if aclocal is run on a dir that is
at the same level of config/.  Any other depth will fail.
./
|-- config/
|-- binutils/    # works
|-- gdb/         # works
`-- sim/         # works
    `-- <port>/  # fails

It fails even if AC_DEBUGINFOD itself isn't used:
sim/bfin/ $ aclocal -I../../config
aclocal-1.15: error: ../../config/debuginfod.m4:8: file '../config/pkg.m4' does not exist

3 years agoAutomatic date update in version.in
GDB Administrator [Sat, 13 Feb 2021 00:00:12 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years agoAdd stdio support to gdbreplay
Tom Tromey [Fri, 12 Feb 2021 14:33:48 +0000 (07:33 -0700)]
Add stdio support to gdbreplay

I've been using gdbreplay to help debug an intermittent failure, and I
wanted it to be a little simpler to use.  This patch adds support for
"-" as the "address" argument.  With this patch you can do:

    (gdb) target remote | gdbreplay logfile -

... and not have to start gdbreplay in a separate shell.

2021-02-12  Tom Tromey  <tromey@adacore.com>

* gdbreplay.cc (remote_desc): Remove.
(remote_desc_in, remote_desc_out): New globals.
(remote_close): Update.
(remote_open): Handle "-".
(remote_open): Update.
(logchar): Log to stderr.
(expect, play): Update.

3 years ago[gdb/threads] Fix lin_thread_get_thread_signals for glibc 2.28
Tom de Vries [Fri, 12 Feb 2021 19:12:37 +0000 (20:12 +0100)]
[gdb/threads] Fix lin_thread_get_thread_signals for glibc 2.28

When running test-case gdb.threads/create-fail.exp on openSUSE Factory
(with glibc version 2.32) I run into:
...
(gdb) continue
Continuing.
[New Thread 0x7ffff7c83700 (LWP 626354)]
[New Thread 0x7ffff7482700 (LWP 626355)]
[Thread 0x7ffff7c83700 (LWP 626354) exited]
[New Thread 0x7ffff6c81700 (LWP 626356)]
[Thread 0x7ffff7482700 (LWP 626355) exited]
[New Thread 0x7ffff6480700 (LWP 626357)]
[Thread 0x7ffff6c81700 (LWP 626356) exited]
[New Thread 0x7ffff5c7f700 (LWP 626358)]
[Thread 0x7ffff6480700 (LWP 626357) exited]
pthread_create: 22: Invalid argument

Thread 6 "create-fail" received signal SIG32, Real-time event 32.
[Switching to Thread 0x7ffff5c7f700 (LWP 626358)]
0x00007ffff7d87695 in clone () from /lib64/libc.so.6
(gdb) FAIL: gdb.threads/create-fail.exp: iteration 1: run till end
...
The problem is that glibc-internal signal SIGCANCEL is not recognized by gdb.

There's code in check_thread_signals that is supposed to take care of that,
but it's not working because this code in lin_thread_get_thread_signals has
stopped working:
...
  /* NPTL reserves the first two RT signals, but does not provide any
     way for the debugger to query the signal numbers - fortunately
     they don't change.  */
  sigaddset (set, __SIGRTMIN);
  sigaddset (set, __SIGRTMIN + 1);
...

Since glibc commit d2dc5467c6 "Filter out NPTL internal signals (BZ #22391)"
(first released as part of glibc 2.28), a sigaddset with a glibc-internal
signal has no other effect than setting errno to EINVALID.

Fix this by eliminating the usage of sigset_t in check_thread_signals and
lin_thread_get_thread_signals.

The same problem was observed on Ubuntu 20.04.

Tested on x86_64-linux, openSUSE Factory.
Tested on aarch64-linux, Ubuntu 20.04 and Ubuntu 18.04.

gdb/ChangeLog:

2021-02-12  Tom de Vries  <tdevries@suse.de>

PR threads/26228
* linux-nat.c (lin_thread_get_thread_signals): Remove.
(lin_thread_signals): New static var.
(lin_thread_get_thread_signal_num, lin_thread_get_thread_signal):
New function.
* linux-nat.h (lin_thread_get_thread_signals): Remove.
(lin_thread_get_thread_signal_num, lin_thread_get_thread_signal):
Declare.
* linux-thread-db.c (check_thread_signals): Use
lin_thread_get_thread_signal_num and lin_thread_get_thread_signal.

3 years agoMinor constification in gdbreplay
Tom Tromey [Fri, 12 Feb 2021 17:25:59 +0000 (10:25 -0700)]
Minor constification in gdbreplay

I noticed a spot in gdbreplay where "const" could be used.

2021-02-12  Tom Tromey  <tromey@adacore.com>

* gdbreplay.cc (remote_open): Constify.

3 years agoChange the readelf and objdump programs so that they will automatically follow links...
Nick Clifton [Fri, 12 Feb 2021 14:52:22 +0000 (14:52 +0000)]
Change the readelf and objdump programs so that they will automatically follow links to separate debug info files.

* configure.ac (follow-debug-links): Add option to enable or
disable the following of debug links by default.  Set the
default for the option to be 'follow'.
* dwarf.c (do_follow_links): Initialise with DEFAULT_FOR_FOLLOW_LINKS.
(dwarf_select_sections_by_names): Add no-follow-links option.
(dwarf_select_sections_by_letter): Add 'N' option.
* objdump.c (usage): Add conditional text describing the
follow links option.
(slurp_symtab): Ensure that there is a NULL entry at the end
of the symbol table.
(slurp_dynamic_symtab): Likewise.
(dump_bfd): When extending the symbol table, ensure that there
is still a NULL entry at the end.
* readelf.c (usage): Add conditional text describing the
follow links option.
* doc/binutils.texi: Update documentation for objcopy and
readelf.
* doc/debug.options.texi: Update documentation of the
follow-links option.
* config.in: Regenerate.
* configure: Regenerate.
* testsuite/binutils-all/compress.exp: Add the -WN option to
objdump command lines that are not expecting to follow links.
* testsuite/binutils-all/readelf.exp: Add the
--debug-dump=no-follow-links option to tests that are not
expecting to follow debug links.

gas * testsuite/gas/mach-o/sections-1.d: Stop automatic debug link
        following.
* testsuite/gas/xgate/insns-dwarf2.d: Likewise.

ld * testsuite/ld-elf/sec64k.exp: Stop readelf from automatically
following debug links.

3 years agogdb/fortran: support ALLOCATED builtin
Andrew Burgess [Thu, 11 Feb 2021 13:34:06 +0000 (13:34 +0000)]
gdb/fortran: support ALLOCATED builtin

Add support for the ALLOCATED keyword to the Fortran expression
parser.

gdb/ChangeLog:

* f-exp.y (f77_keywords): Add allocated.
* f-lang.c (evaluate_subexp_f): Handle UNOP_FORTRAN_ALLOCATED.
(operator_length_f): Likewise.
(print_subexp_f): Likewise.
(dump_subexp_body_f): Likewise.
(operator_check_f): Likewise.
* std-operator.def (UNOP_FORTRAN_ALLOCATED): New operator.

gdb/testsuite/ChangeLog:

* gdb.fortran/allocated.exp: New file.
* gdb.fortran/allocated.f90: New file.

3 years agobinutils testsuite: replace unresolved with unsupported
Alan Modra [Fri, 12 Feb 2021 06:35:12 +0000 (17:05 +1030)]
binutils testsuite: replace unresolved with unsupported

You'd think "unresolved" would be correct for an objcopy test when the
assembler refuses to assemble one of our source files.  After all, the
test of objcopy hasn't been run.  However, "unresolved" results in
runtest returning with an error status.  If instead we report
"unsupported", runtest returns success.  Which is a little less
confusing to a user who doesn't see any errors reported unless they
look in log files.

* testsuite/binutils-all/objcopy.exp: Report "unsupported" when
gas or ld fails to build a testcase rather than "unresolved".
Report "fail" when readelf returns an error status rather than
"unresolved".
* testsuite/binutils-all/ar.exp: Likewise.
* testsuite/binutils-all/compress.exp: Likewise.
* testsuite/binutils-all/readelf.exp: Likewise.

3 years agobinutils test pr25662: don't use single character labels
Alan Modra [Fri, 12 Feb 2021 06:04:28 +0000 (16:34 +1030)]
binutils test pr25662: don't use single character labels

This fixes the test for z80, which predefine register symbols "a" and
"c" among others.

* testsuite/binutils-all/pr25662.s: Replace "a" with "aaa" and
"c" with "ccc" labels.

3 years agogas testsuite: adjust recently added tests for hppa
Alan Modra [Fri, 12 Feb 2021 01:11:16 +0000 (11:41 +1030)]
gas testsuite: adjust recently added tests for hppa

Some hppa gas targets treat anything starting in the first column as a
label, so directives can't start there.  Also, binutils_assemble and
run_dump_test cleverly edit test source to suit the hppa .comm
directive which has a different syntax to most targets.  The editing
means we can't match source file names in dumps.  Finally, hppa gas
complains if instructions are emitted without a ".text" or similar
directive.

* testsuite/gas/all/pr27381.err: Don't match source file name.
* testsuite/gas/all/pr27381.s: Don't start directive in first column.
* testsuite/gas/all/pr27384.err: Don't match source file name.
Adjust line number.
* testsuite/gas/all/pr27384.s: Add ".text" directive.
* testsuite/gas/elf/pr27355.err: Don't match source file name.

3 years ago[binutils] Fix typo in comment in dwarf.h
Tom de Vries [Fri, 12 Feb 2021 03:43:03 +0000 (04:43 +0100)]
[binutils] Fix typo in comment in dwarf.h

Fix typo DW_AT_GNU_FORM_addr_index -> DW_FORM_GNU_addr_index.

binutils/ChangeLog:

2021-02-12  Tom de Vries  <tdevries@suse.de>

* dwarf.h (debug_info): Fix typo in comment.

3 years ago[binutils] Fix printing of .debug_str_offsets
Tom de Vries [Fri, 12 Feb 2021 03:43:03 +0000 (04:43 +0100)]
[binutils] Fix printing of .debug_str_offsets

With exec:
...
$ clang -gdwarf-5 ./src/gdb/testsuite/gdb.dwarf2/fission-mix*.c
...
we have:
...
$ readelf -w a.out
  ...
Contents of the .debug_str_offsets section:

    Length: 0x24
    Version: 0x5
       Index   Offset [String]
           0      1d0 clang version 10.0.1
           1      1e6 src/gdb/testsuite/gdb.dwarf2/fission-mix-2.c
           2      213 /home/vries/gdb_versions/devel
           3      232 bar
           4      236 x
           5       61 int
           6      238 s
           7      23a func2
           8       2c ild/BUILD/glibc-2.26/csu
           9        5 sdeps/x86_64/start.S
          10      1d0 clang version 10.0.1
          11      240 src/gdb/testsuite/gdb.dwarf2/fission-mix.c
          12      213 /home/vries/gdb_versions/devel
          13      26b foo
          14      236 x
          15       61 int
          16      238 s
          17      26f func
          18      274 main
          19      279 arg
...

The section consists of two parts, one for each CU, each with a header, but
the printing only reads the first header as a header, and prints the second
header as:
...
           8       2c ild/BUILD/glibc-2.26/csu
           9        5 sdeps/x86_64/start.S
...

Fix this in display_debug_str_offsets such that we have:
...
           6      238 s
           7      23a func2
    Length: 0x2c
    Version: 0x5
       Index   Offset [String]
           0      1d0 clang version 10.0.1
           1      240 src/gdb/testsuite/gdb.dwarf2/fission-mix.c
...

binutils/ChangeLog:

2021-02-12  Tom de Vries  <tdevries@suse.de>

* dwarf.c (display_debug_str_offsets): Handle multiple sets of
entries.

3 years ago[binutils] Print DWO ID
Tom de Vries [Fri, 12 Feb 2021 03:43:03 +0000 (04:43 +0100)]
[binutils] Print DWO ID

With exec:
...
$ gcc -gsplit-dwarf ~/hello.c -gdwarf-5
...
a dwarf-5 DW_UT_skeleton CU is generated, but the corresponding DWO ID is not
printed by readelf -wi.

Add this, such that we have:
....
   Compilation Unit @ offset 0xc7:
    Length:        0x31 (32-bit)
    Version:       5
    Unit Type:     DW_UT_skeleton (4)
    Abbrev Offset: 0x64
    Pointer Size:  8
+   DWO ID:        0x4756ae3ac4348f21
  <0><db>: Abbrev Number: 1 (DW_TAG_skeleton_unit)
...

binutils/ChangeLog:

2021-02-12  Tom de Vries  <tdevries@suse.de>

* dwarf.c (process_debug_info): Print DWO ID.

3 years agoAutomatic date update in version.in
GDB Administrator [Fri, 12 Feb 2021 00:00:19 +0000 (00:00 +0000)]
Automatic date update in version.in

3 years ago[gdb/symtab] Handle DW_FORM_strx in form_requires_reprocessing
Tom de Vries [Thu, 11 Feb 2021 20:03:03 +0000 (21:03 +0100)]
[gdb/symtab] Handle DW_FORM_strx in form_requires_reprocessing

When running test-case gdb.dwarf2/fission-mix.exp using gcc-11, I run into:
...
(gdb) file fission-mix^M
Reading symbols from fission-mix...^M
src/gdb/dwarf2/attribute.h:258: internal-error: \
  void attribute::set_unsigned_reprocess(ULONGEST): \
  Assertion `form_requires_reprocessing ()' failed.^M
...

This happens when calling set_unsigned_reprocess on an attribute with form
DW_FORM_strx.  The assert triggers because DW_FORM_strx is not listed in
form_requires_reprocessing.

Fix this by adding DW_FORM_strx in form_requires_reprocessing.

Tested on x86_64-linux.

gdb/ChangeLog:

2021-02-11  Tom de Vries  <tdevries@suse.de>

PR symtab/27353
* dwarf2/attribute.c (attribute::form_requires_reprocessing):
Return true for DW_FORM_strx.

3 years agoFix two Fortran regressions
Tom Tromey [Thu, 11 Feb 2021 15:27:46 +0000 (08:27 -0700)]
Fix two Fortran regressions

Luis pointed out that an earlier patch of mine caused two regressions
in gdb.fortran.  This patch fixes the problem.

Regression tested on x86-64 Fedora 32.

gdb/ChangeLog
2021-02-11  Tom Tromey  <tromey@adacore.com>

PR gdb/27383:
* parse.c (write_exp_symbol_reference): Write sym.block.

3 years agoRemove ia64 from obsolete list
Alan Modra [Thu, 11 Feb 2021 11:55:02 +0000 (22:25 +1030)]
Remove ia64 from obsolete list

* config.bfd: Remove ia64 from obsolete list.

3 years agoRevert "ia64: Check UNDEFWEAK_NO_DYNAMIC_RELOC"
Alan Modra [Thu, 11 Feb 2021 11:53:45 +0000 (22:23 +1030)]
Revert "ia64: Check UNDEFWEAK_NO_DYNAMIC_RELOC"

This reverts commit db41f6eb5234ea3c74c1ce4798cf9923d4a45a98.

3 years agogdb/testsuite: remove old comment
Andrew Burgess [Thu, 11 Feb 2021 11:29:48 +0000 (11:29 +0000)]
gdb/testsuite: remove old comment

In commit:

  commit e92c8eb86dcef673652644694c832c504cf9a9a9
  Date:   Tue Feb 9 15:46:13 2021 +0000

      gdb/fortran: add parser support for lbound and ubound

When I created the test gdb/testsuite/gdb.fortran/lbound-ubound.exp, I
copied the script from a different file and failed to delete the test
description comment at the top (even though I added a new
description).  Fixed in this commit.

gdb/testsuite/ChangeLog:

* gdb.fortran/lbound-ubound.exp: Remove old comment.

3 years agogdb: change 'maint info section' to use command options
Andrew Burgess [Fri, 5 Feb 2021 13:51:34 +0000 (13:51 +0000)]
gdb: change 'maint info section' to use command options

The 'maintenance info sections' command currently takes a list of
filters on the command line.  It can also accept the magic string
'ALLOBJ' which acts more like a command line flag, telling the command
to print information about all objfiles.

The manual has this to say about the options and filters:

  ... In addition, 'maint info sections' provides the following
  command options (which may be arbitrarily combined): ...

Implying (to me at least) that I can do this:

  (gdb) maint info sections ALLOBJ READONLY

to list all the read-only sections from all currently loaded object
files.

Unfortunately, this doesn't work.  The READONLY filter will work, but
ALLOBJ will not be detected correctly.

It would be fairly simple to fix the ALLOBJ detection.  However, I
dislike this mixing of command options (ALLOBJ) with command data (the
filters, e.g. READONLY, etc).

As this is a maintenance command, so not really intended for end
users, I think we can be a little more aggressive in "fixing" the
option parsing.  So that's what I do in this commit.

The ALLOBJ mechanism is replaced with a real command
option (-all-objects).  The rest of the command operates just as
before.  The example above would now become:

  (gdb) maint info sections -all-objects READONLY

The manual has been updated, and I added a NEWS entry to document the
change.

gdb/ChangeLog:

* NEWS: Mention changes to 'maint info sections'.
* maint.c (match_substring): Return a bool, fix whitespace issue.
(struct single_bfd_flag_info): New struct.
(bfd_flag_info): New static global.
(match_bfd_flags): Return a bool, use bfd_flag_info.
(print_bfd_flags): Use bfd_flag_info.
(maint_print_section_info): Delete trailing whitespace.
(struct maint_info_sections_opts): New struct.
(maint_info_sections_option_defs): New static global.
(maint_info_sections_completer): New function.
(maintenance_info_sections): Use option parsing mechanism.
(_initialize_maint_cmds): Register command completer.

gdb/doc/ChangeLog:

* gdb.texinfo (Files): Update documentation for 'maint info
sections'.

gdb/testsuite/ChangeLog:

* gdb.base/maint-info-sections.exp: Update expected output, and
add additional tests. Again.

3 years agogdb: 'maint info sections' - handle the no executable case
Andrew Burgess [Fri, 5 Feb 2021 11:16:31 +0000 (11:16 +0000)]
gdb: 'maint info sections' - handle the no executable case

The 'maint info sections' command is split into two blocks or work,
first if there's an executable then the sections from the executable,
and optionally all other loaded object files are printed.  Then all
the sections from any core file are printed.

I ran into a situation where (for various reasons) I wasn't using a
main executable.  Instead I connected to a remote target and used
add-symbol-file.  This allowed me to debug an image that was already
loaded on the remote system.

Unfortunately, when I tried to use 'maint info sections' I saw
nothing.  The reason is that the loop over all object files is hidden
behind a check that we have a main executable.

This commit removes this check and merges together some duplicate
code.  I also (I think) made the output of this command cleaner.

Here is the original output of 'maint info sections':

  Exec file:
      `/tmp/hello.x', file type elf64-x86-64.
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

And my modified output:

  Exec file: `/home/andrew/tmp/hello.x', file type elf64-x86-64.
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

The forced newline after 'Exec file: ' has been removed.  This is now
a wrap point (in case the filename is very long).

Here is the original output of 'maint info sections ALLOBJ':

  Exec file:
      `/tmp/hello.x', file type elf64-x86-64.
    Object file: /tmp/hello.x
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...
    Object file: /lib64/ld-linux-x86-64.so.2
   [0]      0x7ffff7fd12a8->0x7ffff7fd12c8 at 0x000002a8: .note.gnu.property ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x7ffff7fd12c8->0x7ffff7fd12ec at 0x000002c8: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

And my modified output:

  Exec file: `/tmp/hello.x', file type elf64-x86-64.
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...
  Object file: `/lib64/ld-linux-x86-64.so.2', file type elf64-x86-64.
   [0]      0x7ffff7fd12a8->0x7ffff7fd12c8 at 0x000002a8: .note.gnu.property ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x7ffff7fd12c8->0x7ffff7fd12ec at 0x000002c8: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

The executable now only gets a single header line.  The header line
for the additional object files is no longer indented as it was
before, and the line is laid out in a similar style to the main
executable line (with quotes and file type information).

And of course, the biggest change.  If GDB is started with no
executable, but then the user does 'add-symbol-file ....' followed by
'maint info sections ALLOBJ', previously they got nothing, now they
get:

  Object file: `/tmp/hello.x', file type elf64-x86-64.
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

gdb/ChangeLog:

* maint.c (print_bfd_section_info_maybe_relocated): Delete,
functionality merged into...
(maint_print_all_sections): ...this new function.
(maintenance_info_sections): Make use of maint_print_all_sections,
allow all objects to be printed even where there's no executable.

gdb/testsuite/ChangeLog:

* gdb.base/maint-info-sections.exp: Update expected output, and
add additional tests.

3 years agogdb/testsuite: split 'maint info sections' tests to a new file
Andrew Burgess [Fri, 5 Feb 2021 14:47:04 +0000 (14:47 +0000)]
gdb/testsuite: split 'maint info sections' tests to a new file

The next couple of patches are going to add more tests for the 'maint
info sections' command.  Rather than try to jam these tests into the
already quite long gdb.base/maint.c, this commit moves all of the
tests for 'maint info sections' into a new file.

I've updated the tests to make use of some newer testsuite constructs,
like -wrap and $gdb_test_name for gdb_test_multiple, but otherwise the
tests should not have changed with this commit.

gdb/testsuite/ChangeLog:

* gdb.base/maint-info-sections.exp: New file, content is moved
from gdb.base/maint.exp and cleaned up to use latest testsuite
techniques.
* gdb.base/maint.exp: Tests moved out to
gdb.base/maint-info-sections.exp.

3 years agogdb: add obj_section function to bound_minimal_symbol
Andrew Burgess [Wed, 10 Feb 2021 15:07:04 +0000 (15:07 +0000)]
gdb: add obj_section function to bound_minimal_symbol

Add a new obj_section function to bound_minimal_symbol, this just
calls obj_section on the contained minimal_symbol passing in the
contained objfile.

This allows some minor code simplification in a few places.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* breakpoint.c (resolve_sal_pc): Make use of
bound_minimal_symbol::obj_section.
* maint.c (maintenance_translate_address): Likewise.
* minsyms.c (minimal_symbol_upper_bound): Likewise.
* minsyms.h (struct bound_minimal_symbol) <obj_section>: New
member function.
* printcmd.c (info_address_command): Make use of
bound_minimal_symbol::obj_section.

3 years agoPR27294, avr OOM
Alan Modra [Thu, 11 Feb 2021 06:26:22 +0000 (16:56 +1030)]
PR27294, avr OOM

PR 27294
* elf32-avr.c (avr_elf32_load_records_from_section): Use
bfd_malloc_and_get_section.  Use bfd_byte* vars and remove then
unnecessary casts.

3 years agoPR27290, PR27293, PR27295, various avr objdump fixes
Alan Modra [Thu, 11 Feb 2021 06:26:42 +0000 (16:56 +1030)]
PR27290, PR27293, PR27295, various avr objdump fixes

Adds missing sanity checks for avr device info note, to avoid
potential buffer overflows.  Uses bfd_malloc_and_get_section for
sanity checking section size.

PR 27290
PR 27293
PR 27295
* od-elf32_avr.c (elf32_avr_get_note_section_contents): Formatting.
Use bfd_malloc_and_get_section.
(elf32_avr_get_note_desc): Formatting.  Return descsz.  Sanity
check namesz.  Return NULL if descsz is too small.  Ensure
string table is terminated.
(elf32_avr_get_device_info): Formatting.  Add note_size param.
Sanity check note.
(elf32_avr_dump_mem_usage): Adjust to suit.

3 years agoPR27291, integer overflow in bfd_get_section_contents
Alan Modra [Wed, 10 Feb 2021 23:23:17 +0000 (09:53 +1030)]
PR27291, integer overflow in bfd_get_section_contents

Makes the code a little more elegant too.  Note that the unsigned
overflow reported here is well defined so this patch doesn't fix any
real problem.

PR 27291
* section.c (bfd_get_section_contents): Avoid possible overflow
when range checking offset and count.
(bfd_set_section_contents): Likewise.

3 years agogdb: adjust comment in gdb.multi/multi-target.exp.tcl
Simon Marchi [Thu, 11 Feb 2021 00:17:47 +0000 (19:17 -0500)]
gdb: adjust comment in gdb.multi/multi-target.exp.tcl

I wanted to make this change before pushing the last patch but forgot to
amend before pushing.

Change-Id: I8e1f03ee0131c1e75973718e7835b39580a06054

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

3 years agogdb/testsuite: use "set sysroot" in gdb.multi/multi-target.exp.tcl
Simon Marchi [Wed, 10 Feb 2021 23:01:10 +0000 (18:01 -0500)]
gdb/testsuite: use "set sysroot" in gdb.multi/multi-target.exp.tcl

The multi-target tests involve some inferiors using remote targets.  By
default, GDB uses target: as the sysroot, which makes it read loaded
libraries and their debug info through GDBserver.  This makes the tests
run slower than necessary.

Pass `-ex "set sysroot"` when launching GDB in these tests, so that GDB
always reads from its local file system.

On a system where I don't have debug info for libc, that reduces run
time for

    $ make check TESTS="gdb.multi/multi-target-*.exp"

from 1:15 to 0:45.

On this other system where debug info is installed though, it reduces it
from 13:00 to 1:45.

gdb/testsuite/ChangeLog:

* gdb.multi/multi-target.exp.tcl (setup): Add "set sysroot" to
GDBFLAGS.

Change-Id: I9d24f3def843472d35dfb5667c12d70ae1d7e984

3 years agogdb: Remove arm-symbianelf support
Alan Modra [Wed, 10 Feb 2021 02:08:47 +0000 (12:38 +1030)]
gdb: Remove arm-symbianelf support

Since it has gone from bfd/.

* arm-symbian-tdep.c: Delete.
* NEWS: Mention arm-symbian removal.
* Makefile.in: Remove arm-symbian-tdep entries.
* configure.tgt: Remove arm*-*-symbianelf*.
* doc/gdb.texinfo: Remove mention of SymbianOS.
* osabi.c (gdb_osabi_names): Remove "Symbian".
* osabi.h (enum gdb_osabi): Remove GDB_OSABI_SYMBIAN.
* testsuite/gdb.base/ending-run.exp: Remove E32Main handling.
* testsuite/gdb.ada/catch_ex_std.exp: Remove arm*-*-symbianelf*
handling.
* testsuite/gdb.base/dup-sect.exp: Likewise.
* testsuite/gdb.base/long_long.exp: Likewise.
* testsuite/gdb.base/solib-weak.exp: Likewise.
* testsuite/gdb.guile/scm-section-script.exp: Likewise.
* testsuite/gdb.python/py-section-script.exp: Likewise.
* testsuite/lib/dwarf.exp: Likewise.
* testsuite/lib/gdb.exp: Likewise.

3 years agoRe: Remove arm-symbianelf
Alan Modra [Wed, 10 Feb 2021 02:06:52 +0000 (12:36 +1030)]
Re: Remove arm-symbianelf

gas/
* NEWS: Mention arm-symbianelf removal.
ld/
* NEWS: Mention arm-symbianelf removal.

3 years ago[binutils] Handle absolute DW_AT_dwo_name
Tom de Vries [Wed, 10 Feb 2021 16:26:50 +0000 (17:26 +0100)]
[binutils] Handle absolute DW_AT_dwo_name

With an exec:
...
$ pwd
/home/vries/tmp
$ gcc /home/vries/tmp/src/hello.c -gsplit-dwarf -c \
  -o /home/vries/tmp/obj/hello.o
...
I get:
...
$ readelf -w obj/hello.o > READELF
readelf: Warning: Unable to load dwo file: \
  /home/vries/tmp//home/vries/tmp/obj/hello.dwo
...

The dwo file name is listed here:
...
    <20>   DW_AT_GNU_dwo_name: /home/vries/tmp/obj/hello.dwo
    <24>   DW_AT_comp_dir    : /home/vries/tmp
...

The standard states about the DW_AT_dwo_name attribute:
...
value is a null-terminated string containing the full or relative path name
(relative to the value of the DW_AT_comp_dir attribute, see below) of the
object file that contains the full compilation unit.
...

So, readelf shouldn't try to prefix an absolute path with DW_AT_comp_dir.

Fix this in load_dwo_file by handling the absolute path case.

binutils/ChangeLog:

2021-02-10  Tom de Vries  <tdevries@suse.de>

PR binutils/27391
* dwarf.c (load_dwo_file): Handle case that name is absolute path.

3 years agogdb/fortran: add parser support for lbound and ubound
Andrew Burgess [Tue, 9 Feb 2021 15:46:13 +0000 (15:46 +0000)]
gdb/fortran: add parser support for lbound and ubound

Add support for the LBOUND and UBOUND built in functions to the
Fortran expression parser.

Both support taking one or two arguments.  A single argument, which
must be an array, returns an array containing all of the lower or
upper bound data.

When passed two arguments, the second argument is the dimension being
asked about.  In this case the result is a scalar containing the lower
or upper bound just for that dimension.

Some examples of usage taken from the new test:

  # Given:
  #   integer, dimension (-8:-1,-10:-2) :: neg_array
  #
  (gdb) p lbound (neg_array)
  $1 = (-8, -10)
  (gdb) p lbound (neg_array, 1)
  $3 = -8
  (gdb) p lbound (neg_array, 2)
  $5 = -10

gdb/ChangeLog:

* f-exp.y (UNOP_OR_BINOP_INTRINSIC): New token.
(exp): New pattern using UNOP_OR_BINOP_INTRINSIC.
(one_or_two_args): New pattern.
(f77_keywords): Add lbound and ubound.
* f-lang.c (fortran_bounds_all_dims): New function.
(fortran_bounds_for_dimension): New function.
(evaluate_subexp_f): Handle FORTRAN_LBOUND and FORTRAN_UBOUND.
(operator_length_f): Likewise.
(print_subexp_f): Likewise.
(dump_subexp_body_f): Likewise.
(operator_check_f): Likewise.
* std-operator.def (FORTRAN_LBOUND): Define.
(FORTRAN_UBOUND): Define.

gdb/testsuite/ChangeLog:

* gdb.fortran/lbound-ubound.F90: New file.
* gdb.fortran/lbound-ubound.exp: New file.

3 years agolibctf: add missing header in BFD ELF check
Nick Alcock [Wed, 3 Feb 2021 14:09:02 +0000 (14:09 +0000)]
libctf: add missing header in BFD ELF check

Without this, GCC warns:

In file included from conftest.c:36:
../../libctf/../bfd/elf-bfd.h: In function 'bfd_section_is_ctf':
../../libctf/../bfd/elf-bfd.h:3089:10: warning: implicit declaration of function 'strncmp' [-Wimplicit-function-declaration]
 3089 |   return strncmp (name, ".ctf", 4) == 0 && (name[4] == 0 || name[4] == '.');
      |          ^~~~~~~
../../libctf/../bfd/elf-bfd.h:3089:33: warning: 'strncmp' argument 3 type is 'int' where 'long unsigned int' is expected in a call to built-in function declared without prototype [-Wbuiltin-declaration-mismatch]
 3089 |   return strncmp (name, ".ctf", 4) == 0 && (name[4] == 0 || name[4] == '.');
      |                                 ^
<built-in>: note: built-in 'strncmp' declared here

These warnings do not currently throw off the result of the configure
check, but it's better to squash them anyway.

libctf/ChangeLog
2021-02-03  Nick Alcock  <nick.alcock@oracle.com>

* configure.ac (ac_cv_libctf_bfd_elf): Include string.h.
* configure: Regenerated.

3 years agolibctf: require a Tcl capable of try/catch to run tests
Nick Alcock [Wed, 3 Feb 2021 14:02:30 +0000 (14:02 +0000)]
libctf: require a Tcl capable of try/catch to run tests

The run_native_host_cmd implementation in testsuite/lib/ctf-lib.exp
uses try/catch, which are new in Tcl 8.6.  Require a Tcl that knows
that try exists, as suggested by Jan Beulich.

libctf/ChangeLog
2021-02-03  Nick Alcock  <nick.alcock@oracle.com>

* configure.ac (EXPECT): Check for, in order to define...
(TCL_TRY): ... this, if Tcl supports try/catch.
* Makefile.am (TCL_TRY): Run the testsuite only if set.
* configure: Regenerated.
* Makefile.in: Likewise.

3 years agobfd, opcodes, libctf: support --with-included-gettext
Nick Alcock [Wed, 3 Feb 2021 18:42:06 +0000 (18:42 +0000)]
bfd, opcodes, libctf: support --with-included-gettext

Right now, these libraries hardwire -L../intl -lintl on a few fixed
platforms, which works fine on those platforms but on other platforms
leads to shared libraries that lack libintl_* symbols when configured
--with-included-gettext, and/or static libraries that contain libintl as
*another* static library.  If we instead use the LIBINTL variable
defined in ../intl/config.intl, this gives us the right thing on all
three classes of platform (gettext in libc, gettext in system libintl,
gettext in ../intl/libintl.a)..  This also means we can rip out some
Darwin-specific machinery from configure.ac and also simplify the Cygwin
side.

This also means that the libctf testsuite (and other places that include
libbfd, libopcodes or libctf) don't need to grow libintl dependencies
just on account of those libraries (though they still need such
dependencies if they themselves use gettext machinery).

bfd/ChangeLog
2021-02-03  Nick Alcock  <nick.alcock@oracle.com>

* configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
favour of LIBINTL.
* configure: Regenerated.

libctf/ChangeLog
2021-02-02  Nick Alcock  <nick.alcock@oracle.com>

* configure.ac (CTF_LIBADD): Remove explicit -lintl population in
favour of LIBINTL.
* Makefile.am (libctf_nobfd_la_LIBADD): No longer explicitly
include $(LIBINTL).
(check-DEJAGNU): Pass down to tests as well.
* configure: Regenerated.
* Makefile.in: Likewise.

opcodes/ChangeLog
2021-02-04  Nick Alcock  <nick.alcock@oracle.com>

* configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
favour of LIBINTL.
* configure: Regenerated.