]> git.ipfire.org Git - thirdparty/binutils-gdb.git/log
thirdparty/binutils-gdb.git
10 hours agoAutomatic date update in version.in master
GDB Administrator [Sun, 10 Aug 2025 00:00:09 +0000 (00:00 +0000)] 
Automatic date update in version.in

18 hours agox86: Treat protected symbols with indirect external access as local
H.J. Lu [Fri, 8 Aug 2025 01:04:47 +0000 (18:04 -0700)] 
x86: Treat protected symbols with indirect external access as local

If all external symbol accesses are indirect, we can treat protected
symbols as local since there will be no copy relocation for data and
external function pointer access will go through GOT, instead of PLT.
No PLT slot should be used for external function pointer in executable.

bfd/

PR ld/33260
* elfxx-x86.h (COPY_INPUT_RELOC_P): Treat protected symbols with
indirect external access as local.

ld/

PR ld/33260
* testsuite/ld-i386/i386.exp: Run PR ld/33260 test.
* testsuite/ld-x86-64/x86-64.exp: Likewise.
* testsuite/ld-i386/pr33260.d: New file.
* testsuite/ld-i386/pr33260.s: Likewise.
* testsuite/ld-x86-64/pr33260-x32.d: Likewise.
* testsuite/ld-x86-64/pr33260.d: Likewise.
* testsuite/ld-x86-64/pr33260.s: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
34 hours agoAutomatic date update in version.in
GDB Administrator [Sat, 9 Aug 2025 00:00:07 +0000 (00:00 +0000)] 
Automatic date update in version.in

36 hours agobinutils: add ia64 marker in name of testranges-ia64
Sam James [Fri, 8 Aug 2025 22:16:06 +0000 (23:16 +0100)] 
binutils: add ia64 marker in name of testranges-ia64

Otherwise, the same test appears twice, once with PASS, once with UNSUPPORTED
on non-ia64. Just add '(ia64)' to the name so binutils.log is clearer.

* testsuite/binutils-all/testranges-ia64.d (#name): Add suffix.

39 hours agorun_lto_binutils_test: Pass $plug_opt to nm
H.J. Lu [Fri, 8 Aug 2025 19:02:54 +0000 (12:02 -0700)] 
run_lto_binutils_test: Pass $plug_opt to nm

Pass $plug_opt to nm when setting dump_prog to nm to load plugin.

PR binutils/21479
* testsuite/ld-plugin/lto-binutils.exp (run_lto_binutils_test):
Pass $plug_opt to nm.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
40 hours agoshould_validate_memtags: Do not dereference references
Keith Seitz [Tue, 5 Aug 2025 17:44:48 +0000 (10:44 -0700)] 
should_validate_memtags: Do not dereference references

should_validate_memtags uses value_as_address to evalute
whether an address for a value is tagged. The comments for
that function simply say, "Extract a value as a C pointer."

While that sounds innoncuous, that function calls coerce_array,
which will dereference any references.  This is not what is
desired here.

This can be demonstrated on an MTE-enabled host, such as aarch64-
based Ampere (example taken from tests introduced in this patch):

(gdb) p b.get_foo ()
Could not validate memory tag: Value can't be converted to integer.
$2 = (const foo &) @0xffffffffed88: {m_a = 42}

While the command completes, gdb didn't actually attempt to
evaluate any memory tags.

Fix this by using unpack_pointer instead.

Tested on x86_64 Fedora 40 and aarch64 RHEL 9.6.

46 hours ago[gdb/testsuite] Fix gdb.tui/basic.exp for TERM=ansis
Tom de Vries [Fri, 8 Aug 2025 11:51:00 +0000 (13:51 +0200)] 
[gdb/testsuite] Fix gdb.tui/basic.exp for TERM=ansis

With test-case gdb.tui/basic.exp and TERM=ansis, I run into (with some logging
added):
...
status line: '<reverse:1><intensity:dim>exec No process (asm) In:
             L??   PC: ?? <reverse:0><intensity:normal>'
FAIL: gdb.tui/basic.exp: status window: reverse
...

The status window uses ncurses attribute standout, which can differ between
different terminal settings.

Fix this by making the matching less strict.

Tested on x86_64-linux.

46 hours ago[gdb/testsuite] Fix gdb.tui/main-2.exp for TERM=ansis
Tom de Vries [Fri, 8 Aug 2025 11:51:00 +0000 (13:51 +0200)] 
[gdb/testsuite] Fix gdb.tui/main-2.exp for TERM=ansis

When running test-case gdb.tui/main-2.exp with TERM=ansis, I get:
...
screen line 6: 'B+><fg:black><intensity:bold>    21 <reverse:1><fg:default><intensity:normal>  return 0;<reverse:0>                                                         '
FAIL: gdb.tui/main-2.exp: highlighted line in middle of source window
...

The test tries to check the highlighting of the source line, but also gets the
part with the line number, which makes it more complicated to parse.

Fix this by getting just the part with the source line:
...
screen line 6: '<reverse:1>  return 0;<reverse:0>                                     \
                    '
...

Tested on x86_64-linux.

46 hours ago[gdb/testsuite] Initial TERM=ansis support in tuiterm
Tom de Vries [Fri, 8 Aug 2025 11:51:00 +0000 (13:51 +0200)] 
[gdb/testsuite] Initial TERM=ansis support in tuiterm

While investigating using TERM=ansiw for freebsd, I also came across
TERM=ansis which unlike ansiw is present on both linux and freebsd.

Add initial support for TERM=ansi in tuiterm:
- handle ansis in Term::_have_bw
- add Term::_csi_x to support (well, ignore) DECREQTPARM
  (Request Terminal Parameters)

This is sufficient to make the TUI testsuite pass on x86_64-freebsd.

47 hours ago[gdb/testsuite] Fix gdb.tui/tui-layout-asm-short-prog.S compilation
Tom de Vries [Fri, 8 Aug 2025 11:23:51 +0000 (13:23 +0200)] 
[gdb/testsuite] Fix gdb.tui/tui-layout-asm-short-prog.S compilation

The test-case gdb.tui/tui-layout-asm-short-prog.exp uses an assembly file
gdb.tui/tui-layout-asm-short-prog.S that it compiles using -nostdlib and
-nostartfiles.

However, on x86_64-linux the resulting executable still has dependencies on
libm and libc:
...
$ ldd outputs/gdb.tui/tui-layout-asm-short-prog/tui-layout-asm-short-prog
linux-vdso.so.1 (0x00007ffddf3ec000)
libm.so.6 => /lib64/libm.so.6 (0x00007f8b13406000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8b13000000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8b1350f000)
...
due -lm being added by default_target_compile.

On x86_64-freebsd, using -nostdlib and -nostartfiles in combination with -lm
causes the compilation to fail.

Fix this by using -static as well.

Tested on x86_64-linux and x86_64-freebsd.

47 hours ago[gdb/testsuite] Fix gdb.base/exprs.exp for gdb build with byacc
Tom de Vries [Fri, 8 Aug 2025 10:57:01 +0000 (12:57 +0200)] 
[gdb/testsuite] Fix gdb.base/exprs.exp for gdb build with byacc

On x86_64-freebsd, with test-case gdb.base/exprs.exp I get:
...
(gdb) print 23
yydebug: state 0, reading 257 (INT)
yydebug: state 0, shifting to state 1
yydebug: state 1, reducing by rule 94 (exp : INT)
yydebug: after reduction, shifting from state 0 to state 59
yydebug: state 59, reading 0 (end-of-file)
yydebug: state 59, reducing by rule 7 (exp1 : exp)
yydebug: after reduction, shifting from state 0 to state 60
yydebug: state 60, reducing by rule 1 (start : exp1)
yydebug: after reduction, shifting from state 0 to state 58
$220 = 23
(gdb) FAIL: gdb.base/exprs.exp: print with debugging
...

The test fails because it's not finding the string "Starting parse".

In this case, the .y files are processed used byacc.  I suppose the testcase
matches the case that bison is used.

Fix this by grepping for something more generic: shift or Shift.

Tested on x86_64-linux and x86_64-freebsd.

2 days agobfd/ELF/Arm: make various arrays static / const
Jan Beulich [Fri, 8 Aug 2025 09:45:03 +0000 (11:45 +0200)] 
bfd/ELF/Arm: make various arrays static / const

There's no reason to have the compiler materialize objects onto the
stack. And there's also no reason to allow comb[] and name_table[] to be
modifiable.

2 days agobfd/ELF/RISC-V: make one local array static and several const
Jan Beulich [Fri, 8 Aug 2025 09:44:39 +0000 (11:44 +0200)] 
bfd/ELF/RISC-V: make one local array static and several const

There's no reason for riscv_all_supported_ext[] to appear in libbfd.so's
dynamic symbol table. There's also no reason for various pieces of data
to live in .data, when .data.rel.ro or even .rodata can do.

2 days agobfd/ELF: make three local arrays static
Jan Beulich [Fri, 8 Aug 2025 09:44:12 +0000 (11:44 +0200)] 
bfd/ELF: make three local arrays static

... and const. There's no reason to have the compiler copy anonymous
objects onto the stack. And there's also no reason to allow the arrays
to be modifiable.

2 days agoArm: parse_neon_type() weaknesses
Jan Beulich [Fri, 8 Aug 2025 09:43:02 +0000 (11:43 +0200)] 
Arm: parse_neon_type() weaknesses

The custom parsing done there and in one of its callers allowed various
bogus constructs to be accepted. Insist on a non-zero leading digit when
parsing numbers, don't lose upper bits, and insist on proper separation
of operands.

2 days agoopcodes/aarch64: shrink aarch64_ext_ldst_reglist()'s data[]
Jan Beulich [Fri, 8 Aug 2025 09:42:32 +0000 (11:42 +0200)] 
opcodes/aarch64: shrink aarch64_ext_ldst_reglist()'s data[]

The values are all pretty small; one is even a boolean. No point in
wasting 32 bits for every one of the fields.

2 days agoopcodes/aarch64: rename fields[]
Jan Beulich [Fri, 8 Aug 2025 09:41:58 +0000 (11:41 +0200)] 
opcodes/aarch64: rename fields[]

To be a fair global name space citizen, give it an aarch64_ prefix. In
two cases, drop a variable that's used only once.

2 days ago[gdb/testsuite] Add gdb.base/color-prompt.exp
Tom de Vries [Fri, 8 Aug 2025 08:51:18 +0000 (10:51 +0200)] 
[gdb/testsuite] Add gdb.base/color-prompt.exp

After updating the documentation in commit cf03713dd1c ("[gdb/cli] Document
\001 and \002 usage for set prompt"), I started to wonder if I could reproduce
the CLI issue described in PR cli/28887 using the TUI.

That turned out not to be the case, but I noticed handling of the markers in
tui_puts and tui_puts_internal, and no test-case exercising this, so I
decided to add this.

After doing so in gdb.tui/color-prompt.exp, I realized I could use the same
code to test the CLI case.

Add test-case gdb.base/color-prompt.exp that shares code with
gdb.tui/color-prompt.exp in gdb.tui/color-prompt.exp.tcl.

For the CLI case, I was hoping to reproduce the behaviour described in the PR,
but it didn't trigger.

FTR, I manually reproduced the behaviour and used script to record it.  I
observed the following sequence after the C-a:
- ^M (CR)             : go to start of line
- ^[[K (EL)           : erase line
- ^M (CR)             : go to start of line
- ^[[31m(gdb) ^[[0m   : output prompt
- some long command   : output text
- ^M (CR)             : go to start of line
- ^[[C, 15 times (CUF): cursor forward 15 times
giving me:
...
(gdb) some long command
               ^
...

Perhaps we'll trigger this on some other os, or once we start using a
different TERM value.

Tested on x86_64-linux.

2 days ago[gdb/tdep] Fix inferior call return of small char array for ppc64 v1 abi
Tom de Vries [Fri, 8 Aug 2025 05:19:50 +0000 (07:19 +0200)] 
[gdb/tdep] Fix inferior call return of small char array for ppc64 v1 abi

In ppc64_sysv_abi_return_value I came across this if clause:
...
   /* Small character arrays are returned, right justified, in r3.  */
  if (valtype->code () == TYPE_CODE_ARRAY
      && !valtype->is_vector ()
      && valtype->length () <= 8
      && valtype->target_type ()->code () == TYPE_CODE_INT
      && valtype->target_type ()->length () == 1)
...

I decided to write a test-case to try and trigger this.

AFAIU, in C/C++, we're not allowed to return an array, so I wrote an Ada
test-case instead, with a function returning this type:
...
  type T is new String (1 .. 4);
...

After doing so I realized that the clause above is not triggering because
valtype->target_type ()->code () == TYPE_CODE_CHAR.  Fix this by allowing
both TYPE_CODE_INT and TYPE_CODE_CHAR.

Then I realized that the specific "small character array" handling comes from
the v1 abi.  Add a check for this as well.

Tested on ppc64le-linux, with v2 abi.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
2 days agoAutomatic date update in version.in
GDB Administrator [Fri, 8 Aug 2025 00:00:10 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 days agoldlang.c: Don't include "elf-bfd.h" twice
H.J. Lu [Thu, 7 Aug 2025 14:39:54 +0000 (07:39 -0700)] 
ldlang.c: Don't include "elf-bfd.h" twice

* ldlang.c: Don't include "elf-bfd.h" twice.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2 days agoMove struct plugin_data_struct to plugin.c
Alan Modra [Wed, 6 Aug 2025 02:06:03 +0000 (11:36 +0930)] 
Move struct plugin_data_struct to plugin.c

It isn't needed anywhere except plugin.c.  The typedef can disappear.
Also make a forward declaraion for ld_plugin_input_file in plugin.h
so that this header can be used without first including plugin-api.h.

bfd/
* plugin.h (struct ld_plugin_input_file): Forward declare.
(struct plugin_data_struct): Move to..
* plugin.c: ..here.
(add_symbols): Size plugin_data without using type.
* archive.c: Don't include plugin-api.h.
* elflink.c: Likewise.
* format.c: Likewise.
binutils/
* ar.c: Don't include plugin-api.h or ansidecl.h.  Only
include plugin.h when BFD_SUPPORTS_PLUGINS.
* nm.c: Don't include plugin-api.h.  Only include plugin.h
when BFD_SUPPORTS_PLUGINS.
* objcopy.c: Likewise.
ld/
* ldfile.c: Don't include plugin-api.h.
* ldmain.c: Likewise.

2 days agoUpdate obsolete autoconf macros
Pietro Monteiro [Thu, 7 Aug 2025 01:47:00 +0000 (21:47 -0400)] 
Update obsolete autoconf macros

bfd/
* bfd.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
binutils/
* configure.ac: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
gas/
* acinclude.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE.
Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.
gprof/
* configure.ac: Replace AC_OUTPUT(file list) with
AC_CONFIG_FILES([file list])\nAC_OUTPUT.
libctf/
* configure.ac: Replace AC_TRY_LINK with AC_LINK_IFELSE.
opcodes/
* configure.ac: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE.

2 days agogdb: change default initialization for register numbers on x86
Christina Schimpe [Mon, 28 Jul 2025 14:00:45 +0000 (07:00 -0700)] 
gdb: change default initialization for register numbers on x86

As defined by the enums amd64_regnum and i386_regnum the register
numbering starts at 0.
Defaults for register numbers are currently set to 0 which seems to
be the wrong default.  Set them to -1 instead.  Configure the right
register number if we find out it's supported in i386_gdbarch_init.

Similarly we don't have to set the num_*regname* variables to 0 in
i386_gdbarch_init, as it's already assigned to 0 by default.

Approved-By: Andrew Burgess <aburgess@redhat.com>
Approved-By: Simon Marchi <simon.marchi@efficios.com>
3 days agolibiberty: sync with gcc
Matthieu Longo [Mon, 4 Aug 2025 10:04:13 +0000 (11:04 +0100)] 
libiberty: sync with gcc

Import the following commits from GCC as of r16-3056-gca2169c65bd169:
0d0837df697 libiberty: disable logging of list content for doubly-linked list tests

3 days agoLoongArch: Fix symbol size after relaxation
Xi Ruoyao [Wed, 6 Aug 2025 04:19:22 +0000 (12:19 +0800)] 
LoongArch: Fix symbol size after relaxation

There's a logic error in loongarch_relax_perform_deletes: when there's
not any delete operation of which the start address is strictly smaller
than the symbol address, splay_tree_predecessor() will return nullptr
and the symbol size will be unchanged even if some bytes of it are
removed.

Make the logic more complete to fix this issue.  Also factor out the
symbol size adjustment logic into a function to avoid code bloating.

Tested-by: WANG Xuerui <git@xen0n.name>
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
3 days agoAutomatic date update in version.in
GDB Administrator [Thu, 7 Aug 2025 00:00:16 +0000 (00:00 +0000)] 
Automatic date update in version.in

3 days agoRevert "Call target_can_do_single_step from maybe_software_singlestep"
Tom Tromey [Wed, 6 Aug 2025 13:14:56 +0000 (07:14 -0600)] 
Revert "Call target_can_do_single_step from maybe_software_singlestep"

This reverts commit 14de1447c9c52c1bfc52588f8652836f66ac6c47.

An automated tester said that this patch caused a regression on
aarch64:

FAIL: gdb.arch/aarch64-atomic-inst.exp: Step through the ldxr/stxr sequence (timeout)

I looked into it a bit yesterday but couldn't see an obvious problem;
and it's somewhat of a pain to try to debug it at the moment.

Tom de Vries also noticed this and filed it in bugzilla.  So, I'm
backing the patch out until I can port the failing test to the AdaCore
internal test suite in order to find out what went wrong.

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

3 days agostrip: Don't treat fat IR objects as plugin object
H.J. Lu [Sun, 3 Aug 2025 17:28:40 +0000 (10:28 -0700)] 
strip: Don't treat fat IR objects as plugin object

Fat IR objects contains both regular sections and IR sections.  After

commit 717a38e9a02109fcbcb18bb2ec3aa251e2ad0a0d
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Sun May 4 05:12:46 2025 +0800

    strip: Add GCC LTO IR support

"strip --strip-debug" no longer strips debug sections in fat IR objects
since fat IR objects are recognized as plugin object and copied as unknown
objects.  Add a is_strip_input field to bfd to indicate called from strip.
Update bfd_check_format_matches not to treat archive member nor standalone
fat IR object as IR object so that strip can remove debug and IR sections
in fat IR object.  For archive member, it is copied as an unknown object
if the plugin target is in use or it is a slim IR object.  For standalone
fat IR object, it is copied as non-IR object.

bfd/

PR binutils/33246
* archive.c: Include "plugin-api.h" and "plugin.h" if plugin is
enabled.
(_bfd_compute_and_write_armap): Don't complain plugin is needed
when the plugin target is in use.
* bfd-in2.h: Regenerated.
* bfd.c (bfd): Add is_strip_input.
* format.c (bfd_set_lto_type): If there is .llvm.lto section,
set LTO type to lto_fat_ir_object.
(bfd_check_format_matches): Don't set LTO type when setting
format.  When called from strip, don't treat archive member nor
standalone fat IR object as an IR object.
* plugin.c (bfd_plugin_get_symbols_in_object_only): Copy LTO
type derived from input sections.

nm/

PR binutils/33246
* nm.c (filter_symbols): Don't complain plugin is needed when
the plugin target is in use.
(display_rel_file): Likewise.
* objcopy.c (copy_archive): Set the BFD is_strip_input field of
archive member to 1 to indicate called from strip.  Also copy
slim IR archive member as unknown object.
(copy_file): Set the BFD is_strip_input field of input bfd to
1 to indicate called from strip.
(strip_main): Keep .gnu.debuglto_* sections unless all GCC LTO
sections will be removed.

ld/

PR binutils/33246
* testsuite/ld-plugin/lto-binutils.exp (run_pr33246_test): New.
Run binutils/33246 tests with GCC and Clang.
* testsuite/ld-plugin/pr33246.c: New file.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
4 days agoAutomatic date update in version.in
GDB Administrator [Wed, 6 Aug 2025 00:00:17 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 days agoRemove bfd_check_format_lto
Alan Modra [Tue, 5 Aug 2025 11:48:44 +0000 (21:18 +0930)] 
Remove bfd_check_format_lto

Tidy changes to bfd_check_format_matches made by commit 9b854f169df9
which added a bfd_plugin_specified_p test and commit f752be8f916e
which added an lto_sections_removed arg.  Both of these changes are
unnecessary if plugin_format is set to bfd_plugin_no before calling
bfd_check_format.  bfd_plugin_no will prevent the plugin object_p
function from returning a match (and in the first case from a segfault
when loading plugins while a plugin is running).  The plugin object_p
function already protected itself from recursive calls by setting
bfd_plugin_no before loading a plugin, but commit 9b854f169df9 opened
new bfds so they were unprotected.

It isn't strictly necessary to test for bfd_plugin_no in
bfd_check_format_matches but I kept the check to minimise functional
changes.  Close inspection of the patch will notice I've added an
is_linker_input test too.  That also isn't strictly necessary, I
think, but the match_count test was for the linker.  See commit
999d6dff80fa.

PR 12291
PR 12430
PR 13298
PR 33198
bfd/
* format.c (bfd_check_format_lto): Revert to bfd_check_format.
(bfd_check_format_matches_lto): Revert to bfd_check_format_matches.
Correct comments.  Manage both the lto_sections_removed and
bfd_plugin_specified_p cases by testing for bfd_plugin_no.
* plugin.c (bfd_plugin_get_symbols_in_object_only): Set
plugin_format to bfd_plugin_no before checking new bfds.
(try_load_plugin): Comment setting bfd_plugin_no.
(bfd_plugin_specified_p): Delete.
* plugin.h (bfd_plugin_specified_p): Delete.
* bfd-in2.h: Regenerate.
binutils/
* objcopy.c (copy_archive): Replace bfd_check_format_lto calls
with bfd_check_format using plugin_format set to bfd_plugin_no.
(check_format_object): New function.
(copy_file): Use it.

4 days agoUse '.rs' extension for Rust in gdb_simple_compile
Tom Tromey [Tue, 5 Aug 2025 18:10:34 +0000 (12:10 -0600)] 
Use '.rs' extension for Rust in gdb_simple_compile

While trying out gccrs, I noticed that gdb_simple_compile does not use
the ".rs" extension for Rust sources.  This patch fixes the problem,
which lets gccrs get a little further in the test suite.

4 days agoDo not include cleanups.h from common-defs.h
Tom Tromey [Mon, 4 Aug 2025 15:01:56 +0000 (09:01 -0600)] 
Do not include cleanups.h from common-defs.h

Most code doesn't use cleanups any more, so remove the include of
cleanups.h from common-defs.h, and then only include that file where
it is truly needed.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
4 days ago[UI/TUI] Add support for italic and underline ANSI escape sequences
Jannik Hartung [Tue, 5 Aug 2025 11:50:58 +0000 (13:50 +0200)] 
[UI/TUI] Add support for italic and underline ANSI escape sequences

The ANSI escape sequence translation layer in TUI mode strips italic
or underlined text modes silently. You cannot output text formatted
like that using `TuiWindow.write` in Python at the moment.

Parse the ANSI escape sequences for italic and underlined text into
the `ui_file_style` structure and apply it to the TUI window when
applying styles, similar to preserving the bold/dim state already.

A script like this shows italic and underlined text correctly now.
```python
import gdb

class TestTUIWindow:
    _tui_window: gdb.TuiWindow

    def __init__(self, tui_window: gdb.TuiWindow) -> None:
        self._tui_window = tui_window
        self._tui_window.title = "colors test"

    def render(self) -> None:
        self._tui_window.write("""
\x1b[4mThis is underlined.\x1b[24m And normal text.
\x1b[3mThis is italic.\x1b[23m And normal text.
""", True)

gdb.register_window_type("colortest", TestTUIWindow)
```

And launching it with
```
source the_above_script.py
tui new-layout test colortest 1 cmd 1
layout test
```

Approved-By: Tom Tromey <tom@tromey.com>
5 days agoAutomatic date update in version.in
GDB Administrator [Tue, 5 Aug 2025 00:00:10 +0000 (00:00 +0000)] 
Automatic date update in version.in

5 days ago[gdb/testsuite] Fix gdb.base/style.exp on freebsd
Tom de Vries [Mon, 4 Aug 2025 18:49:04 +0000 (20:49 +0200)] 
[gdb/testsuite] Fix gdb.base/style.exp on freebsd

On x86_64-freebsd, with test-case gdb.base/style.exp I run into:
...
(gdb) print $_colorsupport
\e[36;49;22;27m$1\e[m = "monochrome"
(gdb) FAIL: $exp: colorsupport_8color: color support is 8 color
...

Fix this by applying the same fix as for tuiterm: use TERM=ansiw instead of
TERM=ansi for bsd, getting us instead:
...
(gdb) print $_colorsupport
\e[36;49;22;27m$1\e[m = "monochrome,ansi_8color"
(gdb) PASS: $exp: colorsupport_8color: color support is 8 color
...

Tested on x86_64-freebsd.

5 days agoDisabling hardware single step in gdbserver
Tom Tromey [Wed, 7 Jun 2023 15:32:46 +0000 (09:32 -0600)] 
Disabling hardware single step in gdbserver

This patch gives gdbserver the ability to omit the 's' reply to
'vCont?'.  This tells gdb that hardware single-step is definitely not
supported, causing it to fall back to using software single-step.
This is useful for testing the earlier change to
maybe_software_singlestep.

Approved-By: Andrew Burgess <aburgess@redhat.com>
5 days agoCall target_can_do_single_step from maybe_software_singlestep
Tom Tromey [Wed, 7 Jun 2023 14:56:03 +0000 (08:56 -0600)] 
Call target_can_do_single_step from maybe_software_singlestep

When the PikeOS osabi sniffer was added, Pedro suggested that a target
could omit stepping from its vCont? reply packet to tell gdb that
software single-step must be used:

https://sourceware.org/legacy-ml/gdb-patches/2018-09/msg00312.html

This patch implements this idea by moving the call to
target_can_do_single_step into maybe_software_singlestep.

I've also removed some FIXME comments from gdbarch_components.py, and
slightly updated the documentation for gdbarch_software_single_step.
I think these comments are somewhat obsolete now that
target_can_do_single_step exists -- the current approach isn't exactly
what the comments intended, but on the other hand, it exists and
works.

Following review comments from Andrew, this version changes
record-full to use maybe_software_singlestep, and then combines
maybe_software_singlestep with insert_single_step_breakpoint.

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

5 days agogdb: Add myself to gdb/MAINTAINERS
Jannik Hartung [Mon, 4 Aug 2025 14:57:27 +0000 (16:57 +0200)] 
gdb: Add myself to gdb/MAINTAINERS

5 days agowindres PR 33244 testcase
Alan Modra [Sat, 2 Aug 2025 05:52:15 +0000 (15:22 +0930)] 
windres PR 33244 testcase

Make the windres testing both parse .rc files to binary and back
again.  It's not possible to compare against the original .rc file
unfortunately, but at least this checks for the segfault fixed by
commit 891d1654d731.

PR 33244
* testsuite/binutils-all/windres/psql.rc: New file.
* testsuite/binutils-all/windres/windres.exp: Do a -J res
-O rc conversion too.  Correct verbose message.

6 days agoAutomatic date update in version.in
GDB Administrator [Mon, 4 Aug 2025 00:00:08 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 days agoAutomatic date update in version.in
GDB Administrator [Sun, 3 Aug 2025 00:00:09 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 days agoRe: resbin: don't pass NULL as printf %s arg
Alan Modra [Sat, 2 Aug 2025 00:42:21 +0000 (10:12 +0930)] 
Re: resbin: don't pass NULL as printf %s arg

Commit c6c8d0b82175 went completely the wrong way.  "key" needs to be
NULL as that reads a different type of data.

PR 33244
* resbin.c (get_version_header): Don't pass a NULL key on to
toosmall.
(bin_to_res_version): Restore NULL key cases.

8 days agoAutomatic date update in version.in
GDB Administrator [Sat, 2 Aug 2025 00:00:21 +0000 (00:00 +0000)] 
Automatic date update in version.in

8 days agogdb/MAINTAINERS: Update my email address
Jan Vrany [Fri, 1 Aug 2025 16:33:01 +0000 (17:33 +0100)] 
gdb/MAINTAINERS: Update my email address

8 days agogprof: Run tst-gmon-gprof-l.sh after tst-gmon-gprof.sh
H.J. Lu [Thu, 31 Jul 2025 13:30:59 +0000 (06:30 -0700)] 
gprof: Run tst-gmon-gprof-l.sh after tst-gmon-gprof.sh

Both tst-gmon-gprof.sh and tst-gmon-gprof-l.sh generate gmon.out and
process it.  Run tst-gmon-gprof-l.sh after tst-gmon-gprof.sh to avoid
the race condition.

* testsuite/Makefile.am (tst-gmon-gprof-l.out): Depend on
tst-gmon-gprof.out.
* testsuite/Makefile.in: Regenerated.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
9 days agogdbserver: switch to using getopt_long for argument processing
Andrew Burgess [Tue, 8 Jul 2025 13:28:03 +0000 (14:28 +0100)] 
gdbserver: switch to using getopt_long for argument processing

Update gdbserver to use getopt_long for argument processing.  This
turned out to be easier than I expected.

Interesting parts of this patch are:

I pass '+' as the OPTSTRING to getopt_long, this prevents getopt_long
from reordering the contents of ARGV.  This is needed so that things
like this will work:

  gdbserver :54321 program --arg1 --arg2

Without the '+', getopt_long will reorder ARGV, moving '--arg1' and
'--arg2' forward and handling them as arguments to gdbserver.

Because of this (not reordering) and to maintain backward
compatibility, we retain a special case to deal with '--attach' which
can appear after the PORT, like this:

  gdbserver :54321 --attach PID

I did consider adding a warning to this special case, informing the
user that placing --attach after the PORT was deprecated, but in the
end I didn't want to really change the behaviour as part of this
commit, so I've left that as an optional change for the future.

The getopt_long function supports two value passing forms, there is
'--option=value', and also '--option value'.  Traditionally, gdbserver
only supports the first of these.  To maintain this behaviour, after
the call to getopt_long, I spot if '--option value' was used, and if
so, modify the state so that it seems that no value was passed, and
that 'value' is the next ARGV entry to be parsed.  We could, possibly,
remove this code in the future, but that would be a functional change,
which is not something I want in this commit.

Handling of "-" for stdio connection has now moved out of the argument
processing loop as '-' isn't considered a valid option by getopt_long,
this is an improvement as all PORT handling is now in one place.

I've tried as much as possible to leave user visible functionality
unchanged after this commit, and as far as I can tell from testing,
nothing has changed.

Approved-By: Tom Tromey <tom@tromey.com>
9 days agogdbserver: exit with code 1 after missing packet name
Andrew Burgess [Sat, 12 Jul 2025 12:29:19 +0000 (13:29 +0100)] 
gdbserver: exit with code 1 after missing packet name

When using the command:

  $ gdbserver --disable-packet

gdbserver lists all the packets that can be disabled, and then exits.
I think that this output is a helpful error message that is printed
when the user has forgotten to entry a packet name.  We get similar
output if we run the command:

  $ gdbserver --disable-packet=foo

where gdbserver tells us that 'foo' is invalid, and then lists the
packets that we can use.

The difference is that, in the first case, gdbserver exits with a code
of 0, and in the second, gdbserver exits with a code of 1.

I think both these cases should exit with a code of 1.

With the exception of '--help' and '--version', where we are asking
gdbserver to print some message then exit (which are, and should exit
with a code of 0), in all other cases where we do an early exit, I
think this is an indication that the user has done something
wrong (entered and invalid argument, or missed an argument value), and
gdbserver should exit with a non-zero exit code to indicate this.

This commit updates the exit code in the above case from 0 to 1.

Approved-By: Tom Tromey <tom@tromey.com>
9 days agogdbserver: convert locals to `bool` in captured_main
Andrew Burgess [Sat, 12 Jul 2025 10:35:47 +0000 (11:35 +0100)] 
gdbserver: convert locals to `bool` in captured_main

Within gdbserver/server.cc, in captured_main, convert some locals to
bool.  Move the declaration of some locals into the body of the
function.

There should be no user visible changes after this commit.

Approved-By: Tom Tromey <tom@tromey.com>
9 days agoopcodes/x86: make i386_mnem[] static
Jan Beulich [Fri, 1 Aug 2025 07:18:31 +0000 (09:18 +0200)] 
opcodes/x86: make i386_mnem[] static

With the tables no longer being part of libopcodes (but rather being
compiled directly into gas), this table doesn't need exposing anymore.
The declaration cannot be avoided, though, as the first use of the
array sits ahead of its definition (in i386-tbl.h).

9 days agoopcodes/riscv: make riscv_options[] const
Jan Beulich [Fri, 1 Aug 2025 07:18:15 +0000 (09:18 +0200)] 
opcodes/riscv: make riscv_options[] const

There's no reason to allow the array to be modifiable. In fact the
compiler is able to infer this, placing the array in .data.rel.ro, but
let's make it explicit.

9 days agoopcodes/ppc: make ppc_opts[] static const
Jan Beulich [Fri, 1 Aug 2025 07:17:54 +0000 (09:17 +0200)] 
opcodes/ppc: make ppc_opts[] static const

There's no reason to allow the array to be modifiable, nor for it to be
globally visible.

9 days agoopcodes/aarch64: convert print_sme_za_list()'s zan[] / zan_v[]
Jan Beulich [Fri, 1 Aug 2025 07:17:40 +0000 (09:17 +0200)] 
opcodes/aarch64: convert print_sme_za_list()'s zan[] / zan_v[]

Merge them into a single array of struct type. There's further no reason
to have the compiler materialize such objects on the stack. And there's
also no reason to allow the array(s) to be modifiable. Finally, given
how short the strings are, there's little point using more space to
store pointers to them (on 64-bit hosts; the situation is a little
better on 32-bit ones).

While there also correct indentation in adjacent code, and avoid open-
coding ARRAY_SIZE().

9 days agoopcodes/aarch64: make aarch64_opnd_qualifiers[] static const
Jan Beulich [Fri, 1 Aug 2025 07:16:56 +0000 (09:16 +0200)] 
opcodes/aarch64: make aarch64_opnd_qualifiers[] static const

There's no reason to allow the array to be modifiable, nor for it to be
globally visible.

9 days agoopcodes/aarch64: make aarch64_ext_ldst_reglist()'s data[] static const
Jan Beulich [Fri, 1 Aug 2025 07:16:41 +0000 (09:16 +0200)] 
opcodes/aarch64: make aarch64_ext_ldst_reglist()'s data[] static const

There's no reason to have the compiler materialize such an object onto the
stack. And there's also no reason to allow the array to be modifiable.

9 days agogas: check section size against entry size
Jan Beulich [Fri, 1 Aug 2025 07:16:19 +0000 (09:16 +0200)] 
gas: check section size against entry size

If a section has a non-zero entry size, its total size would generally
better be a multiple of the entry size. Warn if that's not the case.

9 days agoUpdate my e-mail
Luis Machado [Fri, 1 Aug 2025 05:37:52 +0000 (06:37 +0100)] 
Update my e-mail

Update some entries in the gdb/MAINTAINERS file.

9 days agogdb/dwarf: sort dwarf2_per_bfd::all_units by (section, offset)
Simon Marchi [Wed, 9 Jul 2025 15:35:13 +0000 (11:35 -0400)] 
gdb/dwarf: sort dwarf2_per_bfd::all_units by (section, offset)

This patch started as a fix for PR 29518 ("GDB doesn't handle
DW_FORM_ref_addr DIE references correctly with .debug_types sections")
[1], but the scope has expanded a bit to fix the problem more generally,
after I spotted a few issues related to the order of all_units.  The
first version of this patch is here [2].

PR 29518 shows that dwarf2_find_containing_comp_unit can erroneously
find a type unit.  The obvious problem is that the
dwarf2_find_containing_comp_unit function searches the whole all_units
vector (containing both comp and type units), when really it should just
search the compilation units.  A simple solution would be to make it
search the all_comp_units view (which is removed in a patch earlier in
this series).

I then realized that in DWARF 5, since type units are in .debug_info
(versus .debug_types in DWARF 4), type units can be interleaved with
comp type in the all_units vector.  That would make the all_comp_units
and all_type_units views erroneous, and dwarf2_find_containing_comp_unit
could still return something wrong.  In v1, I added a sort in
finalize_all_units to make sure all_units is in the order that
dwarf2_find_containing_comp_unit expects:

 - comp units from the main file
 - type units from the main file
 - comp units from the dwz file
 - type units from the dwz file (not actually supported, see PR 30838)

Another problem I spotted is that the .gdb_index reader creates units in
this order:

 - comp units from .gdb_index from main file
 - comp units from .gdb_index from dwz file
 - type units from .gdb_index from main file

This isn't the same order as above, so it would need the same sort step.

Finally, I'm not exactly sure if and when it happens, but it looks like
lookup_signatured_type can be called at a later time (after the initial
scan and creation of dwarf2_per_cu object creation), when expanding a
symtab.  And that could lead to the creation of a new type unit (see
function add_type_unit), which would place the new type unit at the end
of the all_units vector, possibly screwing up the previous order.

To handle all this in a nice and generic way, Tom Tromey proposed to
change the all_units order, so that units are sorted by section, then
section offset.  This is what this patch implements.  The sorting is
done in finalize_all_units.

This works well, because when looking up a unit by section offset, the
caller knows which section the unit is in.  Passing down a (section,
section offset) tuple makes it clear and unambiguous what unit the
caller is referring to.  It should help eliminate some bugs where the
callee used the section offset in the wrong section.  Passing down the
section along with the section offset replaces the "is_dwz" flag passed
to dwarf2_find_containing_comp_unit and a bunch of other functions in a
more general way.

dwarf2_find_containing_comp_unit can now legitimately find and return
type units even though it should be needed (type units are typically
referred to by signature).  But I don't think there is harm for this
function to be more generic than needed.  I therefore I renamed it to
dwarf2_find_containing_unit.

The sort criterion for "section" can be anything, as long as we use the
same for sorting and searching.  In this patch, I use the pointer to
dwarf2_section_info, because it's easy.  The downside is that the actual
order depends on what the memory allocator decided to return, so could
change from run to run, or machine to machine.  Later, I might change it
so that sections are ordered based on their properties, making the order
stable across the board.  This logic is encapsulated in the
all_units_less_than function, so it's easy to change.

The .debug_names reader can no longer rely on the order of the all_units
vector for its checks, since all_units won't be the same order as found
in the .debug_names lists.  In fact, even before, it wasn't: this check
assumed that .debug_info had all CUs before TUs, and that the index
listed them in the exact same order.  When I build a file with gcc and
"-gdwarf-5 -fdebug-types-section", type units appear first in
.debug_info.  This caused GDB to reject a .debug_names index that is had
produced:

    $ GDB="./gdb -nx -q --data-directory=data-directory" /home/smarchi/src/binutils-gdb/gdb/contrib/gdb-add-index.sh -dwarf-5 hello.so
    $ ./gdb -nx -q --data-directory=data-directory hello.so
    Reading symbols from hello.so...

    ⚠️  warning: Section .debug_names has incorrect entry in CU table, ignoring .debug_names.

To make it work, add a new dwarf2_find_unit function that allows looking
up a unit by start address (unlike dwarf2_find_containing_unit, which
can find by any containing address), and make the .debug_names reader
use it.  It might make the load time of .debug_names a bit longer (the
build and check step is now going to be O(n*log(n)) instead of O(n)
where n is the number of units, or something like that), but I think
it's important to be correct here.

This patch adds a test
(gdb.dwarf2/dw-form-ref-addr-with-type-units.exp), which tries to
replicate the problem as shown by PR 29518.

gdb.base/varval.exp needs a small change, because an error message
changes (for the better, I think)

gdb.dwarf2/debug-names-non-ascending-cu.exp now fails, because GDB no
longer rejects a .debug_names index which lists CUs in a different order
than .debug_info.  Given the change I did to the .debug_names reader,
explained above, I don't think this is a problem anymore (GDB can accept
an index like that).  I also don't think that DWARF 5 mandates that CUs
are in ascending order.  Delete this test.

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=29518
[2] https://inbox.sourceware.org/gdb-patches/20250218193443.118139-1-simon.marchi@efficios.com/

Change-Id: I45f982d824d3842ac1eb73f8cce721a0a24b5faa
Approved-By: Tom Tromey <tom@tromey.com>
9 days agogdb/dwarf: sort units when writing index
Simon Marchi [Wed, 9 Jul 2025 15:35:12 +0000 (11:35 -0400)] 
gdb/dwarf: sort units when writing index

The order of all_units can't be relied on when writing the CU and TU
lists to .gdb_index or .debug_names.

Both the .gdb_index and .debug_names writers expect that all_units
contains comp units followed by type units.  As of this commit, when
reading a DWARF 5 .debug_info, the all_units vector is ordered based on
the order the units appear in .debug_info, where type units can be
interleaved with comp units.

It probably worked fine with DWARF 4, where type units were in a section
of their own (.debug_types).  They were read after comp units, and
therefore after them in the all_units vector.

Change the writers to use a common function that splits the units in two
lists (comp units and type units).  Sort both lists by section offset.
This is more than required, but it should help produce a stable and
predictable output.

Change-Id: I5a22e2e354145e3d6b5b2822dc2a3af2f9d6bb76
Approved-By: Tom Tromey <tom@tromey.com>
9 days agogdb/dwarf: make .gdb_index reader use its own list of units
Simon Marchi [Wed, 9 Jul 2025 15:35:11 +0000 (11:35 -0400)] 
gdb/dwarf: make .gdb_index reader use its own list of units

The .gdb_index reader currently uses per_bfd::all_units when translating
a numerical index (as found in an index entry) to a dwarf2_per_cu.  The
order of per_bfd::all_units is going to change in a subsequent patch, so
the indices as found in the index won't map to the right unit in
all_units.  Change the .gdb_index reader to maintain its own vector,
with the units in the same order as found in the .gdb_index header.

This is similar to what the .debug_names reader does.  But unlike
.debug_names, .gdb_index treats the CUs and TUs as a single list, as far
as the numerical indices are concerned, so we only need a single list
here (versus two for .debug_names).

Change-Id: I235e9b99bf02fc160dfcdaa610c9aca471f298a7
Approved-By: Tom Tromey <tom@tromey.com>
9 days agogdb/dwarf: move index unit vectors to .debug_names reader and use them
Simon Marchi [Wed, 9 Jul 2025 15:35:10 +0000 (11:35 -0400)] 
gdb/dwarf: move index unit vectors to .debug_names reader and use them

The all_comp_units_index_cus and all_comp_units_index_tus vectors
contain the CU and TU lists as found in the .debug_names list.  It seems
like they are meant to be used by the .debug_names reader when handling
a DW_IDX_compile_unit or DW_IDX_type_unit attribute.  The value of the
attribute would translate directly into an index into one of these
vectors.

However, it looks like these vectors aren't actually used in practice.
They are used in the dwarf2_per_bfd::get_index_{c,t}u methods, which in
turn aren't used anywhere.

The handlers of DW_IDX_compile_unit and DW_IDX_type_unit use the
dwarf2_per_bfd::get_unit method, with the assumption that
dwarf2_per_bfd::all_units has comp units before type units.  This is not
the case: the .debug_names reader creates the units in
dwarf2_per_bfd::all_units using the create_all_units function, which
creates the units in the order found in .debug_info, where type units
can be interleaved with comp units.

Since those vectors are specific to the .debug_names reader, move them
to the mapped_debug_names_reader struct.  Then, update the handlers of
DW_IDX_compile_unit and DW_IDX_type_unit to actually use them.

Change-Id: Ie7db81f4442f634ac6d02280a60c6c671bcd22a5
Approved-By: Tom Tromey <tom@tromey.com>
9 days agogdb/dwarf: remove all_{comp,type}_units views
Simon Marchi [Wed, 9 Jul 2025 15:35:09 +0000 (11:35 -0400)] 
gdb/dwarf: remove all_{comp,type}_units views

In DWARF 5, type units appear in the .debug_info section, interleaved
with comp units, and the order in all_units reflects that.  The
all_comp_units and all_type_units views are wrong in that case
(all_comp_units contains some type units, and vice-versa).

It would be possible to manually sort all_units to ensure that type
units follow comp units, but this series takes the approach of sorting
the units by section and section offset.

Remove those views, and replace their uses with num_comp_units and
num_type_units.  It appears that the views were only used to know the
number of each kind.

The finalize_all_units function is now empty, but I am keeping it
because a subsequent patch adds a call to std::sort in there to sort the
all_units vector.

Change-Id: I42a65b6f1b6192957b55cea0e2eaff097e13a33b
Approved-By: Tom Tromey <tom@tromey.com>
9 days agogdb/dwarf: track compilation and type unit count
Simon Marchi [Wed, 9 Jul 2025 15:35:08 +0000 (11:35 -0400)] 
gdb/dwarf: track compilation and type unit count

A subsequent commit will remove the all_comp_units and all_type_units
array views, since it's not possible to assume that that all_units
vector is segmented between comp and type units.  Some callers still
need to know the number of each kind, so track that separately.

Change-Id: I712fbdfbf10b333c431b688b881cc0987e74f688
Approved-By: Tom Tromey <tom@tromey.com>
9 days agoia64 assembler warning breaks ld tests
Alan Modra [Thu, 31 Jul 2025 21:40:40 +0000 (07:10 +0930)] 
ia64 assembler warning breaks ld tests

The "Warning: Explicit stops are ignored in auto mode" results in
failures of a number of run_ld_link_tests because the compiler is run
using -S and then the resulting .s file assembled without suppplying
-x to gas.  Fix that problem by adding -x to ASFLAGS for ia64, and
tweak the binutils link-order test since the source is used in a ld
test too.

ld/
* testsuite/config/default.exp: Set ASFLAGS to "-x" for ia64.
Remove unnecessary "global".
binutils/
* testsuite/binutils-all/link-order.s: Provide explicit stop.
* testsuite/binutils-all/objcopy.exp: Pass "-x" when building
link-order test for ia64.

9 days agold-elf/shared libpr23161c and pr23161c tests
Alan Modra [Thu, 31 Jul 2025 12:10:12 +0000 (21:40 +0930)] 
ld-elf/shared libpr23161c and pr23161c tests

If I understand these tests correctly it is to ensure that _end,
_edata and __bss_start are not made dynamic.  The dynamic reloc tests
are not really necessary.  (We dropped them from pr23161a and pr23161b
tests a while ago without removing the -r from readelf invocation.)
Dropping the reloc tests allows them to run for more targets.

* testsuite/ld-elf/pr23161c.rd: Rewrite.
* testsuite/ld-elf/pr23161d.rd: Delete.
* testsuite/ld-elf/shared.exp (pr23161a, pr23161b): Remove -r
from readelf check.
(libpr23161c.so, pr23161c): Likewise, and check expected readelf
output using the new pr23161c.rd.

9 days agoAutomatic date update in version.in
GDB Administrator [Fri, 1 Aug 2025 00:03:15 +0000 (00:03 +0000)] 
Automatic date update in version.in

9 days agoDon't nest double quotes in tuiterm.exp
Tom Tromey [Wed, 30 Jul 2025 18:05:38 +0000 (12:05 -0600)] 
Don't nest double quotes in tuiterm.exp

I found a line in tuiterm.exp that causes Emacs paren-matching to go
awry.  This patch fixes the problem by changing some apparent nested
double quotes (which I think isn't really possible in Tcl but this
seems to be the intent) to be more correct; which fixes the Emacs
issue as well.

Approved-By: Tom de Vries <tdevries@suse.de>
9 days agozlib: import zlib-1.3.1 [PR32933]
Sam James [Thu, 31 Jul 2025 13:38:09 +0000 (14:38 +0100)] 
zlib: import zlib-1.3.1 [PR32933]

As done just now on the GCC side in r16-2677-g7a79219383c83c,
import zlib-1.3.1.

9 days agostrip: Treat "default" output_target as unspecified
H.J. Lu [Thu, 31 Jul 2025 03:34:46 +0000 (20:34 -0700)] 
strip: Treat "default" output_target as unspecified

Treat output target as unspecified if it is set to "default".

binutils/

PR binutils/33230
* objcopy.c (copy_file): Treat "default" output_target as
unspecified.

binutils/testsuite/

PR binutils/33230
* binutils-all/x86-64/x86-64.exp (run_pr33230_test): New.
Run binutils/33230 tests with readelf if supported.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
10 days ago[gdb/testsuite] Fix gdb.gdb/python-helper.exp with gdb built with -flto
Tom de Vries [Thu, 31 Jul 2025 07:58:47 +0000 (09:58 +0200)] 
[gdb/testsuite] Fix gdb.gdb/python-helper.exp with gdb built with -flto

With a gdb build with gcc 7.5.0 and "-O2 -flto=auto -g", I run into:
...
(outer-gdb) PASS: gdb.gdb/python-helper.exp: print varobj_table
print inferior_list
$5 = {m_front = 0x212e830, m_back = 0x2e39aa0}
(outer-gdb) FAIL: gdb.gdb/python-helper.exp: print inferior_list
...

The problem is that the type of inferior_list:
...
(outer-gdb) what inferior_list^M
type = intrusive_list^M
(outer-gdb)
...
is not descriptive enough to trigger the pretty pretter.

Note that with a gdb build with -O0, we'd get instead:
...
(outer-gdb) what inferior_list^M
type = intrusive_list<inferior, intrusive_base_node<inferior> >
(outer-gdb)
...

Fix this by detecting this situation, and declaring the test unsupported.

Tested on x86_64-linux.

10 days agostrip: Don't check target_defaulted in input BFD
H.J. Lu [Wed, 30 Jul 2025 15:53:11 +0000 (08:53 -0700)] 
strip: Don't check target_defaulted in input BFD

The target_defaulted field in BFD is set to true if the target isn't
specified.  After

commit 717a38e9a02109fcbcb18bb2ec3aa251e2ad0a0d
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Sun May 4 05:12:46 2025 +0800

    strip: Add GCC LTO IR support

the target is set to "plugin" if BFD supports plugin when the target
isn't specified nor default.  Update strip to check the input target,
instead of the target_defaulted field in input BFD.

PR binutils/33230
* objcopy.c (copy_object): Add a bool argument, target_defaulted,
to indicate if the input target isn't specified nor default.
Check it instead of ibfd->target_defaulted.
(copy_archive): Add a bool argument, target_defaulted, and pass
it to copy_object.
(copy_file): Set target_defaulted to true if the input target
isn't specified and pass it to copy_archive and copy_object.
* testsuite/binutils-all/x86-64/pr33230.obj.bz2: New file.
* testsuite/binutils-all/x86-64/x86-64.exp: Run PR binutils/33230
tests.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
10 days agoAutomatic date update in version.in
GDB Administrator [Thu, 31 Jul 2025 00:01:35 +0000 (00:01 +0000)] 
Automatic date update in version.in

11 days agoPR 33229 nds32 gas segfaults on gcc output
Alan Modra [Tue, 29 Jul 2025 22:48:19 +0000 (08:18 +0930)] 
PR 33229 nds32 gas segfaults on gcc output

Commit 1ac26e9f7ac2 replaced ISSPACE with is_whitespace, but the
former returns true on EOL while the latter does not.  Sprinkle
is_end_of_stmt tests to fix this bug.

The same segfault can be triggered by a ".relax_hint" with no
following instructions.  Fix that too.

* config/tc-nds32.c (nds32_lookup_pseudo_opcode): Use
is_end_of_stmt along with is_whitespace.
(nds32_relax_relocs, nds32_relax_hint, nds32_flag),
(ict_model: Likewise.
(nds32_elf_append_relax_relocs): Return on no opcode.
* testsuite/gas/nds32/nds32.exp: Find .d files automatically.
* testsuite/gas/nds32/pr33229.d,
* testsuite/gas/nds32/pr33229.s: New test.

11 days agoAutomatic date update in version.in
GDB Administrator [Wed, 30 Jul 2025 00:01:44 +0000 (00:01 +0000)] 
Automatic date update in version.in

11 days agoppc _bfd_clear_contents
Alan Modra [Tue, 29 Jul 2025 01:16:04 +0000 (10:46 +0930)] 
ppc _bfd_clear_contents

ppc32 isn't susceptible to the PR33223 segfault, but could hit a
_bfd_clear_contents segfault with a carefully crafted invalid object.

* elf32-ppc.c (ARRAY_SIZE): Define.
(ppc_elf_howto_init): Use ARRAY_SIZE.
(ppc_elf_reloc_name_lookup): Likewise.
(ppc_elf_info_to_howto): Likewise, and consolidate error
handling.
(ppc_elf_check_relocs): Guard against segfaults caused by a NULL
howto passed to _bfd_clear_contents.  Use ARRAY_SIZE.

11 days agoPR 33223 ppc64: segfault on unknown relocation
Alan Modra [Tue, 29 Jul 2025 01:09:51 +0000 (10:39 +0930)] 
PR 33223 ppc64: segfault on unknown relocation

Bounds check accesses to ppc64_elf_howto_table and don't dereference a
NULL howto.  I think this catches all cases where that might happen.

PR 33223
bfd/
* elf64-ppc.c (ppc64_elf_info_to_howto): Consolidate error handling.
(ppc64_elf_check_relocs): Tidy error messages.
(ppc64_elf_relocate_section): Don't segfault when attempting to
report an unsupported relocation.  Don't pass a NULL howto to
_bfd_clear_contents.
ld/
* testsuite/ld-powerpc/elfv2-2so.d: Adjust to suit error message
change.

12 days agold: testsuite: Enable ld-elfweak tests on Solaris/x86
Rainer Orth [Tue, 29 Jul 2025 07:45:45 +0000 (09:45 +0200)] 
ld: testsuite: Enable ld-elfweak tests on Solaris/x86

The ld-elfweak tests are currently only enabled on Solaris/SPARC for no
apparent reason.  Enabling them on Solaris in general lets them all PASS
on both amd64-pc-solaris2.11 and i386-pc-solaris2.11.

2025-07-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

ld:
* testsuite/ld-elfweak/elfweak.exp: Enable on *-*-solaris2* rather
than sparc*-*-solaris2* only.

12 days agoAutomatic date update in version.in
GDB Administrator [Tue, 29 Jul 2025 00:01:56 +0000 (00:01 +0000)] 
Automatic date update in version.in

12 days agold: testsuite: Fix "PR ld/28138 (build only)" on Solaris
Rainer Orth [Mon, 28 Jul 2025 21:00:26 +0000 (23:00 +0200)] 
ld: testsuite: Fix "PR ld/28138 (build only)" on Solaris

The

FAIL: PR ld/28138 (build only)

test FAILs on Solaris:

ld/tmpdir/ld/collect-ld: plugin framework: out of file descriptors. Try using fewer objects/archives

ld/tmpdir/ld/collect-ld: cannot find -lgcc: Too many open files
[...]

I found that the test PASSes when using ulimit -n 21 instead of the
current 20.  Looking with strace/truss, on Linux/i686 the following
files are opened:

301543 openat(AT_FDCWD, "tmpdir/pr28138", O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
301543 openat(AT_FDCWD, "/lib/../lib32/crt1.o", O_RDONLY|O_LARGEFILE) = 4
301543 openat(AT_FDCWD, "/lib/../lib32/crt1.o", O_RDONLY|O_LARGEFILE) = 5
301543 openat(AT_FDCWD, "/lib/../lib32/crti.o", O_RDONLY|O_LARGEFILE) = 5
301543 openat(AT_FDCWD, "/lib/../lib32/crti.o", O_RDONLY|O_LARGEFILE) = 6
301543 openat(AT_FDCWD, "lib/gcc/i686-pc-linux-gnu/12.1.0/crtbegin.o", O_RDONLY|O_LARGEFILE) = 6
301543 openat(AT_FDCWD, "lib/gcc/i686-pc-linux-gnu/12.1.0/crtbegin.o", O_RDONLY|O_LARGEFILE) = 7
301543 openat(AT_FDCWD, "tmpdir/pr28138.o", O_RDONLY|O_LARGEFILE) = 7
301543 openat(AT_FDCWD, "tmpdir/pr28138.o", O_RDONLY|O_LARGEFILE) = 8
301543 openat(AT_FDCWD, "tmpdir/pr28138.a", O_RDONLY|O_LARGEFILE) = 8
301543 openat(AT_FDCWD, "tmpdir/pr28138.a", O_RDONLY|O_LARGEFILE) = 9
301543 openat(AT_FDCWD, "tmpdir/pr28138-7.o", O_RDONLY|O_LARGEFILE) = 9
301543 openat(AT_FDCWD, "tmpdir/pr28138-7.o", O_RDONLY|O_LARGEFILE) = 10
301543 openat(AT_FDCWD, "tmpdir/pr28138-6.o", O_RDONLY|O_LARGEFILE) = 10
301543 openat(AT_FDCWD, "tmpdir/pr28138-6.o", O_RDONLY|O_LARGEFILE) = 11
301543 openat(AT_FDCWD, "tmpdir/pr28138-5.o", O_RDONLY|O_LARGEFILE) = 11
301543 openat(AT_FDCWD, "tmpdir/pr28138-5.o", O_RDONLY|O_LARGEFILE) = 12
301543 openat(AT_FDCWD, "tmpdir/pr28138-4.o", O_RDONLY|O_LARGEFILE) = 12
301543 openat(AT_FDCWD, "tmpdir/pr28138-4.o", O_RDONLY|O_LARGEFILE) = 13
301543 openat(AT_FDCWD, "tmpdir/pr28138-3.o", O_RDONLY|O_LARGEFILE) = 13
301543 openat(AT_FDCWD, "tmpdir/pr28138-3.o", O_RDONLY|O_LARGEFILE) = 3
301543 openat(AT_FDCWD, "tmpdir/pr28138-2.o", O_RDONLY|O_LARGEFILE) = 3
301543 openat(AT_FDCWD, "tmpdir/pr28138-2.o", O_RDONLY|O_LARGEFILE) = 4
301543 openat(AT_FDCWD, "tmpdir/pr28138-1.o", O_RDONLY|O_LARGEFILE) = 4
301543 openat(AT_FDCWD, "tmpdir/pr28138-1.o", O_RDONLY|O_LARGEFILE) = 5

while on Solaris/i386 there are a couple more:

27726: openat64(AT_FDCWD, "tmpdir/pr28138", O_RDWR|O_CREAT|O_TRUNC, 0666) = 4
27726: openat64(AT_FDCWD, "/usr/lib/crt1.o", O_RDONLY) = 5
27726: openat64(AT_FDCWD, "/usr/lib/crt1.o", O_RDONLY) = 6
27726: openat64(AT_FDCWD, "lib/gcc/i386-pc-solaris2.11/14.2.0/crtp.o", O_RDONLY) = 6
27726: openat64(AT_FDCWD, "lib/gcc/i386-pc-solaris2.11/14.2.0/crtp.o", O_RDONLY) = 7
27726: openat64(AT_FDCWD, "/usr/lib/crti.o", O_RDONLY) = 7
27726: openat64(AT_FDCWD, "/usr/lib/crti.o", O_RDONLY) = 8
27726: openat64(AT_FDCWD, "/usr/lib/values-Xa.o", O_RDONLY) = 8
27726: openat64(AT_FDCWD, "/usr/lib/values-Xa.o", O_RDONLY) = 9
27726: openat64(AT_FDCWD, "/usr/lib/values-xpg6.o", O_RDONLY) = 9
27726: openat64(AT_FDCWD, "/usr/lib/values-xpg6.o", O_RDONLY) = 10
27726: openat64(AT_FDCWD, "lib/gcc/i386-pc-solaris2.11/14.2.0/crtbegin.o", O_RDONLY) = 10
27726: openat64(AT_FDCWD, "lib/gcc/i386-pc-solaris2.11/14.2.0/crtbegin.o", O_RDONLY) = 11
27726: openat64(AT_FDCWD, "tmpdir/pr28138.o", O_RDONLY) = 11
27726: openat64(AT_FDCWD, "tmpdir/pr28138.o", O_RDONLY) = 12
27726: openat64(AT_FDCWD, "tmpdir/pr28138.a", O_RDONLY) = 12
27726: openat64(AT_FDCWD, "tmpdir/pr28138.a", O_RDONLY) = 13
27726: openat64(AT_FDCWD, "tmpdir/pr28138-7.o", O_RDONLY) = 13
27726: openat64(AT_FDCWD, "tmpdir/pr28138-7.o", O_RDONLY) = 14
27726: openat64(AT_FDCWD, "tmpdir/pr28138-6.o", O_RDONLY) = 14
27726: openat64(AT_FDCWD, "tmpdir/pr28138-6.o", O_RDONLY) = 15
27726: openat64(AT_FDCWD, "tmpdir/pr28138-5.o", O_RDONLY) = 15
27726: openat64(AT_FDCWD, "tmpdir/pr28138-5.o", O_RDONLY) = 16
27726: openat64(AT_FDCWD, "tmpdir/pr28138-4.o", O_RDONLY) = 16
27726: openat64(AT_FDCWD, "tmpdir/pr28138-4.o", O_RDONLY) = 17
27726: openat64(AT_FDCWD, "tmpdir/pr28138-3.o", O_RDONLY) = 17
27726: openat64(AT_FDCWD, "tmpdir/pr28138-3.o", O_RDONLY) = 18
27726: openat64(AT_FDCWD, "tmpdir/pr28138-2.o", O_RDONLY) = 18
27726: openat64(AT_FDCWD, "tmpdir/pr28138-2.o", O_RDONLY) = 19
27726: openat64(AT_FDCWD, "tmpdir/pr28138-1.o", O_RDONLY) = 19
27726: openat64(AT_FDCWD, "tmpdir/pr28138-1.o", O_RDONLY) Err#24 EMFILE

While it seems weird that the same files are opened twice for reading,
it's no wonder that 20 fds aren't enough on Solaris.

To avoid this, I've raised the limit to 25, hoping that this will be
enough on more targets.

Tested on i386-pc-solaris2.11 and i686-pc-linux-gnu.

2025-07-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

ld:
* testsuite/ld-plugin/lto.exp (PR ld/28138 test): Raise fd limit
to 25.

12 days agoAdd forgotten ChangeLog entry for commit 7c1c13e896c76879bcf3fb29332e0a59918bc9e0.
Rainer Orth [Mon, 28 Jul 2025 18:50:07 +0000 (20:50 +0200)] 
Add forgotten ChangeLog entry for commit 7c1c13e896c76879bcf3fb29332e0a59918bc9e0.

12 days agold: testsuite: Skip "Run with libpr19553c.so" test on Solaris
Rainer Orth [Mon, 28 Jul 2025 13:34:12 +0000 (15:34 +0200)] 
ld: testsuite: Skip "Run with libpr19553c.so" test on Solaris

The

FAIL: Run with libpr19553c.so

test FAILs on Solaris (32 and 64-bit, sparc and x86):

Running: tmpdir/pr19553c > tmpdir/pr19553c.out
diff tmpdir/pr19553c.out /vol/src/gnu/binutils/hg/master/local/ld/testsuite/ld-elf/pr19553c.out
1c1
< pr19553b
---
> pr19553c
child process exited abnormally

The test uses .symver, resulting in versioned symbols which the Solaris
ld.so.1 doesn't support and never will.  Running it with LD_DEBUG=all
shows

26493: 1: symbol=foo;  lookup in file=tmpdir/pr19553c  [ ELF ]
26493: 1: symbol=foo;  lookup in file=tmpdir/libpr19553c.so  [ ELF ]
26493: 1: symbol=foo;  skipping entry in file=tmpdir/libpr19553c.so, index[7], version=FOO, due to GNU version hidden bit
26493: 1: symbol=foo;  continuing lookup in file=tmpdir/libpr19553c.so  [ ELF ]
26493: 1: symbol=foo;  lookup in file=tmpdir/libpr19553b.so  [ ELF ]
26493: 1: binding file=tmpdir/pr19553c to file=tmpdir/libpr19553b.so: symbol 'foo'

so this patch skips the test.

2025-07-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

ld:
* testsuite/ld-elf/indirect.exp (Run with libpr19553c.so):
Skip on *-*-solaris2*.

12 days agoAvoid timeouts with gnat-llvm in gdb.ada/operator_call.exp
Tom Tromey [Mon, 28 Jul 2025 13:17:09 +0000 (07:17 -0600)] 
Avoid timeouts with gnat-llvm in gdb.ada/operator_call.exp

While working on gnat-llvm, gdb.ada/operator_call.exp has many
timeouts.  This happens because gnat-llvm's DWARF output is still
incomplete, and so gdb emits an unexpected error in this test.

This patch improves the test by having it recognize this output and
issue a failure rather than a timeout.  This greatly speeds up
testing.

12 days agolibctf: link: rejig lazy opening to not need weak symbols
Nick Alcock [Wed, 23 Jul 2025 13:20:26 +0000 (14:20 +0100)] 
libctf: link: rejig lazy opening to not need weak symbols

The ctf_link_add_ctf API function has a 'lazy opening' feature whereby,
if you pass in the file but not a CTF archive, the archive is opened
as late as possible during links.  This is valuable mostly in
cu-mapped links (a feature not accessible via GNU ld), where it
ensures that, rather than eventually needing memory for the original
link inputs, the smushed-together cu-mapped intermediate outputs,
*and* the final output, we only need enough memory for the smushed-
together outputs, the final output, and one input, since the inputs
can be closed immediately after they are smushed together.

(In GNU ld, the feature is useless because it loads all sections into
memory anyway.)

The lazy-opening feature uses libctf's ctf_open function, which uses
BFD: so it is not available in libctf-nobfd -- except that I thought I
had a cunning trick, and used a weak symbol so that if you linked
libctf-nobfd into your program and then also linked in bfd, the feature
stayed enabled.

This is silly -- if your program is licensed such that you can link in
BFD, you can just link in libctf.so and not bother with libctf-nobfd.so
in the first place.  Worse, the weak symbol usage broke MacOS builds,
since MacOS's system compiler uses a different means of introducing weak
symbols.  We could test for and use it, but this is the only place in
libctf to use weak symbols at all, and the feature of lazy-opening with
libctf-nobfd is so marginal we might as well drop it: it's almost
certain there are zero users, certainly fewer users than users of MacOS
with the system compiler.

While we're at it, simplify things by deleting the never-implemented
feature (not exposed in the API) to allow linking together raw buffers
of CTF data.  If we need it we can bring it back, but all it's doing
right now is complicating the code to no end at all.

libctf/
PR libctf/33194
* ctf-link.c (ctf_open): Delete weak pragma.
(ctf_link_add): Fuse with...
(ctf_link_add_ctf): ... this function.  Drop BUF, N args
and corresponding unimplemented feature warnings.  Only check
NOBFD to see whether lazy loading is available, not PIC as
well.
(ctf_link_lazy_open): Likewise.

12 days agogas: add missing header guard in tc-<arch>.h files
Matthieu Longo [Mon, 14 Jul 2025 14:18:02 +0000 (15:18 +0100)] 
gas: add missing header guard in tc-<arch>.h files

This patch adds missing header guards in some of the tc-<arch>.h,
and merely comments on the corresponding #endif for others. The
patch does not aim at being exhaustive, it only touched the files
relevant for [1].

[1]: https://inbox.sourceware.org/binutils/20250711112913.2453285-1-matthieu.longo@arm.com/

13 days agoAutomatic date update in version.in
GDB Administrator [Mon, 28 Jul 2025 00:00:31 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 weeks agoUpdate release documentation following 2.45 release
Nick Clifton [Sun, 27 Jul 2025 09:55:33 +0000 (10:55 +0100)] 
Update release documentation following 2.45 release

2 weeks agoAutomatic date update in version.in
GDB Administrator [Sun, 27 Jul 2025 00:02:09 +0000 (00:02 +0000)] 
Automatic date update in version.in

2 weeks agodoc: sframe: mention errata 1 of SFrame version 2
Indu Bhagat [Sat, 26 Jul 2025 06:38:40 +0000 (23:38 -0700)] 
doc: sframe: mention errata 1 of SFrame version 2

With the changes of an added flag SFRAME_F_FDE_FUNC_START_PCREL, s390x
support and new section type SHT_GNU_SFRAME, indicate that this document
specifies the errata 1 of SFrame version 2.  This will help distinguish
the document / specification better from previous releases.

libsframe/doc/
* sframe-spec.texi: Mention errata 1 of SFrame version 2.

2 weeks agoAutomatic date update in version.in
GDB Administrator [Sat, 26 Jul 2025 00:01:53 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 weeks agoPR 33214 sparc LDM/STM/LDMA/STMA etc. FAIL on Solaris/SPARC
Alan Modra [Fri, 25 Jul 2025 22:15:54 +0000 (07:45 +0930)] 
PR 33214 sparc LDM/STM/LDMA/STMA etc. FAIL on Solaris/SPARC

Delete code in compare_opcodes preferencing 1+i over i+1 and 1,i over
i,1.  Instead simply make the sort stable, by keeping the original
table order.

2 weeks ago[gdb/tui] Fix shell command terminal settings
Tom de Vries [Fri, 25 Jul 2025 17:07:59 +0000 (19:07 +0200)] 
[gdb/tui] Fix shell command terminal settings

In bash I have the following terminal settings:
...
$ stty
speed 38400 baud; line = 0;
-brkint -imaxbel iutf8
...
and then in gdb using the shell command likewise:
...
(gdb) shell stty
speed 38400 baud; line = 0;
-brkint -imaxbel iutf8
(gdb)
...
and likewise using a shell session:
...
(gdb) shell
$ stty
speed 38400 baud; line = 0;
-brkint -imaxbel iutf8
$
...

But in TUI, we get different settings (removed runaway indentation for
readability):
...
(gdb) shell sttyspeed 38400 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel iutf8
-onlcr
-icanon -echo

(gdb)
...
and consequently the shell is not really usable.  This is PR tui/18215.

The easiest way to fix this is to just temporarily leave TUI while in the shell,
leaving the output of the commands in CLI mode, but that's a bit confusing.

Fix this (as suggested in the PR) by restoring the initial terminal settings
while in the shell command, such that also in TUI we have:
...
(gdb) shell sttyspeed 38400 baud; line = 0;
-brkint -imaxbel iutf8

(gdb)
...

Tested on x86_64-linux.

Reported-By: Doug Evans <dje@google.com>
Approved-By: Tom Tromey <tom@tromey.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=18215

2 weeks agogdb: Convert gdb/mingw-hdep.c to INIT_GDB_FILE
Pedro Alves [Fri, 25 Jul 2025 16:43:52 +0000 (17:43 +0100)] 
gdb: Convert gdb/mingw-hdep.c to INIT_GDB_FILE

I noticed that my MinGW GDB did not have the "maint set
console-translation-mode" command, even though the code to register it
is in gdb/mingw-hdep.c.

The problem is that gdb/mingw-hdep.c is not using INIT_GDB_FILE.  This
fixes it.

Change-Id: I3aa305c517e100d4733b391a110a1b20b89fdb7f

2 weeks agogdb: use the location_completer for the list command
Guinevere Larsen [Wed, 23 Jul 2025 12:06:22 +0000 (09:06 -0300)] 
gdb: use the location_completer for the list command

The "location_completer" function has been available for a long time,
but it was seemingly never used as the completer for the list function.
A quick check through git history shows that a similar completer was
available for the "edit" command but wasn't added to "list" with no
reasoning for it.

I think "list" should use the location_completer, as it is more aware of
the locspec grammar.

Approved-By: Tom Tromey <tom@tromey.com>
2 weeks agogdb: fix copyright year in svr4-tls-tdep.c
Simon Marchi [Fri, 25 Jul 2025 16:19:26 +0000 (12:19 -0400)] 
gdb: fix copyright year in svr4-tls-tdep.c

Change-Id: Ia03b286d9544a209197e58e59e752dc3d2715359

2 weeks agogdb: fix copyright year in solib-frv.h
Simon Marchi [Fri, 25 Jul 2025 16:16:55 +0000 (12:16 -0400)] 
gdb: fix copyright year in solib-frv.h

My mistake, I forgot to update this when merging my patch series.

Change-Id: I67691c962d91221bd9a684febd7296b4b9b5999f

2 weeks agogdb/dwarf: apply DW_AT_bit_offset when DW_AT_data_member_location is constant block
Simon Marchi [Tue, 8 Jul 2025 19:52:37 +0000 (15:52 -0400)] 
gdb/dwarf: apply DW_AT_bit_offset when DW_AT_data_member_location is constant block

Since commit 420d030e88 ("Handle field with dynamic bit offset"), I see:

    $ make check TESTS="gdb.trace/unavailable-dwarf-piece.exp" RUNTESTFLAGS="--target_board=native-extended-gdbserver"
    FAIL: gdb.trace/unavailable-dwarf-piece.exp: tracing bar: p/d x
    FAIL: gdb.trace/unavailable-dwarf-piece.exp: tracing bar: p/d y
    FAIL: gdb.trace/unavailable-dwarf-piece.exp: tracing bar: p/d z

The first FAIL is:

    p/d x
    $4 = {a = 0, b = <unavailable>, c = <unavailable>, d = <unavailable>, e = <unavailable>, f = <unavailable>, g = <unavailable>, h = <unavailable>, i = <unavailable>, j = 0}
    (gdb) FAIL: gdb.trace/unavailable-dwarf-piece.exp: tracing bar: p/d x

When we should see:

    p/d x
    $4 = {a = 0, b = <unavailable>, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0}
    (gdb) PASS: gdb.trace/unavailable-dwarf-piece.exp: tracing bar: p/d x

The structure we print is:

    0x0000004f:   DW_TAG_structure_type
                    DW_AT_name [DW_FORM_string]     ("t")
                    DW_AT_byte_size [DW_FORM_sdata] (3)
                    DW_AT_decl_file [DW_FORM_udata] (0)
                    DW_AT_decl_line [DW_FORM_udata] (1)

    0x00000055:     DW_TAG_member
                      DW_AT_name [DW_FORM_string]   ("a")
                      DW_AT_type [DW_FORM_ref4]     (0x00000019 "unsigned char")
                      DW_AT_data_member_location [DW_FORM_exprloc]  (DW_OP_plus_uconst 0x0)

    0x0000005f:     DW_TAG_member
                      DW_AT_name [DW_FORM_string]   ("b")
                      DW_AT_type [DW_FORM_ref4]     (0x00000019 "unsigned char")
                      DW_AT_byte_size [DW_FORM_sdata]       (1)
                      DW_AT_bit_size [DW_FORM_sdata]        (1)
                      DW_AT_bit_offset [DW_FORM_sdata]      (7)
                      DW_AT_data_member_location [DW_FORM_exprloc]  (DW_OP_plus_uconst 0x1)

    ...

The particularity of field "b" (and the following ones, not shown here)
is that they have:

 - a DW_AT_data_member_location of expression form, but that GDB reduces
   to a constant
 - a DW_AT_bit_offset

What I think happens is that the code path taken in this particular
scenario never ends up using the DW_AT_bit_offset value.  Fix it by
calling apply_bit_offset_to_field, like what is done when
data_member_location_attr is using a constant form.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33136
Change-Id: I18e838e6c56a548495d3af332aeff3051188eaa9
Approved-By: Tom Tromey <tom@tromey.com>
2 weeks agogdb/dwarf: rename some variables in handle_member_location
Simon Marchi [Tue, 8 Jul 2025 19:52:36 +0000 (15:52 -0400)] 
gdb/dwarf: rename some variables in handle_member_location

For legibility, use more specific names for attribute variables and
don't reuse them for different attributes.

Change-Id: I98d8bb32fc64b5f6357fbc88f6fe93f2ddc8ef7c
Approved-By: Tom Tromey <tom@tromey.com>
2 weeks agogas/NEWS: Add AArch64 updates
Alice Carlotti [Thu, 24 Jul 2025 17:49:36 +0000 (18:49 +0100)] 
gas/NEWS: Add AArch64 updates

2 weeks agogas/doc: Update AArch64 Architecture Extensions
Alice Carlotti [Thu, 24 Jul 2025 16:15:43 +0000 (17:15 +0100)] 
gas/doc: Update AArch64 Architecture Extensions

Add faminmax, move a couple of misplaced entries, and improve a few
other entries.

The documentation now lists every recognised extension name, with the
exception of a couple of aliases that are deliberately undocumented.

2 weeks agoaarch64: Fix sve2p2/sme2p2 dependencies
Alice Carlotti [Thu, 24 Jul 2025 15:04:04 +0000 (16:04 +0100)] 
aarch64: Fix sve2p2/sme2p2 dependencies

Change dependency on sve2/sme2 to sve2p1/sme2p1.