binutils-gdb.git
2 years agox86: Add elf_x86_allocate_local_got_info
H.J. Lu [Wed, 5 Jan 2022 21:14:20 +0000 (13:14 -0800)]
x86: Add elf_x86_allocate_local_got_info

Add elf_x86_allocate_local_got_info to allocate x86 GOT info for local
symbols.

* elf32-i386.c (elf_i386_check_relocs): Call
elf_x86_allocate_local_got_info.
* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
* elfxx-x86.h (elf_x86_allocate_local_got_info): New.

2 years agoopcodes: Make i386-dis.c thread-safe
Vladimir Mezentsev [Wed, 5 Jan 2022 07:07:26 +0000 (23:07 -0800)]
opcodes: Make i386-dis.c thread-safe

Improve thread safety in print_insn_i386_att, print_insn_i386_intel and
print_insn_i386 by removing the use of static variables.

Tested on x86_64-pc-linux-gnu.

2022-01-04 Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

* i386-dis.c: Make print_insn_i386_att, print_insn_i386_intel
and print_insn_i386 thread-safe

2 years agodoc: Replace =frame-interp with =frames-interp
H.J. Lu [Wed, 5 Jan 2022 19:51:40 +0000 (11:51 -0800)]
doc: Replace =frame-interp with =frames-interp

The actual objdump and readelf option name is =frames-interp, not
=frames-interp.

PR binutils/28747
* doc/debug.options.texi: Replace =frame-interp with
=frames-interp.

2 years agoChange riscv_return_value to use RETURN_VALUE_ABI_PRESERVES_ADDRESS
Tom Tromey [Tue, 14 Dec 2021 15:46:59 +0000 (08:46 -0700)]
Change riscv_return_value to use RETURN_VALUE_ABI_PRESERVES_ADDRESS

Internally, AdaCore has a test that is equivalent to (really a direct
translation of) gdb.base/gnu_vector.exp.  On 32-bit RISC-V, the
"return" part of this test fails.

Joel tracked this down to riscv_return_value returning
RETURN_VALUE_ABI_RETURNS_ADDRESS.  Using
RETURN_VALUE_ABI_PRESERVES_ADDRESS is more correct here, and fixes the
bug.

I tested this for both 32- and 64-bit RISC-V using the AdaCore
internal test suite, and Andrew Burgess tested it using
gnu_vector.exp.

2 years agoFiltered output cleanup in expression dumping
Tom Tromey [Thu, 30 Dec 2021 19:34:15 +0000 (12:34 -0700)]
Filtered output cleanup in expression dumping

Most of the expression-dumping code uses filtered output, but a few
functions did not.  This patch cleans up these instance.

Note that this won't cause any behavior change, because the only calls
to dump_prefix_expression pass in gdb_stdlog.  However, in the long
run it's easier to audit the code if the number of uses of _unfiltered
is reduced.

2 years agoUse filtered output in terminal_info implementations
Tom Tromey [Mon, 27 Dec 2021 01:33:12 +0000 (18:33 -0700)]
Use filtered output in terminal_info implementations

This changes one terminal_info implementation, and
default_terminal_info, to use filtered output.  Other implementations
of this method already use filtered output.

I can't compile go32-nat.c, so this is a 'best effort' patch.

2 years agoUse filtered output in gnu-nat.c commands
Tom Tromey [Mon, 27 Dec 2021 01:22:30 +0000 (18:22 -0700)]
Use filtered output in gnu-nat.c commands

gnu-nat.c has a number of ordinary commands that should use filtered
output.  In a few cases, I changed the output to use gdb_stderr as
well.  I can't compile this file, so this patch is split out as a
"best effort".

2 years agoUse filtered output in *-tdep commands
Tom Tromey [Sat, 25 Dec 2021 05:15:42 +0000 (22:15 -0700)]
Use filtered output in *-tdep commands

Various targets introduce their own commands, which then use
unfiltered output.  It's better to use filtered output by default, so
this patch fixes the instances I found.

2 years agoUse filtered output in btrace-related commands
Tom Tromey [Mon, 27 Dec 2021 05:13:48 +0000 (22:13 -0700)]
Use filtered output in btrace-related commands

This changes btrace.c and record-btrace.c to use filtered output in
the commands implemented there.

2 years agoUse filtered output in some dumping commands
Tom Tromey [Thu, 30 Dec 2021 19:16:58 +0000 (12:16 -0700)]
Use filtered output in some dumping commands

There are several commands that may optionally send their output to a
file -- they take an optional filename argument and open a file.  This
patch changes these commands to use filtered output.  The rationale
here is that, when printing to gdb_stdout, filtering is appropriate --
it is, and should be, the default for all commands.  And, when writing
to a file, paging will not happen anyway (it only happens when the
stream==gdb_stdout), so using the _filtered form will not change
anything.

2 years agoUse filtered output in kill command
Tom Tromey [Mon, 27 Dec 2021 04:42:03 +0000 (21:42 -0700)]
Use filtered output in kill command

This changes the kill command to use filtered output.  I split this
one into its own patch because, out of an abundance of caution, I
changed the function to call bfd_cache_close_all a bit earlier, in
case pagination caused an exception.

2 years agoUse filtered output in ordinary commands
Tom Tromey [Sat, 25 Dec 2021 05:31:53 +0000 (22:31 -0700)]
Use filtered output in ordinary commands

Many otherwise ordinary commands choose to use unfiltered output
rather than filtered.  I don't think there's any reason for this, so
this changes many such commands to use filtered output instead.

Note that complete_command is not touched due to a comment there
explaining why unfiltered output is believed to be used.

2 years agoUse filtered output in language_info
Tom Tromey [Mon, 27 Dec 2021 01:17:55 +0000 (18:17 -0700)]
Use filtered output in language_info

Change language_info to use filtered output.  This is ok because the
sole caller uses filtered output elsewhere, and because this function
calls show_language_command, which also uses filtered output.

2 years agoUse filtered output in files_info implementations
Tom Tromey [Mon, 27 Dec 2021 01:14:39 +0000 (18:14 -0700)]
Use filtered output in files_info implementations

This changes the implementations of the target files_info method to
use filtered output.  This makes sense because the sole caller of this
method is an ordinary command (info_program_command).  This patch
changes this command to use filtered output as well.

2 years agoUse filtered output in target-descriptions.c
Tom Tromey [Sun, 26 Dec 2021 20:37:23 +0000 (13:37 -0700)]
Use filtered output in target-descriptions.c

target-descriptions.c uses unfiltered output.  However, if you happen
to invoke this command interactively, it's probably better for it to
use filtering.  For non-interactive use, this doesn't matter.

2 years agoUse filtered output for gdbarch dump
Tom Tromey [Sun, 26 Dec 2021 20:26:58 +0000 (13:26 -0700)]
Use filtered output for gdbarch dump

This changes gdbarch dumping to use filtered output.  This seems a bit
better to me, both on the principle that this is an ordinary command,
and because the output can be voluminous, so it may be nice to stop in
the middle.

2 years agoImplement putstr and putstrn in ui_file
Tom Tromey [Fri, 31 Dec 2021 17:40:02 +0000 (10:40 -0700)]
Implement putstr and putstrn in ui_file

In my tour of the ui_file subsystem, I found that fputstr and fputstrn
can be simplified.  The _filtered forms are never used (and IMO
unlikely to ever be used) and so can be removed.  And, the interface
can be simplified by removing a callback function and moving the
implementation directly to ui_file.

A new self-test is included.  Previously, I think nothing was testing
this code.

Regression tested on x86-64 Fedora 34.

2 years agoChange how versioned symbols are recorded
Tom Tromey [Tue, 3 Aug 2021 18:42:43 +0000 (12:42 -0600)]
Change how versioned symbols are recorded

A change to BFD caused a gdb regression when using the Ada "catch
exception" feature.  The bug is visible when a shared library throws
an exception that is caught in the main executable.

This was discussed here:

https://sourceware.org/pipermail/binutils/2021-July/117538.html

This patch implements Alan's proposed fix, namely to use VERSYM_HIDDEN
rather than the name when deciding to install a version-less symbol.

The internal test case is identical to the catch_ex_std.exp that is
in-tree, so I haven't added a new test.  I could not make that one
fail on x86-64 Linux, though.  It's possible that maybe I'd have to
update the system linker first, but I didn't want to try that.

Regression tested on x86-64 Fedora 32.

2 years agoFix inferior_thread attribute in new_thread event
Hannes Domani [Wed, 5 Jan 2022 15:37:28 +0000 (16:37 +0100)]
Fix inferior_thread attribute in new_thread event

Commit 72ee03ff58 fixed a use-after-move bug in add_thread_object, but
it changed the inferior_thread attribute to contain the inferior instead
of the actual thread.
This now uses the thread_obj in its new location instead.

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

2 years agoSimplify execute_control_commands_to_string
Tom Tromey [Sat, 25 Dec 2021 05:05:38 +0000 (22:05 -0700)]
Simplify execute_control_commands_to_string

execute_control_commands_to_string can be rewritten in terms of
execute_fn_to_string, which consolidates some knowledge about which
streams to redirect.

Regression tested on x86-64 Fedora 34.

2 years agoDo not print anything when self-backtrace unavailable
Tom Tromey [Wed, 5 Jan 2022 15:43:59 +0000 (08:43 -0700)]
Do not print anything when self-backtrace unavailable

Right now, gdb's self-backtrace feature will still print something
when a backtrace is unavailable:

   sig_write (_("----- Backtrace -----\n"));
[...]
     sig_write (_("Backtrace unavailable\n"));
    sig_write ("---------------------\n");

However, if GDB_PRINT_INTERNAL_BACKTRACE is undefined, it seems better
to me to print nothing at all.

This patch implements this change.  It also makes a couple of other
small changes in this same module: it adds a header guard to
bt-utils.h, and it protects the definitions of
gdb_internal_backtrace_1 with a check of GDB_PRINT_INTERNAL_BACKTRACE.

2 years agoFix pager regression
Tom Tromey [Mon, 3 Jan 2022 16:48:37 +0000 (09:48 -0700)]
Fix pager regression

The patch to fix paging with redirection caused a regression in the
internal AdaCore test suite.  The problem occurs when running an MI
command from the CLI using interpreter-exec, when paging is enabled.
This scenario isn't covered by the current test suite, so this patch
includes a new test.

The problem is that, in this situation, MI does:

  fputs_unfiltered (strcmp (context->command, "target-select") == 0
     ? "^connected" : "^done", mi->raw_stdout);

Here raw_stdout is a stdio_file wrapping stdout, so the pager thinks
that it is ok to buffer the output.  However, in this setup, it isn't
ok, and flushing the wrap buffer doesn't really work properly.  Also,
MI next does:

  mi_out_put (uiout, mi->raw_stdout);

... but this uses ui_file::write, which also doesn't flush the wrap
buffer.

I think all this will be fixed by the pager rewrite series I'm working
on.  However, in the meantime, adding the old gdb_stdout check back to
the pager fixes this problem.

Regression tested on x86-64 Fedora 34.

2 years agoelf: Set p_align to the minimum page size if possible
H.J. Lu [Tue, 14 Dec 2021 03:46:04 +0000 (19:46 -0800)]
elf: Set p_align to the minimum page size if possible

Currently, on 32-bit and 64-bit ARM, it seems that ld generates p_align
values of 0x10000 even if no section alignment is greater than 0x1000.
The issue is more general and probably affects other targets with multiple
page sizes.

While file layout absolutely must take 64K page size into account, that
does not have to be reflected in the p_align value.  If running on a 64K
kernel, the file will be loaded at a 64K page boundary by necessity. On
a 4K kernel, 64K alignment is not needed.

The glibc loader has been fixed to honor p_align:

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

similar to kernel:

commit ce81bb256a224259ab686742a6284930cbe4f1fa
Author: Chris Kennelly <ckennelly@google.com>
Date:   Thu Oct 15 20:12:32 2020 -0700

    fs/binfmt_elf: use PT_LOAD p_align values for suitable start address

This means that on 4K kernels, we will start to do extra work for 64K
p_align, but this pointless for pretty much all binaries (whose section
alignment rarely exceeds 16).

The minimum page size is used, instead of the maximum section alignment
due to this glibc bug:

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

It has been fixed in glibc 2.35.  But linker output must work on existing
glibc binaries.

1. Set p_align to the minimum page size while laying out segments aligning
to the maximum page size or section alignment.  The run-time loader can
align segments to the minimum page size or above, depending on system page
size.
2. If -z max-page-size=NNN is used, p_align will be set to the maximum
page size or the largest section alignment.
3. If a section requires alignment higher than the minimum page size,
don't set p_align to the minimum page size.
4. If a section requires alignment higher than the maximum page size,
set p_align to the section alignment.
5. For objcopy, when the minimum page size != the maximum page size,
p_align may be set to the minimum page size while segments are aligned
to the maximum page size.  In this case, the input p_align will be
ignored and the maximum page size will be used to align the ouput
segments.
6. Update linker to disallow the common page size > the maximum page size.
7. Update linker to avoid the common page size > the maximum page size.
8. Adjust pru_irq_map-1.d to expect p_align == sh_addralign:

Section Headers:
  [Nr] Name   Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]        NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text  PROGBITS        20000000 00007c 000004 00  AX  0   0  4
...
Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000074 0x00000000 0x00000000 0x00008 0x00008 RW  0x1
  LOAD           0x00007c 0x20000000 0x20000000 0x00004 0x00004 R E 0x4

vs.

Section Headers:
  [Nr] Name   Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]        NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text  PROGBITS        20000000 00007c 000004 00  AX  0   0  4
...
Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000074 0x00000000 0x00000000 0x00008 0x00008 RW  0x1
  LOAD           0x00007c 0x20000000 0x20000000 0x00004 0x00004 R E 0x1

To enable this linker optimization, the backend should define ELF_P_ALIGN
to ELF_MINPAGESIZE.

bfd/

PR ld/28689
PR ld/28695
* elf-bfd.h (elf_backend_data): Add p_align.
* elf.c (assign_file_positions_for_load_sections): Set p_align
to the default p_align value while laying out segments aligning
to maximum page size or section alignment.
(elf_is_p_align_valid): New function.
(copy_elf_program_header): Call elf_is_p_align_valid to determine
if p_align is valid.
* elfxx-target.h (ELF_P_ALIGN): New.  Default to 0.
(elfNN_bed): Add ELF_P_ALIGN.
* elfxx-x86.h (ELF_P_ALIGN): New.  Set to ELF_MINPAGESIZE.

include/

PR ld/28689
PR ld/28695
* bfdlink.h (bfd_link_info): Add maxpagesize_is_set.

ld/

PR ld/28689
PR ld/28695
* emultempl/elf.em (gld${EMULATION_NAME}_handle_option): Set
link_info.maxpagesize_is_set for -z max-page-size=NNN.
* ldelf.c (ldelf_after_parse): Disallow link_info.commonpagesize
> link_info.maxpagesize.
* testsuite/ld-elf/elf.exp: Pass -z max-page-size=0x4000 to
linker to build mbind2a and mbind2b.
* testsuite/ld-elf/header.d: Add -z common-page-size=0x100.
* testsuite/ld-elf/linux-x86.exp: Add PR ld/28689 tests.
* testsuite/ld-elf/p_align-1.c: New file.
* testsuite/ld-elf/page-size-1.d: New test.
* testsuite/ld-elf/pr26936.d: Add -z common-page-size=0x1000.
* testsuite/ld-elf/seg.d: Likewise.
* testsuite/ld-scripts/rgn-at5.d: Likewise.
* testsuite/ld-pru/pru_irq_map-1.d: Append 1 to name.  Adjust
expected PT_LOAD segment alignment.
* testsuite/ld-pru/pru_irq_map-2.d: Append 2 to name.
* testsuite/ld-scripts/pr23571.d: Add -z max-page-size=0x1000.

2 years agoAdjust quoted-sym-names test
Alan Modra [Wed, 5 Jan 2022 08:36:27 +0000 (19:06 +1030)]
Adjust quoted-sym-names test

Some targets restrict symbol addresses in .text to instruction
boundaries.

* testsuite/gas/all/quoted-sym-names.s: Define syms in .data.
* testsuite/gas/all/quoted-sym-names.d: Adjust to suit.

2 years agoinfinite recursion detected in gold testcase
Alan Modra [Wed, 5 Jan 2022 01:09:12 +0000 (11:39 +1030)]
infinite recursion detected in gold testcase

gold/testsuite/icf_test.cc:32:5: error: infinite recursion detected [-Werror=infinite-recursion]
   32 | int kept_func()
      |     ^~~~~~~~~

* testsuite/icf_test.cc: Avoid infinite recursion error.

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 5 Jan 2022 00:00:18 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agold/x86: Update -z report-relative-reloc
H.J. Lu [Tue, 4 Jan 2022 19:07:50 +0000 (11:07 -0800)]
ld/x86: Update -z report-relative-reloc

Use 0x%v, instead of bfd_sprintf_vma, to report relative relocations.
Change linker relative relocations report from

tmpdir/dump: R_X86_64_IRELATIVE (offset: 0x0000000000002000, info: 0x0000000000000025, addend: 0x0000000000001007) against 'ifunc' for section '.data.rel.ro.local' in tmpdir/report-reloc-1.o

to

tmpdir/dump: R_X86_64_IRELATIVE (offset: 0x2000, info: 0x25, addend: 0x1007) against 'ifunc' for section '.data.rel.ro.local' in tmpdir/report-reloc-1.o

bfd/

* elfxx-x86.c (_bfd_x86_elf_link_report_relative_reloc): Use
0x%v instead of bfd_sprintf_vma.

ld/

* testsuite/ld-i386/report-reloc-1.l: Updated.
* testsuite/ld-x86-64/report-reloc-1.l: Likewise.

2 years agold: Improve thin archive member error message
H.J. Lu [Sat, 25 Dec 2021 00:04:03 +0000 (16:04 -0800)]
ld: Improve thin archive member error message

Improve thin archive member error message with:

ld: libbar.a(bar.o): error opening thin archive member: No such file or directory

instead of

ld: libbar.a: error adding symbols: No such file or directory

PR ld/28722
* archive.c (_bfd_get_elt_at_filepos): Add a pointer argument
for struct bfd_link_info.  Call linker callback when failing to
open thin archive member.
(_bfd_generic_get_elt_at_index): Pass NULL to
_bfd_get_elt_at_filepos.
(bfd_generic_openr_next_archived_file): Likewise.
* coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Add a pointer
argument for struct bfd_link_info and pass it to
_bfd_get_elt_at_filepos.
(alpha_ecoff_openr_next_archived_file): Pass NULL to
_bfd_get_elt_at_filepos.
(alpha_ecoff_get_elt_at_index): Likewise.
* coff-rs6000.c (_bfd_xcoff_openr_next_archived_file): Likewise.
* ecoff.c (ecoff_link_add_archive_symbols): Pass info to
backend->get_elt_at_filepos.
* elflink.c (elf_link_is_defined_archive_symbol): info to
_bfd_get_elt_at_filepos.
* libbfd-in.h (_bfd_get_elt_at_filepos): Add a pointer argument
for struct bfd_link_info.
* libbfd.h: Regenerate.
* libecoff.h (ecoff_backend_data): Add a pointer argument for
struct bfd_link_info to get_elt_at_filepos.
* linker.c (_bfd_generic_link_add_archive_symbols): Pass info to
_bfd_get_elt_at_filepos.

2 years agogdb/testsuite: fix inferior-clone.exp for native-extended-gdbserver
Lancelot SIX [Wed, 29 Dec 2021 14:01:25 +0000 (09:01 -0500)]
gdb/testsuite: fix inferior-clone.exp for native-extended-gdbserver

003aae076207dbf32f98ba846158fc32669ef85f (gdb: Copy inferior properties
in clone-inferior) introduced a testcase that fails when testing with
the native-extended-gdbserver board:

    Running ../gdb/testsuite/gdb.base/inferior-clone.exp ...
    FAIL: gdb.base/inferior-clone.exp: inferior 2: clone-inferior
    FAIL: gdb.base/inferior-clone.exp: inferior 3: clone-inferior

The error is as follows:

    clone-inferior
    [New inferior 2]
    Added inferior 2 on connection 1 (extended-remote localhost:2346)
    (gdb) FAIL: gdb.base/inferior-clone.exp: inferior 2: clone-inferior

This fails because the testcase only expect the 'Added inferior 2' part
of the message.  The 'on connection 1 [...]' part is unexpected.

Fix by adjusting the testcase to a account for the possible trailing
part of the message.

Tested on x86_64-linux with native-extende-gdbserver and unix boards.

Change-Id: Ie3d6f04c9ffe9cab1fbda8ddf4935ee09b858c7a

2 years agoAdd ATTRIBUTE_UNUSED to load_build_id_debug_file()'s main_filename parameter.
Nick Clifton [Tue, 4 Jan 2022 10:33:11 +0000 (10:33 +0000)]
Add ATTRIBUTE_UNUSED to load_build_id_debug_file()'s main_filename parameter.

2 years agogdb: don't pass nullptr to sigwait
Andrew Burgess [Wed, 29 Dec 2021 11:53:49 +0000 (11:53 +0000)]
gdb: don't pass nullptr to sigwait

I tried building GDB on GNU/Hurd, and ran into this warning:

  gdbsupport/scoped_ignore_signal.h:78:16: error: null argument where non-null required (argument 2) [-Werror=nonnull]

This is because in this commit:

  commit 99624310dd82542c389c89c2e55d8cae36bb74e1
  Date:   Sun Jun 27 15:13:14 2021 -0400

      gdb: fall back on sigpending + sigwait if sigtimedwait is not available

A call to sigwait was introduced that passes nullptr as the second
argument, this call is only reached if sigtimedwait is not supported.

The original patch was written for macOS, I assume on that target
passing nullptr as the second argument is fine.

On my GNU/Linux box, the man-page for sigwait doesn't mention that
nullptr is allowed for the second argument, so my assumption would be
that nullptr is not OK, and, if I change the '#ifdef
HAVE_SIGTIMEDWAIT' introduced by the above patch to '#if 0', and
rebuild on GNU/Linux, I see the same warning that I see on GNU/Hurd.

I propose that we stop passing nullptr as the second argument to
sigwait, and instead pass a valid int pointer.  The value returned in
the int can then be used in an assert.

For testing, I (locally) made the change to the #ifdef I mentioned
above, compiled GDB, and ran the usual tests, this meant I was using
sigwait instead on sigtimedwait on GNU/Linux, I saw no regressions.

2 years agoRemove a spurious debugging message.
Nick Clifton [Tue, 4 Jan 2022 10:26:15 +0000 (10:26 +0000)]
Remove a spurious debugging message.

PR 28716
* dwarf.c (load_build_id_debug_file): Remove spurious printf.

2 years ago[gdb/build] Fix build breaker in gdb/cli/cli-logging.c
Tom de Vries [Tue, 4 Jan 2022 09:24:36 +0000 (10:24 +0100)]
[gdb/build] Fix build breaker in gdb/cli/cli-logging.c

Fix build breaker in gdb/cli/cli-logging.c:
...
gdb/cli/cli-logging.c: In function \
  â€˜void show_logging_enabled(ui_file*, int, cmd_list_element*, const char*)’:
gdb/gdbsupport/gdb_locale.h:28:28: error: cannot convert â€˜char*’ to â€˜ui_file*’
   28 | # define _(String) gettext (String)
      |                    ~~~~~~~~^~~~~~~~
      |                            |
      |                            char*
gdb/cli/cli-logging.c:202:25: note: in expansion of macro â€˜_’
  202 |     fprintf_unfiltered (_("on: Logging is enabled.\n"));
      |                         ^
...

Build and tested on x86_64-linux.

Fixes: 45aec4e5ed8 ("[gdb/cli] Improve show logging output")
2 years agox86/Intel: correct VFPCLASSP{S,D} handling when displacement is present
Jan Beulich [Tue, 4 Jan 2022 09:05:53 +0000 (10:05 +0100)]
x86/Intel: correct VFPCLASSP{S,D} handling when displacement is present

fits_in_disp8() can be called before ambiguous operands get resolved
or rejected (in process_suffix()), which requires that i.memshift be
non-negative to avoid an internal error. This case wasn't covered by
6c0946d0d28d ("x86: correct VFPCLASSP{S,D} operand size handling").

2 years agogas: rework handling of backslashes in quoted symbol names
Jan Beulich [Tue, 4 Jan 2022 09:05:17 +0000 (10:05 +0100)]
gas: rework handling of backslashes in quoted symbol names

Strange effects can result from the present handling, e.g.:

.if 1
"backslash\\":
.endif

yields first (correctly) "missing closing `"'" but then also "invalid
character '\' in mnemonic" and further "end of file inside conditional".
Symbols names ending in \ are in principle not expressable with that
scheme.

Instead of recording whether a backslash was seen, inspect the
subsequent character right away. Only accept \\ (meaning a single
backslash in the resulting symbol name) and \" (meaning an embedded
double quote in the resulting symbol name) for now, warning about any
other combination.

While perhaps not necessary immediately, also permit concatenated
strings to form a symbol name. This may become useful if going forward
we would want to support \<octal> or \x<hex> sequences, where closing
and re-opening quotes can be useful to delimit such sequences.

The ELF "Multibyte symbol names" test gets switched away from using
.set, as that would now also mean excluding nios2 and pru. By using
.equiv instead, even the existing #notarget can be dropped. (For h8300
the .section directive additionally needs attributes specified, to avoid
a target specific warning.)

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 4 Jan 2022 00:00:20 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years ago[gdb/cli] Improve show logging output
Tom de Vries [Mon, 3 Jan 2022 22:59:30 +0000 (23:59 +0100)]
[gdb/cli] Improve show logging output

Before commit 3b6acaee895 "Update more calls to add_prefix_cmd" we had the
following output for "show logging":
...
$ gdb -q -batch -ex "set trace-commands on" \
    -ex "set logging off" \
    -ex "show logging" \
    -ex "set logging on" \
    -ex "show logging"
+set logging off
+show logging
Future logs will be written to gdb.txt.
Logs will be appended to the log file.
Output will be logged and displayed.
Debug output will be logged and displayed.
+set logging on
+show logging
Currently logging to "gdb.txt".
Logs will be appended to the log file.
Output will be logged and displayed.
Debug output will be logged and displayed.
...

After that commit we have instead:
...
+set logging off
+show logging
debugredirect:  The logging output mode is off.
file:  The current logfile is "gdb.txt".
overwrite:  Whether logging overwrites or appends to the log file is off.
redirect:  The logging output mode is off.
+set logging on
+show logging
debugredirect:  The logging output mode is off.
file:  The current logfile is "gdb.txt".
overwrite:  Whether logging overwrites or appends to the log file is off.
redirect:  The logging output mode is off.
...
which gives less clear output for some subcommands.

OTOH, it's explicit about whether boolean values are on or off.

The new text seems to have been chosen to match the set/show help texts:
...
(gdb) help show logging
Show logging options.

List of show logging subcommands:

show logging debugredirect -- Show the logging debug output mode.
show logging file -- Show the current logfile.
show logging overwrite -- \
  Show whether logging overwrites or appends to the log file.
show logging redirect -- Show the logging output mode.
...

Make the show logging messages more clear, while still keep the boolean
values explicit, such that we have:
...
$ ./gdb.sh -q -batch -ex "show logging"
logging debugredirect:  off: \
  Debug output will go to both the screen and the log file.
logging enabled:  off: Logging is disabled.
logging file:  The current logfile is "gdb.txt".
logging overwrite:  off: Logging appends to the log file.
logging redirect:  off: Output will go to both the screen and the log file.
...

Tested on x86_64-linux.

2 years agoFix use of 'printf' in gdbtypes.c
Tom Tromey [Mon, 3 Jan 2022 18:04:01 +0000 (11:04 -0700)]
Fix use of 'printf' in gdbtypes.c

An earlier patch of mine, commit 64b7cc50 ("Remove
gdb_print_host_address") inadvertently changed a function in
gdbtypes.c to use printf rather than printf_filtered.  This patch
fixes the problem.

2 years agoFix regression in page-logging.exp
Tom Tromey [Mon, 3 Jan 2022 16:03:55 +0000 (09:03 -0700)]
Fix regression in page-logging.exp

Simon and Tom pointed out that page-logging.exp failed on their
machines.  Tom tracked this down to the "width" setting.  Since
there's no need in the test to change the width, it seems simplest to
remove the setting.  I confirmed that the test still fails if the fix
is backed out, ensuring that the test is still testing what it
purports to.

2 years agoSmall indentation fix in eval.c
Tom Tromey [Mon, 3 Jan 2022 14:55:20 +0000 (07:55 -0700)]
Small indentation fix in eval.c

I noticed that the AdaCore tree had a small divergence in eval.c -- it
had a fix for an indentation problem in binop_promote.  I'm checking
in this small fix as obvious.

2 years ago[gdb/testsuite] Handle for loop initial decl with gcc 4.8.5
Tom de Vries [Mon, 3 Jan 2022 14:36:36 +0000 (15:36 +0100)]
[gdb/testsuite] Handle for loop initial decl with gcc 4.8.5

When running test-case gdb.threads/schedlock-thread-exit.exp on a system with
system compiler gcc 4.8.5, I run into:
...
src/gdb/testsuite/gdb.threads/schedlock-thread-exit.c:33:3: error: \
  'for' loop initial declarations are only allowed in C99 mode
...

Fix this by:
- using -std=c99, or
- using -std=gnu99, in case that's required, or
- in the case of the jit test-cases, rewriting the for loops.

Tested on x86_64-linux, both with gcc 4.8.5 and gcc 7.5.0.

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 3 Jan 2022 00:00:20 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoUpdate copying.awk for _initialize declaration patch
Tom Tromey [Sun, 2 Jan 2022 19:16:37 +0000 (12:16 -0700)]
Update copying.awk for _initialize declaration patch

Commit 6c265988 ("gdb: add back declarations for _initialize
functions") modified copying.c, but not copying.awk.  This patch
updates copying.awk to backport the appropriate fix.  This way, if
copying.awk is run again, it will create the correct output.

I'm checking this in as obvious.

2 years agoUse filtered output in print_i387_ext
Tom Tromey [Sun, 2 Jan 2022 17:40:35 +0000 (10:40 -0700)]
Use filtered output in print_i387_ext

print_i387_ext mostly uses filtered output, but one call in the middle
of the function uses the _unfiltered form.  This patch fixes this
call.  I'm checking this in as obvious.

2 years agoUpdate year range in copyright notice of binutils files
Alan Modra [Sat, 1 Jan 2022 22:30:17 +0000 (09:00 +1030)]
Update year range in copyright notice of binutils files

The result of running etc/update-copyright.py --this-year, fixing all
the files whose mode is changed by the script, plus a build with
--enable-maintainer-mode --enable-cgen-maint=yes, then checking
out */po/*.pot which we don't update frequently.

The copy of cgen was with commit d1dd5fcc38ead reverted as that commit
breaks building of bfp opcodes files.

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 2 Jan 2022 00:00:18 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agogdb: copyright: fix a few comment typos
Mike Frysinger [Sat, 1 Jan 2022 18:48:25 +0000 (13:48 -0500)]
gdb: copyright: fix a few comment typos

2 years agosim: ppc: drop natural types
Mike Frysinger [Mon, 6 Dec 2021 07:39:42 +0000 (02:39 -0500)]
sim: ppc: drop natural types

These are almost entirely unused.  For the very few places using them,
replace with explicit signed types.  This matches what was done in the
common sim code.

2 years agosim: mips: clean up bad style/whitespace
Mike Frysinger [Sat, 13 Aug 2016 07:25:06 +0000 (15:25 +0800)]
sim: mips: clean up bad style/whitespace

This doesn't fix all the problems, but grabs a bunch of the more
obvious ones.

2 years agosim: tweak copyright lines for gnulib update-copyright
Mike Frysinger [Sat, 1 Jan 2022 18:13:18 +0000 (13:13 -0500)]
sim: tweak copyright lines for gnulib update-copyright

The regex it uses does not like so many leading spaces which causes
it to think the files lack copyright.  Trim them down so the script
can find & update them accordingly.

2 years agogdb: update sim mips testsuite copyright exemption
Mike Frysinger [Sat, 1 Jan 2022 18:03:51 +0000 (13:03 -0500)]
gdb: update sim mips testsuite copyright exemption

The sim testsuite was reorganized last year, so update the path.

2 years agounify 64-bit bfd checks
Mike Frysinger [Sat, 4 Dec 2021 05:28:14 +0000 (00:28 -0500)]
unify 64-bit bfd checks

Move the 64-bit bfd logic out of bfd/configure.ac and into bfd64.m4
under config so it can be shared between all the other subdirs.

This replaces want64 with enable_64_bit_bfd which was already being
declared, but not used directly.

2 years agoUpdate Copyright year in gdb/testsuite/gdb.arch/powerpc-power10.exp
Joel Brobecker [Sat, 1 Jan 2022 15:09:20 +0000 (19:09 +0400)]
Update Copyright year in gdb/testsuite/gdb.arch/powerpc-power10.exp

This commit updates the copyright year range in the script
gdb/testsuite/gdb.arch/powerpc-power10.exp. The update was
performed by running gdb/copyright.py again, to make sure
that the copyright year range will be automatically updated
in years forward.

2 years agoFix copyright header in gdb/testsuite/gdb.arch/powerpc-power10.exp
Joel Brobecker [Sat, 1 Jan 2022 15:07:32 +0000 (19:07 +0400)]
Fix copyright header in gdb/testsuite/gdb.arch/powerpc-power10.exp

The copyright year and holder line is slight malformed, missing
a space after a comma, and this is sufficient for gdb's
copyright.py script to miss this file during its automated
copyright year update.

This commit fixes this.

2 years agogdb/copyright.py: Add update-netbsd.sh to MULTIPLE_COPYRIGHT_HEADERS
Joel Brobecker [Sat, 1 Jan 2022 15:03:38 +0000 (19:03 +0400)]
gdb/copyright.py: Add update-netbsd.sh to MULTIPLE_COPYRIGHT_HEADERS

Add gdb/syscalls/update-netbsd.sh to the reminder printed
at the end of the execution listing all the files where
a manual update of the copyright header is needed. This
scripts contains some inline code which includes a copyright
header.

2 years agoManual copyright year update of various GDB files
Joel Brobecker [Sat, 1 Jan 2022 15:01:48 +0000 (19:01 +0400)]
Manual copyright year update of various GDB files

This commit updates the copyright year in some files where
we have a copyright year outside of the copyright year,
and thus are not included in gdb's copyright.py script.

2 years agoAutomatic Copyright Year update after running gdb/copyright.py
Joel Brobecker [Sat, 1 Jan 2022 14:56:03 +0000 (18:56 +0400)]
Copyright Year update after running gdb/copyright.py

This commit brings all the changes made by running gdb/copyright.py
as per GDB's Start of New Year Procedure.

For the avoidance of doubt, all changes in this commits were
performed by the script.

2 years agoUpdate Copyright Year in gdb, gdbserver and gdbreplay version output
Joel Brobecker [Sat, 1 Jan 2022 14:52:31 +0000 (18:52 +0400)]
Update Copyright Year in gdb, gdbserver and gdbreplay version output

This commit changes the copyright year printed by gdb, gdbserver
and gdbreplay when printing the tool's version.

2 years agoubsan: next_char_of_string signed integer overflow
Alan Modra [Sat, 1 Jan 2022 03:23:32 +0000 (13:53 +1030)]
ubsan: next_char_of_string signed integer overflow

Squash another totally useless fuzz report that I should have ignored.

* read.c (next_char_of_string): Avoid integer overflow.

2 years agoubsan: bfd_mach_o_build_commands shift exponent 64 is too large
Alan Modra [Sat, 1 Jan 2022 03:23:06 +0000 (13:53 +1030)]
ubsan: bfd_mach_o_build_commands shift exponent 64 is too large

* mach-o.c (bfd_mach_o_read_section_32): Limit alignment further.
(bfd_mach_o_read_section_64): Likewise.

2 years agoubsan: signed integer multiply overflow
Alan Modra [Sat, 1 Jan 2022 03:22:53 +0000 (13:52 +1030)]
ubsan: signed integer multiply overflow

9223371018427387904 * 2 cannot be represented in type 'long', yes, but
we don't care.

* expr.c (expr): Avoid signed overflow.

2 years agoasan: Null-dereference in _bfd_xcoff_copy_private_bfd_data
Alan Modra [Sat, 1 Jan 2022 03:22:38 +0000 (13:52 +1030)]
asan: Null-dereference in _bfd_xcoff_copy_private_bfd_data

sec->output_section will be NULL when objcopy removes sections.

* coff-rs6000.c (_bfd_xcoff_copy_private_bfd_data): Protect against
objcopy removing sections.

2 years agoubsan: integer overflow in section filepos subtraction
Alan Modra [Sat, 1 Jan 2022 03:22:26 +0000 (13:52 +1030)]
ubsan: integer overflow in section filepos subtraction

* elf.c (assign_file_positions_for_non_load_sections): Avoid
signed integer overflow.

2 years agoRemove unnecessary ELF_MINPAGESIZE defines
Alan Modra [Sat, 1 Jan 2022 03:20:37 +0000 (13:50 +1030)]
Remove unnecessary ELF_MINPAGESIZE defines

The idea of this patch is to make it easy to see which targets (just
sparc) have ELF_MINPAGESIZE != ELF_COMMONPAGESIZE.

* elf32-arm.c (ELF_MINPAGESIZE): Don't define.
* elf32-metag.c: Likewise.
* elfnn-aarch64.c: Likewise.
* elf64-x86-64.c: Likewise.  Also don't redefine a bunch of other
macros for l1om elf64-target.h use that are unchanged from default.

2 years agold-x86-64: Pass options to linker with "-Wl,"
H.J. Lu [Sat, 1 Jan 2022 03:42:44 +0000 (19:42 -0800)]
ld-x86-64: Pass options to linker with "-Wl,"

* testsuite/ld-x86-64/x86-64.exp: Pass options to linker with
"-Wl,".

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 1 Jan 2022 00:00:12 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoDo not call reinitialize_more_filter from avr_io_reg_read_command
Tom Tromey [Fri, 31 Dec 2021 20:28:26 +0000 (13:28 -0700)]
Do not call reinitialize_more_filter from avr_io_reg_read_command

avr_io_reg_read_command is an ordinary gdb command, and so should not
be calling reinitialize_more_filter.  This patch removes it.  I'm
checking this in as obvious.  Tested by rebuilding.

2 years agox86: Define check_relocs_failed in elfxx-x86.h
H.J. Lu [Fri, 31 Dec 2021 15:16:32 +0000 (07:16 -0800)]
x86: Define check_relocs_failed in elfxx-x86.h

* elf32-i386.c (check_relocs_failed): Moved to ...
* elfxx-x86.h (check_relocs_failed): Here.  New.
* elf64-x86-64.c (check_relocs_failed): Removed.

2 years agoDefine X86_PCREL_TYPE_P/X86_SIZE_TYPE_P in elfxx-x86.h
H.J. Lu [Fri, 31 Dec 2021 14:49:19 +0000 (06:49 -0800)]
Define X86_PCREL_TYPE_P/X86_SIZE_TYPE_P in elfxx-x86.h

* elf32-i386.c: Don't include "elf/i386.h".
(X86_PCREL_TYPE_P): Removed.
(X86_SIZE_TYPE_P): Likewise.
(elf_i386_check_relocs): Pass false to NEED_DYNAMIC_RELOCATION_P.
(elf_i386_relocate_section): Pass false to
GENERATE_DYNAMIC_RELOCATION_P and COPY_INPUT_RELOC_P.
* elf64-x86-64.c: Don't include "elf/x86-64.h".
(X86_PCREL_TYPE_P): Removed.
(X86_SIZE_TYPE_P): Likewise.
(elf_x86_64_check_relocs): Pass true to NEED_DYNAMIC_RELOCATION_P
and X86_PCREL_TYPE_P.
(elf_x86_64_relocate_section): Pass true to X86_PCREL_TYPE_P,
X86_SIZE_TYPE_P, GENERATE_DYNAMIC_RELOCATION_P and
COPY_INPUT_RELOC_P.
* elfxx-x86.c: Don't include "elf/i386.h" nor "elf/x86-64.h".
* elfxx-x86.h (X86_64_PCREL_TYPE_P): New.
(I386_PCREL_TYPE_P): Likewise.
(X86_PCREL_TYPE_P): Likewise.
(X86_64_SIZE_TYPE_P): Likewise.
(I386_SIZE_TYPE_P): Likewise.
(X86_SIZE_TYPE_P): Likewise.
(NEED_DYNAMIC_RELOCATION_P): Add IS_X86_64 and pass it to
X86_PCREL_TYPE_P.
(COPY_INPUT_RELOC_P): Likewise.
(GENERATE_DYNAMIC_RELOCATION_P): Add IS_X86_64, pass it to
X86_PCREL_TYPE_P and X86_SIZE_TYPE_P.

2 years agold: fix coff PE SEH
Tamar Christina [Fri, 31 Dec 2021 11:42:07 +0000 (11:42 +0000)]
ld: fix coff PE SEH

COFF_WITH_pex64 and COFF_WITH_peAArch64 can't be true at the same time.
That means that two conditionals that control the sorting of the .pdata section
became a falsum.

The testsuite doesn't catch this because the linker does the sorting and to link
you require library support from the unwinder so we can't test from binutils in
isolation.

bfd/ChangeLog:

2021-12-31  Tamar Christina  <tamar.christina@arm.com>

PR ld/28682
* peXXigen.c: Fix conditional.

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 31 Dec 2021 00:00:14 +0000 (00:00 +0000)]
Automatic date update in version.in

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

2 years agoUse filtered output in show callbacks
Tom Tromey [Wed, 29 Dec 2021 18:05:51 +0000 (11:05 -0700)]
Use filtered output in show callbacks

"show" command callbacks, like most ordinary gdb commands, should use
filtered output.  I found a few that did not, so this patch changes
them to use the filtered form.

2 years agoConsistently Use ui_file parameter to show callbacks
Tom Tromey [Tue, 28 Dec 2021 21:10:11 +0000 (14:10 -0700)]
Consistently Use ui_file parameter to show callbacks

I happened to notice that one "show" callback was printing to
gdb_stdout rather than to the passed-in ui_file parameter.  I went
through all such callbacks and fixed them to consistently use the
ui_file.

Regression tested on x86-64 Fedora 34.

2 years agoUse gdb_stdlog for MI debugging
Tom Tromey [Mon, 27 Dec 2021 06:23:57 +0000 (23:23 -0700)]
Use gdb_stdlog for MI debugging

When MI debugging is enabled, the logging output should be sent to
gdb_stdlog.  This is part of PR gdb/7233.

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

2 years agoUse debug_prefixed_printf_cond_nofunc in index-cache
Tom Tromey [Mon, 27 Dec 2021 01:36:36 +0000 (18:36 -0700)]
Use debug_prefixed_printf_cond_nofunc in index-cache

This changes index-cache.c to use debug_prefixed_printf_cond_nofunc.
As a side effect, logs are now written to gdb_stdlog.  This is part of
PR gdb/7233.

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

2 years agoSend minsym logging to gdb_stdlog
Tom Tromey [Mon, 27 Dec 2021 01:37:58 +0000 (18:37 -0700)]
Send minsym logging to gdb_stdlog

This changes minsyms.c to send logging output to gdb_stdlog.  This is
part of PR gdb/7233.

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

2 years agoUse gdb_stdlog for separate debug file logging
Tom Tromey [Sun, 26 Dec 2021 21:10:05 +0000 (14:10 -0700)]
Use gdb_stdlog for separate debug file logging

This changes the separate debug file logging code (spread across two
files) to use gdb_stdlog for its output.  This is part of PR gdb/7233.

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

2 years agoUse debug_prefixed_printf_cond_nofunc in machoread
Tom Tromey [Sun, 26 Dec 2021 21:03:41 +0000 (14:03 -0700)]
Use debug_prefixed_printf_cond_nofunc in machoread

This changes machoread.c to use debug_prefixed_printf_cond_nofunc.  As
a side effect, the logs are now written to gdb_stdlog.  This is part
of PR gdb/7233.

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

2 years agoUse debug_prefixed_printf_cond_nofunc in microblaze.c
Tom Tromey [Sat, 25 Dec 2021 05:19:10 +0000 (22:19 -0700)]
Use debug_prefixed_printf_cond_nofunc in microblaze.c

This changes microblaze.c to use the standard logging macro.  As a
side effect, logs will now go to gdb_stdlog.  This is part of PR gdb/7233.

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

2 years agoSend debugging data to gdb_stdlog in mips-linux-nat.c
Tom Tromey [Sat, 25 Dec 2021 05:08:18 +0000 (22:08 -0700)]
Send debugging data to gdb_stdlog in mips-linux-nat.c

This changes mips-linux-nat.c to send some logging output to
gdb_stdlog, rather than stdout.  This is part of PR gdb/7233.

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

2 years agoSend arch-utils error messages to gdb_stderr
Tom Tromey [Mon, 27 Dec 2021 04:51:25 +0000 (21:51 -0700)]
Send arch-utils error messages to gdb_stderr

This changes arch-utils.c to send some error messages to gdb_stderr.
This is part of PR gdb/7233.

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

2 years agoUse correct stream for process record output
Tom Tromey [Sun, 26 Dec 2021 20:41:36 +0000 (13:41 -0700)]
Use correct stream for process record output

The process record code often emits unfiltered output.  In some cases,
this output ought to go to gdb_stderr (but see below).  In other
cases, the output is guarded by a logging variable and so ought to go
to gdb_stdlog.  This patch makes these changes.

Note that in many cases, the output to stderr is followed by a
"return -1", which is how process record indicates an error.  It seems
to me that calling error here would be preferable, because, in many
cases, that's all the caller does when it sees a -1.  However, I
haven't made this change.

This is part of PR gdb/7233.

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

2 years agoSend jit.c errors to gdb_stderr
Tom Tromey [Sat, 25 Dec 2021 05:11:06 +0000 (22:11 -0700)]
Send jit.c errors to gdb_stderr

jit.c writes some error messages to gdb_stdout, but using gdb_stderr
is better.  This is part of PR gdb/7233.

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

2 years agoFix logging redirection bug with pager
Tom Tromey [Mon, 27 Dec 2021 17:53:16 +0000 (10:53 -0700)]
Fix logging redirection bug with pager

I noticed yesterday that if gdb output is redirected to a file, the
pager will still be active.  This is irritating, because the output
isn't actually visible -- just the pager prompt.  Looking in bugzilla,
I found that this had been filed 17 years ago, as PR cli/8798.

This patch fixes the bug.  It changes the pagination code to query the
particular ui-file to see if paging is allowable.  The ui-file
implementations are changed so that only the stdout implementation and
a tee (where one sub-file is stdout) can page.

Regression tested on x86-64 Fedora 34.

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

2 years agoRemove unusual use of core_addr_eq and core_addr_hash
Tom Tromey [Wed, 22 Dec 2021 17:30:16 +0000 (10:30 -0700)]
Remove unusual use of core_addr_eq and core_addr_hash

gdbtypes.h uses core_addr_eq and core_addr_hash in a weird way: taking
the address of a member and then passing this (as a void*) to these
functions.

It seems better to simply inline the ordinary code here.  CORE_ADDR is
a scalar so it can be directly compared, and the identity hash
function seems safe to assume as well.

After this, core_addr_eq and core_addr_hash are unused, so this patch
removes them.

2 years agogdb: Copy inferior properties in clone-inferior
Lancelot SIX [Mon, 6 Dec 2021 10:23:42 +0000 (05:23 -0500)]
gdb: Copy inferior properties in clone-inferior

This commit ensures that the following settings are cloned from one
inferior to the new one when processing the clone-inferior command:
  - inferior-tty
  - environment variables
  - cwd
  - args

Some of those parameters can be passed as command line arguments to GDB
(-args and -tty), so one could expect the clone-inferior to respect
those flags.  The following debugging session illustrates that:

    gdb -nx -quiet -batch \
         -ex "show args" \
         -ex "show inferior-tty" \
         -ex "clone-inferior" \
         -ex "inferior 2" \
         -ex "show args" \
         -ex "show inferior-tty" \
         -tty=/some/tty \
         -args echo foo bar
    Argument list to give program being debugged when it is started is "foo bar".
    Terminal for future runs of program being debugged is "/some/tty".
    [New inferior 2]
    Added inferior 2.
    [Switching to inferior 2 [<null>] (/bin/echo)]
    Argument list to give program being debugged when it is started is "".
    Terminal for future runs of program being debugged is "".

The other properties this commit copies on clone (i.e. CWD and the
environment variables) are included since they are related (in the sense
that they influence the runtime behavior of the program) even if they
cannot be directly set using command line switches.

There is a chance that this patch changes existing user workflow.  I
think that this change is mostly harmless.  If users want to start a new
inferior based on an existing one, they probably already propagate those
settings to the new inferior in some way.

Tested on x86_64-linux.

Change-Id: I3b1f28b662f246228b37bb24c2ea1481567b363d

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 29 Dec 2021 00:00:13 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoelf32-i386: Fix a typo in GOT comments
H.J. Lu [Tue, 28 Dec 2021 17:51:50 +0000 (09:51 -0800)]
elf32-i386: Fix a typo in GOT comments

Entry offsets in the global offset table are multiples of 4, not 8.

* elf32-i386.c (elf_i386_relocate_section): Fix a typo in GOT
comments.

2 years agobfd: Don't check non-thin archive member file size
H.J. Lu [Fri, 24 Dec 2021 23:42:43 +0000 (15:42 -0800)]
bfd: Don't check non-thin archive member file size

There is no need to check member file size for thin archive member.

* bfdio.c (bfd_bread): Don't check non-thin archive member file
size.

2 years agogas reloc sorting
Alan Modra [Mon, 20 Dec 2021 14:39:13 +0000 (01:09 +1030)]
gas reloc sorting

In some cases, eg. riscv_pre_output_hook, gas generates out-of-order
relocations.  Various places in the linker assume relocs are sorted
by increasing r_offset, which is normally the case.  Provide
GAS_SORT_RELOCS to handle unsorted relocs.

bfd/
PR 28709
* elf32-nds32.c (nds32_insertion_sort): Make static.
* elf32-nds32.h (nds32_insertion_sort): Delete declaration.
gas/
PR 28709
* write.c (write_relocs): Implement reloc sorting by r_offset
when GAS_SORT_RELOCS.
* config/tc-nds32.c (compar_relent, nds32_set_section_relocs): Delete.
* config/tc-nds32.h (nds32_set_section_relocs): Don't declare.
(SET_SECTION_RELOCS): Don't define.
(GAS_SORT_RELOCS): Define.
* config/tc-riscv.h (GAS_SORT_RELOCS): Define.

2 years agold: Fix testcase errors due to -shared not support.
jiawei [Thu, 23 Dec 2021 06:19:58 +0000 (14:19 +0800)]
ld: Fix testcase errors due to -shared not support.

Reviewed-by: Jim Wilson <jim.wilson.gcc@gmail.com>
ld/ChangeLog:

        * testsuite/ld-ctf/ctf.exp: Add shared lib check.
        * testsuite/ld-plugin/lto.exp: Add lto shared check.

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 28 Dec 2021 00:00:12 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoelf: Update comments for check_relocs in elf_backend_data
H.J. Lu [Mon, 27 Dec 2021 21:31:19 +0000 (13:31 -0800)]
elf: Update comments for check_relocs in elf_backend_data

Since

commit 5c3261b0e834647cf9eb555320e20871b7854f98
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Oct 16 03:49:54 2017 -0700

    ELF: Call check_relocs after opening all inputs

check_relocs is called after opening all inputs.

* elf-bfd.h (elf_backend_data::check_relocs): Update comments.

2 years agold: Remove emultempl/linux.em
H.J. Lu [Mon, 27 Dec 2021 18:06:57 +0000 (10:06 -0800)]
ld: Remove emultempl/linux.em

Remove emultempl/linux.em whose last usage was removed by

commit c65c21e1ffd1e02d9970a4bca0b7e384788a50f0
Author: Alan Modra <amodra@gmail.com>
Date:   Mon Apr 16 22:14:01 2018 +0930

    various i386-aout and i386-coff target removal

    Also tidies some other aout leftovers in binutils-common.exp.

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 27 Dec 2021 00:00:12 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 26 Dec 2021 00:00:06 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 25 Dec 2021 00:00:14 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoRemove gdb_print_host_address
Tom Tromey [Wed, 22 Dec 2021 17:28:37 +0000 (10:28 -0700)]
Remove gdb_print_host_address

gdb_print_host_address is just a simple wrapper around
fprintf_filtered.  However, it is readily replaced in all callers by a
combination of %s and call to host_address_to_string.  This also
simplifies the code, so I think it's worthwhile to remove this
function.

Regression tested on x86-64 Fedora 64.

2 years agoMove gdb_bfd_errmsg to gdb_bfd.c
Tom Tromey [Tue, 21 Dec 2021 23:24:16 +0000 (16:24 -0700)]
Move gdb_bfd_errmsg to gdb_bfd.c

gdb_bfd.c contains most of gdb's BFD-related utility functions.
However, gdb_bfd_errmsg is in utils.c.  It seemed better to me to move
this out of util.[ch] and into the BFD-related file instead.

Tested by rebuilding.