]> git.ipfire.org Git - thirdparty/binutils-gdb.git/log
thirdparty/binutils-gdb.git
6 months ago[gdb/python] Warn and ignore ineffective python settings
Tom de Vries [Tue, 3 Dec 2024 21:49:40 +0000 (22:49 +0100)] 
[gdb/python] Warn and ignore ineffective python settings

Configuration flags "python dont-write-bytecode" and
"python ignore-environment" have effect only at Python initialization.

For instance, setting "python dont-write-bytecode" here has no effect:
...
$ gdb -q
(gdb) show python dont-write-bytecode
Python's dont-write-bytecode setting is auto (currently off).
(gdb) python import sys
(gdb) python print (sys.dont_write_bytecode)
False
(gdb) set python dont-write-bytecode on
(gdb) python print (sys.dont_write_bytecode)
False
...

This is not clear in the code: we set Py_DontWriteBytecodeFlag and
Py_IgnoreEnvironmentFlag in set_python_ignore_environment and
set_python_dont_write_bytecode.  Fix this by moving the setting of those
variables to py_initialization.

Furthermore, this is not clear to the user: after Python initialization, the
user can still modify the configuration flags, and observe the changed setting:
...
$ gdb -q
(gdb) show python ignore-environment
Python's ignore-environment setting is off.
(gdb) set python ignore-environment on
(gdb) show python ignore-environment
Python's ignore-environment setting is on.
(gdb)
...

Fix this by emitting a warning when trying to set these configuration flags
after Python initialization:
...
$ gdb -q
(gdb) set python ignore-environment on
warning: Setting python ignore-environment after Python initialization has \
  no effect, try setting this during early initialization
(gdb) set python dont-write-bytecode on
warning: Setting python dont-write-bytecode after Python initialization has \
  no effect, try setting this during early initialization, or try setting \
  sys.dont_write_bytecode
...
and by keeping the values constant after Python initialization.

Since the auto setting for python dont-write-bytecode depends on the current
value of environment variable PYTHONDONTWRITEBYTECODE, we simply avoid it
after Python initialization:
...
$ gdb -q -batch \
    -eiex "show python dont-write-bytecode" \
    -iex "show python dont-write-bytecode"
Python's dont-write-bytecode setting is auto (currently off).
Python's dont-write-bytecode setting is off.
...

Tested on aarch64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
PR python/32388
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32388

6 months ago[gdb/python] Drop ATTRIBUTE_UNUSED on py_initialize_catch_abort
Tom de Vries [Tue, 3 Dec 2024 21:49:40 +0000 (22:49 +0100)] 
[gdb/python] Drop ATTRIBUTE_UNUSED on py_initialize_catch_abort

I added ATTRIBUTE_UNUSED to py_initialize_catch_abort as a quick fix to deal
with it being unused for PY_VERSION_HEX >= 0x030a0000, but forgot to fix this
before committing.

Fix this now, by removing the attribute and using
'#if PY_VERSION_HEX < 0x030a0000' instead.

Tested on aarch64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
6 months ago[gdb/python] Factor out and refactor py_initialize
Tom de Vries [Tue, 3 Dec 2024 21:49:40 +0000 (22:49 +0100)] 
[gdb/python] Factor out and refactor py_initialize

Function do_start_initialization has a large part dedicated to initializing
the python interpreter, as opposed to the rest of the function where
gdb-specific python support is initialized.

Factor out this part, as new function py_initialize, and rename the existing
py_initialize to py_initialize_catch_abort.

Refactor the new function py_initialize by getting rid of the nested:
...
 #ifdef WITH_PYTHON_PATH
 #if PY_VERSION_HEX < 0x030a0000
 #else
 #endif
 #else
 #endif
...

In particular, this changes behaviour for the "!defined (WITH_PYTHON_PATH)"
case.

For the "defined (WITH_PYTHON_PATH)" case, we've started using
Py_InitializeFromConfig () for PY_VERSION_HEX >= 0x030a0000 to deal with the
deprecation of Py_SetProgramName in 3.11.

For the "!defined (WITH_PYTHON_PATH)" case, we don't use Py_SetProgramName so
we stuck with Py_Initialize ().

However, in 3.12 Py_DontWriteBytecodeFlag and Py_IgnoreEnvironmentFlag got
deprecated and also here we need Py_InitializeFromConfig () to deal with this,
but the "!defined (WITH_PYTHON_PATH)" case didn't get updated.

This should be taken care of, now that we have this behavior:
- for PY_VERSION_HEX < 0x030a0000 we use Py_Initialize
- for PY_VERSION_HEX >= 0x030a0000 we use Py_InitializeFromConfig

I'm not sure how to test the "!defined (WITH_PYTHON_PATH)" though.

Tested on aarch64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
6 months agogdb: restore nullptr check in compunit_symtab::find_call_site
Simon Marchi [Tue, 3 Dec 2024 15:52:18 +0000 (10:52 -0500)] 
gdb: restore nullptr check in compunit_symtab::find_call_site

Commit de2b4ab50de ("Convert dwarf2_cu::call_site_htab to new hash
table") removed this nullptr check for no good reason.  This causes a
crash if `m_call_site_htab` is not set, as shown in PR 32410.  My guess
is that when doing this change, I tried to make `m_call_site_htab` not a
pointer, removed this check, then realized it wasn't so obvious, and
forgot to re-add the check.

Change-Id: I455e00cdc0519dfb412dc7826d17a839b77aae69
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32410
Approved-By: Tom Tromey <tom@tromey.com>
Approved-By: Tom de Vries <tdevries@suse.de>
6 months agogdb/testsuite: make gdb.reverse/i386-avx-reverse.exp require avx
Guinevere Larsen [Mon, 25 Nov 2024 17:34:31 +0000 (14:34 -0300)] 
gdb/testsuite: make gdb.reverse/i386-avx-reverse.exp require avx

The test gdb.reverse/i386-avx-reverse.exp was assuming that if the CPU
was like x86, it would have AVX instructions because I didn't know how
to check for AVX instruction support explicitly.  This commit updates
that to use the pre-existing TCL proc have_avx.

Also update the comment at the top of the test, since it was a copy of a
different test.

Approved-By: Andrew Burgess <aburgess@redhat.com>
6 months agogdb/dbx: Remove stabsect_build_psymtab as it was unused
Guinevere Larsen [Mon, 25 Nov 2024 16:14:57 +0000 (13:14 -0300)] 
gdb/dbx: Remove stabsect_build_psymtab as it was unused

The function stabsect_build_psymtabs, defined in the dbxread file, is no
longer used in any parts of GDB, so this commit just removes it.

Tested by rebuilding.

Approved-By: Andrew Burgess <aburgess@redhat.com>
6 months ago[gdb/testsuite] Fix gdb.base/reset-catchpoint-cond.exp with --with-expat=no
Tom de Vries [Tue, 3 Dec 2024 15:53:14 +0000 (16:53 +0100)] 
[gdb/testsuite] Fix gdb.base/reset-catchpoint-cond.exp with --with-expat=no

When building gdb with --with-expat=no and running test-case
gdb.base/reset-catchpoint-cond.exp we get:
...
(gdb) catch syscall write^M
warning: Can not parse XML syscalls information; \
  XML support was disabled at compile time.^M
Unknown syscall name 'write'.^M
(gdb) FAIL: $exp: mode=syscall: catch syscall write
...

Fix this by skipping the test for --with-expat=no.

Tested on x86_64-linux.

6 months ago[gdb/testsuite] Fix gdb.python/python.exp with --disable-tui
Tom de Vries [Tue, 3 Dec 2024 15:53:14 +0000 (16:53 +0100)] 
[gdb/testsuite] Fix gdb.python/python.exp with --disable-tui

When building gdb with --disable-tui, we run into:
...
(gdb) python print(type(gdb.TuiWindow))^M
Python Exception <class 'AttributeError'>: \
  module 'gdb' has no attribute 'TuiWindow'^M
Error occurred in Python: module 'gdb' has no attribute 'TuiWindow'^M
(gdb) FAIL: gdb.python/python.exp: gdb.TuiWindow is registered
...

Fix this by skipping the test for --disable-tui.

Tested on x86_64-linux.

6 months agogdb: fix crash when GDB can't read an objfile
Guinevere Larsen [Mon, 21 Oct 2024 18:57:55 +0000 (15:57 -0300)] 
gdb: fix crash when GDB can't read an objfile

If a user starts an inferior composed of objfiles that GDB is unable to
read, there is an error thrown in find_sym_fns, printing the famous "I'm
sorry, Dave, I can't do that" and the objfile stops being read. However,
the objfile will already have been linked to the program space, and
future interactions with the objfile will assume that it is readable.

Relevant to this commit, if GDB tries to find out the section that
contains a PC, and this section happens to land in the unreadable
objfile, GDB will try to create a section mapping, eventually calling
update_section_map. Since that function uses bfd to calculate the
sections, it'll think there are sections to be ordered, but when trying
to access the objfile::section_offsets, it'll be indexing a size 0
std::vector, which will end up segfaulting.

Currently, it isn't easy to trigger this crash, but the upcoming
possibility to disable support for some file formats would make the
crash very easy to reproduce, by attempting to debug an unsupported
inferior and using "break *<instruction>" command, or simply connecting
to a gdbserver loaded with an unsupported inferior.

The struct objfile_up seems to have been created to catch these kinds of
errors and unlink the partially-read objfile from the program space, as
the objfile isn't useful to GDB anymore, but it seems to have been added
before find_sym_fns would throw errors for unreadable objfiles, as the
instance in syms_from_objfile_1 (that could save GDB from this crash) is
declared well after find_sym_fns, too late to guard us. This commit
moves the declaration up to the top of the function, so it works as
intended.

Further discussion on the mailing list also agreed that the name
"objfile_up" implies some level of ownership of the pointer, which this
struct doesn't have. So this commit renames the struct to
scoped_objfile_unlinker, which is more descriptive of what the struct is
actually meant to do.

The final change this commit does is add an assertion to
objfile::section_offset and objfile::set_section_offset, which ensures
that the section_offsets vector is large enough to return the desired
offset. This ensures that we won't misteriously segfault or worse,
continue going with garbage data.

Reported-By: Andrew Burgess <aburgess@redhat.com>
Approved-By: Andrew Burgess <aburgess@redhat.com>
6 months agogas: Re-enable .org test 1 on all targets except kvx
Jens Remus [Tue, 3 Dec 2024 13:33:32 +0000 (14:33 +0100)] 
gas: Re-enable .org test 1 on all targets except kvx

It got erroneously disabled for all targets including kvx instead of
excluding kvx only.

gas/testsuite/
* gas/all/org-1.d: Re-enable on all targets except kvx.

Fixes: 6e712424f5cb ("kvx: New port.")
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
6 months agos390: Enable .bss/.struct data allocation directives tests
Jens Remus [Tue, 3 Dec 2024 13:33:32 +0000 (14:33 +0100)] 
s390: Enable .bss/.struct data allocation directives tests

This reduces the number of unsupported tests on s390 by two.

gas/testsuite/
* gas/elf/bss.d: Enable for s390*-*-*.
* gas/elf/bad-bss.d: Likewise.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
6 months agoPowerPC: Add support for RFC02680 - PQC Acceleration Instructions
Surya Kumari Jangala [Fri, 22 Nov 2024 09:41:49 +0000 (04:41 -0500)] 
PowerPC: Add support for RFC02680 - PQC Acceleration Instructions

opcodes/
* ppc-opc.c (powerpc_opcodes): Add xvadduwm, xvadduhm, xvsubuwm,
xvsubuhm, xvmuluwm, xvmuluhm, xvmulhsw, xvmulhsh, xvmulhuw,
xvmulhuh.
gas/
* testsuite/gas/ppc/future.s: New test.
* testsuite/gas/ppc/future.d: Likewise.

6 months agoUpdated Russian translation and new Malay translation for the BFD sub-directory
Nick Clifton [Tue, 3 Dec 2024 12:44:36 +0000 (12:44 +0000)] 
Updated Russian translation and new Malay translation for the BFD sub-directory

6 months agoLoongArch: Fix the infinite loop caused by calling undefweak symbol
Lulu Cai [Tue, 3 Dec 2024 11:37:26 +0000 (19:37 +0800)] 
LoongArch: Fix the infinite loop caused by calling undefweak symbol

The undefweak symbol value of non-default visibility is 0 and does
not use plt entry, and will not be relocated in the relocate_secion
function. As a result, an infinite loop is generated because
bl %plt(sym) => bl 0.

Fix this by converting the call into a jump address 0.

6 months agogdb: fix comment for gdbarch_stack_grows_down
Andrew Burgess [Tue, 3 Dec 2024 10:38:03 +0000 (10:38 +0000)] 
gdb: fix comment for gdbarch_stack_grows_down

The comment for gdbarch_stack_grows_down was wrong.  Fixed in this
commit.

There should be no user visible changes after this commit.

6 months agogas: partly restore how current_location() had worked
Jan Beulich [Tue, 3 Dec 2024 09:48:16 +0000 (10:48 +0100)] 
gas: partly restore how current_location() had worked

Commit 4a826962e760 changed its behavior without saying why, and without
putting in place any testcase demonstrating the required behavior.
Firmly latch the current position unless deferred-evaluation mode is in
effect.

6 months agoMMIX: use current_location() directly
Jan Beulich [Tue, 3 Dec 2024 09:47:53 +0000 (10:47 +0100)] 
MMIX: use current_location() directly

It's no longer a static function, so it can be used without involving a
wrapper function plus an indirect function call.

6 months agogas: streamline expr_build_dot()
Jan Beulich [Tue, 3 Dec 2024 09:47:36 +0000 (10:47 +0100)] 
gas: streamline expr_build_dot()

There's no point involving symbol_clone_if_forward_ref(), just for it to
replace dot_symbol by one obtained from symbol_temp_new_now(). For the
abs-section case also produce a slightly more "complete" (as in: all
potentially relevant fields filled) expression by going through
expr_build_uconstant().

Move the function next to current_location(), for it to be easier to see
the (dis)similarities. Correct the function's comment while there.

6 months agoSupport Intel AVX10.2 BF16 instructions
Kong Lingling [Tue, 3 Dec 2024 07:34:05 +0000 (15:34 +0800)] 
Support Intel AVX10.2 BF16 instructions

In this patch, we will support AVX10.2 BF16 instructions. All of them
are new instructions forms. In current documentation, it is still
VSCALEFPBF16, but it will change to VSCALEFNEPBF16 eventually.

In disassembler part, we added %XB to reduce W table pass since all
of them get evex.w=0.

gas/Changelog:

* testsuite/gas/i386/i386.exp: Add AVX10.2 tests.
* testsuite/gas/i386/x86-64.exp: Ditto.
* testsuite/gas/i386/avx10_2-256-bf16-intel.d: New.
* testsuite/gas/i386/avx10_2-256-bf16.d: Ditto.
* testsuite/gas/i386/avx10_2-256-bf16.s: Ditto.
* testsuite/gas/i386/avx10_2-512-bf16-intel.d: Ditto.
* testsuite/gas/i386/avx10_2-512-bf16.d: Ditto.
* testsuite/gas/i386/avx10_2-512-bf16.s: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-256-bf16-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-256-bf16.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-256-bf16.s: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-512-bf16-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-512-bf16.d: Ditto.
* testsuite/gas/i386/x86-64-avx10_2-512-bf16.s: Ditto.

opcodes/

* i386-dis-evex-prefix.h: Update PREFIX_EVEX_0F3A08, PREFIX_EVEX_0F3A26,
PREFIX_EVEX_0F3A56, PREFIX_EVEX_0F3A66, PREFIX_EVEX_0F3AC2,
PREFIX_EVEX_MAP5_2F, PREFIX_EVEX_MAP5_51, PREFIX_EVEX_MAP5_58,
PREFIX_EVEX_MAP5_59, PREFIX_EVEX_MAP5_5C, PREFIX_EVEX_MAP5_5D,
PREFIX_EVEX_MAP5_5E, PREFIX_EVEX_MAP5_5F.
Add PREFIX_EVEX_MAP6_2C, PREFIX_EVEX_MAP6_4C, PREFIX_EVEX_MAP6_4E,
PREFIX_EVEX_MAP6_98, PREFIX_EVEX_MAP6_9A, PREFIX_EVEX_MAP6_9C,
PREFIX_EVEX_MAP6_9E, PREFIX_EVEX_MAP6_A8, PREFIX_EVEX_MAP6_AA,
PREFIX_EVEX_MAP6_AC, PREFIX_EVEX_MAP6_AE, PREFIX_EVEX_MAP6_B8,
PREFIX_EVEX_MAP6_BA, PREFIX_EVEX_MAP6_BC, PREFIX_EVEX_MAP6_BE.
* i386-dis-evex.h (evex_table): Update PREFIX_EVEX_MAP6_2C,
PREFIX_EVEX_MAP6_42, PREFIX_EVEX_MAP6_4C, PREFIX_EVEX_MAP6_4E,
PREFIX_EVEX_MAP6_98, PREFIX_EVEX_MAP6_9A, PREFIX_EVEX_MAP6_9C,
PREFIX_EVEX_MAP6_9E, PREFIX_EVEX_MAP6_A8, PREFIX_EVEX_MAP6_AA,
PREFIX_EVEX_MAP6_AC, PREFIX_EVEX_MAP6_AE, PREFIX_EVEX_MAP6_B8,
PREFIX_EVEX_MAP6_BA, PREFIX_EVEX_MAP6_BC, PREFIX_EVEX_MAP6_BE.
* i386-dis.c (PREFIX_EVEX_MAP6_2C): New enum.
(PREFIX_EVEX_MAP6_42): Ditto.
(PREFIX_EVEX_MAP6_4C): Ditto.
(PREFIX_EVEX_MAP6_4E): Ditto.
(PREFIX_EVEX_MAP6_98): Ditto.
(PREFIX_EVEX_MAP6_9A): Ditto.
(PREFIX_EVEX_MAP6_9C): Ditto.
(PREFIX_EVEX_MAP6_9E): Ditto.
(PREFIX_EVEX_MAP6_A8): Ditto.
(PREFIX_EVEX_MAP6_AA): Ditto.
(PREFIX_EVEX_MAP6_AC): Ditto.
(PREFIX_EVEX_MAP6_AE): Ditto.
(PREFIX_EVEX_MAP6_B8): Ditto.
(PREFIX_EVEX_MAP6_BA): Ditto.
(PREFIX_EVEX_MAP6_BC): Ditto.
(PREFIX_EVEX_MAP6_BE): Ditto.
(putop): Handle %XB.
* i386-opc.tbl: Add AVX10.2 instructions.
* i386-mnem.h: Regenerated.
* i386-tbl.h: Ditto.

Co-authored-by: Haochen Jiang <haochen.jiang@intel.com>
6 months agoAutomatic date update in version.in
GDB Administrator [Tue, 3 Dec 2024 00:00:18 +0000 (00:00 +0000)] 
Automatic date update in version.in

6 months agogdb/configure.ac: remove elf_hp.h check
Simon Marchi [Mon, 2 Dec 2024 16:42:10 +0000 (11:42 -0500)] 
gdb/configure.ac: remove elf_hp.h check

The comment says this is for HP/UX, which is no longer supported.  There
should be no functional changes with this, since nothing checks
HAVE_ELF_HP_H.

Change-Id: Ie897fc64638c9fea28463e1bf69e450c3673fd84

6 months agogdb, gdbserver, gdbsupport: flatten and sort some list in configure files
Simon Marchi [Mon, 2 Dec 2024 15:35:23 +0000 (10:35 -0500)] 
gdb, gdbserver,  gdbsupport: flatten and sort some list in configure files

This makes the lists easier sort read and modify.  There are no changes
in the generated config.h files, so I'm confident this brings no
functional changes.

Change-Id: Ib6b7fc532bcd662af7dbb230070fb1f4fc75f86b

6 months agoaarch64: add tests for combinations of GCS options and marked/unmarked inputs
Matthieu Longo [Thu, 7 Nov 2024 13:13:20 +0000 (13:13 +0000)] 
aarch64: add tests for combinations of GCS options and marked/unmarked inputs

6 months agoaarch64: add tests to check the correct merge of the GCS feature with others.
Matthieu Longo [Thu, 7 Nov 2024 10:33:45 +0000 (10:33 +0000)] 
aarch64: add tests to check the correct merge of the GCS feature with others.

6 months agoaarch64: GCS feature check in GNU note properties for input objects
Srinath Parvathaneni [Mon, 28 Oct 2024 18:13:08 +0000 (18:13 +0000)] 
aarch64: GCS feature check in GNU note properties for input objects

This patch adds support for Guarded Control Stack in AArch64 linker.

This patch implements the following:
1) Defines GNU_PROPERTY_AARCH64_FEATURE_1_GCS bit for GCS in
GNU_PROPERTY_AARCH64_FEATURE_1_AND macro.

2) Adds readelf support to read and print the GCS feature in GNU
properties in AArch64.

Displaying notes found in: .note.gnu.property
[      ]+Owner[        ]+Data size[    ]+Description
  GNU                  0x00000010      NT_GNU_PROPERTY_TYPE_0
      Properties: AArch64 feature: GCS

3) Adds support for the "-z gcs" linker option and document all the values
allowed with this option (-z gcs[=always|never|implicit]) where "-z gcs" is
equivalent to "-z gcs=always". When '-z gcs' option is omitted from the
command line, it defaults to "implicit" and relies on the GCS feature
marking in GNU properties.

4) Adds support for the "-z gcs-report" linker option and document all the
values allowed with this option (-z gcs-report[=none|warning|error]) where
"-z gcs-report" is equivalent to "-z gcs-report=warning". When this option
is omitted from the command line, it defaults to "warning".

The ABI changes adding GNU_PROPERTY_AARCH64_FEATURE_1_GCS to the GNU
property GNU_PROPERTY_AARCH64_FEATURE_1_AND is merged into main and
can be found in [1].

[1] https://github.com/ARM-software/abi-aa/blob/main/sysvabi64/sysvabi64.rst

Co-authored-by: Matthieu Longo <matthieu.longo@arm.com>
Co-authored-by: Yury Khrustalev <yury.khrustalev@arm.com>
6 months agoaarch64: rename BTI error/warning message
Matthieu Longo [Thu, 7 Nov 2024 14:33:09 +0000 (14:33 +0000)] 
aarch64: rename BTI error/warning message

The previous message for missing BTI feature in GNU properties was
not very clear. The new message explains that a missing GNU property
marking is lacking on this specific input.

6 months agoaarch64: delete duplicated BTI tests
Matthieu Longo [Mon, 2 Dec 2024 09:44:54 +0000 (09:44 +0000)] 
aarch64: delete duplicated BTI tests

6 months agoaarch64: improve test coverage for combination of BTI options
Matthieu Longo [Mon, 2 Dec 2024 09:46:21 +0000 (09:46 +0000)] 
aarch64: improve test coverage for combination of BTI options

6 months agoaarch64: limit number of reported issues on missing GNU properties
Matthieu Longo [Tue, 5 Nov 2024 13:22:31 +0000 (13:22 +0000)] 
aarch64: limit number of reported issues on missing GNU properties

This patch attempts to make the linker output more friendly for the
developers by limiting the number of emitted warning/error messages
related to BTI issues.

Every time an error/warning related to BTI is emitted, the logger
also increments the BTI issues counter. A batch of errors/warnings is
limited to a maximum of 20 explicit errors/warnings. At the end of
the merge, a summary of the total of errors/warning is given if the
number exceeds the limit of 20 invidual messages.

6 months agoaarch64: bugfix when finding 1st bfd input with GNU property
Matthieu Longo [Wed, 6 Nov 2024 17:59:46 +0000 (17:59 +0000)] 
aarch64: bugfix when finding 1st bfd input with GNU property

The current implementation of searching the first input BFD with GNU
properties has a bug. The search was not filtering on object inputs
belonging to the output link unit only, but was also including dynamic
objects, BFD plugins, and linker-created files.
This means that the initial initialization of the output properties
were skewed, and warnings on input files that should have been emitted
were not.

This patch fixes the filtering to exclude the object input files not
belonging to the output link unit, not having the same ELF class, and
not the same target architecture.

6 months agoaarch64: remove early exit when setting up GNU properties with partial linking
Matthieu Longo [Thu, 14 Nov 2024 17:35:24 +0000 (17:35 +0000)] 
aarch64: remove early exit when setting up GNU properties with partial linking

There is an early exit in _bfd_aarch64_elf_link_setup_gnu_properties
that is enabled when the output link unit is relocatable, i.e. ld
generates an output file that can in turn serve as input to ld. (see
ld manual, -r,--relocatable for more details).

At this stage, the GNU properties have already been merged and errors
or warnings (if any) have already been issued. However, OUTPROP has
not been updated yet.
Not updating OUTPROP means that implicits enablement of BTI PLTs via
the GNU properties will be ignored for final links. Indeed, the
enablement of BTI PLTs is checked inside _bfd_aarch64_add_call_stub_entries
by looking up at gnu_property_aarch64_feature_1_and (OUTPROP).
Since the final link does not happen in the case of partial linking,
the behaviour with or without the early exit should be the same.

Given that there is currently no comment for explain why the exit is
there, and that there might in the future be cases were these properties
affect relocatable links, it is preferrable to drop the early exit.

6 months agoaarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 5)
Matthieu Longo [Thu, 14 Nov 2024 17:34:04 +0000 (17:34 +0000)] 
aarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 5)

Use _bfd_aarch64_elf_check_bti_report to report any BTI issue on the
first input object.

6 months agoaarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 4)
Matthieu Longo [Thu, 14 Nov 2024 17:08:27 +0000 (17:08 +0000)] 
aarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 4)

Move the code related to the creation of the gnu.note section to a
separate function: _bfd_aarch64_elf_create_gnu_property_section

6 months agoaarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 3)
Matthieu Longo [Thu, 14 Nov 2024 16:56:27 +0000 (16:56 +0000)] 
aarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 3)

Move the code related to the search of the first bfd input with GNU
properties to a separate function:
_bfd_aarch64_elf_find_1st_bfd_input_with_gnu_property

6 months agoaarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 2)
Matthieu Longo [Thu, 14 Nov 2024 16:51:46 +0000 (16:51 +0000)] 
aarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 2)

Simplify this for-loop with too many "break" instructions inside.

6 months agoaarch64: refactoring _bfd_aarch64_elf_check_bti_report
Matthieu Longo [Thu, 28 Nov 2024 23:21:05 +0000 (23:21 +0000)] 
aarch64: refactoring _bfd_aarch64_elf_check_bti_report

Before this patch, warnings were reported normally, and errors
(introduced by a previous patch adding '-z bti-report' option)
were logged as error but were not provoking a link failure.
The root of the issue was a misuse of _bfd_error_handler to
report the errors.
Replacing _bfd_error_handler by info->callbacks->einfo, with the
addition of the formatter '%X' for errors fixed the issue.

6 months agoaarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 1)
Matthieu Longo [Thu, 14 Nov 2024 16:41:05 +0000 (16:41 +0000)] 
aarch64: refactoring _bfd_aarch64_elf_link_setup_gnu_properties (part 1)

Exposing the output GNU property as a parameter of
_bfd_aarch64_elf_link_setup_gnu_properties seems to break the
encapsulation. The output GNU property update should be part of the
function that sets up the GNU properties.
This patch removes the parameter, and perform the update of the GNU
property on the output object inside the function.

6 months agoaarch64: rename gnu_and_prop to gnu_property_aarch64_feature_1_and
Matthieu Longo [Thu, 14 Nov 2024 16:12:05 +0000 (16:12 +0000)] 
aarch64: rename gnu_and_prop to gnu_property_aarch64_feature_1_and

6 months agoaarch64: simplify condition in elfNN_aarch64_merge_gnu_properties
Matthieu Longo [Thu, 28 Nov 2024 15:36:51 +0000 (15:36 +0000)] 
aarch64: simplify condition in elfNN_aarch64_merge_gnu_properties

The current condition used to check if a GNU feature property is set
on an input object before the merge is a bit confusing.

  (aprop && !<something about aprop>) || !aprop

It seems easier to understand if it is changed as follows:

  (!aprop || !<something about aprop>)

6 months agoaarch64: rename parameter of _bfd_aarch64_elf_merge_gnu_properties
Matthieu Longo [Thu, 14 Nov 2024 16:05:27 +0000 (16:05 +0000)] 
aarch64: rename parameter of _bfd_aarch64_elf_merge_gnu_properties

The current naming of the AArch64 feature GNU property of the output bfd
does not reflect what it is. This patch renames it from "prop" to
"outprop".

6 months agoaarch64: update ld documentation with bti and pac options
Matthieu Longo [Fri, 8 Nov 2024 23:06:16 +0000 (23:06 +0000)] 
aarch64: update ld documentation with bti and pac options

6 months agoaarch64: use only one type for feature marking report
Matthieu Longo [Thu, 28 Nov 2024 11:13:23 +0000 (11:13 +0000)] 
aarch64: use only one type for feature marking report

6 months agoaarch64: group software protection options under a same struct.
Matthieu Longo [Mon, 28 Oct 2024 18:12:38 +0000 (18:12 +0000)] 
aarch64: group software protection options under a same struct.

- declare a new struc aarch_protection_opts to store all the
  configuration options related to software protections (i.e. bti-plt,
  pac-plt, bti-report level).
- add a new option "-z bti-report" to configure the log level of reported
  issues when BTI PLT is forced.
- encapsulate the BTI report inside _bfd_aarch64_elf_check_bti_report.

6 months agoaarch64: adapt BTI tests to use selectable GNU properties
Matthieu Longo [Sat, 30 Nov 2024 10:27:41 +0000 (10:27 +0000)] 
aarch64: adapt BTI tests to use selectable GNU properties

6 months agoaarch64: adapt bti-far* tests to use selectable GNU properties
Matthieu Longo [Fri, 29 Nov 2024 15:26:16 +0000 (15:26 +0000)] 
aarch64: adapt bti-far* tests to use selectable GNU properties

6 months agoaarch64: adapt tests for PAC PLT to use selectable GNU properties
Matthieu Longo [Fri, 29 Nov 2024 14:59:50 +0000 (14:59 +0000)] 
aarch64: adapt tests for PAC PLT to use selectable GNU properties

6 months agoaarch64: delete old tests for PAC & BTI PLT
Matthieu Longo [Fri, 29 Nov 2024 12:15:16 +0000 (12:15 +0000)] 
aarch64: delete old tests for PAC & BTI PLT

6 months agoaarch64: new tests for BTI & PAC PLT to use selectable GNU properties
Matthieu Longo [Fri, 29 Nov 2024 12:12:32 +0000 (12:12 +0000)] 
aarch64: new tests for BTI & PAC PLT to use selectable GNU properties

6 months agoaarch64: adapt bti-plt-so to use selectable GNU properties
Matthieu Longo [Fri, 29 Nov 2024 15:27:04 +0000 (15:27 +0000)] 
aarch64: adapt bti-plt-so to use selectable GNU properties

6 months agoaarch64: delete old tests covering the merge of feature markings
Matthieu Longo [Fri, 29 Nov 2024 10:28:31 +0000 (10:28 +0000)] 
aarch64: delete old tests covering the merge of feature markings

6 months agoaarch64: new tests covering the merge of feature markings
Matthieu Longo [Fri, 29 Nov 2024 15:24:20 +0000 (15:24 +0000)] 
aarch64: new tests covering the merge of feature markings

6 months agoaarch64: move tests for AArch64 protections (BTI, PAC) into a subfolder
Matthieu Longo [Mon, 28 Oct 2024 13:59:55 +0000 (13:59 +0000)] 
aarch64: move tests for AArch64 protections (BTI, PAC) into a subfolder

- moved all the BTI and PAC tests into a new subfolder: "protections".
    bti-far-*
    bti-plt-*
    bti-pac-plt-*
- move several procedures used only for AArch64 linker tests to a new exp
  library file aarch64-elf-lib.exp in ld/testsuite/ld-aarch64/lib.
- use aarch64-elf-lib.exp in aarch64-ld.exp and aarch64-protections.exp.

6 months agogdb: handle DW_AT_entry_pc pointing at an empty sub-range
Andrew Burgess [Tue, 19 Nov 2024 21:43:06 +0000 (21:43 +0000)] 
gdb: handle DW_AT_entry_pc pointing at an empty sub-range

The test gdb.cp/step-and-next-inline.exp creates a test binary called
step-and-next-inline-no-header.  This test includes a function
`tree_check` which is inlined 3 times.

When testing with some older versions of gcc (I've tried 8.4.0, 9.3.1)
we see the following DWARF representing one of the inline instances of
tree_check:

 <2><8d9>: Abbrev Number: 38 (DW_TAG_inlined_subroutine)
    <8da>   DW_AT_abstract_origin: <0x9ee>
    <8de>   DW_AT_entry_pc    : 0x401165
    <8e6>   DW_AT_GNU_entry_view: 0
    <8e7>   DW_AT_ranges      : 0x30
    <8eb>   DW_AT_call_file   : 1
    <8ec>   DW_AT_call_line   : 52
    <8ed>   DW_AT_call_column : 10
    <8ee>   DW_AT_sibling     : <0x92d>

 ...

 <1><9ee>: Abbrev Number: 46 (DW_TAG_subprogram)
    <9ef>   DW_AT_external    : 1
    <9ef>   DW_AT_name        : (indirect string, offset: 0xe8): tree_check
    <9f3>   DW_AT_decl_file   : 1
    <9f4>   DW_AT_decl_line   : 38
    <9f5>   DW_AT_decl_column : 1
    <9f6>   DW_AT_linkage_name: (indirect string, offset: 0x2f2): _Z10tree_checkP4treei
    <9fa>   DW_AT_type        : <0x9e8>
    <9fe>   DW_AT_inline      : 3       (declared as inline and inlined)
    <9ff>   DW_AT_sibling     : <0xa22>

 ...

 Contents of the .debug_ranges section:

    Offset   Begin    End
    ...
    00000030 0000000000401165 0000000000401165 (start == end)
    00000030 0000000000401169 0000000000401173
    00000030 0000000000401040 0000000000401045
    00000030 <End of list>
    ...

Notice that one of the sub-ranges of tree-check is empty, this is the
line marked 'start == end'.  As the end address is the first address
after the range, this range cover absolutely no code.

But notice too that the DW_AT_entry_pc for the inline instance points
at this empty range.

Further, notice that despite the ordering of the sub-ranges, the empty
range is actually in the middle of the region defined by the lowest
address to the highest address.  The ordering is not a problem, the
DWARF spec doesn't require that ranges be in any particular order.

However, this empty range is causing issues with GDB newly acquire
DW_AT_entry_pc support.

GDB already rejects, and has done for a long time, empty sub-ranges,
after all, the DWARF spec is clear that such a range covers no code.

The recent DW_AT_entry_pc patch also had GDB reject an entry-pc which
was outside of the low/high bounds of a block.

But in this case, the entry-pc value is within the bounds of a block,
it's just not within any useful sub-range.  As a consequence, GDB is
storing the entry-pc value, and making use of it, but when GDB stops,
and tries to work out which block the inferior is in, it fails to spot
that the inferior is within tree_check, and instead reports the
function into which tree_check was inlined.

I've tested with newer versions of gcc (12.2.0 and 14.2.0) and with
these versions gcc is still generating the empty sub-range, but now
this empty sub-range is no longer the entry point.  Here's the
corresponding ranges table from gcc 14.2.0:

  Contents of the .debug_rnglists section:

   Table at Offset: 0:
    Length:          0x56
    DWARF version:   5
    Address size:    8
    Segment size:    0
    Offset entries:  0
      Offset   Begin    End
      ...
      00000021 0000000000401165 000000000040116f
      0000002b 0000000000401040 (base address)
      00000034 0000000000401040 0000000000401040  (start == end)
      00000037 0000000000401041 0000000000401046
      0000003a <End of list>
      ...

The DW_AT_entry_pc is 0x401165, but this is not the empty sub-range,
as a result, when GDB stops at the entry-pc, GDB will correctly spot
that the inferior is in the tree_check function.

The fix I propose here is, instead of rejecting entry-pc values that
are outside the block's low/high range, instead reject entry-pc values
that are not inside any of the block's sub-ranges.

Now, GDB will ignore the prescribed entry-pc, and will instead select
a suitable default entry-pc based on either the block's low-pc value,
or the first address of the first range.

I have extended the gdb.cp/step-and-next-inline.exp test to check this
case, but this does depend on the compiler version being used (newer
compilers will always pass, even without the fix).

So I have also added a DWARF assembler test to cover this case.

Reviewed-By: Kevin Buettner <kevinb@redhat.com>
6 months agox86: default to not accepting MPX insns
Jan Beulich [Mon, 2 Dec 2024 08:39:23 +0000 (09:39 +0100)] 
x86: default to not accepting MPX insns

Gcc9 had MPX support removed. While we don't want to remove support,
require these deprecated insns (and registers) to be enabled explicitly.

6 months agox86: always set ISA_1_BASELINE property for 64-bit objects
Jan Beulich [Mon, 2 Dec 2024 08:38:47 +0000 (09:38 +0100)] 
x86: always set ISA_1_BASELINE property for 64-bit objects

The baseline was, afaik, specifically chosen to align with the baseline
ISA of x86-64. It therefore makes no sense to emit that property only
conditionally; if anything it confuses tools analyzing the difference
between generated object files, which may result from just
added / changed / removed (entirely ISA-independent) code, without any
change to the enabled extensions. Compilers, after all, are free to use
these baseline "extensions" when generating 64-bit code.

While changing the one testcase that needs adjustment, also correct its
misleading name (to be in sync with the filename).

6 months agox86/COFF: support section-index relocations in insn operands
Jan Beulich [Mon, 2 Dec 2024 08:38:15 +0000 (09:38 +0100)] 
x86/COFF: support section-index relocations in insn operands

On the grounds of the principle put down near the bottom of [1], along
with image and section relative operations, let's also support as insn
operands what .secidx is for on the data side (of course like elsewhere
the reloc operator can then also be used for data generation, albeit a
small tweak to x86_cons() is needed for this to work).

[1] https://sourceware.org/pipermail/binutils/2024-November/137617.html

6 months agox86/COFF: support RVA (image-relative) relocations in insn operands
Jan Beulich [Mon, 2 Dec 2024 08:37:34 +0000 (09:37 +0100)] 
x86/COFF: support RVA (image-relative) relocations in insn operands

As was pointed out in [1] compilers produce code using such constructs,
and hence we'd better support this. In analogy to the .rva directive
permit @rva to be used for this, and in analogy with other architectures
(plus to not diverge from e.g. Clang's integrated assembler, albeit I
haven't been able myself to confirm it knows this form) also permit
@imgrel.

While there also adjust the operand type specifier for the adjacent
@secrel32 - 64-bit fields cannot be used with a 32-bit relocation.

Further while there also deal with *-*-pe* in x86-64.exp, even if (right
now) perhaps only for completeness.

[1] https://sourceware.org/pipermail/binutils/2024-November/137548.html

6 months agotestsuite, threads: add missing return statements
Rohr, Stephan [Wed, 31 Jan 2024 14:33:37 +0000 (06:33 -0800)] 
testsuite, threads: add missing return statements

Add missing return statements in

  * gdb.threads/process-exit-status-is-leader-exit-status.c
  * gdb.threads/next-fork-exec-other-thread.c

to fix 'no return statement' compiler warnings, e.g.:

  process-exit-status-is-leader-exit-status.c: In function ‘start’:
  process-exit-status-is-leader-exit-status.c:46:1: warning: no return
    statement in function returning non-void [-Wreturn-type]
     46 | }
        | ^

Approved-By: Simon Marchi <simon.marchi@efficios.com>
6 months agoRISC-V: Add support for ssdbltrp and smdbltrp extension.
Dongyan Chen [Thu, 28 Nov 2024 12:35:36 +0000 (20:35 +0800)] 
RISC-V: Add support for ssdbltrp and smdbltrp extension.

This implements the ssdbltrp extensons, version 1.0[1] and the smdbltrp
extensions, version1.0[2].

[1] https://github.com/riscv/riscv-isa-manual/blob/main/src/ssdbltrp.adoc
[2] https://github.com/riscv/riscv-isa-manual/blob/main/src/smdbltrp.adoc

bfd/ChangeLog:

* elfxx-riscv.c: Add 'ssdbltrp' and 'smdbltrp' to the list of konwn
  standard extensions.

gas/ChangeLog:

* NEWS: Updated.
* testsuite/gas/riscv/imply.d: Ditto.
* testsuite/gas/riscv/imply.s: Ditto.
* testsuite/gas/riscv/march-help.l: Ditto.

6 months agoAutomatic date update in version.in
GDB Administrator [Mon, 2 Dec 2024 00:00:07 +0000 (00:00 +0000)] 
Automatic date update in version.in

6 months agoCorrect hpux-core.c thread_section_p signature
Alan Modra [Sun, 1 Dec 2024 09:41:30 +0000 (20:11 +1030)] 
Correct hpux-core.c thread_section_p signature

Fix fallout from commit 0a1b45a20eaa.

6 months agoRe: PR32399, buffer overflow printing core_file_failing_command
Alan Modra [Sat, 30 Nov 2024 06:11:14 +0000 (16:41 +1030)] 
Re: PR32399, buffer overflow printing core_file_failing_command

Fix more potential buffer overflows, and correct trad-code.c and
cisco-core.c where they should be using bfd_{z}alloc rather than
bfd_{z}malloc.  To stop buffer overflows with fuzzed objects that
don't have a terminator on the core_file_failing_command string, this
patch allocates an extra byte at the end of the entire header buffer
rather than poking a NUL at the end of the name array (u_comm[] or
similar) because (a) it's better to not overwrite the file data, and
(b) it is possible that some core files make use of fields in struct
user beyond the end of u_comm to extend the command name.  The patch
also changes some unnecessary uses of bfd_zalloc to bfd_alloc.
There's not much point in clearing memeory that will shortly be
completely overwritten.

PR 32399
* aix5ppc-core.c (xcoff64_core_p): Allocate an extra byte to
ensure the core_file_failing_command string is terminated.
* netbsd-core.c (netbsd_core_file_p): Likewise.
* ptrace-core.c (ptrace_unix_core_file_p): Likewise.
* rs6000-core.c (rs6000coff_core_p): Likewise.
* trad-core.c (trad_unix_core_file_p): Likewise, and bfd_alloc
tdata rather than bfd_zmalloc.
* cisco-core.c (cisco_core_file_validate): bfd_zalloc tdata.

6 months agoRemove more remnants of old Mach-O workaround
oltolm [Fri, 29 Nov 2024 21:02:07 +0000 (22:02 +0100)] 
Remove more remnants of old Mach-O workaround

Remove another adjustment for section address, this time for the
offset into .debug_str{,.dwo} read from .debug_str_offsets{,.dwo} by
fetch_indexed_string.

Signed-off-by: oltolm <oleg.tolmatcev@gmail.com>
6 months agoAutomatic date update in version.in
GDB Administrator [Sun, 1 Dec 2024 00:00:07 +0000 (00:00 +0000)] 
Automatic date update in version.in

6 months agoAutomatic date update in version.in
GDB Administrator [Sat, 30 Nov 2024 00:00:07 +0000 (00:00 +0000)] 
Automatic date update in version.in

6 months agos390: Fix linker test TLS -fpic and -fno-pic exec transitions
Jens Remus [Fri, 29 Nov 2024 15:52:13 +0000 (16:52 +0100)] 
s390: Fix linker test TLS -fpic and -fno-pic exec transitions

Commit 36bbf8646c8b ("s390: Treat addressing operand sequence as one in
disassembler") changed how plain "nop" gets disassembled and missed to
update any affected linker tests accordingly.

ld/testsuite/
* ld-s390/tlsbin.dd: "nop" disassembles into "nop".

Fixes: 36bbf8646c8b ("s390: Treat addressing operand sequence as one in disassembler")
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
6 months agos390: Simplify parsing of omitted index register operand
Jens Remus [Fri, 29 Nov 2024 14:37:19 +0000 (15:37 +0100)] 
s390: Simplify parsing of omitted index register operand

The index register operand X in D(X,B) can optionally be omitted by
coding D(,B) or D(B).  Simplify the parsing logic.

gas/
* config/tc-s390.c (md_gather_operands): Rename
omitted_base_or_index to omitted_index and simplify logic.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
6 months agos390: Treat addressing operand sequence as one in disassembler
Jens Remus [Fri, 29 Nov 2024 14:37:19 +0000 (15:37 +0100)] 
s390: Treat addressing operand sequence as one in disassembler

Reuse logic introduced with the preceding commit in the assembler to
treat addressing operand sequences D(X,B), D(B), and D(L,B) as one
with regards to optional last operands (i.e. optparm and optparm2).

With this "nop" now disassembles into "nop" instead of "nop 0".

opcodes/
* s390-dis.c (operand_count): New helper to count the remaining
operands, treating D(X,B), D(B), and D(L,B) as one.
(skip_optargs_p): New helper to test whether remaining operands
 are optional.
(skip_optargs_zero_p): New helper to test whether remaining
operands are optional and their values are zero.
(s390_print_insn_with_opcode): Use skip_optargs_zero_p to skip
optional last operands with a value of zero.

gas/testsuite/
* gas/s390/zarch-optargs.d (nop): Adjust test case accordingly.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
6 months agos390: Treat addressing operand sequence as one in assembler
Jens Remus [Fri, 29 Nov 2024 14:37:19 +0000 (15:37 +0100)] 
s390: Treat addressing operand sequence as one in assembler

The assembler erroneously treated any number of operands as optional,
if the instruction was flagged to have one or two optional operands
(i.e. optparm or optparm2).

Only treat the exact specified number of operands as optional while
treating addressing operand sequences D(X,B), D(B), and D(L,B) as one
operand.

gas/
* config/tc-s390.c (operand_count): New helper to count the
remaining operands, treating D(X,B), D(B), and D(L,B) as one.
(skip_optargs_p): Use new helper operand_count to treat
D(X,B), D(B), and D(L,B) as one operand.
(md_gather_operands): Use skip_optargs_p to skip only the
optional last operands.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
6 months agos390: Fix disassembly of optional addressing operands
Jens Remus [Fri, 29 Nov 2024 14:37:19 +0000 (15:37 +0100)] 
s390: Fix disassembly of optional addressing operands

"nop D1(B1)" erroneously disassembled into "nop D1(B1" (missing
closing parenthesis).  "nop D1(X1,0)" and "nop D1(X1,)" erroneously
disassembled into "nop D1(X1)" (missing zero base register) instead
of "nop D1(X1,0)".

Do not skip disassembly of optional operands if they are index (X)
or base (B) registers or length (L) in an addressing operand sequence
"D(X,B)",  "D(B)", or "D(L,B).  Index and base register operand values
of zero are being handled separately, as they may not be omitted
unconditionally.  For instance a base register value of zero must be
printed in above mentioned case, to distinguish the index from the
base register.  This also ensures proper formatting of addressing
operand sequences.

While at it add further test cases for instructions with optional
operands.

opcodes/
* s390-dis.c (s390_print_insn_with_opcode): Do not
unconditionally skip disassembly of optional operands with a
value of zero, if within an addressing operand sequence.

gas/testsuite/
* gas/s390/zarch-optargs.d: Add further test cases for
instructions with optional operands.
* gas/s390/zarch-optargs.s: Likewise.

Reported-by: Florian Krohm <flo2030@eich-krohm.de>
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
6 months agox86: restrict gas'es recognition of -s to Solaris
Jan Beulich [Fri, 29 Nov 2024 08:37:33 +0000 (09:37 +0100)] 
x86: restrict gas'es recognition of -s to Solaris

When there for Solaris compatibility only, also recognize it only there.
This way the option becomes available for other possible uses.

While adjusting md_shortopts[], also re-arrange things such that we have
only a single, uniform definition of it.

6 months agox86/Solaris: support Sun form of CMOVcc
Jan Beulich [Fri, 29 Nov 2024 08:37:13 +0000 (09:37 +0100)] 
x86/Solaris: support Sun form of CMOVcc

Sun specifies an alternative form for CMOVcc [1], which for some reason
we never cared to support, even if - as per gcc's configure checking for
it - it may have been the only permitted form at some point.

While documentation doesn't indicate FCMOVcc to have similar alternative
forms, gcc assumes so. Hence cover FCMOVcc as well.

[1] https://docs.oracle.com/cd/E37838_01/html/E61064/ennbz.html#XALRMeoizm

6 months agox86: purge most *avx512*ig*-intel tests
Jan Beulich [Fri, 29 Nov 2024 08:35:58 +0000 (09:35 +0100)] 
x86: purge most *avx512*ig*-intel tests

Having just one each (AVX512F) ought to be sufficient to cover Intel
syntax disassembly.

In x86-64.exp also reorder tests some, so that related ones are again
next to each other, rather than being interspersed with APX ones.

6 months agox86: SETcc doesn't permit W suffix
Jan Beulich [Fri, 29 Nov 2024 08:35:25 +0000 (09:35 +0100)] 
x86: SETcc doesn't permit W suffix

Accidentally I had removed No_wSuf when cloning the extra template.

6 months agoMAINTAINERS: Update Peter Bergner's e-mail address
Surya Kumari Jangala [Fri, 22 Nov 2024 09:02:18 +0000 (04:02 -0500)] 
MAINTAINERS: Update Peter Bergner's e-mail address

6 months agoPR32399, buffer overflow printing core_file_failing_command
Alan Modra [Thu, 28 Nov 2024 23:48:36 +0000 (10:18 +1030)] 
PR32399, buffer overflow printing core_file_failing_command

Assorted targets do not check, as the ELF targets do, that the program
name in a core file is NUL terminated.  Fix some of them.  I haven't
attempted to fix all targets because editing host specific code can
easily result in build bugs, which aren't discovered until someone
build binutils for that host.  (Of the files edited here, I can't
easily compile hpux-core.c and osf-core.c on a linux system.)

PR 32399
* hppabsd-core.c (hppabsd_core_core_file_p): Ensure core_command
string is terminated.
* hpux-core.c (hpux_core_core_file_p): Likewise.
* irix-core.c (irix_core_core_file_p): Likewise.
* lynx-core.c (lynx_core_file_p): Likewise.
* osf-core.c (osf_core_core_file_p): Likewise.
* mach-o.c (bfd_mach_o_core_file_failing_command): Likewise.

6 months agoAutomatic date update in version.in
GDB Administrator [Fri, 29 Nov 2024 00:00:07 +0000 (00:00 +0000)] 
Automatic date update in version.in

6 months agoSync include/dwarf.h with gcc up to commit c4073a3d154
Alexandra Hájková [Mon, 25 Nov 2024 16:44:05 +0000 (17:44 +0100)] 
Sync include/dwarf.h with gcc up to commit c4073a3d154

Approved-by: Kevin Buettner <kevinb@redhat.com>
6 months ago[gdb/syscalls] Add syscalls {set,get,list,remove}xattrat
Tom de Vries [Thu, 28 Nov 2024 12:53:04 +0000 (13:53 +0100)] 
[gdb/syscalls] Add syscalls {set,get,list,remove}xattrat

In commit 58776901074 ("[gdb/syscalls] Update to linux v6.11") I updated to
linux v6.11, but a recent submission for loongarch [1] used a current trunk
version, so it makes sense to do this as well elsewhere.

Using linux current trunk with update-linux-from-src.sh gets us 4 more
syscalls:
- setxattrat
- getxattrat
- listxattrat
- removexattrat

Tested on x86_64-linux.

[1] https://sourceware.org/pipermail/gdb-patches/2024-November/213613.html

7 months agoAutomatic date update in version.in
GDB Administrator [Thu, 28 Nov 2024 00:00:42 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 months agoFix 32392 [2.44 Regression] gprofng fails to build on i686-linux-gnu
Vladimir Mezentsev [Wed, 27 Nov 2024 03:51:23 +0000 (19:51 -0800)] 
Fix 32392 [2.44 Regression] gprofng fails to build on i686-linux-gnu

gprofng/ChangeLog
2024-11-26  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

PR gprofng/32392
* libcollector/libcol_util.c (__collector_util_init): Fix warning.

7 months agogprofng: skip unrecognized input command
Vladimir Mezentsev [Wed, 27 Nov 2024 03:40:16 +0000 (19:40 -0800)] 
gprofng: skip unrecognized input command

gprofng crashes when the GUI sends an invalid command.
Skip unrecognized commands and return an error status to the GUI.

gprofng/ChangeLog
2024-11-26  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

* src/ipc.cc (ipc_doWork): Skip unrecognized commands.
* src/ipcio.cc (writeError): New function.
* src/ipcio.h: Add RESPONSE_STATUS_ERROR.

7 months agogdb/testsuite: skip gdb.threads/omp-par-scope.exp with clang
Guinevere Larsen [Mon, 25 Nov 2024 18:15:36 +0000 (15:15 -0300)] 
gdb/testsuite: skip gdb.threads/omp-par-scope.exp with clang

Since 2020 it has been reported to clang[1] that the debug information
around OpenMP is insufficient.  The OpenMP section is not declared
within the correct scope, and instead clang marks as if the section was
a function in the global scope.  This causes several failures in the
test gdb.threads/omp-par-scope.exp when using clang to test GDB.

Since this isn't a true failure of GDB, and there is little expectation
that clang will be able to fix this soon, this commit disables the
aforementioned test when clang is being used.

[1] https://github.com/llvm/llvm-project/issues/44236

Approved-by: Kevin Buettner <kevinb@redhat.com>
7 months ago[gdb/symtab] Fix parent map dump
Tom de Vries [Wed, 27 Nov 2024 17:48:43 +0000 (18:48 +0100)] 
[gdb/symtab] Fix parent map dump

Before the fix for PR symtab/32225, the parent map dump showed a mapping from
section offsets to cooked index entries:
...
  0x0000000000000035 0x3ba9560 (0x34: sp1::A)
...
but now that's no longer the case:
...
  0x00000000406f5405 0x410a04d0 (0x34: sp1::A)
...

Fix this by extending the annotation somewhat, such that we get:
...
map start:
  0x0000000012c52405 0x135fd550
(section: .debug_info, offset: 0x35) -> (0x34: sp1::A)
...

Tested on x86_64-linux.

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

7 months ago[gdb/testsuite] Add gdb.dwarf2/dw2-tu-dwarf-4-5.exp
Tom de Vries [Wed, 27 Nov 2024 17:48:43 +0000 (18:48 +0100)] 
[gdb/testsuite] Add gdb.dwarf2/dw2-tu-dwarf-4-5.exp

Add a regression test for PR symtab/32225.

Tested on x86_64-linux.

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

7 months ago[gdb/symtab] Fix parent map when handling .debug_info and .debug_types
Author: Tom Tromey [Wed, 27 Nov 2024 17:48:43 +0000 (18:48 +0100)] 
[gdb/symtab] Fix parent map when handling .debug_info and .debug_types

Consider test-case:
...
$ cat test.c
namespace sp1 {
  class A {
    int i;
    const int f1 = 1;
    ...
    const int f29 = 1;
  };
}
sp1::A a;
void _start (void) {}
$ cat test2.c
namespace sp2 {
  class B {
    float f;
    const float f1 = 1;
    ...
    const float f29 = 1;
  };
}
sp2::B b;
...
compiled like this:
...
$ g++ test.c -gdwarf-4 -c -g -fdebug-types-section
$ g++ test2.c -gdwarf-5 -c -g -fdebug-types-section
$ g++ -g test.o test2.o -nostdlib
...

Using:
...
$ gdb -q -batch -iex "maint set worker-threads 0" a.out -ex "maint print objfiles"
...
we get a cooked index entry with incorrect parent:
...
    [29] ((cooked_index_entry *) 0x3c57d1a0)
    name:       B
    canonical:  B
    qualified:  sp1::A::B
    DWARF tag:  DW_TAG_class_type
    flags:      0x0 []
    DIE offset: 0x154
    parent:     ((cooked_index_entry *) 0x3c57d110) [A]
...

The problem is that the parent map assumes that all offsets are in the same
section.

Fix this by using dwarf2_section_info::buffer-relative addresses instead,
which get us instead:
...
    [29] ((cooked_index_entry *) 0x3f0962b0)
    name:       B
    canonical:  B
    qualified:  sp2::B
    DWARF tag:  DW_TAG_class_type
    flags:      0x0 []
    DIE offset: 0x154
    parent:     ((cooked_index_entry *) 0x3f096280) [sp2]
...

Tested on x86_64-linux.

PR symtab/32225
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32225

7 months ago[gdb/tdep] s390: Add arch15 record/replay support
Andreas Arnez [Tue, 19 Nov 2024 17:24:06 +0000 (18:24 +0100)] 
[gdb/tdep] s390: Add arch15 record/replay support

Enable recording of the new "arch15" instructions on z/Architecture
targets.

7 months agoPE LD: Merge .CRT .ctors and .dtors into .rdata
Liu Hao [Wed, 27 Nov 2024 14:27:53 +0000 (14:27 +0000)] 
PE LD: Merge .CRT .ctors and .dtors into .rdata

PR 32264

7 months agoTidy up the default ELF linker script
Nick Clifton [Wed, 27 Nov 2024 11:23:38 +0000 (11:23 +0000)] 
Tidy up the default ELF linker script

7 months agoRe: nios2: Remove binutils support for Nios II target
Alan Modra [Tue, 26 Nov 2024 22:12:06 +0000 (08:42 +1030)] 
Re: nios2: Remove binutils support for Nios II target

Remove a now unused config file, regenerate POTFILES to remove nios2
refs, and modify config.bfd to report the target is obsolete.

7 months agoAutomatic date update in version.in
GDB Administrator [Wed, 27 Nov 2024 00:00:13 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 months agonios2: Remove binutils support for Nios II target.
Sandra Loosemore [Tue, 26 Nov 2024 19:13:07 +0000 (19:13 +0000)] 
nios2: Remove binutils support for Nios II target.

The Nios II architecture has been EOL'ed by the vendor.  This patch
removes all binutils, bfd, gas, binutils, and opcodes support for this
target with the exception of the readelf utility.  (The ELF EM_*
number remains valid and the relocation definitions from the Nios II
ABI will never change in future, so retaining the readelf support
seems consistent with its purpose as a utility that tries to parse the
headers in any ELF file provided as an argument regardless of target.)

7 months agonios2: Remove all GDB support for Nios II targets.
Sandra Loosemore [Tue, 26 Nov 2024 19:13:07 +0000 (19:13 +0000)] 
nios2: Remove all GDB support for Nios II targets.

Intel has EOL'ed the Nios II architecture, and it's time to remove support
from all toolchain components before it gets any more bit-rotten from
lack of maintenance or regular testing.

7 months ago[gdb/syscalls] Update aarch64-linux.xml to linux v6.11
Tom de Vries [Tue, 26 Nov 2024 12:29:12 +0000 (13:29 +0100)] 
[gdb/syscalls] Update aarch64-linux.xml to linux v6.11

Use gdb/syscalls/update-linux.sh to update aarch64-linux.xml.in to linux
v6.11, and update aarch64-linux.xml by running make.

Noteworthy changes are removal of entries:
- arch_specific_syscall
- syscalls
which look like they were added accidentally.

I modified update-linux.sh to keep the copyright start date.  Verified with
shellcheck.

Tested-By: Luis Machado <luis.machado@arm.com>
Approved-By: Luis Machado <luis.machado@arm.com>
7 months agoPR32387 ppc64 TLS optimization bug with -fno-plt code
Alan Modra [Mon, 25 Nov 2024 21:54:19 +0000 (08:24 +1030)] 
PR32387 ppc64 TLS optimization bug with -fno-plt code

The inline plt code emitted by gcc is incompatible with the
linker/ld.so --tls-get-addr-optimize scheme.  This is the runtime
optimisation where the first call to __tls_get_addr results in
__tls_get_addr updating the tls_index pair, then the special linker
stub using that to short-circuit second and subsequent calls for a
given tls symbol.  Enabled by default when the linker sees
__tls_get_addr_opt is preseent, and enabled in ld.so when DT_PPC64_OPT
has PPC64_OPT_TLS set.  Note that this is distinct from link-time tls
optimisation.

PR 32387
* elf64-ppc.c (ppc64_elf_check_relocs): Disable tls_get_addr_opt
on detecting inline plt calls to __tls_get_addr.

7 months ago[gdb/syscalls] Sync with strace v6.12
Tom de Vries [Tue, 26 Nov 2024 09:02:37 +0000 (10:02 +0100)] 
[gdb/syscalls] Sync with strace v6.12

I ran gdb/syscalls/update-linux-defaults.sh with strace sources v6.12, and got
one difference in gdb/syscalls/linux-defaults.xml.in:
...
+  <syscall name="mseal" groups="memory"/>
...

Rerun make to propagate this change to the xml files.

7 months ago[gdb/syscalls] Use update-linux-from-src.sh for arm-linux
Tom de Vries [Tue, 26 Nov 2024 08:49:29 +0000 (09:49 +0100)] 
[gdb/syscalls] Use update-linux-from-src.sh for arm-linux

I tried to use arm-linux.py to regenerate arm-linux.xml.in, but it didn't work.

Fix this by:
- adding handling of arm-linux.xml.in in update-linux-from-src.sh,
- regenerating arm-linux.xml.in using update-linux-from-src.sh and linux 6.11
  sources,
- regenerating arm-linux.xml using make, and
- removing arm-linux.py.

This changes the name "oldolduname" into "olduname".

Tested on arm-linux.  Verified with shellcheck.

7 months ago[gdb/syscalls] Restructure update-linux-from-src.sh
Tom de Vries [Tue, 26 Nov 2024 08:49:29 +0000 (09:49 +0100)] 
[gdb/syscalls] Restructure update-linux-from-src.sh

Restructure update-linux-from-src.sh to do the generation of each line
in the script it self rather than in awk.

Tested on aarch64-linux.  Verified with shellcheck.

7 months ago[gdb/syscalls] Improve update-linux-from-src.sh
Tom de Vries [Tue, 26 Nov 2024 08:49:29 +0000 (09:49 +0100)] 
[gdb/syscalls] Improve update-linux-from-src.sh

Some improvements in gdb/syscalls/update-linux-from-src.sh:
- use bash instead of sh
- use local to distinguish between local and global vars
  (which brings to light that pre uses the global rather than the local
  start_date)
- factor out main and parse_args
- factor out regen
- iterate over *.xml.in instead of *.in

Tested on aarch64-linux.  Verified with shellcheck.

7 months ago[gdb/syscalls] Update to linux v6.11
Tom de Vries [Tue, 26 Nov 2024 08:49:29 +0000 (09:49 +0100)] 
[gdb/syscalls] Update to linux v6.11

Regenerate some gdb/syscalls/*.xml.in files using
gdb/syscalls/update-linux-from-src.sh and linux v6.11 sources.

Regenerate the corresponding gdb/syscalls/*.xml using make.

Tested on aarch64-linux.