binutils-gdb.git
23 months ago[gdb/testsuite] Make gdb.base/longjmp.exp FAIL more stable across archs
Tom de Vries [Tue, 6 Dec 2022 11:01:46 +0000 (12:01 +0100)]
[gdb/testsuite] Make gdb.base/longjmp.exp FAIL more stable across archs

When running test-case gdb.base/longjmp.exp on x86_64-linux, the master
longjmp breakpoint is set using probes and the test-case passes:
...
(gdb) PASS: gdb.base/longjmp.exp: next to longjmp (1)
next^M
0x00000000004005cc      49        if (setjmp (env) == 0) /* patt1 */^M
(gdb) PASS: gdb.base/longjmp.exp: next over longjmp(1)
next^M
56            resumes++;^M
(gdb) PASS: gdb.base/longjmp.exp: next into else block (1)
...

However, if I disable
create_longjmp_master_breakpoint_probe, we have instead:
...
(gdb) PASS: gdb.base/longjmp.exp: next to longjmp (1)
next^M
56            resumes++;^M
(gdb) FAIL: gdb.base/longjmp.exp: next over longjmp(1)
...

At first glance, the failure mode doesn't look too bad: we stop
a few insns later than the passing scenario.

For contrast, if we do the same on powerpc64le, the failure mode is:
...
(gdb) PASS: gdb.base/longjmp.exp: next to longjmp (1)
next^M
^M
Breakpoint 3, main () at longjmp.c:59^M
59        i = 1; /* miss_step_1 */^M
(gdb) FAIL: gdb.base/longjmp.exp: next over longjmp(1)
...
Here we only stop because of running into the safety net breakpoint at
miss_step_1.

So, how does this happen on x86_64?  Let's look at the code:
...
4005c7: e8 94 fe ff ff    call 400460 <_setjmp@plt>
4005cc: 85 c0             test %eax,%eax
4005ce: 75 1e             jne  4005ee <main+0x3b>
4005d0: 8b 05 8e 0a 20 00 mov  0x200a8e(%rip),%eax # 601064 <longjmps>
4005d6: 83 c0 01          add  $0x1,%eax
4005d9: 89 05 85 0a 20 00 mov  %eax,0x200a85(%rip) # 601064 <longjmps>
4005df: be 01 00 00 00    mov  $0x1,%esi
4005e4: bf 80 10 60 00    mov  $0x601080,%edi
4005e9: e8 82 fe ff ff    call 400470 <longjmp@plt>
4005ee: 8b 05 74 0a 20 00 mov  0x200a74(%rip),%eax # 601068 <resumes>
...
The next over the longjmp call at 4005e9 is supposed to stop at the longjmp
target at 4005cc, but instead we stop at 4005ee, where we have the step-resume
breakpoint inserted by the next.  In other words, we accidentally "return"
from the longjmp call to the insn immediately after it (even though
a longjmp is a noreturn function).

Try to avoid this accident and make the failure mode on x86_64 the same as on
powerpc64le, by switching the then and else branch.

Tested on x86_64-linux.

23 months agogdb/riscv: correct dwarf to gdb register number mapping
Xiao Zeng [Tue, 6 Dec 2022 06:59:43 +0000 (14:59 +0800)]
gdb/riscv: correct dwarf to gdb register number mapping

According to the riscv psabi, the mapping relationship between the
DWARF registers and the machine registers is as follows:

  DWARF Number | Register Name | Description
  0 - 31       | x0 - x31      | Integer Registers
  32 - 63      | f0 - f31      | Floating-point Registers

This is not modelled quite right in riscv_dwarf_reg_to_regnum, the
DWARF register numbers 31 and 63 are not handled correctly due to a
use of '<' instead of '<='.  This commit fixes this issue.

23 months agox86: Remove unnecessary vex.w check for xh_mode in disassembler
Haochen Jiang [Mon, 5 Dec 2022 02:32:00 +0000 (10:32 +0800)]
x86: Remove unnecessary vex.w check for xh_mode in disassembler

For all the xh_mode usage in table, they are all using %XH, which will
print "{bad}" while EVEX.W=1. This makes this vex.w check unnecessary.

opcodes/ChangeLog:

* i386-dis.c (OP_E_memory): Remove vex.w check for xh_mode.

23 months agoGet rid of SEC_ELF_COMPRESS
Alan Modra [Tue, 6 Dec 2022 04:38:31 +0000 (15:08 +1030)]
Get rid of SEC_ELF_COMPRESS

This flag also isn't needed, except for some sanity checks which we
can omit.

* elf.c (elf_fake_sections): Don't set SEC_ELF_COMPRESS for
compressed debug sections, just leave sh_name as -1.
(assign_file_positions_for_non_load_sections),
(assign_file_positions_except_relocs): Decide whether a section
needs compressing and thus should not have its file offset set
by looking at sh_name.
(_bfd_elf_assign_file_positions_for_non_load): Similarly decide
which sections need compressing.
* elflink.c (bfd_elf_final_link): Don't test SEC_ELF_COMPRESS.
* merge.c (_bfd_write_merged_section): Likewise.
* section.c (SEC_ELF_COMPRESS): Don't define.
(SEC_ELF_PURECODE): Renumber.
* bfd-in2.h: Regenerate.

23 months agoGet rid of SEC_ELF_RENAME
Alan Modra [Tue, 6 Dec 2022 04:10:10 +0000 (14:40 +1030)]
Get rid of SEC_ELF_RENAME

SEC_ELF_RENAME is a flag used to effect section name changes when
compressing/decompressing zlib-gnu debug sections.  This can be
accomplished more directly in one of the objcopy specific bfd
functions.  Renaming for ld input is simplified too.  Ld input object
files always have BFD_DECOMPRESS set.

bfd/
* compress.c (bfd_convert_section_size): Rename to..
(bfd_convert_section_setup): ..this.  Handle objcopy renaming
of compressed/decompressed debug sections.
* elf.c (_bfd_elf_make_section_from_shdr): Only rename zdebug
input for linker.
(elf_fake_sections): Don't handle renaming of debug sections for
objcopy here.
* section.c (SEC_ELF_RENAME): Delete.
* bfd-in2.h: Regenerate.
binutils/
* objcopy.c (setup_section): Call bfd_convert_section_setup.
Don't call bfd_convert_section_size.

23 months agoCompression header enum
Alan Modra [Mon, 5 Dec 2022 22:13:31 +0000 (08:43 +1030)]
Compression header enum

Define an enum instead of using ELFCOMPRESS_ZLIB and ELFCOMPRESS_ZSTD
in bfd and binutils, and move some functions from bfd.c to compress.c.
When looking at the COFF/PE debug compression support, I wondered
about extending it to support zstd.  I likely won't do that, but
the compression header ch_type field isn't just ELF specific if these
headers are to be used in COFF/PE too.

bfd/
* bfd.c (bfd_update_compression_header),
(bfd_check_compression_header, bfd_get_compression_header_size),
(bfd_convert_section_size, bfd_convert_section_contents): Move to..
* compress.c: ..here.
(enum compression_type): New.  Use it throughout file.
* elf.c (_bfd_elf_make_section_from_shdr): Replace uses of
ELFCOMPRESS_ZLIB and ELFCOMPRESS_ZSTD with ch_compress_zlib and
ch_compress_zstd.
* bfd-in2.h: Regenerate.
binutils/
* readelf.c (process_section_headers, dump_section_as_strings),
(dump_section_as_bytes, load_specific_debug_section): Replace
uses of ELFCOMPRESS_ZLIB and ELFCOMPRESS_ZSTD with
ch_compress_zlib and ch_compress_zstd.

23 months agoLoongArch: Fix dynamic reloc not generated bug in some cases.
mengqinggang [Sat, 3 Dec 2022 07:34:35 +0000 (15:34 +0800)]
LoongArch: Fix dynamic reloc not generated bug in some cases.

bfd/ChangeLog:

* elfnn-loongarch.c (loongarch_elf_relocate_section): Likewise.

23 months agoPR29855, ch_type in bfd_init_section_decompress_status can be uninitialized
Alan Modra [Mon, 5 Dec 2022 22:07:52 +0000 (08:37 +1030)]
PR29855, ch_type in bfd_init_section_decompress_status can be uninitialized

PR 29855
* compress.c (bfd_init_section_decompress_status): Set ch_type
to zero for zlib-gnu case.

23 months agoAutomatic date update in version.in
GDB Administrator [Tue, 6 Dec 2022 00:00:38 +0000 (00:00 +0000)]
Automatic date update in version.in

23 months agogdb/linux-nat: add ptid parameter to linux_xfer_siginfo
Simon Marchi [Fri, 2 Dec 2022 20:09:25 +0000 (15:09 -0500)]
gdb/linux-nat: add ptid parameter to linux_xfer_siginfo

Make the inferior_ptid bubble up to linux_nat_target::xfer_partial.

Change-Id: I62dbc5734c26648bb465f449c2003c73751cd812

23 months agogdb/linux-nat: use l linux_nat_get_siginfo in linux_xfer_siginfo
Simon Marchi [Fri, 2 Dec 2022 20:09:24 +0000 (15:09 -0500)]
gdb/linux-nat: use l linux_nat_get_siginfo in linux_xfer_siginfo

I noticed we could reduce duplication a bit here.

Change-Id: If24e54d1dac71b46f7c1f68a18a073d4c084b644

23 months agogdb/linux-nat: check ptrace return value in linux_nat_get_siginfo
Simon Marchi [Fri, 2 Dec 2022 20:09:23 +0000 (15:09 -0500)]
gdb/linux-nat: check ptrace return value in linux_nat_get_siginfo

Not a big deal, but it seems strange to check errno instead of the
ptrace return value to know whether it succeeded.

Change-Id: If0a6d0280ab0e5ecb077e546af0d6fe489c5b9fd

23 months agogdb/linux-nat: don't memset siginfo on failure in linux_nat_get_siginfo
Simon Marchi [Fri, 2 Dec 2022 20:09:22 +0000 (15:09 -0500)]
gdb/linux-nat: don't memset siginfo on failure in linux_nat_get_siginfo

No caller cares about the value of *SIGINFO on failure.  It's also
documented in the function doc that *SIGINFO is uninitialized (I
understand "untouched") on failure.

Change-Id: I5ef38a5f58e3635e109b919ddf6f827f38f1225a

23 months agogdb/linux-nat: bool-ify linux_nat_get_siginfo
Simon Marchi [Fri, 2 Dec 2022 20:09:21 +0000 (15:09 -0500)]
gdb/linux-nat: bool-ify linux_nat_get_siginfo

Change return type to bool.

Change-Id: I1bf0360bfdd1b5994cd0f96c268d806f96fe51a4

23 months agogdb/linux-nat: use get_ptrace_pid in two spots
Simon Marchi [Fri, 2 Dec 2022 20:09:20 +0000 (15:09 -0500)]
gdb/linux-nat: use get_ptrace_pid in two spots

No behavior change expected.

Change-Id: Ifaa64ecd619483646b024fd7c62e571e92a8eedb

23 months agogdb/testsuite: remove perror calls when failing to run
Simon Marchi [Mon, 5 Dec 2022 21:38:24 +0000 (16:38 -0500)]
gdb/testsuite: remove perror calls when failing to run

I noticed that when running these two tests in sequence:

    Running /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.ada/arrayptr.exp ...
    ERROR: GDB process no longer exists
    ERROR: Couldn't run foo-all
    Running /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.ada/assign_1.exp ...

The results in gdb.sum are:

    Running /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.ada/arrayptr.exp ...
    PASS: gdb.ada/arrayptr.exp: scenario=all: compilation foo.adb
    ERROR: GDB process no longer exists
    UNRESOLVED: gdb.ada/arrayptr.exp: scenario=all: gdb_breakpoint: set breakpoint at foo.adb:40 (eof)
    ERROR: Couldn't run foo-all
    Running /home/smarchi/src/binutils-gdb/gdb/testsuite/gdb.ada/assign_1.exp ...
    UNRESOLVED: gdb.ada/assign_1.exp: changing the language to ada
    PASS: gdb.ada/assign_1.exp: set convenience variable $xxx to 1

The UNRESOLVED for arrayptr.exp is fine, as GDB crashes in that test,
while trying to run to main.  However, the UNRESOLVED in assign_1.exp
doesn't make sense, GDB behaves as expected in that test:

    (gdb) set lang ada^M
    (gdb) UNRESOLVED: gdb.ada/assign_1.exp: changing the language to ada
    print $xxx := 1^M
    $1 = 1^M
    (gdb) PASS: gdb.ada/assign_1.exp: set convenience variable $xxx to 1

The problem is that arrayptr.exp calls perror when failing to run to
main, then returns.  perror makes it so that the next test (as in
pass/fail) will be recorded as UNRESOLVED.  However, here, the next test
(as in pass/fail) is in the next test (as in .exp).  Hence the spurious
UNRESOLVED in assign_1.exp.

These perror when failing to run to X are not really useful, especially
since runto records a FAIL on error, by default.  Remove all the
perrors on runto failure I could find.

When there wasn't one already, add a return statement when failing to
run, to avoid running the test of the test unnecessarily.

I thought of adding a check ran between test (in gdb_finish
probably) where we would emit a warning if errcnt > 0, meaning a test
quit and left a perror "active".  However, reading that variable would
poke into the DejaGNU internals, not sure it's a good idea.

Change-Id: I2203df6d06e199540b36f56470d1c5f1dc988f7b

23 months agoAdd missing newline to gdbarch_tdep debugging output
Luis Machado [Mon, 5 Dec 2022 11:00:14 +0000 (11:00 +0000)]
Add missing newline to gdbarch_tdep debugging output

The missing newline causes testsuite issues because the gdb prompt gets output
to an unexpected location.

23 months agoPrevent an illegal memory access when comparing the prefix of a section name regexp.
Nick Clifton [Mon, 5 Dec 2022 14:57:17 +0000 (14:57 +0000)]
Prevent an illegal memory access when comparing the prefix of a section name regexp.

PR 29849
* ldlang.c (spec_match): Check that there is sufficient length in
the target name to match the spec's prefix.

23 months agotestsuite: support mold linker
Martin Liska [Mon, 5 Dec 2022 12:09:12 +0000 (13:09 +0100)]
testsuite: support mold linker

Mold linker demotes symbols like main to be local and the patch
adjusts expected output from nm.

Moreover, simplify the regex patterns.

23 months agogdbarch.py: Fix indentation in the generated set_gdbarch_* definitions
Thiago Jung Bauermann [Thu, 1 Dec 2022 17:18:06 +0000 (17:18 +0000)]
gdbarch.py: Fix indentation in the generated set_gdbarch_* definitions

Use as many tabs as possible for indentation and pad with spaces to keep
the argument aligned to the opening parenthesis in the line above.

Co-developed-by: Simon Marchi <simon.marchi@efficios.com>
Approved-By: Simon Marchi <simon.marchi@efficios.com>
23 months agogdbarch.py: Fix indentation in the generated gdbarch_dump function
Thiago Jung Bauermann [Thu, 1 Dec 2022 16:40:13 +0000 (16:40 +0000)]
gdbarch.py: Fix indentation in the generated gdbarch_dump function

Use tab for the first eight spaces of indentation, and align the gdb_printf
arguments to the open parenthesis of the function call.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
23 months agogdb: Update my email address in MAINTAINERS
Thiago Jung Bauermann [Fri, 2 Dec 2022 23:52:50 +0000 (23:52 +0000)]
gdb: Update my email address in MAINTAINERS

23 months agogas: add Dwarf line number test for .macro expansions
Jan Beulich [Mon, 5 Dec 2022 12:52:55 +0000 (13:52 +0100)]
gas: add Dwarf line number test for .macro expansions

Before fiddling with the code let's put in place a test covering what
PR/gas 16908 aimed at.

23 months agogas: squash (some) .linefile from listings
Jan Beulich [Mon, 5 Dec 2022 12:51:24 +0000 (13:51 +0100)]
gas: squash (some) .linefile from listings

Not so long ago we started to insert these artificially when expanding
certain macro-like constructs; zap them as cluttering what actually
results from user input.

23 months agogas: avoid inserting extra newline in buffer_and_nest()
Jan Beulich [Mon, 5 Dec 2022 12:50:27 +0000 (13:50 +0100)]
gas: avoid inserting extra newline in buffer_and_nest()

In "-alm" listings I've noticed an odd blank line following the inserted
.linefile one. This results from the explicit NL inserted being
redundant with the one left in place from the original input line by all
respective callers. Note that we need to compensate for the removed line
by bumping the directive argument (which in turn is decremented again in
s_linefile() before calling new_logical_line_flags(), and I have to
confess that when putting together the original change I was a little
puzzled by the imbalance of increments/decrements, but then I forgot to
actually go look for the cause).

While there also switch to sb_add_string() instead of effectively open-
coding it to some degree.

23 months agoArm: .noinit and .persistent are not supported for Linux targets
Jan Beulich [Mon, 5 Dec 2022 12:50:07 +0000 (13:50 +0100)]
Arm: .noinit and .persistent are not supported for Linux targets

Respective tests being run means guaranteed failures.

23 months agoFix an illegal memory access when parsing a corrupt VMS Alpha file.
Nick Clifton [Mon, 5 Dec 2022 11:11:44 +0000 (11:11 +0000)]
Fix an illegal memory access when parsing a corrupt VMS Alpha file.

PR 29848
* vms-alpha.c (parse_module): Fix potential out of bounds memory
access.

23 months agolibopcodes/mips: add support for disassembler styling
Andrew Burgess [Tue, 1 Nov 2022 14:09:17 +0000 (14:09 +0000)]
libopcodes/mips: add support for disassembler styling

This commit adds disassembler styling support for MIPS.  After this
commit objdump and GDB will style disassembler output.

This is a pretty straight forward change, we switch to use the
disassemble_info::fprintf_styled_func callback, and pass an
appropriate style through as needed.  No additional tricks were
needed (compared to say i386, or ARM).

Tested by running all of the objdump commands used by the gas
testsuite and manually inspecting the styled output, everything looks
reasonable, though I'm not a MIPS expert, so it is possible that I've
missed some corner cases.  Worst case though is that something will be
styled incorrectly, the actual content should be unchanged.

All the gas, ld, and binutils tests still pass for me.

23 months agoopcodes/mips: use .word/.short for undefined instructions
Andrew Burgess [Wed, 2 Nov 2022 15:53:43 +0000 (15:53 +0000)]
opcodes/mips: use .word/.short for undefined instructions

While working on disassembler styling for MIPS, I noticed that
undefined instructions are printed by the disassembler as raw number
with no assembler directive prefix (e.g. without .word or .short).

I think adding something like .word, or .short, helps to make it
clearer the size of the value that is being displayed, and is inline
with what many of the other libopcode disassemblers do.

In this commit I've added the .word and .short directives, and updated
all the tests that I spotted that failed as a result.

23 months agoRe: Renaming .debug to .zdebug and vice versa
Alan Modra [Mon, 5 Dec 2022 04:43:23 +0000 (15:13 +1030)]
Re: Renaming .debug to .zdebug and vice versa

* compress.c (bfd_debug_name_to_zdebug): Fix C++ compile error.
(bfd_zdebug_name_to_debug): Likewise.
* bfd-in2.h: Regenerate.

23 months agoAutomatic date update in version.in
GDB Administrator [Mon, 5 Dec 2022 00:00:28 +0000 (00:00 +0000)]
Automatic date update in version.in

23 months agoPR29846, segmentation fault in objdump.c compare_symbols
Alan Modra [Sun, 4 Dec 2022 11:45:40 +0000 (22:15 +1030)]
PR29846, segmentation fault in objdump.c compare_symbols

Fixes a fuzzed object file problem where plt relocs were manipulated
in such a way that two synthetic symbols were generated at the same
plt location.  Won't occur in real object files.

PR 29846
PR 20337
* objdump.c (compare_symbols): Test symbol flags to exclude
section and synthetic symbols before attempting to check flavour.

23 months agoCOFF compressed debug support
Alan Modra [Wed, 16 Nov 2022 21:28:31 +0000 (07:58 +1030)]
COFF compressed debug support

Since commit 4bea06d73c04 COFF support for compressed debug sections
has been broken due to the "flags" variable not getting SEC_HAS_CONTENTS.

* coffgen.c (make_a_section_from_file): Correct section flags
handling.  Delete extraneous condition.  Update error messages
to be the same as in elf.c.

23 months agoRenaming .debug to .zdebug and vice versa
Alan Modra [Sun, 4 Dec 2022 01:59:19 +0000 (12:29 +1030)]
Renaming .debug to .zdebug and vice versa

Move a couple of elf.c functions to compress.c.

* compress.c (bfd_debug_name_to_zdebug): New inline function.
(bfd_zdebug_name_to_debug): Likewise.
* elf.c (convert_debug_to_zdebug, convert_zdebug_to_debug): Delete.
(_bfd_elf_make_section_from_shdr, elf_fake_sections),
(_bfd_elf_assign_file_positions_for_non_load): Adjust to suit.
* coffgen.c (make_a_section_from_file): Use new inlines here.

23 months agoAutomatic date update in version.in
GDB Administrator [Sun, 4 Dec 2022 00:00:31 +0000 (00:00 +0000)]
Automatic date update in version.in

23 months agoRevert "ld: Add .note.GNU-stack to ld-plugin/dummy.s"
H.J. Lu [Sat, 3 Dec 2022 18:43:29 +0000 (10:43 -0800)]
Revert "ld: Add .note.GNU-stack to ld-plugin/dummy.s"

This reverts commit 44e59b5a7d8a874f6546a1471b8a003911853aa0.

It works only for ELF targets.

23 months agold: Add .note.GNU-stack to ld-plugin/dummy.s
H.J. Lu [Sat, 3 Dec 2022 17:41:31 +0000 (09:41 -0800)]
ld: Add .note.GNU-stack to ld-plugin/dummy.s

* testsuite/ld-plugin/dummy.s: Add .note.GNU-stack.

23 months agox86: Allow 16-bit register source for LAR and LSL
H.J. Lu [Sat, 3 Dec 2022 02:43:20 +0000 (18:43 -0800)]
x86: Allow 16-bit register source for LAR and LSL

Since LAR and LSL only access 16 bits of the source operand, regardless
of operand size, allow 16-bit register source for LAR and LSL, and always
disassemble LAR and LSL with 16-bit source operand.

gas/

PR gas/29844
* testsuite/gas/i386/i386.s: Add tests for LAR and LSL.
* testsuite/gas/i386/x86_64.s: Likewise.
* testsuite/gas/i386/intelbad.s: Remove "lar/lsl eax, ax".
* testsuite/gas/i386/i386-intel.d: Updated.
* testsuite/gas/i386/i386.d: Likewise.
* testsuite/gas/i386/intel-intel.d: Likewise.
* testsuite/gas/i386/intel.d: Likewise.
* testsuite/gas/i386/intelbad.l: Likewise.
* testsuite/gas/i386/x86_64-intel.d: Likewise.
* testsuite/gas/i386/x86_64.d: Likewise.

opcodes/

PR gas/29844
* i386-dis.c (MOD_0F02): Removed.
(MOD_0F03): Likewise.
(dis386_twobyte): Restore larS and lslS.
(mod_table): Remove MOD_0F02 and MOD_0F03.
* i386-opc.tbl: Allow 16-bit register source for LAR and LSL.
* i386-tbl.h: Regenerated.

23 months agoAutomatic date update in version.in
GDB Administrator [Sat, 3 Dec 2022 00:00:51 +0000 (00:00 +0000)]
Automatic date update in version.in

23 months agogdb/linux-nat: add pid parameter to linux_proc_xfer_memory_partial
Simon Marchi [Fri, 25 Nov 2022 21:27:15 +0000 (16:27 -0500)]
gdb/linux-nat: add pid parameter to linux_proc_xfer_memory_partial

Add a pid parameter to linux_proc_xfer_memory_partial, making the
inferior_ptid reference bubble up close to the target_ops::xfer_partial
boundary.  No behavior change expected.

Change-Id: I58171b00ee1bba1ea22efdbb5dcab8b1ab3aac4c

23 months agogdb: add some debug statements to solib-svr4.c
Simon Marchi [Mon, 21 Nov 2022 19:36:36 +0000 (14:36 -0500)]
gdb: add some debug statements to solib-svr4.c

Add a few debug statements that were useful to me when debugging why the
glibc probes interface wasn't getting used.

Change-Id: Ic20744f9fc80a90f196896b0829949411620c540

23 months agogdb: merge solib-frv aix-solib debug options into "set/show debug solib"
Simon Marchi [Mon, 28 Nov 2022 16:43:13 +0000 (11:43 -0500)]
gdb: merge solib-frv aix-solib debug options into "set/show debug solib"

solib implementations are typically used one at a time.  So it will be
rare that you will want to enable debug for one solib kind, and
absolutely want to keep the others disabled.  To make things simpler,
instead of adding separate variables / macros / commands for each solib
implementation, merge the existing ones (frv and aix) into a unified
"set/show debug solib", with the solib_debug_printf macro.

Change-Id: I6e18bbc7401724f37ae66681badb079d75ecf7fa

23 months agoAdd Jan Beulich as an x86_64 maintainer.
Nick Clifton [Fri, 2 Dec 2022 10:08:39 +0000 (10:08 +0000)]
Add Jan Beulich as an x86_64 maintainer.

23 months agox86: drop most OPERAND_TYPE_* (and rework the rest)
Jan Beulich [Fri, 2 Dec 2022 08:54:09 +0000 (09:54 +0100)]
x86: drop most OPERAND_TYPE_* (and rework the rest)

With the general use of C99 there's no need anymore to have i386-gen
produce these. For more frequently used ones introduce local #define-s,
while others are simply spelled out directly. While doing this move
some static constants into more narrow scopes.

Note that as a "side effect" this corrects type_names[]'es imm8s entry.

23 months agox86: simplify and slightly correct XCHG vs NOP checking
Jan Beulich [Fri, 2 Dec 2022 08:53:33 +0000 (09:53 +0100)]
x86: simplify and slightly correct XCHG vs NOP checking

For one, because of CheckRegSize, there's no need to check the size of
both (register) operands. And then in process_suffix() check opcode
space rather than the (potentially ambiguous) extension opcode.

23 months agox86: also use D for XCHG and TEST
Jan Beulich [Fri, 2 Dec 2022 08:53:07 +0000 (09:53 +0100)]
x86: also use D for XCHG and TEST

Leverage the C (commutative) attribute to also reduce the number of XCHG
and TEST templates we have. This way the reg <-> r/m (and reg <-> reg for
XCHG) forms can also be folded into a single template each, utilizing D.

23 months ago[gdb/testsuite] Prevent timeout in gdb.ada/float-bits.exp
Tom de Vries [Fri, 2 Dec 2022 07:56:42 +0000 (08:56 +0100)]
[gdb/testsuite] Prevent timeout in gdb.ada/float-bits.exp

Recent commit 32a5aa26256 ("[gdb/testsuite] Fix gdb.ada/float-bits.exp
for powerpc64le") started using command "maint print architecture", which
produces ~275 lines.

Rewrite the corresponding gdb_test_multiple to read line-by-line, to prevent
timeouts on slower test setups.

Note that this doesn't fix a timeout in the test-case on aarch64 due to:
...
gdbarch_dump: read_core_file_mappings = <0x817438>
(gdb) aarch64_dump_tdep: Lowest pc = 0x0x8000
...

Tested on x86_64-linux.

23 months agoAutomatic date update in version.in
GDB Administrator [Fri, 2 Dec 2022 00:00:35 +0000 (00:00 +0000)]
Automatic date update in version.in

23 months agoPowerPC, fix gdb.reverse/finish-reverse-bkpt.exp and gdb.reverse/next-reverse-bkpt...
Carl Love [Thu, 1 Dec 2022 19:39:45 +0000 (14:39 -0500)]
PowerPC, fix gdb.reverse/finish-reverse-bkpt.exp and gdb.reverse/next-reverse-bkpt-over-sr.exp

The tests set a break point with the command break *func.  This sets a
breakpoint on the first instruction of the function.  PowerPC uses
Global Entry Points (GEP) and Local Entry Points (LEP).  The first
instruction in the function is the GEP.  The GEP sets up register
r2 before reaching the LEP.  When the function is called with func() the
function is entered via the LEP and the test fails because GDB does not
see the breakpoint on the GEP.  However, if the function is called via a
function pointer, execution begins at the GEP as the test expects.

Currently finish-reverse-bkpt.exp uses source file finish-reverse.c and
next-reverse-bpkt-over-sr.exp uses source file step-reverse.c  A new
source file was created for tests finish-reverse-bkpt.exp and
next-reverse-bkpt-over-sr.exp.  The new files use the new function
pointer method to call the functions so the tests will work correctly on
both PowerPC with a GEP and LEP as well as on other systems.  The GEP is
the same as the LEP on non PowerPC systems.

The expect files were changed to use the new source files and to set the
initial break point for the rest of the test on the function pointer call
for the function.

This patch fixes two PowerPC test failures in each of the tests
gdb.reverse/finish-reverse-bkpt.exp and
gdb.reverse/next-reverse-bkpt-over-sr.exp.

Patch tested on PowerPC and Intel X86-64 with no regressions.

Reviewed-By: Bruno Larsen <blarsen@redhat.com>
23 months agoRemove call to registers_changed from windows-nat.c
Tom Tromey [Wed, 30 Nov 2022 20:50:27 +0000 (13:50 -0700)]
Remove call to registers_changed from windows-nat.c

I noticed that windows_nat_target::interrupt calls registers_changed.
However, I don't think there's any reason to do this, because this
will happen automatically when the inferior stop is processed.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
23 months agoRemove the_windows_nat_target global
Tom Tromey [Wed, 30 Nov 2022 15:51:09 +0000 (08:51 -0700)]
Remove the_windows_nat_target global

I belatedly realized that the "the_windows_nat_target" global isn't
really necessary.  It's only used in one place, where 'this' would be
simpler and clearer.  This patch removes the global entirely.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
23 months agogdb: make frame_register static
Simon Marchi [Wed, 30 Nov 2022 03:42:08 +0000 (22:42 -0500)]
gdb: make frame_register static

It is only used inside frame.c.

Change-Id: I44eb46a5992412f8f8b4954b2284b0ef3b549504

23 months agoAdd name canonicalization for C
Tom Tromey [Thu, 3 Nov 2022 19:49:17 +0000 (13:49 -0600)]
Add name canonicalization for C

PR symtab/29105 shows a number of situations where symbol lookup can
result in the expansion of too many CUs.

What happens is that lookup_signed_typename will try to look up a type
like "signed int".  In cooked_index_functions::expand_symtabs_matching,
when looping over languages, the C++ case will canonicalize this type
name to be "int" instead.  Then this method will proceed to expand
every CU that has an entry for "int" -- i.e., nearly all of them.  A
crucial component of this is that the caller, objfile::lookup_symbol,
does not do this canonicalization, so when it tries to find the symbol
for "signed int", it fails -- causing the loop to continue.

This patch fixes the problem by introducing name canonicalization for
C.  The idea here is that, by making C and C++ agree on the canonical
name when a symbol name can have multiple spellings, we avoid the bad
behavior in objfile::lookup_symbol (and any other such code -- I don't
know if there is any).

Unlike C++, C only has a few situations where canonicalization is
needed.  And, in particular, due to the lack of overloading (thus
avoiding any issues in linespec) and due to the way c-exp.y works, I
think that no canonicalization is needed during symbol lookup -- only
during symtab construction.  This explains why lookup_name_info is not
touched.

The stabs reader is modified on a "best effort" basis.

The DWARF reader needed one small tweak in dwarf2_name to avoid a
regression in dw2-unusual-field-names.exp.  I think this is adequately
explained by the comment, but basically this is a scenario that should
not occur in real code, only the gdb test suite.

lookup_signed_typename is simplified.  It used to search for two
different type names, but now gdb can search just for the canonical
form.

gdb.dwarf2/enum-type.exp needed a small tweak, because the
canonicalizer turns "unsigned integer" into "unsigned int integer".
It seems better here to use the correct C type name.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29105
Tested-by: Simon Marchi <simark@simark.ca>
Reviewed-by: Andrew Burgess <aburgess@redhat.com>
23 months agoRefactor cooked_index::do_finalize
Tom Tromey [Fri, 4 Nov 2022 20:11:56 +0000 (14:11 -0600)]
Refactor cooked_index::do_finalize

This refactors cooked_index::do_finalize, reordering an 'if' to make
it a little less redundant.  This change makes a subsequent patch
easier to read.

Reviewed-by: Andrew Burgess <aburgess@redhat.com>
23 months agoRemove language check from dwarf2_compute_name
Tom Tromey [Fri, 4 Nov 2022 20:08:13 +0000 (14:08 -0600)]
Remove language check from dwarf2_compute_name

dwarf2_compute_name has a redundant check of the CU's language -- this
is also checked in dwarf2_canonicalize_name.  Removing this slightly
simplifies a future patch.

Reviewed-by: Andrew Burgess <aburgess@redhat.com>
23 months agogdb/dwarf: add some QUIT macros
Simon Marchi [Thu, 1 Dec 2022 16:44:41 +0000 (11:44 -0500)]
gdb/dwarf: add some QUIT macros

While testing the fix for PR 29105, I noticed I couldn't ctrl-C my way
out of GDB expanding many symtabs.  GDB was busy in a loop in
cooked_index_functions::expand_symtabs_matching.  Add a QUIT there.  I
also happened to see a spot in
cooked_index_functions::expand_matching_symbols where a QUIT would be
useful too, since we iterate over a potentially big number of index
entries and expand CUs in the loop.  Add one there too.

Change-Id: Ie1d650381df7f944c16d841b3e592d2dce7306c3
Approved-By: Kevin Buettner <kevinb@redhat.com>
23 months agogdb: remove prune_threads in thread_db_target::update_thread_list
Simon Marchi [Tue, 29 Nov 2022 16:28:58 +0000 (11:28 -0500)]
gdb: remove prune_threads in thread_db_target::update_thread_list

Pedro mentioned that this prune_threads call in
thread_db_target::update_thread_list was not needed, and it was probably
an oversight to leave it there in the work following commit e8032dde10b
("Push pruning old threads down to the target").  That commit changed
the "find new threads" target operation to "update thread list", making
the target responsible of adding new threads and removing exited
threads, rather than just adding new threads.  Commit e8032dde10b moved
the prune_threads calls previously done in common code into each
target's update_thread_list method, in order to keep the existing
behavior, which is why this prune_threads call ended up there.

In the mean time, the linux-nat target was taught to update_thread_list,
and thread_db_target::update_thread_list defers to that for any live
inferior, so the prune_threads call is not needed there.  Otherwise, the
thread_db_target::update_thread_list implementation based on
td_ta_thr_iter_p only knows how to add new threads, not how to delete
exited threads, but that is only used for non-live inferiors, where
threads can't exit anyway.  So the prune_threads call is not needed for
that case either.

Change-Id: I127fd4f84c25086f97853dadf34c5cec6816840d
Approved-By: Pedro Alves <pedro@palves.net>
23 months agoopcodes: Remove i386-init.h and i386-tbl.h from HFILES
H.J. Lu [Tue, 29 Nov 2022 19:32:25 +0000 (11:32 -0800)]
opcodes: Remove i386-init.h and i386-tbl.h from HFILES

i386-init.h and i386-tbl.h are generated files.  There is nothing to
translate.  Remove them from HFILES (POTFILES).

* Makefile.am (HFILES): Remove i386-init.h and i386-tbl.h.
* Makefile.in: Regenerated.
* po/POTFILES.in: Likewise.

23 months agoAvoid timeouts in gdb.compile
Tom Tromey [Wed, 30 Nov 2022 18:27:10 +0000 (11:27 -0700)]
Avoid timeouts in gdb.compile

PR compile/29541 points out that some of the C++ tests in gdb.compile
will time out when the glibc debuginfo is installed.  This was
interfering with my hacking on gdb by making test runs extremely long,
so I looked into it.

Internally the bug seems to be that gdb tries to convert multiple
symbols named "var" via the compiler interface; one such symbol (I
didn't track it down too far) causes the C++ compiler plugin to crash.

Unfortunately, the crash is reported as a timeout, as the gdb side of
the plugin simply hangs.  This seems like a bug in the plugin RPC
mechanism and, worse, apparently when I wrote this stuff I didn't
really consider error reporting very much at all, so gdb can't really
detect failures in the first place.

Anyway... this patch works around the timeout by compiling a simple
test that should provoke this bug, and then using "untested" if it
notices a GCC crash.

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

23 months agoRemove obsolete check from skip_compile_feature_tests
Tom Tromey [Wed, 30 Nov 2022 17:09:20 +0000 (10:09 -0700)]
Remove obsolete check from skip_compile_feature_tests

skip_compile_feature_tests checks for "Command not supported on this
host", but this error was removed by commit e8d8cce6 ("Import mkdtemp
gnulib module, fix mingw build").  This patch removes the obsolete
test.

23 months agoRemove one copy of skip_compile_feature_tests
Tom Tromey [Wed, 30 Nov 2022 16:32:04 +0000 (09:32 -0700)]
Remove one copy of skip_compile_feature_tests

I noticed that there are two identical copies of
skip_compile_feature_tests in the test suite.  This removes one from
gdb.exp, in favor of the one in compile-support.exp.

23 months agobinutils: improve holes detection in .debug_loclists.
Clément Chigot [Thu, 1 Dec 2022 08:57:09 +0000 (09:57 +0100)]
binutils: improve holes detection in .debug_loclists.

The previous warnings about holes in .debug_loclists sections don't
take into account the headers of each CU and could include the locviews
if they precede the loclist.

The following warning can be triggered between two CU.
    ... <previous CU views> ...
    0000001d <End of list>

    0000002a v000000000000000 v000000000000000 location view pair
    0000002c v000000000000000 v000000000000000 location view pair

readelf: Warning: There is a hole [0x1e - 0x2e] in .debug_loclists section.
    0000002e v000000000000000 v000000000000000 views at 0000002a for:
    ...

But [0x1e - 0x2a] corresponds to the CU header and  [0x2a - 0x2e] are
the locviews.  Thus there is no hole here.

binutils/ChangeLog:

* dwarf.c (display_debug_loc): Adjust holes detections for
headers and locviews.

23 months agoFix verilog output when the width is > 1.
Nick Clifton [Thu, 1 Dec 2022 13:09:26 +0000 (13:09 +0000)]
Fix verilog output when the width is > 1.

PR 25202
bfd * bfd.c (VerilogDataEndianness): New variable.
(verilog_write_record): Use VerilogDataEndianness, if set, to
choose the endianness of the output.
(verilog_write_section): Adjust the address by the data width.

binutils* objcopy.c (copy_object): Set VerilogDataEndianness to the
endianness of the input file.
(copy_main): Verifiy the value set by the --verilog-data-width
option.
* testsuite/binutils-all/objcopy.exp: Add tests of the new behaviour.
* testsuite/binutils-all/verilog-I4.hex: New file.

23 months agox86: rework of match_template()'s suffix checking
Jan Beulich [Thu, 1 Dec 2022 09:00:26 +0000 (10:00 +0100)]
x86: rework of match_template()'s suffix checking

(Ab)using i386_opcode_modifier for this has been overkill, as the logic
doesn't really require the full structure. With the removal of
LONG_DOUBLE_MNEM_SUFFIX and No_ldSuf there's no good reason at all
anymore to pull out such a loop invariant: We're dealing a check of a
bit in the loop for a simple comparison. Do the original compares inside
the loop, thus also making it easier to understand what is actually
being checked.

23 months agox86: drop No_ldSuf
Jan Beulich [Thu, 1 Dec 2022 09:00:07 +0000 (10:00 +0100)]
x86: drop No_ldSuf

With LONG_DOUBLE_MNEM_SUFFIX gone there'salso no use for No_ldSuf
anymore.

23 months agox86/Intel: drop LONG_DOUBLE_MNEM_SUFFIX
Jan Beulich [Thu, 1 Dec 2022 08:59:39 +0000 (09:59 +0100)]
x86/Intel: drop LONG_DOUBLE_MNEM_SUFFIX

With the removal of its use for FPU insns the suffix is now finally
properly misnamed. Drop its use altogether, replacing it by a separate
boolean instead.

23 months agox86/Intel: restrict use of LONG_DOUBLE_MNEM_SUFFIX
Jan Beulich [Thu, 1 Dec 2022 08:59:11 +0000 (09:59 +0100)]
x86/Intel: restrict use of LONG_DOUBLE_MNEM_SUFFIX

As a comment near the top of match_template() already says: We really
only need this pseudo-suffix for far branch handling. Stop "deriving" it
for floating point insns. (Don't bother renaming the now properly
misnamed LONG_DOUBLE_MNEM_SUFFIX, to e.g. FAR_BRANCH_SUFFIX - it's going
to disappear anyway.)

23 months ago[gdb/testsuite] Wait longer for core generation
Tom de Vries [Thu, 1 Dec 2022 06:25:04 +0000 (07:25 +0100)]
[gdb/testsuite] Wait longer for core generation

When I run the gdb testsuite on a powerpc64le-linux system with (slow) nfs
file system, I run into timeouts due to core generation, like for instance:
...
(gdb) gcore $outputs/gdb.ada/task_switch_in_core/crash.gcore^M
FAIL: gdb.ada/task_switch_in_core.exp: save a corefile (timeout)
...

Fix this by using with_timeout_factor 3 in gdb_gcore_cmd.

Tested on powerpc64le-linux.
Approved-By: Tom Tromey <tom@tromey.com>
23 months ago[gdb/testsuite] Fix gdb.ada/float-bits.exp for powerpc64le
Tom de Vries [Thu, 1 Dec 2022 06:25:04 +0000 (07:25 +0100)]
[gdb/testsuite] Fix gdb.ada/float-bits.exp for powerpc64le

On powerpc64le-linux, I run into:
...
(gdb) print 16llf#4000921fb54442d18469898cc51701b8#^M
$9 = <invalid float value>^M
(gdb) FAIL: gdb.ada/float-bits.exp: print \
  16llf#4000921fb54442d18469898cc51701b8#
...

The problem is that we're using a hex string for the 128-bit IEEE quad long
double format, but the actual long double float format is:
...
gdbarch_dump: long_double_format = floatformat_ibm_long_double_little^M
...

Fix this by using the hex string obtained by compiling test.c:
...
long double a = 5.0e+25L;
...
like so:
...
$ gcc -mlittle test.c -c -g
...
and running gdb:
...
$ gdb -q -batch test.o -ex "p /x a"
$1 = 0xc1e1c000000000004544adf4b7320335
...
and likewise for -mbig:
...
$ gdb -q -batch test.o -ex "p /x a"
$1 = 0x4544adf4b7320335c1e1c00000000000
...

Tested on powerpc64le-linux.

I excercised the case of floatformat_ibm_long_double_big by
using "set endian big" in the test-case.

Note that for this patch to work correctly, recent commit aaa79cd62b8 ("[gdb]
Improve printing of float formats") is required.

PR testsuite/29816
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29816
Approved-By: Tom Tromey <tom@tromey.com>
23 months agoAutomatic date update in version.in
GDB Administrator [Thu, 1 Dec 2022 00:00:40 +0000 (00:00 +0000)]
Automatic date update in version.in

23 months ago[gdb/testsuite] Fix DUPLICATEs in s390-multiarch.exp
Tom de Vries [Wed, 30 Nov 2022 18:29:52 +0000 (19:29 +0100)]
[gdb/testsuite] Fix DUPLICATEs in s390-multiarch.exp

On s390x-linux, I run into:
...
DUPLICATE: gdb.arch/s390-multiarch.exp: Linux v2
DUPLICATE: gdb.arch/s390-multiarch.exp: Linux v2
DUPLICATE: gdb.arch/s390-multiarch.exp: Linux v2
...

Fix this by using with_test_prefix.

Tested on s390x-linux.

23 months ago[gdb/testsuite] Enable gdb.arch/s390-disassembler-options.exp for --enable-targets=all
Tom de Vries [Wed, 30 Nov 2022 17:49:16 +0000 (18:49 +0100)]
[gdb/testsuite] Enable gdb.arch/s390-disassembler-options.exp for --enable-targets=all

On s390x-linux, I run into:
...
DUPLICATE: gdb.arch/s390-disassembler-options.exp: \
  show disassembler-options esa
...

First, reproduce this on x86_64-linux with --enable-targets=all, by replacing
the test for 'istarget "s390*-*-*"' with a test for 'get_set_option_choices
"set architecture" "s390"'.

Fix the DUPLICATE by using with_test_prefix.

Also modernize the test-case by using clean_restart instead of gdb_exit/gdb_start.

Tested on x86_64-linux.

23 months agosection-select: Fix exclude-file-3
Michael Matz [Wed, 16 Nov 2022 15:28:01 +0000 (16:28 +0100)]
section-select: Fix exclude-file-3

this testcase wasn't correctly testing everything, it passed, even
though sections from an excluded file were included.  Fixing this
reveals a problem in the new section selector.  This fixes that as
well.

23 months agosection-select: Remove unused code
Michael Matz [Tue, 22 Nov 2022 14:24:43 +0000 (15:24 +0100)]
section-select: Remove unused code

walk_wild_file, hence walk_wild_section and walk_wild_section_handler
aren't called with the prefix tree.  Hence initialization of the latter
and all potential special cases for it aren't used anymore.  That also
removes the need to handler_data[] and some associated helper functions.
So, remove all of that.

23 months agosection-select: Implement a prefix-tree
Michael Matz [Wed, 14 Sep 2022 15:10:27 +0000 (17:10 +0200)]
section-select: Implement a prefix-tree

Now that we have a list of potentially matching sections per wild
statement we can actually pre-fill that one by going once over all input
sections and match their names against a prefix-tree that points to the
potentially matching wild statements.

So instead of looking at all sections names for each glob for each wild
statement we now look at the sections only once and then only check
against those globs that have a possibility of a match at all (usually
only one or two).

This pushes the whole section selection off the profiles.

23 months agosection-select: Completely rebuild matches
Michael Matz [Thu, 27 Oct 2022 12:50:40 +0000 (14:50 +0200)]
section-select: Completely rebuild matches

The check_relocs callback (and others) might have created new
section behind our back and some of them (e.g. on powerpc the
"linker stubs" .got) need to come in front of all others, despite
being created late (a symptom would be "TOC opt*" failing on powerpc).

This resets all section matches before updating for newly created
sections (i.e. completely rebuilds the matches).

23 months agosection-select: Lazily resolve section matches
Michael Matz [Thu, 28 Jul 2022 12:55:05 +0000 (14:55 +0200)]
section-select: Lazily resolve section matches

and remember the results.  Before this the order of section matching
is basically:

  foreach script-wild-stmt S
    foreach pattern P of S
      foreach inputfile I
        foreach section S of I
  match S against P
    if match: do action for S

And this process is done three or four times: for each top-level call to
walk_wild() or wild(), that is: check_input_sections, lang_gc_sections,
lang_find_relro_sections and of course map_input_to_output_sections.

So we iterate over all sections of all files many many times (for each
glob).  Reality is a bit more complicated (some special glob types don't
need the full iteration over all sections, only over all files), but
that's the gist of it.

For future work this shuffles the whole ordering a bit by lazily doing
the matching process and memoizing results, trading a little memory for
a 75% speedup of the overall section selection process.

This lazy resolution introduces a problem with sections added late
that's corrected in the next patch.

23 months agoBounds check access to Ada task state names
Tom Tromey [Wed, 16 Nov 2022 20:58:06 +0000 (13:58 -0700)]
Bounds check access to Ada task state names

While looking into Ada tasking a little, I noticed that no bounds
checking is done on accesses to the Ada task state names arrays.  This
isn't a problem currently, but if the runtime ever added numbers -- or
if there was some kind of runtime corruption -- it could cause a gdb
crash.

This patch adds range checking.  It also adds a missing _() call when
printing from the 'task_states' array.

23 months agoUse ui_file_up in mi_interp
Tom Tromey [Mon, 28 Nov 2022 21:05:05 +0000 (14:05 -0700)]
Use ui_file_up in mi_interp

This changes mi_interp to use ui_file_up rather than explicit
management.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
23 months agoRename fields of cli_interp_base::saved_output_files
Tom Tromey [Mon, 28 Nov 2022 21:01:35 +0000 (14:01 -0700)]
Rename fields of cli_interp_base::saved_output_files

This renames the fields of cli_interp_base::saved_output_files, as
requested by Simon.  I tried to choose names that more obviously
reflect what the field is used for.  I also added a couple of
comments.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
23 months ago[gdb] Improve printing of float formats
Tom de Vries [Wed, 30 Nov 2022 10:37:11 +0000 (11:37 +0100)]
[gdb] Improve printing of float formats

Currently, on x86_64, a little endian target, I get:
...
$ gdb -q -batch -ex "maint print architecture" | grep " = floatformat"
gdbarch_dump: bfloat16_format = floatformat_bfloat16_big
gdbarch_dump: double_format = floatformat_ieee_double_big
gdbarch_dump: float_format = floatformat_ieee_single_big
gdbarch_dump: half_format = floatformat_ieee_half_big
gdbarch_dump: long_double_format = floatformat_i387_ext
...
which suggests big endian.

This is due to this bit of code in pformat:
...
    /* Just print out one of them - this is only for diagnostics.  */
    return format[0]->name;
...

Fix this by using gdbarch_byte_order to pick the appropriate index, such that
we have the more accurate:
...
gdbarch_dump: bfloat16_format = floatformat_bfloat16_little
gdbarch_dump: half_format = floatformat_ieee_half_little
gdbarch_dump: float_format = floatformat_ieee_single_little
gdbarch_dump: double_format = floatformat_ieee_double_little
gdbarch_dump: long_double_format = floatformat_i387_ext
...

Tested on x86_64-linux.

23 months agoCorrect ordering problem in comm-data.exp
Alan Modra [Wed, 30 Nov 2022 06:39:20 +0000 (17:09 +1030)]
Correct ordering problem in comm-data.exp

* testsuite/ld-elf/comm-data.exp: Build libcomm-data.so before
attempting to read it to set ELF64.

23 months agoregen SRC-POTFILES.in
Alan Modra [Tue, 29 Nov 2022 21:36:19 +0000 (08:06 +1030)]
regen SRC-POTFILES.in

23 months agox86/Intel: adjustment to restricted suffix derivation
Jan Beulich [Wed, 30 Nov 2022 08:10:17 +0000 (09:10 +0100)]
x86/Intel: adjustment to restricted suffix derivation

In "x86/Intel: restrict suffix derivation" I think I screwed up
slightly, bringing a piece of code out of sync with its comment, and
resulting in a suffix potentially being derived when one isn't needed.

23 months agox86: clean up after removal of support for gcc <= 2.8.1
Jan Beulich [Wed, 30 Nov 2022 08:06:59 +0000 (09:06 +0100)]
x86: clean up after removal of support for gcc <= 2.8.1

At the very least a comment in process_operands() is stale. Beyond that
there are effectively two options:
1) It is possible that FADDP and FMULP were mistakenly not marked as
   being in need of dealing with the compiler anomaly, and hence the
   respective templates weren't removed at the time when they should
   have been.
2) It is also possible that there are indeed uses known beyond compiler
   generated output for these two commutative opcodes, and hence the
   templates need to stay.
To be on the safe side assume 2: Update the comment and fold the
templates into their "normal" ones (utilizing D), adjusting consuming
code accordingly.

For FMULP also add a comment paralleling a similar one FADDP has.

23 months agox86: drop FloatR
Jan Beulich [Wed, 30 Nov 2022 08:06:33 +0000 (09:06 +0100)]
x86: drop FloatR

There are just 4 templates using it, which can be easily identified by
other means, as D is set only on a very limited number of FPU templates.
Also move the respective conditional out of the code path taken by all
"reverse match" insns (it probably should have been this way already
before, to avoid the one conditional in the common case).

With this the templates which had FloatR dropped no longer differ from
their AT&T syntax + mnemonic counterparts - the only difference is now
which of the two would be recognized. For this, however, we don't need
two templates - we can simply arrange the condition for setting
Opcode_FloatR accordingly.

23 months agox86: extend FPU test coverage for AT&T / Intel mnemonic differences
Jan Beulich [Wed, 30 Nov 2022 08:05:57 +0000 (09:05 +0100)]
x86: extend FPU test coverage for AT&T / Intel mnemonic differences

Before touching the templates, let's ensure we actually cover things:
For one FSUB{,R} and FDIV{,R} would better be tested with operands in
both possible orders. And then -mmnemonic=intel wasn't tested at all.

23 months agosrc-release.sh: Fix gdb source tarball build failure due to libsframe
Joel Brobecker [Sun, 27 Nov 2022 12:43:42 +0000 (16:43 +0400)]
src-release.sh: Fix gdb source tarball build failure due to libsframe

This script was recently changed as follow:

    | commit e619dddb3a45780ae66d762756882a3b896b617d
    | Date:   Tue Nov 15 15:07:13 2022 -0800
    | Subject: src-release.sh: Add libsframe
    |
    | Add libsframe to the list of top level directories that will be included
    | in a release.

Since then, the gdb source tarball has been failing with the error
below during the "make configure-host configure-target" phase:

    | make[3]: *** No rule to make target '../libsframe/libsframe.la',
    |     needed by 'libbfd.la'.  Stop.
    | make[3]: Leaving directory '/tmp/gdb-public/bfd'

This patch fixes the issue by adding libsframe to the list of
GDB_SUPPORT_DIRS, similar to what was done for BINUTILS.

ChangeLog:

        * src-release.sh (GDB_SUPPORT_DIRS): Add libsframe.

23 months agoAutomatic date update in version.in
GDB Administrator [Wed, 30 Nov 2022 00:00:42 +0000 (00:00 +0000)]
Automatic date update in version.in

23 months ago[gdb/testsuite] Fix gdb.base/vla-optimized-out.exp for ppc64le
Tom de Vries [Tue, 29 Nov 2022 21:47:31 +0000 (22:47 +0100)]
[gdb/testsuite] Fix gdb.base/vla-optimized-out.exp for ppc64le

On powerpc64le-linux, I run into:
...
(gdb) PASS: gdb.base/vla-optimized-out.exp: o1: printed optimized out vla
p sizeof (a)^M
$2 = <optimized out>^M
(gdb) FAIL: gdb.base/vla-optimized-out.exp: o1: \
  printed size of optimized out vla
...

The problem happens as follows.

In order to find the size of the optimized out vla, gdb needs to evaluate:
...
<155> DW_AT_upper_bound : 13 byte block: f3 1 53 23 1 8 20 24 8 20 26 31 1c \
  (DW_OP_GNU_entry_value: (DW_OP_reg3 (r3)); DW_OP_plus_uconst: 1;
   DW_OP_const1u: 32; DW_OP_shl; DW_OP_const1u: 32; DW_OP_shra; DW_OP_lit1;
   DW_OP_minus)
...

When trying to evaluate DW_OP_GNU_entry_value, it looks for a call site
matching the pc, but doesn't find it:
...
$ gdb -q -batch outputs/gdb.base/vla-optimized-out/vla-optimized-out-o1 \
  -ex "break f1" -ex run -ex "set debug entry-values 1" -ex "print sizeof (a)"
Breakpoint 1 at 0x1000067c: file vla-optimized-out.c, line 34.

Breakpoint 1, f1 (i=5) at vla-optimized-out.c:34
34      }
DW_OP_entry_value resolving cannot find DW_TAG_call_site 0x100006b0 in main
$1 = <optimized out>
....

The call site lookup fails because the call site label .LVL4:
...
        bl f1    # 11   *call_value_nonlocal_aixdi      [length = 8]
        nop
.LVL4:
...
is not placed directly after the bl insn.  This is gcc PR target/107909.

However, after manually fixing the .s file we have instead:
...
Cannot find matching parameter at DW_TAG_call_site 0x10000690 at main
$1 = <optimized out>
...
due to the fact that the call site has no call site parameters.

The call site does have a reference to the corresponding function f1, with
parameter i, for which we find location list entries:
...
  0037 1000067c 10000680 (DW_OP_reg3 (r3))
  004a 10000680 10000690 (DW_OP_GNU_entry_value: (DW_OP_reg3 (r3));
                          DW_OP_stack_value)
...
and we could use the fact that the current pc is in the 1000067c-10000680
range, and that that the range starts at the start of the function, to deduce
that DW_OP_GNU_entry_value: (DW_OP_reg3 (r3)) == DW_OP_reg3 (r3).
But that's a non-trivial enhancement, filed as enhancement PR symtab/29836.

Fix this by allowing <optimized out> for target powerpc and the gcc compiler.

Reviewed-By: Carl Love <cel@us.ibm.com>
Tested-By: Carl Love <cel@us.ibm.com>
PR testsuite/29813
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29813

23 months agogdb/testsuite: make gdb_unload use gdb_test_multiple
Simon Marchi [Mon, 21 Nov 2022 14:30:55 +0000 (09:30 -0500)]
gdb/testsuite: make gdb_unload use gdb_test_multiple

In the failure seen by Philippe here:

  https://inbox.sourceware.org/gdb-patches/20221120173024.3647464-1-philippe.waroquiers@skynet.be/

gdb_unload crashed GDB, leaving no trace in the test results.  Change it
to use gdb_test_multiple, so that it leaves an UNRESOLVED result.  I
think it is good practice anyway.

Make it return the result of gdb_test_multiple directly, change
gdb.python/py-objfile.exp accordingly.

Change gdb.base/endian.exp as well to avoid duplicate test names.

Change gdb.base/gnu-debugdata.exp to avoid recording a test result,
since gdb_unload does it already now.

Change-Id: I59a1e4947691330797e6ce23277942547c437a48
Approved-By: Tom de Vries <tdevries@suse.de>
23 months agogdb/testsuite: make gdb_test_multiple return immediately if send_gdb fails
Simon Marchi [Mon, 21 Nov 2022 14:41:08 +0000 (09:41 -0500)]
gdb/testsuite: make gdb_test_multiple return immediately if send_gdb fails

In the failure seen by Philippe here:

  https://inbox.sourceware.org/gdb-patches/20221120173024.3647464-1-philippe.waroquiers@skynet.be/

... the testsuite only outputs PASSes, and an ERROR, resulting from an
uncaught exception.  This is a bit sneaky, because ERRORs are not
reported in the test summary.  In certain circumstances, it can be easy
to miss.

Normally, gdb_test_multiple outputs an UNRESOLVED when GDB crashes.  But
this is only if it manages to send the command, and it's that command
that crashes GDB.  Here, the ERROR is due to the fact that GDB had
already crashed by the time we entered gdb_test_multiple and tried to
send a command.  GDB was crashed by the previous "file" command, sent by
gdb_unload.  Because gdb_unload uses bare expect, it didn't record a
test failure when crashing GDB (this will be addressed separately).

In this patch, I propose to make gdb_test_multiple call unresolved
directly and return -1 send_gdb fails.  This way, if GDB is already
crashed by the time we enter gdb_test_multiple, it will leave a trace in
the test results in the form of an UNRESOLVED.  It will also spare us
the not-so-useful-in-my-opinion TCL backtrace.

Before, it looks like:

    ERROR: Couldn't send python print(objfile.filename) to GDB.
    ERROR: : spawn id exp9 not open
        while executing
    "expect {
    -i exp9 -timeout 10
            -re ".*A problem internal to GDB has been detected" {
                fail "$message (GDB internal error)"
                gdb_internal_error..."
        ("uplevel" body line 1)
        invoked from within
    "uplevel $body" NONE : spawn id exp9 not open

And after:

    Couldn't send python print(objfile.filename) to GDB.
    UNRESOLVED: gdb.python/py-objfile.exp: objfile.filename after objfile is unloaded

Change-Id: I72af8dc0d687826fc3f76911c27a9e5f91b677ba
Approved-By: Tom de Vries <tdevries@suse.de>
23 months agogprofng: remove unused gprofng/src/DbeSession.cc.1
Vladimir Mezentsev [Tue, 29 Nov 2022 04:51:19 +0000 (20:51 -0800)]
gprofng: remove unused gprofng/src/DbeSession.cc.1

23 months agoxtensa: allow dynamic configuration
Max Filippov [Wed, 3 May 2017 20:13:52 +0000 (13:13 -0700)]
xtensa: allow dynamic configuration

Import include/xtensa-dynconfig.h that defines XCHAL_* macros as fields
of a structure returned from the xtensa_get_config_v<x> function call.
Define that structure and fill it with default parameter values
specified in the include/xtensa-config.h.
Define reusable function xtensa_load_config that tries to load
configuration and return an address of an exported object from it.
Define functions xtensa_get_config_v{1,2} that use xtensa_load_config
to get structures xtensa_config_v{1,2}, either dynamically configured
or the default.

bfd/
* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Append
xtensa-dynconfig.c.
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac (xtensa_elf32_be_vec, xtensa_elf32_le_vec): Add
xtensa-dynconfig.lo to the tb.
* elf32-xtensa.c (xtensa-config.h): Replace #include with
xtensa-dynconfig.h.
(XSHAL_ABI, XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): Remove
definitions.
* xtensa-dynconfig.c: New file.
* xtensa-isa.c (xtensa-dynconfig.h): New #include.
(xtensa_get_modules): New function.
(xtensa_isa_init): Call xtensa_get_modules instead of taking
address of global xtensa_modules.

gas/
* config/tc-xtensa.c (xtensa-config.h): Replace #include with
xtensa-dynconfig.h.
(XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0, XTENSA_MARCH_EARLIEST):
Remove definitions.
* config/tc-xtensa.h (xtensa-config.h): Replace #include with
xtensa-dynconfig.h.
* config/xtensa-relax.c (xtensa-config.h): Replace #include with
xtensa-dynconfig.h.
(XCHAL_HAVE_WIDE_BRANCHES): Remove definition.

include/
* xtensa-dynconfig.h: New file.

ld/
* emultempl/xtensaelf.em (xtensa-config.h): Replace #include
with xtensa-dynconfig.h.
(XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): Remove definitions.

23 months agoAutomatic date update in version.in
GDB Administrator [Tue, 29 Nov 2022 00:00:28 +0000 (00:00 +0000)]
Automatic date update in version.in

23 months agogdb/testsuite: remove use of then keyword from library files
Andrew Burgess [Mon, 14 Nov 2022 14:45:05 +0000 (14:45 +0000)]
gdb/testsuite: remove use of then keyword from library files

The canonical form of 'if' in modern TCL is 'if {} {}'.  But there's
still a bunch of places in the testsuite where we make use of the
'then' keyword, and sometimes these get copies into new tests, which
just spreads poor practice.

This commit removes all use of the 'then' keyword from the testsuite
library files (in boards/, config/, and lib/).  Previous commits have
removed all uses of the 'then' keyword from the test script files,
this commit just cleans up the library files.

There should be no changes in what is tested after this commit.

23 months agogdb/testsuite: remove use of then keyword from gdb.*/*.exp scripts
Andrew Burgess [Mon, 14 Nov 2022 14:31:52 +0000 (14:31 +0000)]
gdb/testsuite: remove use of then keyword from gdb.*/*.exp scripts

The canonical form of 'if' in modern TCL is 'if {} {}'.  But there's
still a bunch of places in the testsuite where we make use of the
'then' keyword, and sometimes these get copies into new tests, which
just spreads poor practice.

This commit removes all use of the 'then' keyword from the remaining
gdb.*/*.exp scripts.  Previous commits have done the bulk of this
removal, this commit just handles the remaining directories that each
contain a low number of instances.

There should be no changes in what is tested after this commit.

23 months agogdb/testsuite: remove use of then keyword from gdb.multi/*.exp
Andrew Burgess [Mon, 14 Nov 2022 14:28:22 +0000 (14:28 +0000)]
gdb/testsuite: remove use of then keyword from gdb.multi/*.exp

The canonical form of 'if' in modern TCL is 'if {} {}'.  But there's
still a bunch of places in the testsuite where we make use of the
'then' keyword, and sometimes these get copies into new tests, which
just spreads poor practice.

This commit removes all use of the 'then' keyword from the gdb.multi/
test script directory.

There should be no changes in what is tested after this commit.

23 months agogdb/testsuite: remove use of then keyword from gdb.fortran/*.exp
Andrew Burgess [Mon, 14 Nov 2022 14:24:37 +0000 (14:24 +0000)]
gdb/testsuite: remove use of then keyword from gdb.fortran/*.exp

The canonical form of 'if' in modern TCL is 'if {} {}'.  But there's
still a bunch of places in the testsuite where we make use of the
'then' keyword, and sometimes these get copies into new tests, which
just spreads poor practice.

This commit removes all use of the 'then' keyword from the gdb.fortran/
test script directory.

There should be no changes in what is tested after this commit.

23 months agogdb/testsuite: remove use of then keyword from gdb.disasm/*.exp
Andrew Burgess [Mon, 14 Nov 2022 14:22:46 +0000 (14:22 +0000)]
gdb/testsuite: remove use of then keyword from gdb.disasm/*.exp

The canonical form of 'if' in modern TCL is 'if {} {}'.  But there's
still a bunch of places in the testsuite where we make use of the
'then' keyword, and sometimes these get copies into new tests, which
just spreads poor practice.

This commit removes all use of the 'then' keyword from the gdb.disasm/
test script directory.

There should be no changes in what is tested after this commit.