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

45 hours agoAutomatic date update in version.in
GDB Administrator [Sat, 9 Aug 2025 00:02:25 +0000 (00:02 +0000)] 
Automatic date update in version.in

2 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>
2 days agoAutomatic date update in version.in
GDB Administrator [Fri, 8 Aug 2025 00:00:57 +0000 (00:00 +0000)] 
Automatic date update in version.in

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 agoAutomatic date update in version.in
GDB Administrator [Thu, 7 Aug 2025 00:03:05 +0000 (00:03 +0000)] 
Automatic date update in version.in

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

5 days agoAutomatic date update in version.in
GDB Administrator [Tue, 5 Aug 2025 00:03:20 +0000 (00:03 +0000)] 
Automatic date update in version.in

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

7 days agoAutomatic date update in version.in
GDB Administrator [Sun, 3 Aug 2025 00:01:55 +0000 (00:01 +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.

(cherry picked from commit 891d1654d7314fa520f708dbc5f1bf855d15bd40)

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

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

10 days agoAutomatic date update in version.in
GDB Administrator [Thu, 31 Jul 2025 00:03:54 +0000 (00:03 +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.

(cherry picked from commit 303045d9539d9032208b8b67f222943ff4c96b05)

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

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

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

13 days agoFix more unused variable warnings
Alan Modra [Fri, 18 Jul 2025 07:23:38 +0000 (16:53 +0930)] 
Fix more unused variable warnings

(cherry picked from commit 9472a0558d67610b07776d34b1dbdcc8e40f393c)

13 days agoFix unused variable warnings
Alan Modra [Fri, 18 Jul 2025 05:10:17 +0000 (14:40 +0930)] 
Fix unused variable warnings

(cherry picked from commit 1cfce7750aefc84768e143076bac239134ceb40d)

13 days agobinutils: drop unused note_size, contents, old variables
Sam James [Thu, 17 Jul 2025 12:18:05 +0000 (13:18 +0100)] 
binutils: drop unused note_size, contents, old variables

GCC trunk recently had improvements to its -Wunused-but-set-variable which
picked up that contents and hence note_size & old aren't used at all in the
end.

* objcopy.c (merge_gnu_build_notes): Drop unused 'note_size', 'contents',
and 'old' variables.

(cherry picked from commit d3d1718602b179d8ec833851f5cb67ab9d314a92)

13 days agobfd: drop unused elt_no
Sam James [Thu, 17 Jul 2025 12:16:31 +0000 (13:16 +0100)] 
bfd: drop unused elt_no

GCC trunk recently had improvements to its -Wunused-but-set-variable which
picked up that elt_no isn't used at all in the end.

* archive.c (_bfd_compute_and_write_armap): Drop unused elt_no.

(cherry picked from commit 11153b13a56dae4ddd068ccf812ebc295783edf9)

13 days agoRe: Re-enable development on the 2.45 branch
Alan Modra [Sun, 27 Jul 2025 22:51:51 +0000 (08:21 +0930)] 
Re: Re-enable development on the 2.45 branch

regen configure for the version bump 2.45 -> 2.45.0

2 weeks agoRe-enable development on the 2.45 branch
Nick Clifton [Sun, 27 Jul 2025 09:53:38 +0000 (10:53 +0100)] 
Re-enable development on the 2.45 branch

2 weeks agoThis is the 2.45 release binutils-2_45
Nick Clifton [Sun, 27 Jul 2025 08:56:42 +0000 (09:56 +0100)] 
This is the 2.45 release

2 weeks agoOops - test files accidentally omitted from previous deltas
Nick Clifton [Sun, 27 Jul 2025 08:21:48 +0000 (09:21 +0100)] 
Oops - test files accidentally omitted from previous deltas

2 weeks ago[PATCH] doc: sframe: mention errata 1 of SFrame version 2
Indu Bhagat [Sun, 27 Jul 2025 08:15:37 +0000 (09:15 +0100)] 
[PATCH] 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 ago[PATCH] readelf: objdump: sframe: fix dumping with section name
Indu Bhagat [Sun, 27 Jul 2025 08:14:05 +0000 (09:14 +0100)] 
[PATCH] readelf: objdump: sframe: fix dumping with section name

Fix PR binutils/33186 - No SFrame dump if section name is not .sframe

When the section name is not ".sframe", ensure that readelf and objdump
are able to dump a section of type SHT_GNU_SFRAME and not fail if the
user specifies the new section name.

For objdump, in dump_dwarf_section (), use the match string of ".sframe"
to find the corresponding debug_displays[] item for SFrame section.
Doing this ensures that any call to dump_dwarf_section () with the
section pointing to the SFrame section (with name possibly different
from ".sframe") will successfully dump the SFrame section.

If the SFrame section is named anything but ".sframe", and user does not
specify the name of the SFrame section either, the documented behaviour
is that the default section name is assumed to be ".sframe".  So the
following (albeit counter intuitive) is expected at this time:

$ readelf -S sort | grep sframe
  [NN] .sframe2          GNU_SFRAME       0000000000NNNNNN  0000NNNN

(Note section name .sframe2).

$ objdump --sframe sort

sort:     file format elf64-x86-64

No .sframe section present

(Similarly for readelf as well).

For objdump, set dump_sframe_section_name to ".sframe" if user specifies
no section name.  In the error checking done in dump_sframe_section, add
the case when user specifies a valid section name but one that does not
contain SFrame section data.  For sections generated with Binutils >=
2.45, this can be checked with section type of SHT_GNU_SFRAME.
Previously these sections were SHT_PROGBITS with name ".sframe".

Similar changes in readelf.

Add a test each for objdump and readelf to dump a renamed section.  Use
gas_sframe_check to limit the execution of these tests only when a gas
supporting SFrame format is present.

binutils/
PR binutils/33186
* objdump.c (dump_dwarf_section): Set match to ".sframe" which
corresponds to the name in the debug_displays[] entry for
SFrame section.
(dump_sframe_section): Check if the user specified section name
contains SFrame data.
(main): Set default section name to ".sframe".
* readelf.c (display_debug_section): Adjust checks to find the
debug_diplays[] item for the input arg SFrame section.
Use id instead of i, as it is more readable.

binutils/testsuite/
PR binutils/33186
* binutils-all/x86-64/objdump-sframe-01.d: New test.
* binutils-all/x86-64/readelf-sframe-01.d: New test.
* binutils-all/x86-64/sframe-func.s: New test.

2 weeks ago[PATCH] gas: sframe: command line option takes precedence over gas directive to emit...
Indu Bhagat [Sun, 27 Jul 2025 08:11:44 +0000 (09:11 +0100)] 
[PATCH] gas: sframe: command line option takes precedence over gas directive to emit .sframe section.

Fix PR gas/33175 sframe: --gsframe=no does not disable when .cfi_sections directive with .sframe

--gsframe=no should also disable generation of SFrame section when explicit CFI directive: .cfi_sections .sframe is specified in the input.
This means we need to track whether SFrame generation was explicitly disabled by the user.
Introduce a new enum to facilitate disambiguation between GEN_SFRAME_DEFAULT_NONE and GEN_SFRAME_DISABLED.
While fixing the bug by adding the enum, keep the upcoming requirement in mind: we will also need to disambiguate between --enable-default-sframe and user-specified --gsframe/--gsframe=yes.
The intent is to not display SFrame related warnings or errors like:   as_bad (_(".sframe not supported for target")); for unsupported targets if --enable-default-sframe is in effect.
This implies we need to have a four state enum ( GEN_SFRAME_DEFAULT_NONE, GEN_SFRAME_CONFIG_ENABLED, GEN_SFRAME_DISABLED, GEN_SFRAME_ENABLED) gas

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

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

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.

2 weeks agold: Force SHELL=/bin/bash in ld for Solaris [PR32580]
Rainer Orth [Fri, 25 Jul 2025 07:49:13 +0000 (09:49 +0200)] 
ld: Force SHELL=/bin/bash in ld for Solaris [PR32580]

As described in PR ld/32580, when using SHELL=/bin/sh or /bin/ksh on
Solaris, the generated linker scripts get corrupted.  So far, the only
workaround is to enforce /bin/bash instead.

This is a major nuisance for developers and users alike, so this patch
automates this by overriding SHELL in ld/configure.ac.

Tested on amd64-pc-solaris2.11 in three configurations:

* CONFIG_SHELL unset

* CONFIG_SHELL=/bin/ksh

* CONFIG_SHELL='/bin/bash --norc'

In the first two cases, SHELL was set to /bin/bash as desired, while in
the third it was left unchanged.

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

ld:
PR ld/32580
* configure.ac <*-*-solaris2*>: Enforce SHELL=/bin/bash.
* configure: Regenerate.

(cherry picked from commit 96ad2fd3c0c0414110fe58ed4ee511f49768fa3d)

2 weeks agoAutomatic date update in version.in
GDB Administrator [Fri, 25 Jul 2025 00:04:34 +0000 (00:04 +0000)] 
Automatic date update in version.in

2 weeks agogas: sframe: fix PR gas/33170
Indu Bhagat [Thu, 17 Jul 2025 22:17:36 +0000 (15:17 -0700)] 
gas: sframe: fix PR gas/33170

SFrame generation code assumes that since DW_CFA_restore means
restoration of the state of the register to the one at the beginning of
the function, there must be a state to restore to (hence the gas_assert
(cie_fre)).

This assumption needs adjustment.  DW_CFA_restore may be present in the
very beginning of a (e.g., cold) function, with no initialized state for
SFrame functions to restore to.

gas/
PR gas/33170
* gas/gen-sframe.c (sframe_xlate_do_restore): Use current FRE if
CIE FRE is not yet setup.
gas/testsuite/
PR gas/33170
* gas/cfi-sframe/cfi-sframe.exp: New test.
* gas/cfi-sframe/cfi-sframe-x86_64-pr33170.d: New test.
* gas/cfi-sframe/cfi-sframe-x86_64-pr33170.s: New test.

(cherry picked from commit 83eeaf917873a550656faf9a38cd14e0f4c521b1)

2 weeks agostrip: Properly handle LLVM IR bitcode
H.J. Lu [Tue, 22 Jul 2025 21:09:48 +0000 (14:09 -0700)] 
strip: Properly handle LLVM IR bitcode

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

added "-R .gnu.lto_.*" to strip to remove all GCC LTO sections.  When
"-R .gnu.lto_.*" is used, the plugin target is ignored so that all LTO
sections are stripped as the regular sections.  It works for the slim
GCC LTO IR since the GCC LTO IR is stored in the regular sections.  When
the plugin target is ignored, the GCC LTO IR can be recognized as the
normal object files.  But it doesn't work for the slim LLVM IR which
is stored in a standalone file.

1. Add bfd_check_format_matches_lto and bfd_check_format_lto to take an
argument, lto_sections_removed, to indicate if all LTO sections should
be removed.
2. Update strip to always enable the plugin target so that the plugin
target is enabled when checking for bfd_archive.
3. Update strip to ignore the plugin target for bfd_object when all LTO
sections should be removed.  If the object is unknown, copy it as an
unknown file without any messages.
4. Treat the "-R .llvm.lto" strip option as removing all LTO sections.

bfd/

PR binutils/33198
* format.c (bfd_check_format_lto): New function.
(bfd_check_format): Call bfd_check_format_matches_lto.
(bfd_check_format_matches): Renamed to ...
(bfd_check_format_matches_lto): This.  Add an argument,
lto_sections_removed, to indicate if all LTO sections should be
removed and don't match the plugin target if lto_sections_removed
is true.
(bfd_check_format_matches): Call bfd_check_format_matches_lto.
* bfd-in2.h: Regenerated.

binutils/

PR binutils/33198
* objcopy.c (copy_archive): Call bfd_check_format_lto, instead
of bfd_check_format, and pass lto_sections_removed.  Remove the
non-fatal message on unknown element since it will be copied as
an unknown file.
(copy_file): Don't check lto_sections_removed when enabling LTO
plugin in strip.
(copy_file): Ignore the plugin target first if all LTO sections
should be removed.  Try with the plugin target next if ignoring
the plugin target failed to match the format.
(strip_main): Also set lto_sections_removed for -R .llvm.lto.
* testsuite/binutils-all/x86-64/pr33198.c: New file.
* testsuite/binutils-all/x86-64/x86-64.exp (run_pr33198_test):
New.
Run binutils/33198 tests.
* testsuite/lib/binutils-common.exp (llvm_plug_opt): New.
(CLANG_FOR_TARGET): New.  Set to "clang" for native build if
"clang -v" reports "clang version".

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit f752be8f916efa70aea9c2e4f664c75690fd136c)

2 weeks agoPR 33197 [AVR] Incorrect syntax in generated ldscript
Alan Modra [Wed, 23 Jul 2025 12:22:31 +0000 (21:52 +0930)] 
PR 33197 [AVR] Incorrect syntax in generated ldscript

Rearrange scripttempl/avr.sc to avoid oddities of shells expanding
${RELOCATING+stuff} in here documents where "stuff" contains quoted
strings.  Also I think it is better to avoid multi-line "stuff" as it
can be tricky to spot the ending brace.

(cherry picked from commit ae114fb523efe908f9e807359e2f494ee64d2801)

2 weeks agoAutomatic date update in version.in
GDB Administrator [Thu, 24 Jul 2025 00:08:18 +0000 (00:08 +0000)] 
Automatic date update in version.in

2 weeks agoAutomatic date update in version.in
GDB Administrator [Wed, 23 Jul 2025 00:05:59 +0000 (00:05 +0000)] 
Automatic date update in version.in

2 weeks agoUpdated translations for various sub-directories
Nick Clifton [Tue, 22 Jul 2025 14:57:38 +0000 (15:57 +0100)] 
Updated translations for various sub-directories

2 weeks agold: Rename a file on Windows fails if target already exists
Torbjörn SVENSSON [Fri, 18 Jul 2025 15:04:09 +0000 (17:04 +0200)] 
ld: Rename a file on Windows fails if target already exists

To rename a file on Windows, the target name cannot exist. Removing file
prior to renaming ensures this is handled.
To remove a file on Windows, the file cannot be open. Closing the bfd
handle ensures this is handled.
Moved call to free on isympp / osympp to after bfd is closed to align
with comment earlier in the cmdline_add_object_only_section function.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
(cherry picked from commit 233cd5946413108bf4902b22a9cb23ad0a468f5e)

2 weeks agogprofng: do not skip weak symbols
Dmitrii Bordukov [Sat, 19 Jul 2025 12:21:46 +0000 (15:21 +0300)] 
gprofng: do not skip weak symbols

PR gprofng/33151

gprofng ignores functions that are compiled as weak symbols. This
heavily affects C++ class methods that are always compiled by g++
and clang++ as weak symbols. In this case 'gprofng display text'
just displays <static>@ADDRESS(<FILENAME>) instead of proper method
name.

The bug has been introduced in the commit 470a0288a818.

3 weeks agoRemove sframe relocs against discarded sections
Alan Modra [Thu, 17 Jul 2025 05:12:31 +0000 (14:42 +0930)] 
Remove sframe relocs against discarded sections

Commit d7f343eaad3f testsuite change resulted in a regression for
s390x-linux.  This extends the x86_64 fix to other targets.

PR ld/33156
* elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Remove .sframe
relocs too.

(cherry picked from commit fcf7470408aa0508fbe99abb99547757a348383d)

3 weeks agolibsframe: relax the assertion limit for fre_start_addr
Indu Bhagat [Tue, 15 Jul 2025 00:01:53 +0000 (17:01 -0700)] 
libsframe: relax the assertion limit for fre_start_addr

Fix PR ld/33131 Failed assertion when linking gccgo

Make amendments in both sframe_decoder_get_fre and
sframe_encoder_add_fre.

Since GNU as and the dw2gencfi code generally accepts such CFI, its best
to allow in SFrame FREs too.

libsframe/
PR ld/33131.
* sframe.c (sframe_decoder_get_fre): Relax the assertion a bit.
(sframe_encoder_add_fre): Likewise.

(cherry picked from commit 387efef5fef727cbe52099dcd5012905c4205be3)

3 weeks agogas: improve --gsframe documentation
Sam James [Wed, 16 Jul 2025 05:59:14 +0000 (06:59 +0100)] 
gas: improve --gsframe documentation

I omitted documentation in 8aad677a12832885acd5be1de8f41e740b8e713d in
error. Rectify that with:
1) changing ---help to mention bare `--gsframe` too, as we're not
   getting rid of that;

2) adding the new --gsframe=[no|yes] form to as.texi.

PR gas/33125
* gas/as.c (parse_args): Tweak --gsframe= help text.
* gas/doc/as.texi: Document --gsframe=[no|yes].

(cherry picked from commit 50c1c57426db6e1c7b44b4d05f0b07fcba91f890)

3 weeks agogas: Re-indent case OPTION_SFRAME:
H.J. Lu [Tue, 15 Jul 2025 02:16:40 +0000 (10:16 +0800)] 
gas: Re-indent case OPTION_SFRAME:

PR gas/33125
* gas/as.c (parse_args): Re-indent case OPTION_SFRAME:

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit 1535d2a0ce4e474f1a42e8b8720de01b7dc1f656)

3 weeks agogas: support --gsframe=no
Sam James [Thu, 3 Jul 2025 11:53:22 +0000 (12:53 +0100)] 
gas: support --gsframe=no

Being able to explicitly disable SFrames on the command line is useful,
especially when looking at a gas that enables SFrames by default. The
binutils testsuite will benefit from this as there's testcases that don't
expect their presence.

In summary:
* Nothing is passed       => no SFrames (no change from before)
* --gsframe is passed     => SFrames    (no change from before)
* --gsframe=yes is passed => SFrames    (previously rejected)
* --gsframe-no  is passed => no SFrames (previously rejected)

PR gas/33125
* gas/as.c (parse_args): Accept --gsframe=no, --gsframe=yes.

(cherry picked from commit 8aad677a12832885acd5be1de8f41e740b8e713d)

3 weeks agox86-64: Remove sframe relocs against discarded sections
H.J. Lu [Tue, 15 Jul 2025 02:41:25 +0000 (10:41 +0800)] 
x86-64: Remove sframe relocs against discarded sections

Since unlike eh_frame editing code, sframe editing code keeps
R_X86_64_NONE reloc as is, its r_offset is wrong, we must not
generate R_X86_64_NONE reloc in sframe section against discarded
sections for "ld -r".

bfd/

PR ld/33156
* elf64-x86-64.c (elf_x86_64_relocate_section): Also remove
sframe relocations against discarded sections for "ld -r".

ld/

PR ld/33156
* testsuite/ld-elf/eh-group.exp (as_gsframe): New.
Assemble eh-group.o with $as_gsframe.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit d7f343eaad3f34c76657b9996e6253b4f9a218d5)

3 weeks agosframe: Allow input R_*_NONE relocations
H.J. Lu [Sat, 12 Jul 2025 20:56:16 +0000 (04:56 +0800)] 
sframe: Allow input R_*_NONE relocations

"ld -r" generates R_*_NONE relocations in sframe section if input
relocations in sframe section are against discarded section.  Allow
input R_*_NONE relocations if there are more relocation entries than
SFrame entries, instead of assuming number of SFrame entries == number
of relocation entries.

bfd/

PR ld/33127
* elf-sframe.c (sframe_decoder_init_func_bfdinfo): Allow input
R_*_NONE relocations if there are more relocation entries than
SFrame entries.

ld/

PR ld/33127
* testsuite/ld-x86-64/sframe-reloc-2a.s: New file.
* testsuite/ld-x86-64/sframe-reloc-2b.s: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run PR ld/33127 tests.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit 5f9bf0cf711a153a0a20d6ff88181e9a6775bdba)

3 weeks agold: Clear map_head_is_link_order for .gnu_object_only
H.J. Lu [Sun, 13 Jul 2025 21:21:32 +0000 (05:21 +0800)] 
ld: Clear map_head_is_link_order for .gnu_object_only

Clear map_head_is_link_order when generating .gnu_object_only section so
that lang_add_section can add new sections and .sframe sections will be
properly merged by _bfd_elf_merge_section_sframe.

PR ld/33146
* ldlang.c (cmdline_emit_object_only_section): Clear
map_head_is_link_order.
* testsuite/ld-plugin/lto.exp (as_gsframe): New.
(lto_link_tests): Add $as_gsframe to compile lto-4b.o and
lto-4c.o.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit 939eb467b21de5d18ee703755fb9704a525cfe21)

3 weeks agoRe: gas: Move gas_sframe_check to binutils-common.exp
Alan Modra [Sun, 13 Jul 2025 23:23:07 +0000 (08:53 +0930)] 
Re: gas: Move gas_sframe_check to binutils-common.exp

PR ld/33146

Correct TCL errors trying to access error output file in commit
ef7a634dc01d.  In fact, get rid of the output file test entirely since
gas exit status is sufficient.

Also there is no need to firstly check for ELF support.

Set check_as_sframe_result, and remove ld-lib.exp check_as_sframe.

(cherry picked from commit a57a3a169ea9ec79977949c9c8dccd3a2a615fae)

3 weeks agogas: Move gas_sframe_check to binutils-common.exp
H.J. Lu [Sun, 13 Jul 2025 20:45:43 +0000 (04:45 +0800)] 
gas: Move gas_sframe_check to binutils-common.exp

Move gas_sframe_check to binutils-common.exp so that it can be used in
linker tests to check if a target assembler supports --gsframe.

binutils/

PR ld/33146
* testsuite/lib/binutils-common.exp (gas_sframe_check): Moved
from cfi-sframe.exp.  Replace gas_host_run with remote_exec.

gas/

PR ld/33146
* testsuite/gas/cfi-sframe/cfi-sframe.exp (gas_sframe_check):
Moved to binutils-common.exp.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit ef7a634dc01df3d78f208c93316b52937d3fe8f4)

3 weeks agos390x sframe regressions
Alan Modra [Mon, 14 Jul 2025 09:38:12 +0000 (19:08 +0930)] 
s390x sframe regressions

Commit 6ab3f09a682a resulted in regressions.
s390x-linux-gnu  FAIL: SFrame simple link
s390x-linux-gnu  FAIL: SFrame for plt0 and pltN

Commit 939eb467b21d exposed the problem further.
s390x-linux-gnu  FAIL: LTO 4a
s390x-linux-gnu  FAIL: LTO 4c
s390x-linux-gnu  FAIL: LTO 4d

* elf64-s390.c (elf_s390_create_dynamic_sections): Set plt_sframe
ELF section type.

Reviewed-by: Jens Remus <jremus@linux.ibm.com>
(cherry picked from commit 168c017e206894effdefa919bff29880165fae13)

3 weeks agoUpdated translations for various sub-directories
Nick Clifton [Tue, 15 Jul 2025 12:40:19 +0000 (13:40 +0100)] 
Updated translations for various sub-directories

3 weeks agoOnly parse attributes in ELF sections with the SHT_GNU_ATTRIBUTES type if the OS...
Rainer Orth [Tue, 15 Jul 2025 10:13:18 +0000 (11:13 +0100)] 
Only parse attributes in ELF sections with the SHT_GNU_ATTRIBUTES type if the OS is not Solaris.  Set the is_solaris flag for Sparc solaris architectures

PR 33153

3 weeks agoUpdated Ukranian translation for the opcodes sub-directory
Nick Clifton [Mon, 14 Jul 2025 15:54:41 +0000 (16:54 +0100)] 
Updated Ukranian translation for the opcodes sub-directory

3 weeks agoUpdated Ukranian translation for the binutils sub-directory
Nick Clifton [Mon, 14 Jul 2025 15:42:28 +0000 (16:42 +0100)] 
Updated Ukranian translation for the binutils sub-directory

3 weeks agoUpdated Spanish translation for the gas sub-directory
Nick Clifton [Mon, 14 Jul 2025 15:39:10 +0000 (16:39 +0100)] 
Updated Spanish translation for the gas sub-directory

3 weeks agogas/NEWS: Corrected the information about mapping symbol $x for risc-v
Nelson Chu [Mon, 14 Jul 2025 01:45:07 +0000 (09:45 +0800)] 
gas/NEWS: Corrected the information about mapping symbol $x for risc-v

3 weeks agogas: accept leading zeros on dollar local labels in z80 sdcc compat mode
Aaron Griffith [Mon, 14 Jul 2025 08:38:52 +0000 (10:38 +0200)] 
gas: accept leading zeros on dollar local labels in z80 sdcc compat mode

SDCC assembly output uses 5-digit numeric dollar sign labels, padded
with zeros. Commit 226749d made these invalid, and broke the Z80 SDCC
compatibility mode in GAS.

https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=226749d5a6ff0d5c607d6428d6c81e1e7e7a994b

This restores SDCC compatibility by replacing the leading zeros with
spaces when inside dollar local labels and when SDCC compatibility is
enabled. It also restores the SDCC test case to represent actual
syntax emitted by SDCC, and adds a note explaining the purpose of
the test.

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

4 weeks agoFix compile time warning message about optarg parameter shadowing global variable
Nick Clifton [Sun, 13 Jul 2025 10:35:28 +0000 (11:35 +0100)] 
Fix compile time warning message about optarg parameter shadowing global variable

4 weeks agoUpdate version number on 2.45 branch
Nick Clifton [Sun, 13 Jul 2025 07:57:43 +0000 (08:57 +0100)] 
Update version number on 2.45 branch

4 weeks agoAdd markers for 2.45 branch
Nick Clifton [Sun, 13 Jul 2025 07:35:45 +0000 (08:35 +0100)] 
Add markers for 2.45 branch

4 weeks ago[gdb/build] Work around GCC ipa-modref bug
Tom de Vries [Sun, 13 Jul 2025 05:25:43 +0000 (07:25 +0200)] 
[gdb/build] Work around GCC ipa-modref bug

PR mi/32571 reports the following problem:
...
$ gdb -q -batch -ex "b bla.c:100"
<random output>
Make breakpoint pending on future shared library load? (y or [n]) \
  [answered N; input not from terminal]
...
while this is expected:
...
$ gdb -q -batch -ex "b bla.c:100"
No symbol table is loaded.  Use the "file" command.
Make breakpoint pending on future shared library load? (y or [n]) \
  [answered N; input not from terminal]
...

A few factors in reproducing this are building gdb using gcc 14,
"-O2 -flto=auto" and --disable-nls.  For more details, see the PR.

This turns out to be caused by a GCC PR [1], more specifically a problem in
ipa-modref.

Work around this by disabling ipa-modref for GCC versions 12-15 and 16.0,
assuming the GCC 16.1 release will contain a fix.

Tested on aarch64-linux and x86_64-linux.

Approved-By: Andrew Burgess <aburgess@redhat.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32571

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120987

4 weeks agoAutomatic date update in version.in
GDB Administrator [Sun, 13 Jul 2025 00:02:42 +0000 (00:02 +0000)] 
Automatic date update in version.in

4 weeks agogdb: add Aaron Griffith to gdb/MAINTAINERS
Aaron Griffith [Sat, 12 Jul 2025 12:34:56 +0000 (08:34 -0400)] 
gdb: add Aaron Griffith to gdb/MAINTAINERS

4 weeks agold/aarch64elf: add support for DT_AARCH64_MEMTAG_STACK dynamic tag
Indu Bhagat [Wed, 9 Jul 2025 21:13:58 +0000 (23:13 +0200)] 
ld/aarch64elf: add support for DT_AARCH64_MEMTAG_STACK dynamic tag

Add new command line option -z memtag-stack for aarch64 elf.  This
option instructs the linker to generate the necessary dynamic tag
DT_AARCH64_MEMTAG_STACK, which the dynamic loader can then use to
protect the stack memory with PROT_MTE.  Linker issues an
'unrecognized option' error when -z memtag-stack is specified for
non-aarch64 based emulations.

readelf displays the dynamic tag when present:

$ readelf -d <exectutable>
Dynamic section at offset 0xfdd8 contains XX entries:
Tag        Type                         Name/Value
0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
0x000000000000000c (INIT)               0x400520
0x000000000000000d (FINI)               0x400b64
0x0000000000000019 (INIT_ARRAY)         0x41fdc8
...                 ...                 ...
0x000000007000000c (AARCH64_MEMTAG_STACK) 0x1
...                 ...                 ...

ChangeLog:

        * bfd/elfnn-aarch64.c (elfNN_aarch64_late_size_sections): Emit
DT_AARCH64_MEMTAG_STACK dynamic tag.
        * bfd/elfxx-aarch64.h (struct aarch64_memtag_opts): Add new
member for tracking whether stack access uses MTE insns.
        * binutils/readelf.c (get_aarch64_dynamic_type): Handle
DT_AARCH64_MEMTAG_STACK.
        * ld/emultempl/aarch64elf.em: Add new command line option.
        * ld/ld.texi: Add documentation for -z memtag-stack.
        * ld/testsuite/ld-aarch64/aarch64-elf.exp: Add new test.
        * ld/testsuite/ld-aarch64/dt-memtag-stack.d: New test.

include/ChangeLog:

        * elf/aarch64.h (DT_AARCH64_MEMTAG_STACK): New definition.

4 weeks agold/aarch64elf: add support for DT_AARCH64_MEMTAG_MODE dynamic tag
Indu Bhagat [Sat, 12 Jul 2025 09:10:23 +0000 (11:10 +0200)] 
ld/aarch64elf: add support for DT_AARCH64_MEMTAG_MODE dynamic tag

Add new command line option -z memtag-mode=<mode> to aarch64 elf,
where <mode> can be one of none, sync, or async.  For mode of sync or
async, a DT_AARCH64_MEMTAG_MODE dynamic tag with a value of 0 or 1
respectively is emitted.

readelf displays the dynamic tag when present:

$ readelf -d <exectutable>
Dynamic section at offset 0xfdd8 contains XX entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x400520
 0x000000000000000d (FINI)               0x400b64
 0x0000000000000019 (INIT_ARRAY)         0x41fdc8
 ...                 ...                 ...
 0x0000000070000009 (AARCH64_MEMTAG_MODE) 0x1
 ...                 ...                 ...

Note that this patch doesn't add support for the "asymm" MTE mode,
which is an Armv8.7 extension.

ChangeLog:

        * bfd/elfnn-aarch64.c (struct elf_aarch64_link_hash_table): Add
new member for memtag properties.
        (bfd_elfNN_aarch64_set_options): New argument to pass memtag
properties.
(elfNN_aarch64_late_size_sections): Emit DT_AARCH64_MEMTAG_MODE
dynamic tag.
        * bfd/elfxx-aarch64.h: New definition for the various memtag
properties.
        * binutils/readelf.c (get_aarch64_dynamic_type): Handle
DT_AARCH64_MEMTAG_MODE.
        * ld/emultempl/aarch64elf.em: Likewise.
        * ld/ld.texi: Add documentation for the new option
-z memtag-mode.
        * ld/testsuite/ld-aarch64/aarch64-elf.exp: New test.
        * ld/testsuite/ld-aarch64/dt-memtag.d: New test.
        * ld/testsuite/ld-aarch64/dt-memtag-mode.s: New test.

include/ChangeLog:

        * elf/aarch64.h (DT_AARCH64_MEMTAG_MODE): New definition.

4 weeks agold: aarch64: make EH Frame parsing aware of augmentation char 'G'
Indu Bhagat [Sat, 12 Jul 2025 09:08:06 +0000 (11:08 +0200)] 
ld: aarch64: make EH Frame parsing aware of augmentation char 'G'

As per the DWARF for the Arm 64-bit Architecture (AArch64)
specification, the augmentation char 'G' indicates that associated
frames may modify MTE tags on the stack space they use.

Add knowledge of the 'G' augmentation char to the EH Frame parsing
code.

ChangeLog:

        * bfd/elf-eh-frame.c (_bfd_elf_parse_eh_frame): Accommodate
augmentation char 'G'.
        * ld/testsuite/ld-aarch64/aarch64-elf.exp: New test.
        * ld/testsuite/ld-aarch64/mte-tagged-frame-bar.s: New test.
        * ld/testsuite/ld-aarch64/mte-tagged-frame-foo.s: New test.
        * ld/testsuite/ld-aarch64/mte-tagged-frame.d: New test.

4 weeks agogas: aarch64: suppport CFI directive .cfi_mte_tagged_frame
Indu Bhagat [Sat, 12 Jul 2025 09:05:15 +0000 (11:05 +0200)] 
gas: aarch64: suppport CFI directive .cfi_mte_tagged_frame

Process a new aarch64-specific CFI directive: .cfi_mte_tagged_frame
(LLVM uses this CFI directive already).  The CFI directive, when
present for a function, indicates that the stack frame for the
function may modify the MTE tags of the stack space it uses.  The
assembler emits char 'G' in the CIE augmentation string to indicate
the same.

ChangeLog:

        * gas/config/tc-aarch64.c (s_aarch64_mte_tagged_frame): New
definition.
        * gas/config/tc-aarch64.h (tc_fde_entry_extras): Add
memtag_frame_p.
        (tc_cie_entry_extras): Likewise.
        (tc_fde_entry_init_extra): Likewise.
        (tc_cie_fde_equivalent_extra): Likewise.
        (tc_cie_entry_init_extra): Likewise.
        * gas/doc/c-aarch64.texi: Add documentation for
.cfi_mte_tagged_frame directive.
        * gas/testsuite/gas/aarch64/mte_tagged_stack.d: New test.
        * gas/testsuite/gas/aarch64/mte_tagged_stack.s: New test.

4 weeks agobinutils: make read_cie aware of new augmentation char 'G'
Indu Bhagat [Wed, 9 Jul 2025 21:09:15 +0000 (23:09 +0200)] 
binutils: make read_cie aware of new augmentation char 'G'

This allows objdump/readelf to dump DWARF/EH Frame info when the stack
frame makes use of MTE tagging.

ChangeLog:

        * binutils/dwarf.c (is_aarch64_augmentation): Add handling for augmentation
char 'G'.

---
[No change in V3]

4 weeks agobfd: fix recognition of arch-specific augmentations
Jose E. Marchesi [Sat, 12 Jul 2025 08:58:06 +0000 (10:58 +0200)] 
bfd: fix recognition of arch-specific augmentations

This patch fixes _bfd_elf_parse_eh_frame so it will not recognize
machine/architecture specific augmentation characters in EH Frame
CFIs.

Regtested in x86_64-linux-gnu and aarch64-linux-gnu.

bfd/ChangeLog:

* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Recognize augmentation
'B' only if targetting aarch64.

4 weeks agobinutils: factorize handling of arch-specific DWARF augmentations
Jose E. Marchesi [Sat, 12 Jul 2025 08:56:45 +0000 (10:56 +0200)] 
binutils: factorize handling of arch-specific DWARF augmentations

This patch factorizes the handling of architecture/machine specific
augmentation characters in CIEs.

Based on an idea proposed by Richard Earnshaw.

binutils/ChangeLog:

* dwarf.c (is_mach_augmentation_ftype): New type.
(is_mach_augmentation): New variable.
(is_nomach_augmentation): New function.
(is_aarch64_augmentation): Likewise.
(init_dwarf_by_elf_machine_code): Set is_mach_augmentation as
appropriate.
(init_dwarf_by_bfd_arch_and_mach): Likewise.
(read_cie): Handle architecture-specific augmentation characters
in a generic way.

4 weeks agobinutils: generalize init_dwarf_regnames_by_* functions
Jose E. Marchesi [Sat, 12 Jul 2025 08:54:46 +0000 (10:54 +0200)] 
binutils: generalize init_dwarf_regnames_by_* functions

This patch renames the functions:

  init_dwarf_regnames_by_elf_machine_code
  init_dwarf_regnames_by_bfd_arch_and_mach

to

  init_dwarf_by_elf_machine_code
  init_dwarf_by_bfd_arch_and_mach

The idea is to start using these functions to perform general
architecture/machine specific initializations beyond register names.

Regtested in x86_64-linux-gnu and aarch64-linux-gnu targets.

binutils/ChangeLog:

* dwarf.c (init_dwarf_regnames_by_elf_machine_code): Rename to
init_dwarf_by_elf_machine_code.
(init_dwarf_regnames_by_bfd_arch_and_mach): Rename to
init_dwarf_by_bfd_arch_and_mach.
* dwarf.h: Adjust prototypes accordingly.
* readelf.c (process_file_header): Adjust call to
init_dwarf_regnames_by_elf_machine_code accordingly.
* objdump.c (dump_dwarf): Adjust call to
init_dwarf_regnames_by_bfd_arch_and_mach accordingly.

4 weeks agoaarch64: Add support for --march=armv9.6-a
Alice Carlotti [Sat, 12 Jul 2025 07:47:14 +0000 (08:47 +0100)] 
aarch64: Add support for --march=armv9.6-a

4 weeks agoaarch64: Disable sysreg guards by default
Alice Carlotti [Wed, 9 Jul 2025 21:59:11 +0000 (22:59 +0100)] 
aarch64: Disable sysreg guards by default

Add a new flag -menable-sysreg-checking to restore previous behaviour.
This existing behaviour is quite inconsistent, so the gating will
probably be updated in the future.  (In particular, many system
registers are currently gated with the architecture version they were
released with instead of the lower architecture version that they
actually require).

This patch retains the +d128 requirement for msrr/mrrs.

Co-Authored-By: Srinath Parvathaneni <srinath.parvathaneni@arm.com>
4 weeks agoaarch64: Add missing F_STRICT flags
Alice Carlotti [Sat, 12 Jul 2025 02:53:21 +0000 (03:53 +0100)] 
aarch64: Add missing F_STRICT flags

By default, NIL qualifiers are treated as matching any qualifier when
checking operand constraints.  For many SVE instructions, this would
allow operands with missing type suffixes to be assembled as if they had
any explicit type specified.  To prevent this, the F_STRICT flag is used
to specify that NIL qualifiers should match only NIL qualifiers.

Unfortunately, several SVE instructions incorrectly omitted this
F_STRICT flag.  The bug has existed in the *MATMUL_SVE* macros since
they were added in 2019.  The macro LUT_SVE2_INSN was added last year,
and the other incorrect macros are new in this release.

LUTv2_SME2_INSN and LUTv2_SME2p1_INSN were not actually broken, because
we reject untyped vector lists already during parsing.  However, I have
added the F_STRICT flag here anyway, since this is more consistent and
would be more robust if those operands start accepting untyped vector
lists in the future.  The new luti4 tests are the only ones that were
already rejected before this change.

BFLOAT16_SVE_INSN has been unused since it was originally added, so I
just deleted the macro.

The SVE LUT instructions were using the lut instruction class, which
has special handling only for SIMD operands, and isn't recognised by
aarch64_decode_variant_using_iclass (which sets the qualifiers during
decode for most SVE instructions).  To prevent these instructions
failing to disassemble, I changed their instruction class to sve_misc.

4 weeks agoaarch64: Remove redundant feature requirements
Alice Carlotti [Fri, 11 Jul 2025 12:01:52 +0000 (13:01 +0100)] 
aarch64: Remove redundant feature requirements

Many instructions explicitly specified SVE/SVE2/SME/SME2 as a required
feature when it was already implied by another required feature (at
least while the SME->SVE2 implication is retained internally).  These
redundant features were used to determine both the valid symbol names
for immediate operands, and the choice of error message for invalid
movprfx sequences.  Those two scenarios no longer use architecture
features, so the redundant features are now truly redundant.

4 weeks agoaarch64: Use operand class to select movprfx error
Alice Carlotti [Fri, 11 Jul 2025 11:41:51 +0000 (12:41 +0100)] 
aarch64: Use operand class to select movprfx error

Previously the choice of error message for an invalid movprfx sequence
used the architecture requirements to determine whether an instruction
was an SVE instruction or not.  This meant specifying SVE or SVE2 as an
explicit architecture requirement for all SVE instructions, even when
this was already implied by another feature.  As more architecture
features are added and with the partial removal of the SME->SVE2
dependency, these extra feature requirements were getting messier and
easier to forget.

Instead, we now look at the operand types.  If there is an SVE_REG,
SVE_REGLIST or PRED_REG operand, then we treat the instruction as an SVE
instruction.  This does change behaviour slightly, but it only affects
the choice of error message and the new choice should be a bit more
consistent.

There is one testsuite update required, because Ezra's SVE_AES2 patch
temporarily broke classification of FEAT_SVE_AES instructions.  This
patch restores the original behaviour.

4 weeks agoaarch64: Refactor exclusion of reg names in immediates
Alice Carlotti [Fri, 11 Jul 2025 06:55:45 +0000 (07:55 +0100)] 
aarch64: Refactor exclusion of reg names in immediates

When parsing immediate values, register names should not be
misinterpreted as symbols.  However, for backwards compatibility we need
to permit some newer register names within older instructions.  The
current mechanism for doing so depends on the list of explicit
architecture requirements for the instructions, which is fragile and
easy to forget, and grows increasingly messy as more architecture
features are added.

This patch add explicit flags to each opcode to indicate which set of
register names is disallowed in each instance.  These flags are
mandatory for all opcodes with immediate operands, which ensures that
the choice of disallowed names will always be deliberate and explicit.

This patch should have no functional change.

4 weeks agoaarch64: Remove redundant ORs with 0
Alice Carlotti [Fri, 11 Jul 2025 07:11:16 +0000 (08:11 +0100)] 
aarch64: Remove redundant ORs with 0

4 weeks agolibsframe: bump version to 2.0
Indu Bhagat [Sat, 12 Jul 2025 08:09:17 +0000 (01:09 -0700)] 
libsframe: bump version to 2.0

Remove LIBSFRAME_1.1, LIBSFRAME_1.0 nodes and add a new LIBSFRAME_2.0
node (non-inheritance version) to create new global versioned symbols.
Also announce libsframe.so.2 in NEWS.

New APIs:
     sframe_decoder_get_flags;
     sframe_decoder_get_offsetof_fde_start_addr;
     sframe_encoder_get_flags;
     sframe_encoder_get_offsetof_fde_start_addr;

Removed APIs: (already deprecated since X-2 release)
     sframe_get_funcdesc_with_addr;

APIs with changed semantics:
     sframe_decoder_get_funcdesc_v2;
     sframe_encoder_add_funcdesc_v2;
     sframe_encoder_write;

lisbframe/
* libsframe.ver: Define new LIBSFRAME_2.0.
* libtool-version: Bump the 'current' numeral to indicate a binary
incompatible release.
include/
* sframe-api.h (sframe_get_funcdesc_with_addr): Remove
deprecated interface.
libsframe/
* sframe.c (sframe_get_funcdesc_with_addr): Likewise.
binutils/
* NEWS: Announce new versioned release of libsframe.

4 weeks agolibsframe: fixup comment and minor style issues
Indu Bhagat [Sat, 12 Jul 2025 07:10:36 +0000 (00:10 -0700)] 
libsframe: fixup comment and minor style issues

Also, use ATTRIBUTE_UNUSED consistently.

libsframe/
* sframe.c (sframe_encoder_add_funcdesc): Fix function-level
comment and use ATTRIBUTE_UNUSED consistently.
(sframe_encoder_add_funcdesc_v2): Use ATTRIBUTE_UNUSED
consistently.

4 weeks agogas: elf: binutils: add new section type SHT_GNU_SFRAME
Indu Bhagat [Sat, 12 Jul 2025 06:32:58 +0000 (23:32 -0700)] 
gas: elf: binutils: add new section type SHT_GNU_SFRAME

So far, SFrame sections were of type SHT_PROGBITS.

As per ELF specification, SHT_PROGBITS indicates that the section holds
information defined by the program, whose format and meaning are
determined solely by the program.

On the linker side, SHT_PROGBITS should be reserved for the simple "cat
contents after applying relocs" semantics.

Currently, the only way to know that a section contains SFrame stack
trace data is if consumer checks for section name.  Such a check for
section name is not quite conformant to ELF principles.

Some of this was discussed here
https://sourceware.org/pipermail/binutils/2025-March/140181.html

With this change, the SFrame sections generated by gas, ld will have
section type set to SHT_GNU_SFRAME.   The new section type is defined in
the SHT_LOOS/SHT_HIOS space.  The SFrame parsing routine
_bfd_elf_parse_sframe () now admits sections only when the the section
type is SHT_GNU_SFRAME.

No special handling / validation is done at the moment for the case of
manual creation of SFrame sections via obj_elf_section ().  Add function
level comments for now to add a note about this.

Although the default handling for (sh_type >= SHT_LOOS && sh_type <=
SHT_HIOS) is sufficient when SHT_GNU_SFRAME is in that range, it makes
sense to add it as a case of its own.

bfd/
* elf-sframe.c (_bfd_elf_parse_sframe): Check if section type is
SHT_GNU_SFRAME.
(_bfd_elf_set_section_sframe): Set SHT_GNU_SFRAME for output
SFrame section.
* elflink.c (obj_elf_section): Use section type for check
instead of section name.
* elfxx-x86.c: Set SHT_GNU_SFRAME for SFrame sections for
.plt* sections.
* elf.c (bfd_section_from_shdr): Add case for SHT_GNU_SFRAME.
binutils/
* readelf.c (get_os_specific_section_type_name): Add
SHT_GNU_SFRAME.
gas/
* NEWS: Announce emitted SFrame sections have SHT_GNU_SFRAME
set.
* config/obj-elf.c (obj_elf_attach_to_group): Add comments to
indicate no special handling for SFrame yet.
* dw2gencfi.c (cfi_finish): Set SHT_GNU_SFRAME for emitted
SFrame section.
ld/
* NEWS: Announce emitted SFrame sections have SHT_GNU_SFRAME
set.
gas/testsuite/
* gas/cfi-sframe/cfi-sframe.exp: Add new test.
* gas/cfi-sframe/cfi-sframe-common-1b.d: New test.
* gas/cfi-sframe/cfi-sframe-common-1b.s: New test.
include/
* elf/common.h (SHT_GNU_SFRAME): Add new section type for SFrame
stack trace information.
libsframe/doc/
* sframe-spec.texi: Add expected ELF section type.

4 weeks agogas: sframe: guard block with support_sframe_p
Indu Bhagat [Sat, 12 Jul 2025 06:31:50 +0000 (23:31 -0700)] 
gas: sframe: guard block with support_sframe_p

SFrame is generated for ELF targets only.  Guard the block with
support_sframe_p like others for consistency.

Also, in a later commit, we would like to do a:
  elf_section_type (sframe_seg) = SHT_GNU_SFRAME;

This cannot be done for non-ELF targets, hence the need to guard with
some pre-processor conditional to enable it for only OBJ_ELF.  Guarding
with support_sframe_p works for now, because those targets that support
SFrame define support_sframe_p:
  - x86_64 and aarch64 define support_sframe_p when OBJ_ELF is defined
  - s390x has no non-LEF target.

We continue to issue an error on targets where SFrame is not supported:
    .sframe not supported for target

gas/
* dw2gencfi.c (cfi_finish): Guard with support_sframe_p.
(support_sframe_p): Remove stub to define to false for backends
not supporting SFrame.

4 weeks ago{binutils, gas, ld}/NEWS: Announce LoongArch changes in 2.45
WANG Xuerui [Fri, 11 Jul 2025 07:49:08 +0000 (15:49 +0800)] 
{binutils, gas, ld}/NEWS: Announce LoongArch changes in 2.45

Signed-off-by: WANG Xuerui <git@xen0n.name>
4 weeks agoLoongArch: Un-skip cross-segment alignment compensation during relax pass 2
WANG Xuerui [Fri, 11 Jul 2025 07:49:07 +0000 (15:49 +0800)] 
LoongArch: Un-skip cross-segment alignment compensation during relax pass 2

It turned out wrong to skip compensating for segment alignment if the
current section is closed for deletion, as my recent system update with
binutils trunk revealed link failures of many high-profile packages such
as ffmpeg, numpy and wxGTK -- the dreaded "relocation truncated to fit"
errors regarding improperly produced R_LARCH_PCREL20_S2.

As it's near 2.45 branching time, revert the problematic change and
XFAIL the original test case for now.

Suggested-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: WANG Xuerui <git@xen0n.name>
4 weeks agoMIPS: Fix linker for REL TLS HI16/LO16 relocs
Alan Modra [Sat, 12 Jul 2025 00:25:53 +0000 (01:25 +0100)] 
MIPS: Fix linker for REL TLS HI16/LO16 relocs

With REL targets TLS HI16/LO16 relocations need to combine the low part
with the high part just as all the remaining HI16/LO16 relocations, so
as to determine the borrow in calculation correctly.

2025-07-12  Alan Modra  <amodra@gmail.com>

bfd/
PR 19977
* elfxx-mips.c (tls_hi16_reloc_p): New function.
(mips_elf_add_lo16_rel_addend): Handle tls relocs.
(_bfd_mips_elf_relocate_section): Likewise.

2025-07-12  Maciej W. Rozycki  <macro@orcam.me.uk>

ld/
PR 19977
* testsuite/ld-mips-elf/pr19977.d: New test.
* testsuite/ld-mips-elf/pr19977-mips16.d: New test.
* testsuite/ld-mips-elf/pr19977-micromips.d: New test.
* testsuite/ld-mips-elf/pr19977-r.d: New test.
* testsuite/ld-mips-elf/pr19977-r-mips16.d: New test.
* testsuite/ld-mips-elf/pr19977-r-micromips.d: New test.
* testsuite/ld-mips-elf/pr19977-r.s: New test source.
* testsuite/ld-mips-elf/pr19977.ld: New test linker script.
* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.

4 weeks agoMIPS: Correct HI/LO rel reloc howto special_function entries
Alan Modra [Sat, 12 Jul 2025 00:25:53 +0000 (01:25 +0100)] 
MIPS: Correct HI/LO rel reloc howto special_function entries

This corrects the DTPREL_HI16/LO16 and TPREL_HI16/LO16 howtos to use
_bfd_mips_elf_{hi,lo}16_reloc special functions, in order to support
addends outside the range [0,32767] on these relocations.

R_MIPS_GOT_HI16, R_MIPS_GOT_LO16, R_MIPS_CALL_HI16 and R_MIPS_CALL_LO16
are left alone as it seems that we (quite reasonably) only support
zero addends for those relocs.

PR 19977
bfd/
* elf32-mips.c (elf_mips_howto_table_rel): Set special_function
to _bfd_mips_elf_hi16_reloc for R_MIPS_TLS_DTPREL_HI16 and
R_MIPS_TLS_TPREL_HI16.  Set special_function to
_bfd_mips_elf_lo16_reloc for R_MIPS_TLS_DTPREL_LO16 and
R_MIPS_TLS_TPREL_LO16
(elf_mips16_howto_table_rel): Likewise for
R_MIPS16_TLS_DTPREL_HI16, R_MIPS16_TLS_DTPREL_LO16,
R_MIPS16_TLS_TPREL_HI16 and R_MIPS16_TLS_TPREL_LO16.
(elf_micromips_howto_table_rel): Likewise for
R_MICROMIPS_TLS_DTPREL_HI16, R_MICROMIPS_TLS_DTPREL_LO16,
R_MICROMIPS_TLS_TPREL_HI16 and R_MICROMIPS_TLS_TPREL_LO16.
* elf64-mips.c (mips_elf64_howto_table_rel): Similarly.
(mips16_elf64_howto_table_rel): Similarly.
(micromips_elf64_howto_table_rel): Similarly.
* elfn32-mips.c: As for elf64-mips.c.
gas/
* testsuite/gas/mips/pr19977.d,
* testsuite/gas/mips/pr19977.s: New test.
* testsuite/gas/mips/mips.exp: Run it.

4 weeks agoPR 19977: MIPS: Add missing pairing for REL PCHI/PCLO relocations
Maciej W. Rozycki [Sat, 12 Jul 2025 00:25:53 +0000 (01:25 +0100)] 
PR 19977: MIPS: Add missing pairing for REL PCHI/PCLO relocations

Just as with all HI/LO 16-bit partial relocations the newly-introduced
MIPSr6 PC-relative R_MIPS_PCHI16 and R_MIPS_PCLO16 relocations require
pairing for correct borrow propagation from the low part to the high
part with REL targets, another case for PR 19977.

Unlike with absolute relocation, there is a complication here in that
both parts represent a calculation that is relative to the PC at the
individual relocation's location rather than both referring to the
location of the R_MIPS_PCHI16 relocation, normally applied to an AUIPC
instruction, the location of which is used for the run-time calculation
executed by hardware.

To take this semantics into account, the addend of the R_MIPS_PCLO16
relocation matching a given R_MIPS_PCHI16 relocation is expected to be
adjusted in the source assembly file for the distance between the two
relocations in a single pair, so that once both relocations have been
calculated by the linker, the expression calculated at run time is such
as if the combined 32-bit immediate was added at the location of the
AUIPC instruction.

So for matching R_MIPS_PCHI16 and R_MIPS_PCLO16 relocations into pairs
GAS needs to check for the distance between the two relocations to be
equal to the difference between the addends supplied, and then the
linker has to subtract the low part of the distance between the two
relocations from the low part in calculating the high part, so as to
factor in any borrow.

A further complication is that `_bfd_mips_elf_lo16_reloc' handler is
supplied with the addend differently depending on whether it has been
called by GAS via `bfd_install_relocation', or by the generic linker via
`bfd_perform_relocation'.  In the former case the addend is supplied
with the relocation itself while in the latter one it comes from the
field being relocated.

We currently ignore the addend supplied with the relocation and it works
for calculating absolute high-part relocations, because the same addend
has been previously supplied with them when `_bfd_mips_elf_hi16_reloc'
was called, however this approach does not work for the PC-relative case
because as noted above the low-part addend is different and we need to
consistently apply the distance adjustment both with GAS and LD.

Since the supplied addend and one retrieved from field being relocated
won't ever be both nonzero, just use the sum of the two values.

The low-part addend in `mips_elf_add_lo16_rel_addend' always comes from
the field being relocated, so there's no complication there, we just
need to apply the same adjustment.

New linker test cases verify that the same ultimate machine code is
produced both for ELF and S-record output formats, ensuring that the
both the MIPS/ELF linker and the generic linker behave in the correct
way, consistent with each other.

4 weeks agoMIPS/BFD: Use helper function for LO relocation sign-extension
Maciej W. Rozycki [Sat, 12 Jul 2025 00:25:53 +0000 (01:25 +0100)] 
MIPS/BFD: Use helper function for LO relocation sign-extension

A calculation for LO relocations has been recently fixed with commit
ce08b3bb19b3 ("MIPS/BFD: Fix RELA handling of borrow in the generic
linker"), however it was missed that for the updated arithmetic we
already have a helper function available, `_bfd_mips_elf_sign_extend'.

Replace the open-coded statement then with an equivalent call to said
function.  No functional change.

4 weeks agoMIPS/LD/testsuite: Remove duplicate HI/LO relocation test dump files
Maciej W. Rozycki [Sat, 12 Jul 2025 00:25:53 +0000 (01:25 +0100)] 
MIPS/LD/testsuite: Remove duplicate HI/LO relocation test dump files

There are only nonessential differences between corresponding o32 and
n32 HI/LO relocation test dump files, so reduce the number of files by
reusing the same dump between the two ABIs.  Adjust test naming, also
for the n64 ABI, for consistency with other tests.

4 weeks agoAutomatic date update in version.in
GDB Administrator [Sat, 12 Jul 2025 00:00:54 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 weeks agolibsframe: testsuite: fix PR libsframe/33140
Indu Bhagat [Fri, 11 Jul 2025 16:39:24 +0000 (09:39 -0700)] 
libsframe: testsuite: fix PR libsframe/33140

Commit 0d4d5a2633f missed some necessary adjustments to the testcase
after rebase.  SFrame FDE function start address data is now an offset
in PCREL encoding; reflect with a new flag SFRAME_F_FDE_START_ADDR_PCREL
in the header.

Adjust the newly added testcase.

PR libsframe/33140 SFrame test failures on x86-64

libsframe/testsuite/
* libsframe.find/plt-findfre-2.c: Adjust for the new FDE func
start addr encoding.

4 weeks agogdb: remove two unused includes of gdbcore.h
Simon Marchi [Fri, 11 Jul 2025 16:50:03 +0000 (12:50 -0400)] 
gdb: remove two unused includes of gdbcore.h

clangd claims they are unused.

Change-Id: I3c5e16279ff3b59679b8262a9d24a6e515a718f5

4 weeks agogdb: fix formatting in solib.c
Simon Marchi [Fri, 11 Jul 2025 16:45:59 +0000 (12:45 -0400)] 
gdb: fix formatting in solib.c

There are many instances of `_ (...)` that should be `_(...)`, fix them.

Change-Id: I9715019c9b62b72208b4849f3cfd531964480dd2

4 weeks agogdb/solib-svr4: use program space from solib in find_debug_base_for_solib
Simon Marchi [Wed, 9 Jul 2025 14:18:46 +0000 (10:18 -0400)] 
gdb/solib-svr4: use program space from solib in find_debug_base_for_solib

Instead of using the current global program space, I think it makes
sense to fetch the program space from the solib.  The comment for
solib::objfile indicates that it may be nullptr (which is true), but in
this case, the callers (all in
svr4_iterate_over_objfiles_in_search_order) find the solib from an
objfile, so we know that solib::objfile (the link in the opposite
direction) is set for these solibs at this point.

Change-Id: I75037d0b2c39ab1b3a3792432be134e200438efe
Approved-by: Kevin Buettner <kevinb@redhat.com>
4 weeks agogdb/record: Add support for more vmov-style instructions
Guinevere Larsen [Tue, 17 Jun 2025 12:35:03 +0000 (09:35 -0300)] 
gdb/record: Add support for more vmov-style instructions

This commit adds support for a few more vmov instructions:
* VMOV[LH|HL]PS
* VMOVLPD
* VMOVHP[S|D]
* VMOVDDUP

And associated tests. The testsuite had some minor re-working, adding a
function to zero buffers, to make later tests less fragile.