Commit Graph

124054 Commits

Author SHA1 Message Date
Indu Bhagat
3ae28d0776 libsframe: use sf_fde_tbl data structure internally for the decoder
Instead of the current sframe_func_desc_entry (on-disk format
representation) data structure.

The decoder context in libsframe, so far, has been internally directly
tied to the sframe_func_desc_entry (on-disk format representation) data
structure.  While this allows libsframe to avoid some operations, this
is not desirable anymore as the format evolves: we will need to support
reading in of older version(s) of SFrame FDE, as well as a newer on-disk
representations for SFrame FDE.

Use sf_fde_tbl internally in the decoder context.  Note that libsframe
already does _not_ use sframe_func_desc_entry in any external-facing,
user-visible APIs.

Note that this commit is simply preparatory in nature.  At the moment,
the 'sf_fde_tbl' internally uses the sframe_func_desc_entry (on-disk
format representation).  When need arises (as SFrame FDE evolves), we
may change sf_fde_tbl to use an alternative (but still libsframe
internal) definition of SFrame FDE.

lisbframe/
        * sframe-impl.h (sf_fde_tbl, sf_fre_tbl): Move definition before use.
	Use sf_fde_tbl instead of sframe_func_desc_entry in struct
        sframe_decoder_ctx.
        * sframe.c (sframe_fde_tbl_alloc): New internal definition.
        (sframe_fde_tbl_init): Likewise.
        (sframe_decoder_get_funcdesc_at_index): Adjust for sf_fde_tbl
	usage.
        (sframe_decoder_get_secrel_func_start_addr): Likewise.
        (sframe_fre_check_range_p): Likewise.
        (sframe_decode): Likewise.
        (sframe_get_funcdesc_with_addr_internal): Likewise.
2025-11-01 01:47:29 -07:00
Indu Bhagat
f264ead9fb libsframe: make flip_header version aware
Future versions of the format may have alternative representation of an
FDE.  As the format evolves, endian flipping of the SFrame header may
need to be version aware.

flip_header () now takes the SFrame version as argument and also returns
SFRAME_ERR in case of error.  Currently the SFrame version as argument
remains unused.

SFrame encoder, at the momemnt, writes the SFrame data in the most recent
format version by default.

libsframe/
        * sframe.c (flip_header): Make version aware.
        (sframe_decode): Adjust usage of flip_header.
        (sframe_encoder_write): Likewise.
2025-11-01 01:42:02 -07:00
Indu Bhagat
bdb0d62281 libsframe: make flip_fde version aware
Future versions of the format may have a different representation of an
SFrame FDE.  As the format evolves, endian flipping will need to be version
aware.

Refactor flip_fde a bit by carving out an internal sframe_decode_fde API
which can read information from an on-disk SFrame FDE.

libsframe/
        * sframe.c (flip_fde): Make version aware.
        (sframe_decode_fde): New internal definition.
        (flip_sframe): Use the new definitions.
2025-11-01 01:35:34 -07:00
GDB Administrator
a7e0ca446d Automatic date update in version.in 2025-11-01 00:00:12 +00:00
GDB Administrator
2f53fb60c9 Automatic date update in version.in 2025-10-31 00:00:16 +00:00
H.J. Lu
19c4084cfa lto: Set plugin_format to bfd_plugin_no only if known_used is set
commit b21318bd2c
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu May 11 14:31:09 2023 +0000

    Add LDPT_REGISTER_CLAIM_FILE_HOOK_V2 linker plugin hook [GCC PR109128]

added the LDPT_REGISTER_CLAIM_FILE_HOOK_V2 linker plugin hook for offload
support.  Since the V2 linker plugin hook doesn't claim the offload IR if
known_used is unset, set input plugin_format to bfd_plugin_no only if
known_used is set or the V2 linker plugin hook is unused.

	PR ld/33584
	* plugin.c (plugin_object_p): Set plugin_format to bfd_plugin_no
	only if known_used is set or the V2 linker plugin hook is unused.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2025-10-31 07:52:23 +08:00
Alan Modra
9760f7d505 tic4x_scan: match printable arch string
Fix odd behaviour of objcopy -I -B on tic4x, where the tms320c4x
string reported by objcopy --info isn't a valid arch string.

	* cpu-tic4x.c (tic4x_scan): Match arch string reported by
	objcopy --info.
2025-10-31 10:00:53 +10:30
Alan Modra
0bb5cbb9b4 Pass -B to objcopy binary symbol test
objcopy -I binary -O some_coff_target does not currently work without
choosing a valid arch with -B.  This used to be the case for ELF
targets too, until commit 6765ee1825.

	* testsuite/binutils-all/objcopy.exp (binary_symbol): Pass
	-B arch to objcopy.  Choose different output object files for
	the two tests.
2025-10-31 09:44:38 +10:30
John David Anglin
2e352790ad hppa64: Use address of __text_seg symbol in elf64_hppa_finalize_opd
2025-10-30  John David Anglin  <danglin@gcc.gnu.org>

bfd/ChangeLog:

	* elf64-hppa.c (elf64_hppa_finalize_opd): Use address of
	__text_seg symbol instead of hppa_info->text_segment_base.
2025-10-30 16:40:06 -04:00
John David Anglin
0b0ac02458 hppa64: Use address of __text_seg symbol insted of hppa_info->text_segment_base
2025-10-30  John David Anglin  <danglin@gcc.gnu.org>

bfd/ChangeLog:

	* elf64-hppa.c (elf_hppa_final_link_relocate): Use address of
	__text_seg symbol insted of hppa_info->text_segment_base.
2025-10-30 16:29:55 -04:00
John David Anglin
de9efc361b hppa64: Add code to intialize __data_seg section symbol
2025-10-30  John David Anglin  <danglin@gcc.gnu.org>

bfd/ChangeLog:

	* elf64-hppa.c (struct elf64_hppa_link_hash_table): Add
	data_segment field.
	(allocate_global_data_opd): Move code to initialize text
	segment section symbol to elf64_hppa_late_size_sections.
	(elf64_hppa_late_size_sections): Add code to setup
	__data_seg section symbol.
2025-10-30 16:15:31 -04:00
Simon Marchi
ddaee713f5 gdbsupport: bump unordered_dense to 4.8.0
We don't need anything in this release, but I think it doesn't hurt to
just stay up to date.  The new version has a new include file, stl.h.
To keep things clean and separated, move the imported files to a new
sub-directory.  This requires a small change in
gdb/check-include-guards.py, to be able to ignore the whole new
directory.

Change-Id: Ic8c5d0dd5ea8b6691c99975d6ca78f637175ef42
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:31:34 -04:00
Simon Marchi
9f9eeeb6da pre-commit: use ^ anchors in files
Some `files` regexes use a ^ anchor, some don't.  I think it's good to
be explicit about it (and consistent), so use it everywhere.

Change-Id: I14eb2082a1c0ff6bc219e202fb16c3f12001fd73
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:25:54 -04:00
Simon Marchi
da8ad8e03a pre-commit: run flake8 on all .py(.in)? files under gdb
This covers Python files under gdb/contrib and gdb/testsuite, which are
now flake8-clean.

Change-Id: If587964d0735f6f585c72d18df40439424215644
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:25:54 -04:00
Simon Marchi
997ca51dcb gdb/contrib/dwarf-to-dwarf-assembler.py: remove unused imports
Remove imports reported as unused by flake8.

Change-Id: I1a1e5edab6ecd6ee774cb4bd20bf22b8952898aa
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:25:54 -04:00
Simon Marchi
b58e2ff69a gdb/testsuite: avoid assigning lambdas in Python files
Fix flake8 warnings like this one:

    gdb/testsuite/gdb.perf/template-breakpoints.py:35:13: E731 do not assign a lambda expression, use a def

I chose to inline the lambdas in the expressions, since they are simple
enough and only used once each.

Change-Id: I46fac428a95da38f5a6a87e101be4da9fa4acc31
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:25:53 -04:00
Simon Marchi
750ef8f6e9 gdb/testsuite: rename ambiguous variable in py-command-breakpoint.py
Fix this flake8 warning:

    gdb/testsuite/gdb.python/py-commands-breakpoint.py:37:13: E741 ambiguous variable name 'l'

This one is a bit subjective, but renaming the variable is easy enough
and the simplest way to get rid of the warning.

Change-Id: I9b1ffd898e27a9d0e172f29715aff3ff3cc785b9
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:25:53 -04:00
Simon Marchi
93029c6b50 gdb/testsuite: use "not in" in Python files
Fix flake8 warnings like this one:

    gdb/testsuite/gdb.python/py-send-packet.py:68:12: E713 test for membership should be 'not in'

Change-Id: I2b4cc1eeb63ee2fceb8c4264e7d6ce2d22824688
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:25:53 -04:00
Simon Marchi
dacf41a629 gdb/testsuite: address "unused not at top of file" warnings in Python files
Address flake8 warnings like this one:

    gdb/testsuite/gdb.python/py-typeprint.py:60:1: E402 module level import not at top of file

Change-Id: I6ab7880ec5b55b6a5c85cb01d0f85172d44b4ee1
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:25:53 -04:00
Simon Marchi
b4f767797a gdb/testsuite: remove unused but set variables in Python files
Fix flake8 errors like this one:

    gdb/testsuite/gdb.python/py-unwind-inline.py:61:17: F841 local variable 'v' is assigned to but never used

For this one, there is a slight possibility that removing a variable
changes some behavior, and perhaps renders some test uneffective (where
the test would no longer exercises what it meant to).  Removing a
variable means that the object it pointed to likely gets de-allocated
earlier (its tp_dealloc method gets called).  So if the intent of the
variable was to ensure the variable outlives the statements that come
after, then this change would be wrong.  But I didn't see any evidence
of that being the intent in all the occurences.

Change-Id: Ic57bc68ad225a43ae6771c47b7f443956e8029a6
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:21:29 -04:00
Simon Marchi
99f7b61f1d gdb/testsuite: avoid bare except in Python files
Fix flake8 warnings like this:

    gdb/testsuite/gdb.python/py-unwind-inline.py:62:9: E722 do not use bare 'except'

Change-Id: I9736c948bc84fefcb7db2a6ac7322cbbfe39da94
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:15:13 -04:00
Simon Marchi
57c4af5f32 gdb/testsuite: use "is" to check against None
Fix flake8 warnings like:

    gdb/testsuite/gdb.base/pc-not-saved.py:55:18: E711 comparison to None should be 'if cond is None:'

Change-Id: Icb8bbe3ea444125c9d7ae63b7c1461045782b4b2
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:15:13 -04:00
Simon Marchi
0e529fc9c7 gdb/testsuite: use "is" for type comparison in Python files
Fix flake8 warnings like:

    gdb/testsuite/gdb.python/py-unwind.py:253:20: E721 do not compare types, for exact checks use `is` / `is not`, for instance checks use `isinstance()`

Change-Id: I506c0874bba88aa418757d94168992bf4ec677f8
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:15:13 -04:00
Simon Marchi
de9f1c1bb2 gdb/testsuite: remove unused "global" statements in Python files
Fix the flake8 warnings of this type:

  gdb/testsuite/gdb.python/py-disasm.py:855:9: F824 `global current_pc` is unused: name is never assigned in scope

Change-Id: If492c69553cebea932cfb21e6fea26529761254c
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:15:13 -04:00
Simon Marchi
168690b0f7 gdb/testsuite: remove unused imports in Python files
Remove the imports reported as unused by flake8.

Change-Id: I6e657de3dea8db18a99e711e594cb92f98e1cebb
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:15:13 -04:00
Simon Marchi
12424aca0d gdb/testsuite: remove variable with ambiguous name in gdb.server/fileio-packets.py
flake8 complains about:

  gdb/testsuite/gdb.server/fileio-packets.py:67:9: E741 ambiguous variable name 'l'

I think the variable is unnecessary anyway, inline the expression in the
format string.

Change-Id: Ib294f58e663e79e65de058139a770d572bafb282
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:15:13 -04:00
Simon Marchi
0c830fc574 gdb/{testsuite,system-gdbinit}: import gdb module in Python scripts
Fix flake8 warnings like:

    gdb/system-gdbinit/wrs-linux.py:21:5: F821 undefined name 'gdb'

These scripts get executed in a context where the gdb module is already
loaded, so this is not strictly necessary.  However, adding these
imports removes a lot of red lines when editing these files in an IDE.
Without them, the code uses this `gdb` thing that appears to be
undefined.  Pylance is able to pull the module definition from typeshed
[1] and provide a good experience with typings.

[1] https://github.com/python/typeshed/tree/main/stubs/gdb/gdb

Change-Id: I09c6ae1866ef66f10d8270457771687343c84e32
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:15:13 -04:00
Can Acar
3344d5a4aa darwin-nat.c: fix broken build caused by typing issues from 1ad8737b
1ad8737b is gdb: change inf_threads_iterator to yield references

Change-Id: Ic9478f4a292c3309481b16ace24ee23e82bbed4a
Approved-By: Tom Tromey <tom@tromey.com>
2025-10-30 12:10:41 -04:00
Luis Machado
c1c173422d Fix device index in gdb.rocm/addr-bp-gpu-no-deb-info.exp
On a system with a single GPU, I spotted this test failing. The environment
variable ROCR_VISIBLE_DEVICES can be a bit misleading, as it actually expects
a list of device id's as opposed to a literal number of devices to make
visible.

This test sets it to 1, which is the second GPU on the system. As a result,
systems with a single GPU will have no visible GPU's and the test will FAIL.

Set ROCR_VISIBLE_DEVICES to 0 to make use of the first GPU on the system.

Approved-By: Lancelot Six <lancelot.six@amd.com> (AMDGPU)
2025-10-30 15:09:42 +00:00
Maciej W. Rozycki
ad26c67309 MIPS/GAS: Add HI16/LO16 pairing for REL TLS relocs
Complementing commit 7ea90d9316 ("MIPS: Fix linker for REL TLS
HI16/LO16 relocs") also add pairing for HI16/LO16 REL TLS relocations
in GAS, which is where it needs to be done in the first place and
which is required for later linker operation on the objects produced.

Pairing also corrects in-place addend installation for the high-part
relocations, which used not to happen in the absence of this fix for
ones not already followed by the corresponding low-part relocation.

Add test cases to verify relocation ordering and addend installation.
2025-10-30 14:24:23 +00:00
Maciej W. Rozycki
b1e3a6b594 MIPS/GAS: Fix microMIPS TLS reloc classification
Fix `micromips_reloc_p' wrongly classifying microMIPS TLS relocations
as non microMIPS relocations.

Owing to where the function is called this issue does not trigger in
reality, but with an upcoming change it would, where suitable tests
will be included.
2025-10-30 14:24:23 +00:00
Maciej W. Rozycki
6b21850203 MIPS: Add o32 RELA relocations for VxWorks targets
MIPS/VxWorks targets have an unusual arrangement in that they use RELA
relocations with the o32 ABI, unlike any other MIPS target.  Due to an
inconsistency in BFD however "hybrid" relocations are produced by GAS,
where despite the relocations being of the RELA type the field to be
relocated also holds an in-place addend to be applied at link time.

For example:

$ cat vxworks-rela.s
	.text
foo:
	la	$2, bar + 0x12345678
$ mips-vxworks-as -o vxworks-rela.o vxworks-rela.s
$ mips-vxworks-objdump -dr vxworks-rela.o

vxworks-rela.o:     file format elf32-bigmips-vxworks

Disassembly of section .text:

00000000 <foo>:
   0:	3c021234 	lui	v0,0x1234
			0: R_MIPS_HI16	bar+0x12345678
   4:	24425678 	addiu	v0,v0,22136
			4: R_MIPS_LO16	bar+0x12345678
$

This is due to the BFD backend being strapped for RELA relocations:

#undef elf_backend_may_use_rel_p
#define elf_backend_may_use_rel_p		0
#undef elf_backend_may_use_rela_p
#define elf_backend_may_use_rela_p		1
#undef elf_backend_default_use_rela_p
#define elf_backend_default_use_rela_p		1

but the howtos in use requesting an in-place addend, e.g.:

  /* High 16 bits of symbol value.  */
  HOWTO (R_MIPS_HI16,		/* type */
	 16,			/* rightshift */
	 4,			/* size */
	 16,			/* bitsize */
	 false,			/* pc_relative */
	 0,			/* bitpos */
	 complain_overflow_dont, /* complain_on_overflow */
	 _bfd_mips_elf_hi16_reloc, /* special_function */
	 "R_MIPS_HI16",		/* name */
	 true,			/* partial_inplace */
	 0x0000ffff,		/* src_mask */
	 0x0000ffff,		/* dst_mask */
	 false),		/* pcrel_offset */

  /* Low 16 bits of symbol value.  */
  HOWTO (R_MIPS_LO16,		/* type */
	 0,			/* rightshift */
	 4,			/* size */
	 16,			/* bitsize */
	 false,			/* pc_relative */
	 0,			/* bitpos */
	 complain_overflow_dont, /* complain_on_overflow */
	 _bfd_mips_elf_lo16_reloc, /* special_function */
	 "R_MIPS_LO16",		/* name */
	 true,			/* partial_inplace */
	 0x0000ffff,		/* src_mask */
	 0x0000ffff,		/* dst_mask */
	 false),		/* pcrel_offset */

This arrangement nevertheless happens to produce correct ELF executables
owing to the ELF linker avoiding the use of howtos and doing relocation
calculations using its own knowledge of relocation semantics embedded
directly in `mips_elf_calculate_relocation' code.

Beyond producing questionable link object files it however breaks badly
with the generic linker, such as when output is srec.

Fix the problem by providing a set of o32 RELA howtos and making VxWorks
targets use it.  Complement it with a set of test cases for GAS and LD;
we expect link object files to be essentially the same as n32 ones for
other MIPS targets sans the ABI2 ELF file header flag, and machine code
produced to be the same between SREC and ELF executables.
2025-10-30 14:24:23 +00:00
Maciej W. Rozycki
040b85bd57 MIPS/LD/testsuite: Run HI16/LO16 tests for VxWorks too
Run ELF linker tests for HI16/LO16 relocations with MIPS/VxWorks targets
as well.  Despite issues only fixed in the next change they produce the
same results as with other MIPS targets, so just use the existing tests
verbatim, however refrain from adding other tests until said issues have
been fixed.
2025-10-30 14:24:23 +00:00
Hui Li
73ab559062 gdb: LoongArch: Change default char data type to signed
According to "Procedure Call Standard for the LoongArch Architecture" [1],
for all base ABI types of LoongArch, the char data type in C is signed by
default, so change the char data type to signed in gdb/loongarch-tdep.c.

Before this patch:

make check-gdb TESTS="gdb.base/sizeof.exp"

=== gdb Summary ===

 # of expected passes		75
 # of unexpected failures	1

make check-gdb TESTS="gdb.base/charset.exp"

=== gdb Summary ===

 # of expected passes		277
 # of unexpected failures	6
 # of unsupported tests		1

After this patch:

make check-gdb TESTS="gdb.base/sizeof.exp"

=== gdb Summary ===

 # of expected passes		76

make check-gdb TESTS="gdb.base/charset.exp"

=== gdb Summary ===

 # of expected passes		283
 # of unsupported tests		1

[1] https://github.com/loongson/la-abi-specs/blob/release/lapcs.adoc#appendix-c-data-types-and-machine-data-types

Signed-off-by: Hui Li <lihui@loongson.cn>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
2025-10-30 22:08:15 +08:00
Zewei Yang
f06e09588d gdb/testsuite: Add LoongArch case in my-syscalls.S
When running the following command on LoongArch:

  git clone git://sourceware.org/git/binutils-gdb.git gdb
  mkdir -p build && cd build && ../gdb/configure && make -j"$(nproc)"
  make check-gdb TESTS="gdb.threads/step-over-thread-exit-while-stop-all-threads.exp"

there exists the following error:

  gdb/gdb/testsuite/lib/my-syscalls.S:67:3: error: #error "Unsupported architecture"

this is because there is no SYSCALL macro for LoongArch, just add it.
With this patch, the above test passes on LoongArch.

Signed-off-by: Zewei Yang <yangzewei@loongson.cn>
Tested-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
2025-10-30 22:07:49 +08:00
Jens Remus
aa4fbe8859 s390: Do not generate incomplete opcode table
The s390 opcode table s390-opc.tbl is generated from s390-opc.txt
using the s390-mkopc utility using output redirection.  If s390-mkopc
fails with a non-zero return code, e.g. due to a warning or error, an
incomplete opcode table may be generated in the build directory.  A
subsequent invocation of make then assumes that incomplete opcode
table to be up to date.  Depending on the s390-mkopc issue the build
may then proceed without any follow-on warnings or errors, causing
the preceding error or warning to go unnoticed.

Generate the s390 opcode table into an intermediate temporary file
s390-opc.tbl.tmp in the build directory and only move it to the final
target s390-opc.tbl if the generation was successful.

Tested by appending an unsupported inline comment "# TEST" to one of
the instructions defined in s390-opc.txt.

opcodes/
	* Makefile.am (s390-opc.tab): Use an intermediate temporary file
	to prevent updating of the target on error/warning.
	* Makefile.in: Regenerated.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
2025-10-30 14:39:59 +01:00
Alan Modra
4b738eecc0 Sanity check elf_sym_hashes indexing
I'm a little surprised we haven't already had fuzzing reports of
indexing off the end of sym_hashes.  The idea here is to preempt such
bugs.  One wrinkle is that ppc64 can't leave a zero symtab_hdr when
setting up sym_hashes for the fake stub bfd.

	* elf-bfd.h (struct elf_reloc_cookie): Add "num_sym".
	(_bfd_elf_get_link_hash_entry): Update declaration.
	* elf-eh-frame.c (find_merged_cie): Sanity check reloc symbol
	index.
	* elf64-ppc.c (use_global_in_relocs): Fake up symtab_hdr for
	stub bfd.
	* elflink.c (_bfd_elf_get_link_hash_entry): Add "num_sym"
	param.  Check symndx against it.  Update all calls.
	(set_symbol_value): Add "num_sym" param and update all calls.
	(elf_link_input_bfd): Add "num_syms" var and use for above.
	(init_reloc_cookie): Set "cookie->num_syms".
	* elf64-x86-64.c (elf_x86_64_scan_relocs): Pass symtab number
	of entries to _bfd_elf_get_link_hash_entry.
	* elfxx-x86.c (_bfd_x86_elf_check_relocs): Likewise.
	(_bfd_x86_elf_link_relax_section): Likewise.
2025-10-30 16:26:57 +10:30
Alan Modra
8b99ca4451 Don't read and cache local syms for gc-sections
Most places just need the local sym section, so reading and sometimes
caching the symbols is excessive.  A symbol shndx can be stored in 4
bytes, an elf symbol internal form requires 32 bytes.  When caching
the local symbols we went slightly crazy trying to avoid memory usage,
resulting in the symbols being freed then immediately read again for
the testcase in the PR33530.

To avoid this problem, this patch caches the local symbol section
indices in the bfd rather than in the reloc cookie.  They are not
initialised until there is a need for them, so unlike elf_sym_hashes
for global syms you cannot rely on them being present.

One place that does need local syms is adjust_eh_frame_local_symbols,
but that is called once via bfd_discard_info so there is no problem
simply reading them.  The other place that needs local syms is
ppc64_elf_gc_mark_hook for the old ELFv1 ABI when handling .opd.
bfd_sym_from_r_symndx should be sufficient for function pointer
references to static functions, which is how this code is triggered.

	PR 33530
	* elf-bfd.h (struct elf_reloc_cookie): Delete "locsyms",
	"sym_hashes", "bad_symtab".  Make "locsymcount" and
	"extsymoff" unsigned int.
	(struct elf_obj_tdata): Add loc_shndx.
	(elf_loc_shndx): Define.
	(_bfd_get_local_sym_section): Declare.
	* elf-eh-frame.c (find_merged_cie): Use
	_bfd_get_local_sym_section for local syms.
	(adjust_eh_frame_local_symbols): Read local syms if any match
	.eh_frame section.  Return them if changed.
	(_bfd_elf_discard_section_eh_frame): Adjust.
	* elf64-ppc.c (ppc64_elf_gc_mark_hook): Use
	_bfd_get_local_sym_section.  Use bfd_sym_from_r_symndx when
	reading opd local symbol.
	* elflink.c (_bfd_get_local_sym_section): New function.
	(_bfd_elf_section_for_symbol): Use it.
	(elf_link_add_object_symbols): Remove unnecessary cast on
	bfd_zalloc return.
	(init_reloc_cookie): Remove "info" and "keep_memory" params.
	Adjust all callers.  Don't stash elf_sym_hashes and
	elf_bad_symtab to cookie.  Don't read local syms to cookie.
	(fini_reloc_cookie): Do nothing.
	(_bfd_elf_gc_mark_hook): Use _bfd_get_local_sym_section.
	(elf_gc_mark_debug_section): Likewise.
	(bfd_elf_reloc_symbol_deleted_p): Likewise.  Update cookie use.
2025-10-30 16:26:50 +10:30
Alan Modra
57ccec6668 _bfd_elf_get_link_hash_entry tidy
Replace the "Elf_Internal_Shdr *symtab_hdr" parameter with
"unsigned int ext_sym_start", making it a duplicate of the existing
get_link_hash_entry function.

Also remove unnecessary checks from get_ext_sym_hash_from_cookie and
find_merged_cie.  The sym_hashes and symbol index checks in
get_ext_sym_hash_from_cookie are duplicates of those done in
_bfd_elf_get_link_hash_entry, and there is no need to check for a
global symbol before calling _bfd_elf_get_link_hash_entry.  When
bad_symtab, local symbols will have a NULL sym_hashes entry.  Removing
these unnecessary checks gets rid of some cookie->locsyms references.

	PR 33530
	* elf-bfd.h (_bfd_elf_get_link_hash_entry): Update declaration.
	* elflink.c (_bfd_elf_get_link_hash_entry): Rename from
	get_link_hash_entry, adjusting all calls and deleting original
	function.
	(get_ext_sym_hash_from_cookie): Make "symndx" unsigned int.
	Remove unnecessary check on sym_hashes, symbol index and
	symbol binding.
	* elf-eh-frame.c (find_merged_cie): Remove similar unnecessary
	checks.
	* elf64-x86-64.c (elf_x86_64_scan_relocs): Adjust.
	* elfxx-x86.c (_bfd_x86_elf_check_relocs): Adjust.
	(_bfd_x86_elf_link_relax_section): Adjust.
2025-10-30 16:26:44 +10:30
Alan Modra
ad4b8c3e95 Pass cookie and symndx to gc_mark_hook
Replace the "sym" param with "cookie" and "symndx".  This is in
preparation for the next patch.  Also remove "rel" param since this is
available via "cookie", and is always set from cookie->rel.

	PR 33530
	* elf-m10300.c (mn10300_elf_gc_mark_hook): Replace "rel" and "sym"
	params with "cookie" and "symndx".  Adjust to suit.
	* elf32-arm.c (elf32_arm_gc_mark_hook): Likewise.
	* elf32-bfin.c (bfin_gc_mark_hook): Likewise.
	* elf32-cris.c (cris_elf_gc_mark_hook): Likewise.
	* elf32-csky.c (csky_elf_gc_mark_hook): Likewise.
	* elf32-d10v.c (elf32_d10v_gc_mark_hook): Likewise.
	* elf32-fr30.c (fr30_elf_gc_mark_hook): Likewise.
	* elf32-frv.c (elf32_frv_gc_mark_hook): Likewise.
	* elf32-hppa.c (elf32_hppa_gc_mark_hook): Likewise.
	* elf32-iq2000.c (iq2000_elf_gc_mark_hook): Likewise.
	* elf32-lm32.c (lm32_elf_gc_mark_hook): Likewise.
	* elf32-m32r.c (m32r_elf_gc_mark_hook): Likewise.
	* elf32-m68k.c (elf_m68k_gc_mark_hook): Likewise.
	* elf32-mcore.c (mcore_elf_gc_mark_hook): Likewise.
	* elf32-metag.c (elf_metag_gc_mark_hook): Likewise.
	* elf32-microblaze.c (microblaze_elf_gc_mark_hook): Likewise.
	* elf32-nds32.c (nds32_elf_gc_mark_hook): Likewise.
	* elf32-or1k.c (or1k_elf_gc_mark_hook): Likewise.
	* elf32-ppc.c (ppc_elf_gc_mark_hook): Likewise.
	* elf32-s390.c (elf_s390_gc_mark_hook): Likewise.
	* elf32-score.c (s3_bfd_score_elf_gc_mark_hook): Likewise.
	(_bfd_score_elf_gc_mark_hook): Likewise.
	* elf32-score7.c (s7_bfd_score_elf_gc_mark_hook): Likewise.
	* elf32-sh.c (sh_elf_gc_mark_hook): Likewise.
	* elf32-tilepro.c (tilepro_elf_gc_mark_hook): Likewise.
	* elf32-v850.c (v850_elf_gc_mark_hook): Likewise.
	* elf32-vax.c (elf_vax_gc_mark_hook): Likewise.
	* elf32-visium.c (visium_elf_gc_mark_hook): Likewise.
	* elf32-xstormy16.c (xstormy16_elf_gc_mark_hook): Likewise.
	* elf32-xtensa.c (elf_xtensa_gc_mark_hook): Likewise.
	* elf64-alpha.c (elf64_alpha_gc_mark_hook): Likewise.
	* elf64-mmix.c (mmix_elf_gc_mark_hook): Likewise.
	* elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise.
	* elf64-s390.c (elf_s390_gc_mark_hook): Likewise.
	* elfnn-loongarch.c (loongarch_elf_gc_mark_hook): Likewise.
	* elfxx-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise.
	* elfxx-sparc.c (_bfd_sparc_elf_gc_mark_hook): Likewise.
	* elfxx-tilegx.c (tilegx_elf_gc_mark_hook): Likewise.
	* elfxx-x86.c (_bfd_x86_elf_gc_mark_hook): Likewise.
	* elflink.c (_bfd_elf_gc_mark_hook): Likewise.
	(elf_gc_mark_debug_section): Likewise.
	(_bfd_elf_gc_mark_rsec): Adjust gc_mark_hook calls.
	* elf32-cr16.c (elf32_cr16_gc_mark_hook): Delete.
	(elf_backend_gc_mark_hook): Don't define.
	* elf32-moxie.c (moxie_elf_gc_mark_hook): Delete.
	(elf_backend_gc_mark_hook): Don't define.
	* elf-bfd.h (elf_gc_mark_hook_fn, _bfd_elf_gc_mark_hook): Update
	declarations.
	* elf32-score.h (s7_bfd_score_elf_gc_mark_hook): Likewise.
	* elfxx-mips.h (_bfd_mips_elf_gc_mark_hook): Likewise.
	* elfxx-sparc.h (_bfd_sparc_elf_gc_mark_hook): Likewise.
	* elfxx-tilegx.h (tilegx_elf_gc_mark_hook): Likewise.
	* elfxx-x86.h (_bfd_x86_elf_gc_mark_hook): Likewise.
2025-10-30 16:26:27 +10:30
Alon Bar-Lev
6fa97b38ff objcopy: add option to specify custom prefix for symbol of binary input
When using --input-target=binary, objcopy currently derives symbol names
from a mangled version of the input file name.  This approach can lead to
unpredictable results, as the generated symbols depend on the file path and
working directory.

This patch introduces a new option:

  --binary-symbol-prefix <prefix> Use <prefix> as the base symbol name for
                                    the input file (default: derived from
                                    file name)

It allows specifying an explicit symbol prefix, while preserving the existing
behavior as a fallback.

Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
2025-10-30 15:32:52 +10:30
GDB Administrator
f190abc584 Automatic date update in version.in 2025-10-30 00:00:15 +00:00
Andrew Burgess
0633b78640 gdb/testsuite: fix git repository check in gdb.src/pre-commit.exp
In the recently added gdb.src/pre-commit.exp test, we check if the
source directory is a git repository like this:

  if {![file isdirectory $repodir/.git]} {
      unsupported "Not in a git repository"
      return
  }

I make extensive use of git worktrees for development.  In a worktree
.git is a file containing the location of the actual .git directory,
it is not itself a directory.  As such, the above check fails,
claiming my source tree is not a git repository, when in fact, it is.

Fix this by relaxing the check to 'file exists $repodir/.git', which
will cover the directory and file case.

Approved-By: Kevin Buettner <kevinb@redhat.com>
2025-10-29 09:13:20 +00:00
Haochen Jiang
05b24220b1 x86: Disable AMX-TRANSPOSE by default
In Binutils, we choose to keep the AMX-TRANSPOSE support for
now in case there are vendors want to utilize the instructions
although the feature itself is de-published. AMX-TRANSPOSE will
not show up on any Intel/AMD hardware. Also in foreseeable future,
no hardware will support AMX-TRANSPOSE, we will disable it by
default.

gas/ChangeLog:

	* testsuite/gas/i386/x86-64-amx-movrs-intel.d:
	Move AMX-TRANSPOSE part to AMX-TRANSPOSE test.
	* testsuite/gas/i386/x86-64-amx-movrs.d: Ditto.
	* testsuite/gas/i386/x86-64-amx-movrs.s: Ditto.
	* testsuite/gas/i386/x86-64-amx-tf32-bad.d: Ditto.
	* testsuite/gas/i386/x86-64-amx-tf32-bad.s: Ditto.
	* testsuite/gas/i386/x86-64-amx-tf32-intel.d: Ditto.
	* testsuite/gas/i386/x86-64-amx-tf32-inval.l: Ditto.
	* testsuite/gas/i386/x86-64-amx-tf32-inval.s: Ditto.
	* testsuite/gas/i386/x86-64-amx-tf32.d: Ditto.
	* testsuite/gas/i386/x86-64-amx-tf32.s: Ditto.
	* testsuite/gas/i386/x86-64-apx-evex-promoted-intel.d: Ditto.
	* testsuite/gas/i386/x86-64-apx-evex-promoted-wig.d: Ditto.
	* testsuite/gas/i386/x86-64-apx-evex-promoted.d: Ditto.
	* testsuite/gas/i386/x86-64-apx-evex-promoted.s: Ditto.
	* testsuite/gas/i386/x86-64-amx-movrs-inval.l: Move
	AMX-TRANSPOSE part to AMX-TRANSPOSE file. Remove
	noamx_transpose test.
	* testsuite/gas/i386/x86-64-amx-movrs-inval.s: Ditto.
	* testsuite/gas/i386/x86-64-amx-transpose-bad.d:
	Add AMX-MOVRS and AMX-TF32 related test.
	* testsuite/gas/i386/x86-64-amx-transpose-bad.s: Ditto.
	* testsuite/gas/i386/x86-64-amx-transpose-intel.d: Ditto.
	* testsuite/gas/i386/x86-64-amx-transpose-inval.l: Ditto.
	* testsuite/gas/i386/x86-64-amx-transpose-inval.s: Ditto.
	* testsuite/gas/i386/x86-64-amx-transpose.d: Ditto.
	* testsuite/gas/i386/x86-64-amx-transpose.s: Ditto.
	* testsuite/gas/i386/x86-64.exp: Remove AMX-MOVRS invalid test.
	* testsuite/gas/i386/x86-64-amx-transpose-apx-intel.d:
	New test originally comes from APX_F test.
	* testsuite/gas/i386/x86-64-amx-transpose-apx-wig.d: Ditto.
	* testsuite/gas/i386/x86-64-amx-transpose-apx.d: Ditto.
	* testsuite/gas/i386/x86-64-amx-transpose-apx.s: Ditto.

opcodes/ChangeLog:

	* i386-gen.c: Disable AMX-TRANSPOSE by default.
	* i386-init.h: Regenerated.
2025-10-29 14:12:16 +08:00
Haochen Jiang
c83443fd76 Revert "x86/APX: drop AMX-TRANSPOSE promoted insns"
This reverts commit bafcf0823c.

The patch (the removal) was done on the wrong assumption that
it was only the APX-promoted forms which would be dropped
because the APX spec was updated ahead of ISE and there was no
info that AMX-TRANSPOSE would be de-published at that time.
Given the current situation, since we will choose to disable
AMX-TRANSPOSE but not to remove the support in Binutils, we will
also not remove the APX support.
2025-10-29 14:12:16 +08:00
GDB Administrator
457bc7af86 Automatic date update in version.in 2025-10-29 00:00:41 +00:00
Simon Marchi
338796db76 gdb/solib-rocm: avoid expensive gdbarch_from_bfd call in rocm_solib_relocate_section_addresses
Loading a library containing a lot (> 100k) sections proved very slow
with whenever the support for ROCm was built into gdb.  The culprit is
the gdbarch_from_bfd call in rocm_solib_relocate_section_addresses:

    if (!is_amdgpu_arch (gdbarch_from_bfd (so.abfd.get ())))

This function gets called for every section, and gdbarch_from_bfd is
somewhat slow.  It turns out that we can skip the gdbarch_from_bfd call,
since all is_amdgpu_arch needs is the bfd_architecture value, which we
can directly extract from the `bfd *`, without going through the
gdbarch.

Add an overload of is_amdgpu_arch that takes a `bfd *`, and use it in
rocm_solib_relocate_section_addresses.

Update a call site in rocm_solib_bfd_open to use the new overload as
well.  That call site is not as much in a hot path, but there is no
point in paying the extra cost of looking up the gdbarch there.  I
removed the other assert that checked that gdbarch_from_bfd returned a
non-nullptr value.  If that was the case, something would be very wrong
with ROCgdb, and the problem would manifest very soon after anyway.

Change-Id: I55e9e68af59903b1b9727ff57388f9469d0e0002
Approved-by: Lancelot Six <lancelot.six@amd.com> (AMDGPU)
2025-10-28 11:55:23 -04:00
Tom Tromey
20adfa53dc Fix typo in break-kernel-no-debug-info.exp
pre-commit / codespell pointed out a typo in
break-kernel-no-debug-info.exp.  This patch fixes it.
2025-10-28 09:53:17 -06:00
Tom Tromey
8e2dd54209 Emit language and encoding names from dwarf-to-dwarf-assembler
This changes dwarf-to-dwarf-assembler to emit DW_LANG_* and DW_ATE_*
names when decoding the appropriate attributes.  This makes the output
a little more readable and a little closer to something we'd check in.

Approved-By: Andrew Burgess <aburgess@redhat.com>
2025-10-28 09:38:47 -06:00
Tom Tromey
101b7a01c2 Update "usage" line in dwarf-to-dwarf-assembler
This changes the "usage" text in dwarf-to-dwarf-assembler to be a bit
more GNU-like.  It also fixes the name used in the message.

Approved-By: Andrew Burgess <aburgess@redhat.com>
2025-10-28 09:38:46 -06:00