]> git.ipfire.org Git - thirdparty/binutils-gdb.git/log
thirdparty/binutils-gdb.git
8 months agogdb/m2: add builtin procedure function ADR
Gaius Mulley [Sun, 6 Oct 2024 19:40:59 +0000 (20:40 +0100)] 
gdb/m2: add builtin procedure function ADR

This patch introduces ADR to the Modula-2 language interface.
It return the address of the parameter supplied.
The patch also contains a dejagnu test for ADR.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
8 months agogdb/MAINTAINERS: update my email address
Gaius Mulley [Sun, 6 Oct 2024 19:08:04 +0000 (20:08 +0100)] 
gdb/MAINTAINERS: update my email address

Sync the maintainers file with my new email address.

8 months ago[gdb] Rerun spellcheck.sh
Tom de Vries [Sun, 6 Oct 2024 06:07:31 +0000 (08:07 +0200)] 
[gdb] Rerun spellcheck.sh

Fix the following common misspellings:
...
completetion -> completion
inital -> initial
...

8 months ago[gdb] Fix more common misspellings
Tom de Vries [Sun, 6 Oct 2024 05:59:48 +0000 (07:59 +0200)] 
[gdb] Fix more common misspellings

Fix the following common misspellings:
...
addres -> address, adders
behavour -> behavior, behaviour
intented -> intended, indented
ther -> there, their, the
throught -> thought, through, throughout
...

Tested on x86_64-linux.

8 months ago[gdb] Fix common misspellings
Tom de Vries [Sun, 6 Oct 2024 05:59:48 +0000 (07:59 +0200)] 
[gdb] Fix common misspellings

Fix the following common misspellings:
...
accidently -> accidentally
additonal -> additional
addresing -> addressing
adress -> address
agaisnt -> against
albiet -> albeit
arbitary -> arbitrary
artifical -> artificial
auxillary -> auxiliary
auxilliary -> auxiliary
bcak -> back
begining -> beginning
cannonical -> canonical
compatiblity -> compatibility
completetion -> completion
diferent -> different
emited -> emitted
emiting -> emitting
emmitted -> emitted
everytime -> every time
excercise -> exercise
existance -> existence
fucntion -> function
funtion -> function
guarentee -> guarantee
htis -> this
immediatly -> immediately
layed -> laid
noone -> no one
occurances -> occurrences
occured -> occurred
originaly -> originally
preceeded -> preceded
preceeds -> precedes
propogate -> propagate
publically -> publicly
refering -> referring
substract -> subtract
substracting -> subtracting
substraction -> subtraction
taht -> that
targetting -> targeting
teh -> the
thier -> their
thru -> through
transfered -> transferred
transfering -> transferring
upto -> up to
vincinity -> vicinity
whcih -> which
whereever -> wherever
wierd -> weird
withing -> within
writen -> written
wtih -> with
doesnt -> doesn't
...

Tested on x86_64-linux.

8 months ago[gdb/contrib] Add spellcheck.sh
Tom de Vries [Sun, 6 Oct 2024 05:59:48 +0000 (07:59 +0200)] 
[gdb/contrib] Add spellcheck.sh

I came across a table containing common misspellings [1], and wrote a script to
detect and correct these misspellings.

The table also contains entries that have alternatives, like this:
...
addres->address, adders
...
and for those the script prints a TODO instead.

The script downloads the webpage containing the table, extracts the table and
caches it in .git/wikipedia-common-misspellings.txt to prevent downloading it
over and over again.

Example usage:
...
$ gdb/contrib/spellcheck.sh gdb*
...

ChangeLog files are silently skipped.

Checked with shellcheck.

Tested on x86_64-linux, by running it on the gdb* dirs on doing a build and
test run.

The results of running it are in the two following patches.

Reviewed-By: Andrew Burgess <aburgess@redhat.com>
Approved-By: Tom Tromey <tom@tromey.com>
[1] https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines

8 months agoAutomatic date update in version.in
GDB Administrator [Sun, 6 Oct 2024 00:00:12 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agoobjcopy fixes for commit 68bbe1183379
Alan Modra [Sat, 5 Oct 2024 01:26:20 +0000 (10:56 +0930)] 
objcopy fixes for commit 68bbe1183379

* objcopy.c (is_specified_symbol): Handle NULL name.
(filter_symbols): Drop syms with a NULL name.

8 months agoelf.c and elflink.c fixes for commit 68bbe1183379
Alan Modra [Sat, 5 Oct 2024 01:09:17 +0000 (10:39 +0930)] 
elf.c and elflink.c fixes for commit 68bbe1183379

Plus some tidies to swap_out_syms.

* elf.c (swap_out_syms): Handle NULL sym name.  Use correct type
for return of _bfd_elf_strtab_add.  Simplify.
* elflink.c (bfd_elf_match_symbols_in_sections): Handle NULL
sym name.

8 months agoAutomatic date update in version.in
GDB Administrator [Sat, 5 Oct 2024 00:00:12 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agogdb segv in elfread.c:elf_rel_plt_read
Alan Modra [Thu, 3 Oct 2024 22:17:05 +0000 (07:47 +0930)] 
gdb segv in elfread.c:elf_rel_plt_read

After commit 68bbe1183379, ELF symbols read via bfd_canonicalize_symtab
and similar functions which have bad st_name fields will have NULL in
the name rather than "(null)".  gdb.base/bfd-errors.exp deliberately
creates a faulty shared library with st_name pointing outside of
.dynsym for some symbols, and thus now results in NULL symbol names.
This triggers a segv on string_buffer.assign(name).  Fix that.

8 months agodlltool fixes for commit 68bbe1183379
Alan Modra [Fri, 4 Oct 2024 12:22:53 +0000 (21:52 +0930)] 
dlltool fixes for commit 68bbe1183379

For some reason, dlltool supports mcore-elf input files.

* dlltool.c (filter_symbols): Drop symbols with NULL names.
(identify_member_contains_symname): Don't consider symbols
with NULL names.

8 months agois_target_special_symbol fixes for commit 68bbe1183379
Alan Modra [Fri, 4 Oct 2024 07:34:59 +0000 (17:04 +0930)] 
is_target_special_symbol fixes for commit 68bbe1183379

* elf.c (_bfd_elf_is_local_label_name): Don't segv on NULL name.
* elf32-v850.c (v850_elf_is_local_label_name): Likewise.
* elfnn-riscv.c (riscv_elf_is_target_special_symbol): Likewise.

8 months agoget_synthetic_symtab fixes for commit 68bbe1183379
Alan Modra [Fri, 4 Oct 2024 04:00:09 +0000 (13:30 +0930)] 
get_synthetic_symtab fixes for commit 68bbe1183379

Given that relocation symbol name can now be NULL for ELF, adjust
various get_synthetic_symtab routines so they don't segfault.

* elf.c (_bfd_elf_get_synthetic_symtab): Cope with sym->name
possibly being NULL.
* elf32-arm.c (elf32_arm_get_synthetic_symtab): Likewise.
* elf32-ppc.c (ppc_elf_get_synthetic_symtab): Likewise.
* elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Likewise.
* elfxx-mips.c (_bfd_mips_elf_get_synthetic_symtab): Likewise.
* elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Likewise.

8 months agobfd_elf_sym_name_raw
Alan Modra [Fri, 4 Oct 2024 07:07:35 +0000 (16:37 +0930)] 
bfd_elf_sym_name_raw

Many uses of bfd_elf_sym_name report errors.  They ought to not return
a NULL, as was the case prior to commit 68bbe1183379.  Introduce a new
function for cases where we'd like to know there is a problem with a
symbol st_name.

* elf-bfd.h  (bfd_elf_sym_name_raw): Declare.
* elf.c (bfd_elf_sym_name_raw): New function.
(bfd_elf_sym_name): Revert to behaviour prior to 68bbe1183379,
but returning "<null>" rather than "(null)" for st_name errors.
(group_signature): Use bfd_elf_sym_name_raw.
* elfcode.h (elf_slurp_symbol_table): Likewise.
* elf32-i386.c (elf_i386_scan_relocs): Whitespace.

8 months agogas: hide emulation struct format_ops instances when not needed
Jan Beulich [Fri, 4 Oct 2024 07:42:45 +0000 (09:42 +0200)] 
gas: hide emulation struct format_ops instances when not needed

Most targets don't even support emulations, so this data (and certain
functions) are entirely dead code for them.

8 months agox86: prune OBJ_MAYBE_... uses
Jan Beulich [Fri, 4 Oct 2024 07:42:13 +0000 (09:42 +0200)] 
x86: prune OBJ_MAYBE_... uses

With the removal of emulations, OBJ_MAYBE_... can no longer be defined.
Tidy code wherever they're used, which also includes the dropping of
most IS_ELF and uses and checks of OUTPUT_FLAVOR.

Where touching such constructs anyway, also drop TE_PEP checks when used
together with TE_PE ones (the former implies the latter).

8 months agox86: drop largely defunct gas emulations
Jan Beulich [Fri, 4 Oct 2024 07:41:38 +0000 (09:41 +0200)] 
x86: drop largely defunct gas emulations

Both ELF and COFF have various sub-flavors, each of which would then
require its own emulation: Right now when configuring a COFF/PE
secondary target (with perhaps an ELF primary one), one gets plain COFF
emulation rather than COFF/PE one.

As such a multitude of emulations would be unwieldy (and likely fragile)
drop gas emulations altogether instead.

8 months agoinclude: de-duplicate i386.h and x86_64.h
Jan Beulich [Fri, 4 Oct 2024 07:39:36 +0000 (09:39 +0200)] 
include: de-duplicate i386.h and x86_64.h

Move common definitions to a new x86.h, thus allowing gas'es obj-coff.h
to include just that, getting rid of a TE_PEP compile-time dependency.

8 months agogas: drop generate_asm_lineno emulation hook
Jan Beulich [Fri, 4 Oct 2024 07:38:05 +0000 (09:38 +0200)] 
gas: drop generate_asm_lineno emulation hook

It's not wired up, so can't be used.

8 months agogas: don't use COFF-specific SF_SET_LOCAL() directly from read.c
Jan Beulich [Fri, 4 Oct 2024 07:37:37 +0000 (09:37 +0200)] 
gas: don't use COFF-specific SF_SET_LOCAL() directly from read.c

Make this a proper obj-format hook instead.

8 months agogas/dw2gencfi: correct .sframe section conditional
Jan Beulich [Fri, 4 Oct 2024 07:36:56 +0000 (09:36 +0200)] 
gas/dw2gencfi: correct .sframe section conditional

While originally this was in preparation of a subsequent change making
SUPPORT_FRAME_LINKONCE potentially dependent on a global variable, the
construct appears unlikely to have been correct in the first place: The
variable would have been passed reliably uninitialized when
SUPPORT_FRAME_LINKONCE is build-time true.

While there correct indentation of the parameters passed to
get_cfi_seg().

8 months agogas: put emul decls in emul.h
Jan Beulich [Fri, 4 Oct 2024 07:36:24 +0000 (09:36 +0200)] 
gas: put emul decls in emul.h

The individual struct emulation instances shouldn't be declared in a .c
file; it and the producers of the symbols want to both see the
declarations, so declarations and definitions don't go out of sync. Move
these declarations to emul.h.

While there also adjust the conditional around this_format: That symbol
is never #define-d anywhere, and it's needed only when USE_EMULATIONS is
defined. (Really, when obj-multi isn't in use, it also is effectively
only ever written to.)

8 months agogas: drop unused fields from struct emulation
Jan Beulich [Fri, 4 Oct 2024 07:35:56 +0000 (09:35 +0200)] 
gas: drop unused fields from struct emulation

Neither .match not .bfd_name appear to ever have been used in the last
about 25 years. Purge them.

8 months agoMAINTAINERS: move M R Swami Reddy to Past Maintainers
Jan Beulich [Fri, 4 Oct 2024 07:34:11 +0000 (09:34 +0200)] 
MAINTAINERS: move M R Swami Reddy to Past Maintainers

He/she cannot be reached at the given address anymore, and the name is
apparently too common to identify the person to attempt to establish
another contact. Sadly this orphans the CR16 and CRx ports.

8 months agoMAINTAINERS: move Matt Thomas to Past Maintainers
Jan Beulich [Fri, 4 Oct 2024 07:33:49 +0000 (09:33 +0200)] 
MAINTAINERS: move Matt Thomas to Past Maintainers

Matt cannot be reached at the @netbsd.org address anymore, and I was
unable to find another one, even with the help of the NetBSD community
(where his resigning was announced over 4 years ago [1]).

[1] http://mail-index.netbsd.org/netbsd-announce/2020/05/07/msg000314.html

8 months agoAutomatic date update in version.in
GDB Administrator [Fri, 4 Oct 2024 00:00:11 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agogdb-dap: disable events when deleting breakpoints
oltolm [Sat, 28 Sep 2024 09:35:04 +0000 (11:35 +0200)] 
gdb-dap: disable events when deleting breakpoints

when I disable a breakpoint in VS Code the breakpoint is removed
instead. I compared the behavior to lldb-dap and disabled events when
removing a breakpoint. Now it is possible to disable and enable
breakpoints in VS Code.

8 months agobfd: fix unnecessary bfd.info regen
Alexey Izbyshev [Wed, 2 Oct 2024 19:58:08 +0000 (22:58 +0300)] 
bfd: fix unnecessary bfd.info regen

When building from an unmodified release tarball, a REGEN_TEXI
invocation is supposed to create a symlink to the .texi file
in the source directory and discard the newly generated .tmp file.
However, after commit bd32be01c997 ("bfd: merge doc subdir up a level")
it creates the symlink at the wrong level, and then a .texi with
a fresh timestamp, which in turn forces bfd.info regeneration.
This breaks builds in environments without makeinfo program.

Fix this by creating the symlink at the level of the target stamp.

Fixes: bd32be01c997 ("bfd: merge doc subdir up a level")
Signed-off-by: Alexey Izbyshev <izbyshev@ispras.ru>
8 months agopeicode.h formatting
Alan Modra [Wed, 2 Oct 2024 21:36:32 +0000 (07:06 +0930)] 
peicode.h formatting

Fix some overlong line, comment block style, whitespace issues.

8 months agoEnable dlltool --leading-underscore for targets other than x86
Alan Modra [Wed, 2 Oct 2024 05:09:02 +0000 (14:39 +0930)] 
Enable dlltool --leading-underscore for targets other than x86

This also makes the dlltool tests run more PE targets, finding that
sh-pe dlltool reports "Machine 'sh' not supported".  I guess no one
cares about that.

PR19459
* dlltool.c (asm_prefix): Remove "mach" parameter.  Return
leading_underscore independent of machine.
(ASM_PREFIX): Adjust.
* testsuite/binutils-all/dlltool.exp: Run on any target
satisfying is_pecoff_format for which dlltool is built.
Revert commit 0398b8d6c86a.  Remove target_xfail.

8 months agodlltool leading_underscore
Alan Modra [Wed, 2 Oct 2024 05:04:35 +0000 (14:34 +0930)] 
dlltool leading_underscore

This patch tidies dlltool code dealing with adding a leading
underscore to generated symbol names.  There should be no functional
change here, but there could be if we ever have a bfd target with
symbol_leading_char something other than '_' or 0.

* dlltool.c (leading_underscore): Change from an int to a
        char*.  Update all uses.  If neither --leading-underscore or
        --no=leading-underscore is given, set leading_underscore to a
        string with first char returned by bfd_get_target_info as the
        target's symbol underscoring.

8 months agonm: don't try to print line numbers for symbols without names
Alan Modra [Tue, 1 Oct 2024 23:32:16 +0000 (09:02 +0930)] 
nm: don't try to print line numbers for symbols without names

It doesn't make much sense trying to print line numbers for what are
usually broken symbols, and there is a possibility of a segfault if
we pass strcmp a NULL.

8 months agoDon't return "(null)" from bfd_elf_sym_name
Alan Modra [Tue, 1 Oct 2024 04:38:08 +0000 (14:08 +0930)] 
Don't return "(null)" from bfd_elf_sym_name

A NULL return from bfd_elf_string_from_elf_section indicates an error.
That shouldn't be masked by bfd_elf_sym_name but rather passed up to
callers such as group_signature.  If we want to print "(null)" then
that should be done at a higher level.  That's what this patch does,
except that I chose to print "<null>" instead, like readelf.  If we
see "(null)" we're probably passing a NULL to printf.  I haven't
changed aoutx.h or pdp11.c print_symbol functions because they already
handle NULL names by omitting the name.  I also haven't changed
mach-o.c, mmo.c, som.c, srec.c, tekhex.c, vms-alpha.c and
wasm-module.c print_symbol function because it looks like they will
never have NULL symbol names.

bfd/
* elf.c (bfd_elf_sym_name): Don't turn a NULL name into a
pointer to "(null)".
(bfd_elf_print_symbol): Print "<null>" for NULL symbol names.
* coffgen.c (coff_print_symbol): Likewise.
* ecoff.c (_bfd_ecoff_print_symbol): Likewise.
* pef.c (bfd_pef_print_symbol): Likewise.
* syms.c (bfd_symbol_info): Return "<null>" in symbol_info.name
if symbol name is NULL.
ld/
* ldlang.c (ld_is_local_symbol): Don't check for "(null)"
symbol name.

8 months agoAutomatic date update in version.in
GDB Administrator [Thu, 3 Oct 2024 00:00:21 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agogprofng: fix a problem with hardware event counters
Ruud van der Pas [Tue, 24 Sep 2024 19:54:54 +0000 (19:54 +0000)] 
gprofng: fix a problem with hardware event counters

Fix a bug where an experiment with hardware event counter data
causes the source and disassembly files not to be generated.
No longer suppress zero valued metrics and change the name
of the man page in a warning message. Adapt line lengths to
not exceed 79.

gprofng/ChangeLog
2024-09-24  Ruud van der Pas  <ruud.vanderpas@oracle.com>

PR 32193
PR 32199
PR 32201
* gp-display-html/gp-display-html.in: Implement all
the above changes.

8 months agogdb: more file name styling
Andrew Burgess [Tue, 1 Oct 2024 15:55:28 +0000 (16:55 +0100)] 
gdb: more file name styling

While looking at the recent line number styling commit I noticed a few
places where we could add more file name styling.  So lets do that.

Approved-By: Tom Tromey <tom@tromey.com>
8 months agoAdd support for IMPORT_NAME_EXPORTAS in ILF (MSVC style) import libraries
Martin Storsjö [Fri, 20 Sep 2024 21:47:21 +0000 (00:47 +0300)] 
Add support for IMPORT_NAME_EXPORTAS in ILF (MSVC style) import libraries

This import name type is formally yet undocumented, but MSVC
produces/supports it, primarily for ARM64EC import libraries.

LLVM/LLD also supports this import name type. Since recently,
llvm-dlltool also uses this type for certain kinds of renamed imports
(that are easy to do in the long style import libraries produced by
GNU dlltool, but require this name type in short import libraries).

This name type contains a third string, in addition to the symbol
name and the DLL name, indicating the actual imported name to
reference in the import tables - which now can be distinct different
from the symbol name on the object file level.

https://github.com/llvm/llvm-project/commit/8f23464a5d957242c89ca6f33d4379c42519cd81
and
https://github.com/llvm/llvm-project/commit/7b275aa2438c22604505d618dd37ee60052f2800
show how this import name type was added in LLVM.

Signed-off-by: Martin Storsjö <martin@martin.st>
8 months agoAutomatic date update in version.in
GDB Administrator [Wed, 2 Oct 2024 00:00:14 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agoIntroduce and use operation::type_p
Tom Tromey [Wed, 18 Sep 2024 16:25:13 +0000 (10:25 -0600)] 
Introduce and use operation::type_p

There's currently code in gdb that checks if an expression evaluates
to a type.  In some spots this is done by comparing the opcode against
OP_TYPE, but other spots more correctly also compare with OP_TYPEOF
and OP_DECLTYPE.

This patch cleans up this area, replacing opcode-checking with a new
method on 'operation'.

Generally, checking the opcode should be considered deprecated,
although it's unfortunately difficult to get rid of opcodes entirely.

I also took advantage of this change to turn eval_op_type into a
method, removing a bit of indirection.

Reviewed-by: Keith Seitz <keiths@redhat.com>
8 months agoAutomatic date update in version.in
GDB Administrator [Tue, 1 Oct 2024 00:00:13 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agoRe: dlltool: file name too long
Alan Modra [Wed, 25 Sep 2024 01:12:36 +0000 (10:42 +0930)] 
Re: dlltool: file name too long

Allow for "snnnnn.o" suffix when testing against NAME_MAX, and tidy
TMP_STUB handling by overwriting a prior nnnnn.o string rather than
copying the entire name.

* dlltool.c (TMP_STUB): Add "nnnnn.o" to format.
(make_one_lib_file): Localise variables.  Don't copy TMP_STUB,
overwrite suffix instead.
(gen_lib_file): Similarly.
(main): Allow for max suffix when testing against NAME_MAX.

8 months agosegv in read_a_source_file
Alan Modra [Mon, 30 Sep 2024 22:30:32 +0000 (08:00 +0930)] 
segv in read_a_source_file

On some paths through read_a_source file, "s" may not be set.

* read.c (read_a_source_file): Correct code ignoring comment.

8 months agosegv in bfd_elf_get_str_section
Alan Modra [Mon, 30 Sep 2024 22:23:55 +0000 (07:53 +0930)] 
segv in bfd_elf_get_str_section

Attempting to write a termination NUL to PROT_READ mmap'd memory was
a silly idea.

PR 32109
* elf.c (bfd_elf_get_str_section): Don't write terminating NUL
if missing.
* libbfd.c (_bfd_munmap_readonly_temporary): Correct comment.

8 months agoAdd line-number styling
Tom Tromey [Sat, 14 Sep 2024 21:07:17 +0000 (15:07 -0600)] 
Add line-number styling

This patch adds separate styling for line numbers.  That is, whenever
gdb prints a source line number, it uses this style.

v2 includes a change to ensure that %ps works in query.

Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Reviewed-by: Keith Seitz <keiths@redhat.com>
8 months agoImprove the placement of orphan note sections.
Nick Clifton [Mon, 30 Sep 2024 13:41:11 +0000 (14:41 +0100)] 
Improve the placement of orphan note sections.

PR 32219

8 months agogdb: fix filename completion in the middle of a line
Andrew Burgess [Thu, 12 Sep 2024 09:56:54 +0000 (10:56 +0100)] 
gdb: fix filename completion in the middle of a line

I noticed that filename completion in the middle of a line doesn't
work as I would expect it too.  For example, assuming '/tmp/filename'
exists, and is the only file in '/tmp/' then when I do the following:

  (gdb) file "/tmp/filen<TAB>

GDB completes to:

  (gdb) file "/tmp/filename"

But, if I type this:

  (gdb) file "/tmp/filen "xxx"

Then move the cursor to the end of '/tmp/filen' and press <TAB>, GDB
will complete the line to:

  (gdb) file "/tmp/filename "xxx"

But GDB will not insert the trailing double quote character.

The reason for this is found in readline/readline/complete.c in the
function append_to_match.  This is the function that appends the
trailing closing quote character, however, the closing quote is only
inserted if the cursor (rl_point) is at the end (rl_end) of the line
being completed.

In this patch, what I do instead is add the closing quote in the
function gdb_completer_file_name_quote, which is called from readline
through the rl_filename_quoting_function hook.  The docs for
rl_filename_quoting_function say (see 'info readline'):

  "... The MATCH_TYPE is either 'SINGLE_MATCH', if there is only one
  completion match, or 'MULT_MATCH'.  Some functions use this to
  decide whether or not to insert a closing quote character. ..."

This is exactly what I'm doing in this patch, and clearly this is not
an unusual choice.  Now after completing a filename that is not at the
end of the line GDB will add the closing quote character if
appropriate.

I have managed to write some tests for this.  I send a line of text to
GDB which includes a partial filename followed by a trailing string, I
then send the escape sequence to move the cursor left, and finally I
send the tab character.

Obviously, expect doesn't actually see the complete output with the
extra text "in place", instead expect sees the original line followed
by some escape sequences to reflect the cursor movement, then an
escape sequence to indicate that text is being inserted in the middle
of a line, followed by the new characters ... it's a bit messy, but I
think it holds together.

Reviewed-By: Tom Tromey <tom@tromey.com>
8 months agogdb: fix for completing a second filename for a command
Andrew Burgess [Fri, 13 Sep 2024 10:16:51 +0000 (11:16 +0100)] 
gdb: fix for completing a second filename for a command

After the recent filename completion changes I noticed that the
following didn't work as expected:

  (gdb) file "/path/to/some/file" /path/to/so<TAB>

Now, I know that the 'file' command doesn't actually take multiple
filenames, but currently (and this was true before the recent filename
completion changes too) the completion function doesn't know that the
command only expects a single filename, and should complete any number
of filenames.  And indeed, this works:

  (gdb) file "/path/to/some/file" "/path/to/so<TAB>

In this case I quoted the second path, and now GDB is happy to offer
completions.

It turns out that the problem in the first case is an off-by-one bug
in gdb_completer_file_name_char_is_quoted.  This function tells GDB if
a character within the line being completed is escaped or not.  An
escaped character cannot be a word separator.

The algorithm in gdb_completer_file_name_char_is_quoted is to scan
forward through the line keeping track of whether we are inside double
or single quotes, or if a character follows a backslash.  When we find
an opening quote we skip forward to the closing quote and then check
to see if we skipped over the character we are looking for, if we did
then the character is within the quoted string.

The problem is that this "is character inside quoted string" check
used '>=' instead if '>'.  As a consequence a character immediately
after a quoted string would be thought of as inside the quoted string.

In our first example this means that the single white space character
after the quoted string was thought to be quoted, and was not
considered a word breaking character.  As such, GDB would not try to
complete the second path.  And indeed, if we tried this:

  (gdb) file "/path/to/some/file"    /path/to/so<TAB>

That is, place multiple spaces after the first path, then GDB would
consider the first space as quoted, but the second space is NOT
quoted, and would be a word break.  Now GDB does complete the second
path.

By changing '>=' to '>' in gdb_completer_file_name_char_is_quoted this
bug is resolved, now the original example works and GDB will correctly
complete the second path.

For testing I've factored out the core of one testing proc, and I now
run those tests multiple times, once with no initial path, once with
an initial path in double quotes, once with an initial path in
single quotes, and finally, with an unquoted initial path.

Reviewed-By: Tom Tromey <tom@tromey.com>
8 months agogdb/MAINTAINERS: add myself to maintainers
Gerlicher, Klaus [Mon, 30 Sep 2024 09:03:57 +0000 (09:03 +0000)] 
gdb/MAINTAINERS: add myself to maintainers

8 months agogdb: Remove myself as x86 maintainer and update my email
Felix Willgerodt [Wed, 25 Sep 2024 13:28:18 +0000 (15:28 +0200)] 
gdb: Remove myself as x86 maintainer and update my email

8 months agogdb, testsuite: clean duplicate header includes
Gerlicher, Klaus [Fri, 13 Sep 2024 07:55:33 +0000 (07:55 +0000)] 
gdb, testsuite: clean duplicate header includes

Some of the gdb and testsuite files double include some headers. While
all headers use include guards, it helps a bit keeping the code base
tidy.

No functional change.

Approved-by: Kevin Buettner <kevinb@redhat.com>
8 months agoAutomatic date update in version.in
GDB Administrator [Mon, 30 Sep 2024 00:00:08 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agoAutomatic date update in version.in
GDB Administrator [Sun, 29 Sep 2024 00:00:08 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months ago[gdb/symtab] Dump m_all_parents_map for verbose debug dwarf-read
Tom de Vries [Sat, 28 Sep 2024 06:35:02 +0000 (08:35 +0200)] 
[gdb/symtab] Dump m_all_parents_map for verbose debug dwarf-read

[ This is based on "[gdb/symtab] Add parent_map::dump" [1]. ]

When building the cooked index, gdb builds up a parent map.

This map is currently only visible at user level through the effect of using
it, but it's useful to be able to inspect it as well.

Add dumping of this parent map for "set debug dwarf-read 2".

As example, take test-case gdb.dwarf2/enum-type-c++.exp with target board
debug-types.

The parent map looks like:
...
$ gdb -q -batch \
    -iex "maint set worker-threads 0" \
    -iex "set debug dwarf-read 2" \
    outputs/gdb.dwarf2/enum-type-c++/enum-type-c++
  ...
[dwarf-read] print_stats: Final m_all_parents_map:
map start:
  0x0000000000000000 0x0
  0x0000000000000037 0x20f27d30 (0x36: ec)
  0x0000000000000051 0x0
  0x000000000000008b 0x20f27dc0 (0x8a: A)
  0x00000000000000a6 0x0
...

There's no parent entry at address 0xd6, which is part of what causes this:
...
(gdb) FAIL: gdb.dwarf2/enum-type-c++.exp: val1 has a parent
...

With the series containing the proposed fix applied [2], we get instead:
...
[dwarf-read] print_stats: Final m_all_parents_map:
map start:
  0x0000000000000000 0x0
  0x0000000000000026 0x7e0bdc0 (0x25: ns)
  0x0000000000000036 0x0
  0x0000000000000037 0x7e0bdf0 (0x36: ns::ec)
  0x0000000000000051 0x0
  0x000000000000007f 0x7e0be80 (0x7e: ns)
  0x000000000000008a 0x0
  0x000000000000008b 0x7e0beb0 (0x8a: ns::A)
  0x00000000000000a6 0x0
  0x00000000000000cc 0x7e0bf10 (0xcb: ns)
  0x00000000000000d4 0x7e0bf40 (0xd3: ns::A)
  0x00000000000000dc 0x7e0bf10 (0xcb: ns)
  0x00000000000000dd 0x7e0bf40 (0xd3: ns::A)
  0x00000000000000f6 0x0
...
and find at 0xd6 parent ns::A.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
[1] https://sourceware.org/pipermail/gdb-patches/2023-October/202883.html
[2] https://sourceware.org/pipermail/gdb-patches/2024-September/211958.html

8 months agogas buffer overflow with --listing-rhs-width
Alan Modra [Fri, 27 Sep 2024 22:33:36 +0000 (08:03 +0930)] 
gas buffer overflow with --listing-rhs-width

With listings enabled, gas keeps a small cache of source lines.  They
are stored in buffers of size LISTING_RHS_WIDTH, ie. 100.  Given
listing-rhs-width larger than 100 it is of course possible to overflow
the buffer.  Fix that by allocating as needed.  We could allocate all
buffers on the first call to print_source using listing_rhs_width, but
I chose not to do that in case some future assembly directive allows
changes to listing_rhs_width similarly to the way paper_width can
change during assembly.

8 months agoMove uses_elf_em to ld-lib.exp
Alan Modra [Fri, 27 Sep 2024 00:22:07 +0000 (09:52 +0930)] 
Move uses_elf_em to ld-lib.exp

and add a missing entry from uses_genelf.

binutils/
* testsuite/lib/binutils-common.exp (uses_elf_em): Delete.
ld/
* testsuite/lib/ld-lib.exp (uses_genelf): Add moxie-*-moxiebox.
(uses_elf_em): New.

8 months agoAutomatic date update in version.in
GDB Administrator [Sat, 28 Sep 2024 00:00:10 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agoRe-run 'isort' on gdb tests
Tom Tromey [Fri, 27 Sep 2024 19:45:11 +0000 (13:45 -0600)] 
Re-run 'isort' on gdb tests

Re-running 'isort' (via pre-commit) showed that the file
py-read-memory-leak.py (from the gdb test suite) needed a small patch.

8 months agogdb/symtab: pass program space to lookup_symtab and iterate_over_symtabs
Simon Marchi [Mon, 12 Aug 2024 17:46:06 +0000 (13:46 -0400)] 
gdb/symtab: pass program space to lookup_symtab and iterate_over_symtabs

Make the current program space references bubble up.

In collect_symtabs_from_filename, remove the calls to
set_current_program_space and just pass the relevant pspaces.
This appears safe to do, because nothing in the `collector` callback
cares about the current pspace.

Change-Id: I00a7ed484bfbe5264f01a6abf0d33b51de373cbb
Reviewed-by: Keith Seitz <keiths@redhat.com>
8 months agox86: fix Solaris gas testsuite run
Jan Beulich [Fri, 27 Sep 2024 09:41:27 +0000 (11:41 +0200)] 
x86: fix Solaris gas testsuite run

Commits 8015b1b0c1a1 ("x86-64: Never make R_X86_64_GOT64 section
relative"), d774bf9b3623 ("x86: Add tls check in gas"), and
1b714c14e40f ("x86: Turn PLT32 to PC32 only for PC-relative
relocations") all should have adjusted the Solaris counterpart of the
reloc64 test as well.

8 months agoRISC-V: odd data padding vs mapping symbols
Jan Beulich [Fri, 27 Sep 2024 09:41:00 +0000 (11:41 +0200)] 
RISC-V: odd data padding vs mapping symbols

Odd data padding has a $d label inserted at its beginning. When a $x...
label is removed instead, a replacement is inserted after the padding.
The same, however, needs to also happen when there's no $x to replace.

8 months agoRISC-V: correct alignment directive handling for text sections
Jan Beulich [Fri, 27 Sep 2024 09:40:22 +0000 (11:40 +0200)] 
RISC-V: correct alignment directive handling for text sections

.insn or data emitted inside text sections can lead to positions not
being at insn granularity. In such situations using alignment
directives should reliably enforce the requested alignment.
Specifically requests to align back to insn granularity may not be
ignored (where, as a subcase thereof, the ordering of ".option norvc"
and e.g. ".p2align 2" should not matter; so far the alignment directive
needs to come first to have any effect). Similarly ahead of emitting
NOPs alignment first needs to be forced back to insn granularity.

The new testcases actually point out a corner case issue in the
disassembler as well, which is being corrected at the same time: We
don't want to print "0x" without any subsequent digits.

8 months agox86: optimize {,V}INSERTPS with certain immediates
Jan Beulich [Fri, 27 Sep 2024 09:23:12 +0000 (11:23 +0200)] 
x86: optimize {,V}INSERTPS with certain immediates

They are equivalent to simple moves or xors, which are up to 3 bytes
shorter to encode (and maybe/likely also cheaper to execute).

8 months agox86: optimize {,V}EXTRACT{F,I}{128,32x{4,8},64x{2,4}} with immediate 0
Jan Beulich [Fri, 27 Sep 2024 09:22:34 +0000 (11:22 +0200)] 
x86: optimize {,V}EXTRACT{F,I}{128,32x{4,8},64x{2,4}} with immediate 0

They, too, are equivalent to simple moves, which are up to 3 bytes
shorter to encode (and maybe also cheaper to execute).

8 months agox86: optimize {,V}EXTRACTPS with immediate 0
Jan Beulich [Fri, 27 Sep 2024 09:21:51 +0000 (11:21 +0200)] 
x86: optimize {,V}EXTRACTPS with immediate 0

They are equivalent to simple moves, which are up to 2 bytes shorter to
encode (and maybe also cheaper to execute).

8 months agox86: correct {,V}PEXTR{D,Q} optimization
Jan Beulich [Fri, 27 Sep 2024 09:20:37 +0000 (11:20 +0200)] 
x86: correct {,V}PEXTR{D,Q} optimization

A possible relocation associated with a memory operand also needs
moving.

8 months agoEnable -z separate-code, -z common and -z text for more targets
Alan Modra [Fri, 27 Sep 2024 00:23:10 +0000 (09:53 +0930)] 
Enable -z separate-code, -z common and -z text for more targets

Fix a mis-placed "fi".

8 months agoAutomatic date update in version.in
GDB Administrator [Fri, 27 Sep 2024 00:00:10 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 months agoAdd 'const' to symmisc.c
Tom Tromey [Thu, 26 Sep 2024 23:06:50 +0000 (17:06 -0600)] 
Add 'const' to symmisc.c

I noticed a few spots in symmisc.c that could use a 'const'.

8 months agoFix 32207 [gprofng collect app] Error in parsing the -O option
Vladimir Mezentsev [Wed, 25 Sep 2024 22:31:34 +0000 (15:31 -0700)] 
Fix 32207 [gprofng collect app] Error in parsing the -O option

gprofng/ChangeLog
2024-09-25  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

PR 32207
* src/collctrl.cc (preprocess_names): Fix the size in strndup.

9 months agoUpdated Brazilian Portuguese translation for the gprof directory.
Nick Clifton [Thu, 26 Sep 2024 15:11:28 +0000 (16:11 +0100)] 
Updated Brazilian Portuguese translation for the gprof directory.

9 months agoFix -Wstringop-overflow warning in ecoff_link_hash_newfunc
Andreas Schwab [Thu, 26 Sep 2024 11:06:25 +0000 (13:06 +0200)] 
Fix -Wstringop-overflow warning in ecoff_link_hash_newfunc

* ecoff.c (ecoff_link_hash_newfunc): Don't call memset if ret is
NULL.

9 months agold: Ignore .note.gnu.build-id when placing orphaned notes
H.J. Lu [Fri, 20 Sep 2024 03:32:26 +0000 (11:32 +0800)] 
ld: Ignore .note.gnu.build-id when placing orphaned notes

The commits:

e8e10743f7b Add --rosegment option to BFD linker to stop the '-z separate-code' from generating two read-only segments.
bf6d7087de0 ld: Move the .note.build-id section to near the start of the memory map

place .note.gnu.build-id before text sections when --rosegment is used.
Ignore .note.gnu.build-id when placing orphaned notes if --rosegment and
-z separate-code are used together to avoid putting any note sections
between .note.gnu.build-id and text sections in the same PT_LOAD segment.

PR ld/32191
* ldlang.c (lang_insert_orphan): Ignore .note.gnu.build-id when
placing orphaned notes.
* testsuite/ld-elf/pr23658-1a.d: Pass --no-rosegment to ld.
* testsuite/ld-elf/pr23658-1c.d: Likewise.
* testsuite/ld-elf/pr23658-1e.d: New file.
* testsuite/ld-elf/pr23658-1f.d: Likewise.
* testsuite/ld-i386/i386.exp: Run PR ld/32191 test.
* testsuite/ld-i386/pr32191.d: New file.
* testsuite/ld-x86-64/lam-u48.rd: Updated.
* testsuite/ld-x86-64/lam-u57.rd: Likewise.
* testsuite/ld-x86-64/pr32191-x32.d: New file.
* testsuite/ld-x86-64/pr32191.d: Likewise.
* testsuite/ld-x86-64/pr32191.s: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run PR ld/32191 tests.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
9 months agox86: templatize SIMD narrowing-move templates
Jan Beulich [Thu, 26 Sep 2024 10:27:14 +0000 (12:27 +0200)] 
x86: templatize SIMD narrowing-move templates

Once again to reduce redundancy.

9 months agox86: templatize SIMD sign-/zero-extension templates
Jan Beulich [Thu, 26 Sep 2024 10:27:01 +0000 (12:27 +0200)] 
x86: templatize SIMD sign-/zero-extension templates

Yet again to reduce redundancy.

9 months agox86: templatize SIMD FP binary-logic templates
Jan Beulich [Thu, 26 Sep 2024 10:26:34 +0000 (12:26 +0200)] 
x86: templatize SIMD FP binary-logic templates

Once more to reduce redundancy.

9 months agox86: further templatize FMA templates
Jan Beulich [Thu, 26 Sep 2024 10:26:15 +0000 (12:26 +0200)] 
x86: further templatize FMA templates

Further reduce redundancy, in preparation of the addition of
counterparts for AVX10.2.

9 months agox86: templatize SIMD FP arithmetic templates
Jan Beulich [Thu, 26 Sep 2024 10:25:45 +0000 (12:25 +0200)] 
x86: templatize SIMD FP arithmetic templates

Reduce redundancy, in preparation of the addition of further counterparts
for AVX10.2. Provide the "ne" parameter needed there right away, even if
unused for now.

9 months agogdb/testsuite: test for memory leaks in gdb.Inferior.read_memory()
Andrew Burgess [Wed, 25 Sep 2024 14:44:56 +0000 (15:44 +0100)] 
gdb/testsuite: test for memory leaks in gdb.Inferior.read_memory()

For a long time Fedora GDB has carried an out of tree patch which
checks for memory leaks in gdb.Inferior.read_memory().  At one point
in the distant past GDB did have a memory leak in this code, but this
was first fixed in commit:

  commit 655e820cf9a039ee55325d9e1f8423796d592b4b
  Date:   Wed Mar 28 17:38:07 2012 +0000

        * python/py-inferior.c (infpy_read_memory): Remove cleanups and
          explicitly free 'buffer' on exit paths.  Decref 'membuf_object'
          before returning.

And the code has changed a lot since then, but the leak is still
fixed.  Unfortunately, this commit didn't have any associated tests.

The original Fedora test wasn't really suitable for upstream, it was
reading /proc/PID/... to figure out if there was a leak or not.

However, we already have gdb.python/py-inferior-leak.exp in upstream
GDB, which makes use of the Python tracemalloc module to check for
memory leaks in a corner of the Python API, so I figured it wouldn't
hurt to rewrite the test in the same style.

And so here is a test for a bug which was closed 12 years ago.  This
detects if the gdb.Inferior.read_memory() call leaks any memory.

I've tested this by hacking gdbpy_buffer_to_membuf, replacing the last
line which currently looks like this:

  return PyMemoryView_FromObject ((PyObject *) membuf_obj.get ());

and instead doing:

  return PyMemoryView_FromObject ((PyObject *) membuf_obj.release ());

The use of "release" here will mean we no longer decrement the
reference count on membuf_obj before returning from the function.  As
a consequence the membuf_obj will not be garbage collected.  With this
hack in place the new test will fail.

The Python script in the new test is mostly a copy&paste from
py-inferior-leak.py with the core changed to do a memory read instead
of inferior creation.  I did consider rewriting both tests into a
single file, maybe, py-memory-leak.py, which would make it easier to
add additional similar tests in the future.  For now I've held off
doing that, but if this gets merged then I _might_ revisit this idea.

If folk feel that this new test should only be accepted if I do this
rewrite then let me know and I can get that done.

On copyright date ranges: The .exp and .py scripts are new enough for
this commit that I've dated them 2024.  The .c source script is lifted
directly from the old Fedora patch, so I've retained the original 2014
start date for that file only.

Approved-By: Tom Tromey <tom@tromey.com>
9 months agox86/testsuite: Refine AVX10.2 rounding testcases
Haochen Jiang [Wed, 25 Sep 2024 08:47:16 +0000 (16:47 +0800)] 
x86/testsuite: Refine AVX10.2 rounding testcases

Using hard byte code is not a good idea in dump file. Add a label
for intel syntax test check to avoid that.

gas/ChangeLog:

* testsuite/gas/i386/avx10_2-rounding-intel.d: Use label for
test split.
* testsuite/gas/i386/avx10_2-rounding.s: Add label to avoid
hard coding in dump file.

9 months agoAutomatic date update in version.in
GDB Administrator [Thu, 26 Sep 2024 00:00:14 +0000 (00:00 +0000)] 
Automatic date update in version.in

9 months agox86 TLS relocation checks
Alan Modra [Wed, 25 Sep 2024 12:02:03 +0000 (21:32 +0930)] 
x86 TLS relocation checks

Some configurations (eg. i386-bsd, i386-msdos) broke with the addition
of the TLS relocation checking.  The "x86_elf_abi undeclared" error
has been fixed, but "gotrel defined but not used" remains.  Fix that.
Also invert the preprocessor test around lex_got to make it positive
logic and remove the LEX_AT condition which is no longer necessary.
(The only x86 config files defining LEX_AT also define TE_PE.)

9 months agoltmain.sh: allow more flags at link-time
Sam James [Wed, 14 Aug 2024 03:09:39 +0000 (04:09 +0100)] 
ltmain.sh: allow more flags at link-time

libtool defaults to filtering flags passed at link-time.

This brings the filtering in GCC's 'fork' of libtool into sync with
upstream libtool commit 22a7e547e9857fc94fe5bc7c921d9a4b49c09f8e.

In particular, this now allows some harmless diagnostic flags (especially
useful for things like -Werror=odr), more optimization flags, and some
Clang-specific options.

GCC's -flto documentation mentions:
> To use the link-time optimizer, -flto and optimization options should be
> specified at compile time and during the final link. It is recommended
> that you compile all the files participating in the same link with the
> same options and also specify those options at link time.

This allows compliance with that.

* ltmain.sh (func_mode_link): Allow various flags through filter.

9 months ago[gdb/python] Make sure python sys.exit makes gdb exit
Tom de Vries [Wed, 25 Sep 2024 17:29:57 +0000 (19:29 +0200)] 
[gdb/python] Make sure python sys.exit makes gdb exit

With gdb 15.1, python sys.exit no longer makes gdb exit:
...
$ gdb -q -batch -ex "python sys.exit(2)" -ex "print 123"; echo $?
Python Exception <class 'SystemExit'>: 2
Error occurred in Python: 2
$1 = 123
0
...

This is a change in behaviour since commit a207f6b3a38 ("Rewrite "python"
command exception handling"), first available in gdb 15.1.

This patch reverts to the old behaviour by handling PyExc_SystemExit in
gdbpy_handle_exception, such what we have instead:
...
$ gdb -q -batch -ex "python sys.exit(2)" -ex "print 123"; echo $?
2
...

Tested on x86_64-linux, with python 3.6 and 3.13.

Tested-By: Guinevere Larsen <blarsen@redhat.com>
Approved-By: Tom Tromey <tom@tromey.com>
PR python/31946
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31946

9 months agogdb/testsuite: format some Python files
Simon Marchi [Wed, 25 Sep 2024 14:16:59 +0000 (10:16 -0400)] 
gdb/testsuite: format some Python files

Format with black.

Change-Id: I28e79e9da07ea29391ad1942047633960fa72ed2

9 months agogdb, gdbserver, python, testsuite: Remove MPX.
Schimpe, Christina [Wed, 6 Mar 2024 11:22:49 +0000 (11:22 +0000)] 
gdb, gdbserver, python, testsuite: Remove MPX.

GDB deprecated the commands "show/set mpx bound" in GDB 15.1, as Intel
listed Intel(R) Memory Protection Extensions (MPX) as removed in 2019.
MPX is also deprecated in gcc (since v9.1), the linux kernel (since v5.6)
and glibc (since v2.35).  Let's now remove MPX support in GDB completely.

This includes the removal of:
- MPX functionality including register support
- deprecated mpx commands
- i386 and amd64 implementation of the hooks report_signal_info and
  get_siginfo_type
- tests
- and pretty printer.

We keep MPX register numbers to not break compatibility with old gdbservers.

Approved-By: Felix Willgerodt <felix.willgerodt@intel.com>
9 months agogdb, testsuite, python: Add missing imports.
Schimpe, Christina [Mon, 19 Feb 2024 17:59:24 +0000 (17:59 +0000)] 
gdb, testsuite, python: Add missing imports.

Removing the pretty printer (bound_registers.py) in the next commit
leads to failures due to a missing import of 'gdb.printing':

"AttributeError: module 'gdb' has no attribute 'printing'".

Add this import to each file requiring it, as it's not imported by the
pretty-printer anymore.

Approved-By: Andrew Burgess <aburgess@redhat.com>
9 months agobinutils testsuite: canonicalize subtest names in libctf
Frank Ch. Eigler [Fri, 20 Sep 2024 20:23:48 +0000 (16:23 -0400)] 
binutils testsuite: canonicalize subtest names in libctf

Previous code included the full $srcdir pathnames in the individual
subtest PASS/FAIL names, which makes it difficult to compute
comparisons or regressions between test runs on different machines.
This version switches to the basename only, which are common.

Signed-off-by: Frank Ch. Eigler <fche@redhat.com>
9 months agobinutils testsuite: canonicalize subtest names in debuginfod.exp
Frank Ch. Eigler [Fri, 20 Sep 2024 20:19:41 +0000 (16:19 -0400)] 
binutils testsuite: canonicalize subtest names in debuginfod.exp

Previous code included the full $srcdir pathnames in the individual
subtest PASS/FAIL names, which makes it difficult to compute
comparisons or regressions between test runs on different machines.
This version switches to the basename only, which are common.

Signed-off-by: Frank Ch. Eigler <fche@redhat.com>
9 months agoRISC-V: Add Smrnmi extension csrs.
Jiawei [Tue, 24 Sep 2024 11:16:25 +0000 (19:16 +0800)] 
RISC-V: Add Smrnmi extension csrs.

This patch support Smrnmi extension[1],
The csrs address can be find in[2].

[1] https://github.com/riscv/riscv-isa-manual/commit/35eb3948bf0b87c83fab5a7238bd68b6211faf62
[2] https://github.com/riscv/riscv-isa-manual/blob/smrnmi-1.0/src/priv-csrs.adoc

bfd/ChangeLog:

* elfxx-riscv.c: New extension.

gas/ChangeLog:

* NEWS: Add Smrnmi extension support.
* config/tc-riscv.c (enum riscv_csr_class): New extension class.
(riscv_csr_address): Ditto.
* testsuite/gas/riscv/csr-version-1p10.d: New csrs.
* testsuite/gas/riscv/csr-version-1p10.l: Ditto.
* testsuite/gas/riscv/csr-version-1p11.d: Ditto.
* testsuite/gas/riscv/csr-version-1p11.l: Ditto.
* testsuite/gas/riscv/csr-version-1p12.d: Ditto.
* testsuite/gas/riscv/csr-version-1p12.l: Ditto.
* testsuite/gas/riscv/csr.s:  Ditto.
* testsuite/gas/riscv/march-help.l: New extension.

include/ChangeLog:

* opcode/riscv-opc.h (CSR_MNSCRATCH): New csr.
(CSR_MNEPC): Ditto.
(CSR_MNCAUSE): Ditto.
(CSR_MNSTATUS): Ditto.
(DECLARE_CSR): New csr declarations.

9 months agoAutomatic date update in version.in
GDB Administrator [Wed, 25 Sep 2024 00:00:11 +0000 (00:00 +0000)] 
Automatic date update in version.in

9 months agoFix typo in gdb.ada/complete.exp test
Tom Tromey [Tue, 24 Sep 2024 18:27:24 +0000 (12:27 -0600)] 
Fix typo in gdb.ada/complete.exp test

I noticed that two tests in gdb.ada/complete.exp are testing the same
thing: the completion of "p pck.inne".  The second such test has this
comment:

    # A fully qualified package name

I believe the intent here was to test "p pck.inner" (note the trailing
"r").  This patch makes this change.

9 months agogdb: testsuite: Test whether PC register is expedited in gdb.server/server-run.exp
Thiago Jung Bauermann [Thu, 5 Sep 2024 04:42:02 +0000 (01:42 -0300)] 
gdb: testsuite: Test whether PC register is expedited in gdb.server/server-run.exp

One thing GDB always does when the inferior stops is finding out where
it's stopped at, by way of querying the value of the program counter
register.

To save a packet round trip, the remote target can send the PC
value (often alongside other frequently consulted registers such as the
stack pointer) in the stop reply packet as an "expedited register".

Test that this is actually done for the targets where gdbserver is
supposed to.

Extend the "maintenance print remote-registers" command output with an
"Expedited" column which says "yes" if the register was seen by GDB in
the last stop reply packet it received, and is left blank otherwise.

Tested for regressions on aarch64-linux-gnu native-extended-remote.

The testcase was tested on aarch64-linux-gnu, i686-linux-gnu and
x86_64-linux-gnu native-remote and native-extended-remote targets.

Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Approved-By: Tom Tromey <tom@tromey.com>
9 months agold: re-generate configure
Simon Marchi [Tue, 24 Sep 2024 16:31:44 +0000 (12:31 -0400)] 
ld: re-generate configure

Looks like configure has been generated with a non-upstream autoconf,
re-generate it.

ld/ChangeLog:

* configure: Re-generate.

Change-Id: I6774381ad411a190fb93ff260234dd79d8791680

9 months agogdb/elfread.c: remove unused includes
Simon Marchi [Tue, 24 Sep 2024 15:01:42 +0000 (11:01 -0400)] 
gdb/elfread.c: remove unused includes

Remove some includes reported as unused by clangd.

Change-Id: If7c4729975bd90b9cc2c22bcf84d333bd0002a52

9 months ago[gdb] Handle SIGTERM in run_events
Tom de Vries [Tue, 24 Sep 2024 14:45:27 +0000 (16:45 +0200)] 
[gdb] Handle SIGTERM in run_events

While reviewing "catch (...)" uses I came across:
...
  for (auto &item : local)
    {
      try
{
  item ();
}
      catch (...)
{
  /* Ignore exceptions in the callback.  */
}
    }
...

This means that when an item throws a gdb_exception_forced_quit,
the exception is ignored and following items are executed.

Fix this by handling gdb_exception_forced_quit explicity, and immediately
rethrowing it.

I wondered about ^C, and couldn't decide whether current behaviour is ok, so
I left this alone, but I made the issue explicit in the source code.

As for the "catch (...)", I think that it should let a non-gdb_exception
propagate, so I've narrowed it to "catch (const gdb_exception &)".

My rationale for this is as follows.

There seem to be a few ways that "catch (...)" is allowed in gdb:
- clean-up and rethrow (basically the SCOPE_EXIT pattern)
- catch and handle an exception from a call into an external c++ library

Since we're dealing with neither of those here, we remove the "catch (...)".

Tested on aarch64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
9 months agold: support --build-id=xx mode
Frank Ch. Eigler [Thu, 19 Sep 2024 21:06:48 +0000 (17:06 -0400)] 
ld: support --build-id=xx mode

The is patch adds a new ld build-id computation mode, "xx", using
xxhash in its 128-bit mode.  The patch prereqs the xxhash-devel
headers being installed, and uses the "all-inlined" model, so no
run-time or link-time library dependence exists.

The xxhash mode performs well, saving roughly 20% of total userspace
run time from an ld job over a 800MB shared library relative to sha1.
128 bits of good hash should be collision-resistant to a number of
distinct binaries that numbers in the 2**32 - 2**64 range, even if not
"crypto" level hash.  Confirmations of this are in progress.

         ld/configury: add --with-xxhash mode, different from gdb case
                       because only using it in inline mode

         ld/ldbuildid.c: add "xx" mode, #if WITH_XXHASH

         ld/NEWS, ld.texi: mention new option

         ld/lexsup.c: add enumeration of --build-id STYLES to --help

         ld/testsuite/ld-elf/build-id.exp: add test case for 0xHEX case
                                           and conditional for xx case;
                                           also, simply tcl list syntax

https://inbox.sourceware.org/binutils/20240917201509.GB26396@redhat.com/

Signed-off-by: Frank Ch. Eigler <fche@redhat.com>
9 months ago[gdb] Handle ^C in ~scoped_remote_fd
Tom de Vries [Tue, 24 Sep 2024 13:17:57 +0000 (15:17 +0200)] 
[gdb] Handle ^C in ~scoped_remote_fd

While reviewing "catch (...)" uses I came across:
...
try
  {
    fileio_error remote_errno;
    m_remote->remote_hostio_close (m_fd, &remote_errno);
  }
catch (...)
  {
    /* Swallow exception before it escapes the dtor.  If
       something goes wrong, likely the connection is gone,
       and there's nothing else that can be done.  */
  }
...

This also swallows gdb_exception_quit and gdb_exception_forced_quit.  I don't
know whether these can actually happen here, but if not it's better to
accommodate for the possibility anyway.

Fix this by handling gdb_exception_quit and gdb_exception_forced_quit
explicitly.

It could be that "catch (...)" should be replaced by
"catch (const gdb_exception &)" but that depends on what kind of exception
remote_hostio_close is expected to throw, and I don't know that, so I'm
leaving it as is.

Tested on aarch64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
9 months agobtrace: Add support for further events.
Felix Willgerodt [Tue, 27 Jun 2023 09:20:55 +0000 (11:20 +0200)] 
btrace: Add support for further events.

This is similar to the previous events that we added, and adds support for
SMI, RSM, SIPI, INIT, VMENTRY, VMEXIT, SHUTDOWN, UINTR and UIRET.
Though since these are mainly mechanical and not really possible to test,
they are bundled in one commit.

Approved-By: Markus Metzger <markus.t.metzger@intel.com>
9 months agobtrace: Add support for IRET events.
Felix Willgerodt [Tue, 27 Jun 2023 09:18:21 +0000 (11:18 +0200)] 
btrace: Add support for IRET events.

This is similar to the previous events that we added.

Approved-By: Markus Metzger <markus.t.metzger@intel.com>