111987 Commits

Author SHA1 Message Date
Srinath Parvathaneni
b62fb887c6 [readelf] arm: Support for new pacbti unwind opcode 0xb5.
This patch adds readelf support for decoding the exception
table opcode "0xb5", which indicates to use effective vsp
as modifier for PAC validation as defined by EHABI
(https://github.com/ARM-software/abi-aa/releases/download/2022Q3/ehabi32.pdf
Section 10.3).

binutils/ChangeLog:

2022-11-07  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

        * readelf.c (decode_arm_unwind_bytecode): Add entry to decode opcode 0xb5.
2022-11-14 15:12:21 +00:00
Tsukasa OI
a5b6e43669 gdb/unittests: PR28413, suppress warnings generated by Gnulib
Gnulib generates a warning if the system version of certain functions
are used (to redirect the developer to use Gnulib version).  It caused a
compiler error when...

-   Compiled with Clang
-   -Werror is specified (by default)
-   C++ standard used by Clang is before C++17 (by default as of 15.0.0)
    when this unit test is activated.

This issue is raised as PR28413.

However, previous proposal to fix this issue (a "fix" to Gnulib):
<https://lists.gnu.org/archive/html/bug-gnulib/2021-10/msg00003.html>
was rejected because it ruins the intent of Gnulib warnings.

So, we need a Binutils/GDB-side solution.

This commit tries to address this issue on the GDB side.  We have
"include/diagnostics.h" to disable certain warnings only when necessary.

This commit suppresses the Gnulib warnings by surrounding entire #include
block with DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS to disable Gnulib-
generated warnings on all standard C++ header files.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28413
Approved-By: Simon Marchi <simon.marchi@efficios.com>
Change-Id: Ieeb5a31a6902808d4c7263a2868ae19a35e0ccaa
2022-11-14 08:58:55 -05:00
Srinath Parvathaneni
cafdb713d8 arm: Add support for Cortex-X1C CPU.
This patch adds support for Cortex-X1C CPU in Arm.

bfd/ChangeLog:

2022-11-09  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

        * cpu-arm.c (processors): Add Cortex-X1C CPU entry.

gas/ChangeLog:

2022-11-09  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

        * NEWS: Update docs.
        * config/tc-arm.c (arm_cpus): Add cortex-x1c to -mcpu.
        * doc/c-arm.texi: Update docs.
        * testsuite/gas/arm/cpu-cortex-x1c.d: New test.
2022-11-14 13:56:05 +00:00
Tom de Vries
3cbf5fdfe4 [gdb/testsuite] Run gdb.arch/ppc64-symtab-cordic.exp for --enable-targets=all
While looking at test-case gdb.arch/ppc64-symtab-cordic.exp I realized that
the test-case is too restrictive here:
...
if {![istarget "powerpc*"] || ![is_lp64_target]} {
    verbose "Skipping powerpc64 separate debug file symtab test."
    return
}
...
and can also be run on x86_64-linux, if "set arch powerpc:common64" is
supported, which is the case if we've build gdb with --enable-targets=all.

Fix this by instead checking if powerpc:common64 is in the completion list for
"set arch".

This allows us to remove the 'untested "powerpc:common64 is not supported"'.

While we're at it, clean up the test-case by using clean_restart.

Tested on x86_64-linux.
2022-11-14 12:12:19 +01:00
Tom de Vries
7f21d259bc [gdb/testsuite] Handle with_set arch
I realized that the more irregular output of show arch:
...
(gdb) show arch^M
The target architecture is set to "auto" (currently "i386").^M
...
would be a problem for something like:
...
with_set arch powerpc:common64 {}
...
and indeed:
...
(gdb) set arch powerpc:common64^M
The target architecture is set to "powerpc:common64".^M
(gdb) FAIL: gdb.base/foo.exp: set arch powerpc:common64
...
and:
...
(gdb) set arch set to "auto" (currently "i386")^M
Undefined item: "set".^M
...

Fix this in with_set by handling this type of output.

Tested on x86_64-linux.
2022-11-14 12:12:19 +01:00
Tom de Vries
8d45c3a82a [gdb/testsuite] Set completions to unlimited in get_set_option_choices
In some test-case I tried to use get_set_option_choices "set architecture" and
ran into max-completions:
...
set architecture simple^M
set architecture tomcat^M
set architecture xscale^M
set architecture  *** List may be truncated, max-completions reached. ***^M
(gdb) PASS: gdb.base/foo.exp: complete set architecture
...

There's only one test-case using this currently: gdb.base/parse_number.exp,
and it locally sets max-completions to unlimited.

Fix this by:
- factoring out a new proc with_set out of proc with_complaints, and
- using it to temporarily set max-completions to unlimited in
  get_set_option_choice.

Tested on x86_64-linux, by running test-cases that excercise
get_set_option_choice and with_complaints.
2022-11-14 12:12:19 +01:00
Alan Modra
fadfefbf15 Re: objcopy renaming section with explicit flags
For now, xfail the new test.  Some header/aux-header rewriting is
required at the very least.

	* testsuite/binutils-all/rename-section-01.d: xfail xcoff.
2022-11-14 13:40:52 +10:30
Alan Modra
4f5c4fce88 objcopy renaming section with explicit flags
This tidies SEC_RELOC handling in bfd, in the process fixing a bug
with objcopy when renaming sections.

bfd/
	* reloc.c (_bfd_generic_set_reloc): Set/clear SEC_RELOC depending
	on reloc count.
	* elf64-sparc.c (elf64_sparc_set_reloc): Likewise.
binutils/
	* objcopy.c (copy_relocations_in_section): Remove now unnecessary
	clearing of SEC_RELOC.
	* testsuite/binutils-all/rename-section-01.d: New test.
	* testsuite/binutils-all/objcopy.exp: Run it.
gas/
	* write.c (size_seg): Remove unneccesary twiddle of SEC_RELOC.
	(write_relocs): Likewise.  Always call bfd_set_reloc.
2022-11-14 11:36:46 +10:30
GDB Administrator
f31e4e02ee Automatic date update in version.in 2022-11-14 00:00:31 +00:00
Jon Turney
a83c64f567
Fix Cygwin build after 02d04eac
Commit 02d04eac "Use strwinerror in gdb/windows-nat.c" also moves
strwinerror() under the USE_WIN32API conditional, which is not defined
for Cygwin (and looks like it shouldn't be, as appears to imply
non-POSIX and MiNGW and WinSock...)

Also enable the declaration and definition of strwinerror() when
__CYGWIN__ is defined.
2022-11-13 14:46:20 +00:00
Jon Turney
90f902daf5
Drop apparently unneeded include of winsock2.h
Commit d08bae3d ("Implement target async for Windows") unconditionally
includes winsock2.h.  We don't want to do that on Cygwin, since
including both winsock2.h and sys/select.h causes incompatible
redefinition problems.

Since that include is apparently unneeded, just drop it.

Fixes: d08bae3d
2022-11-13 14:44:43 +00:00
GDB Administrator
28ebf3f8d0 Automatic date update in version.in 2022-11-13 00:00:30 +00:00
Dimitar Dimitrov
7bee555bb7 sim: pru: Fix behaviour when loop count is zero
If the counter for LOOP instruction is provided by a register with
value zero, then the instruction must cause a PC jump directly to the
loop end.  But in that particular case simulator must not initialize
its internal loop variables, because loop body will not be executed.
Instead, simulator must obtain the loop's end address directly from
the LOOP instruction.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
2022-11-12 15:10:07 +02:00
Alan Modra
7149607f6a PowerPC64 paddi -Mraw
On a testcase like
 pla 8,foo@pcrel
disassembled with -Mpower10 results in
   0:	00 00 10 06 	pla     r8,0	# 0
   4:	00 00 00 39
			0: R_PPC64_PCREL34	foo
but with -Mpower10 -Mraw
   0:	00 00 10 06 	.long 0x6100000
			0: R_PPC64_PCREL34	foo
   4:	00 00 00 39 	addi    r8,0,0

The instruction is unrecognised due to the hack we have in
extract_pcrel0 in order to disassemble paddi with RA0=0 and R=1 as
pla.  I could have just added "&& !(dialect & PPC_OPCODE_RAW)" to the
condition in extract_pcrel0 under which *invalid is set, but went for
this larger patch that reorders the extended insn pla to the more
usual place before its underlying machine insn.  (la is after addi
because we never disassemble to la.)

gas/
	* testsuite/gas/ppc/raw.d,
	* testsuite/gas/ppc/raw.s: Add pla.
opcodes/
	* ppc-opc.c (extract_pcrel1): Rename from extract_pcrel0 and
	invert *invalid logic.
	(PCREL1): Rename from PCREL0.
	(prefix_opcodes): Sort pla before paddi, adjusting R operand
	for pla, paddi and psubi.
2022-11-12 17:27:24 +10:30
Indu Bhagat
80a3733432 libctf: use libtool for link test in configure
The configure check for ELF support in BFD uses the AC_TRY_LINK.  If
libbfd's dependencies change, this macro will need to be updated
manually with explicit additions to LDFLAGS and LIBS.

This patch updates the check to use libtool instead.

ChangeLog:

	* libctf/configure.ac: Use libtool instead.
	* libctf/configure: Regenerated.
2022-11-11 22:01:25 -08:00
GDB Administrator
c9ea6bd322 Automatic date update in version.in 2022-11-12 00:00:21 +00:00
Simon Marchi
075732ad92 gdb: fix start breakpoint expression not working in some languages
Commit 0be837be9fb4 ("gdb: make "start" breakpoint inferior-specific")
regresses gdb.ada/start.exp:

    (gdb) start
    Error in expression, near `1'.
    (gdb) UNTESTED: gdb.ada/start.exp: start failed to land inside the right procedure

This is because in Ada, the equality operator is =, not ==.

I checked the other languages supported by GDB, these other languages
use = for equality:

 - Pascal: tests like gdb.pascal/hello.exp are affected too
 - Modula-2: I tried building a Modula-2 hello world using gm2, but it
   seems like the generated DWARF doesn't specify the Modula-2 language
   in the CUs, it's C++ and C, so the selected language isn't
   "modula-2".  But if I manually do "set language modula-2" on a dummy
   program and then "start", I get the same error.

Other languages all use ==.

So, a short term fix would be to use = or == in the expression, based on
the current language.  If this was meant to be permanent, I would
suggest adding something like an "equality_operator" method to
language_defn, that returns the right equality operator for the
language.  But the goal is to replace all this with proper
inferior-specific breakpoints, so I hope all this is temporary.

Approved-By: Tom de Vries <tdevries@suse.de>
Change-Id: Id4d38e14a80e6bbbb1ad2b2277f974dd55192969
2022-11-11 14:04:13 -05:00
Mike Frysinger
36895e5335 sim: igen: cleanup archaic pointer-to-long printf casts
Use proper %p to printf a pointer instead of casting it to long and
using 0x%lx.  It's cleaner, more correct, and doesn't break on LLP64.
2022-11-11 22:08:14 +07:00
Tom de Vries
ac42aa228f [gdb/testsuite] Don't timeout on prompt in gdb_start_cmd
We're currently running into a timeout at:
...
(gdb) start ^M
Error in expression, near `1'.^M
(gdb) UNTESTED: gdb.ada/start.exp: start failed to land inside the right \
  procedure
...
due to the fact that gdb_start_cmd doesn't handle a prompt as reaction to
the start command.

Fix this by handling the prompt.  Reduces execution time of the test-case from
1m1s to 1s.

Tested on x86_64-linux.
2022-11-11 15:52:10 +01:00
Tom de Vries
4f04dba96d [gdb/testsuite] Better error checking in has_hw_wp_support
With gdb 12.1, on powerpc64le I ran into ERRORs related to has_hw_wp_support
usage, which was already fixed on trunk by commits:
- 13f72372413 ("gdb/testsuite: fix gdb.base/break-idempotent.exp on ppc"), and
- 01a32ee0b8c ("PowerPC, fix gdb.base/watchpoint.exp on Power 9")

While looking into these ERRORs and the commits that fix them, it occurred to
me that while the commits fix the root cause, the failure mode is not great.

The test-cases expect a running instance of gdb upon return, which is not
there, so there's an long stream of ERRORs generated as a result.

Fix this at the start of has_hw_wp_support, by (instead of accomodating a
running gdb instance by calling gdb_exit), checking whether it's called
without a running gdb instance, and erroring out otherwise.  This way, there's
just one error.

I also noticed that in case we do an early exit due to !runto_main, we don't
clean up, so copy the missing cleanups (gdb_exit and $obj file deletion) from
the regular exit.

Tested on x86_64-linux, using has_hw_wp_support for x86_64 in
skip_hw_watchpoint_tests.
2022-11-11 15:30:44 +01:00
Lancelot SIX
40b355f24e gdb/py-inferior: Keep inferior threads in a map
The python code maintains a list of threads for each inferior.  This
list is implemented as a linked list.  When the number of threads grows
high, this implementation can begin to be a performance bottleneck as
finding a particular thread_object in the list has a complexity of O(N).

We see this in ROCgdb[1], a downstream port of GDB for AMDGUP.  On
AMDGPU devices, the number of threads can get significantly higher than
on usual GDB workloads.

In some situations, we can reach the end of the inferior process with
GDB still having a substantial list of known threads.  While running
target_mourn_inferior, we end up in inferior::clear_thread_list which
iterates over all remaining threads and marks each thread exited.  This
fires the gdb::observers::thread_exit observer and eventually
py-inferior.c:set_thread_exited gets called.  This function searches in
the linked list with poor performances.

This patch proposes to change the linked list that keeps the per
inferior_object list of thread_objects into a std::unordered_map.  This
allows to have the search operation complexity be O(1) on average
instead of O(N).

With this patch, we can complete clear_thread_list in about 2.5 seconds
compared to 10 minutes without it.

Except for the performance change, no user visible change is expected.

Regression tested on Ubuntu-22.04 x86_64.

[1] https://github.com/ROCm-Developer-Tools/ROCgdb
2022-11-11 13:50:19 +00:00
Luis Machado
1e5ccb9c5f Make sure a copy_insn_closure is available when we have a match in copy_insn_closure_by_addr
PR gdb/29272

Investigating PR29272, it was mentioned a particular test used to work on
GDB 10, but it started failing with GDB 11 onwards. I tracked it down to
some displaced stepping improvements on commit
187b041e2514827b9d86190ed2471c4c7a352874.

In particular, one of the corner cases using copy_insn_closure_by_addr got
silently broken. It is hard to spot because it doesn't have any good tests
for it, and the situation is quite specific to the Arm target.

Essentially, the change from the displaced stepping improvements made it so
we could still invoke copy_insn_closure_by_addr correctly to return the
pointer to a copy_insn_closure, but it always returned nullptr due to
the order of the statements in displaced_step_buffer::prepare.

The way it is now, we first write the address of the displaced step buffer
to PC and then save the copy_insn_closure pointer.

The problem is that writing to PC for the Arm target requires figuring
out if the new PC is thumb mode or not.

With no copy_insn_closure data, the logic to determine the thumb mode
during displaced stepping doesn't work, and gives random results that
are difficult to track (SIGILL, SIGSEGV etc).

Fix this by reordering the PC write in displaced_step_buffer::prepare
and, for safety, add an assertion to
displaced_step_buffer::copy_insn_closure_by_addr so GDB stops right
when it sees this invalid situation. If this gets broken again in the
future, it will be easier to spot.

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

Approved-By: Simon Marchi <simon.marchi@efficios.com>
2022-11-11 12:46:48 +00:00
Felix Willgerodt
70b9d05b26 gdb, btrace: Fix rn-dl-bind.exp for new icx remark.
When running the test with the latest Intel compiler:

Running gdb/gdb/testsuite/gdb.btrace/rn-dl-bind.exp ...
gdb compile failed, icpx: warning: treating 'c' input as 'c++' when
in C++ mode, this behavior is deprecated [-Wdeprecated]

The test doesn't seem to test something specifically for C++,
so I removed the C++ compilation option. Alternatively we could rename
rn-dl-bind.exp.c to rn-dl-bind.exp.cc.

Signed-off-by: Felix Willgerodt <felix.willgerodt@intel.com>
2022-11-11 13:29:42 +01:00
Bruno Larsen
db2e277d1a gdb/testsuite: disable gdb.cp/call-method-register.exp when not using gcc
The test gdb.cp/call-method-register.exp assumes that the class will be
placed on a register. However, this keyword has been deprecated since
C++11, and Clang, for instance, does not feel the need to follow it.
Since this test is not usable without this working, this commit marks
this test as untested.

Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:51 +01:00
Bruno Larsen
2604c0dc3b gdb/testsuite: remove XFAIL on gdb.cp/temargs.exp
gdb.cp/temargs.exp last 2 tests always setup an XFAILs, despite checking
for old gcc versions.  However, Clang does not fail in this test,
turning into XPASSes and slighty annoying when comparing between
compilers.  To change this, make the xfails only happen if we using gcc.

Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:48 +01:00
Bruno Larsen
ebe9ddbce7 gdb/testsuite: disable some tests of gdb.cp/typeid.exp when using Clang
Since Clang chooses to not add any debug information for base types,
expecting it to be included with libraries' informations, gdb.cp/typeid.exp
will always fail if the program hasn't started.  This commit fixes that by
making it so when using Clang, the base type variables aren't tested.

Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:45 +01:00
Bruno Larsen
ad9421bb15 gdb/testsuite: skip gdb.cp/anon-struct.exp when using Clang
When Clang compiles anonymous structures, it does not add linkage names in
their dwarf representations. This is compounded by Clang not adding linkage
names to subprograms of those anonymous structs (for instance, the
constructor). With these 2 things together, GDB is unable to refer to
any of them, so there is no way to pass any of the tests of
gdb.cp/anon-struct.exp

Since this isn't a bug on Clang or GDB according to the DWARF
specifications as DW_AT_name is optional for all DIEs, the test was marked
as untested.

Since I was already touching the file, I also added a comment at the top
of the file explaining what it is testing for.

Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:42 +01:00
Bruno Larsen
f2f2eb6b0e gdb/testsuite: allow for Clang style destructors on gdb.cp/m-static.exp
when running gdb.cp/m-static.exp using Clang, we get the following
failures:

    print test1.~gnu_obj_1^M
    $6 = {void (gnu_obj_1 * const)} 0x555555555470 <gnu_obj_1::~gnu_obj_1()>^M
    (gdb) FAIL: gdb.cp/m-static.exp: simple object instance, print destructor
    ptype test1.~gnu_obj_1^M
    type = void (gnu_obj_1 * const)^M
    (gdb) FAIL: gdb.cp/m-static.exp: simple object instance, ptype destructor
    print test1.'~gnu_obj_1'^M
    $7 = {void (gnu_obj_1 * const)} 0x555555555470 <gnu_obj_1::~gnu_obj_1()>^M
    (gdb) FAIL: gdb.cp/m-static.exp: simple object instance, print quoted destructor

This is because the test is expecting an extra integer parameter on the
destructor. Looking at the debuginfo, it seems that there is nothing
actually wrong with this output, so these tests were changed to test
multiple possible regexps.

Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:39 +01:00
Bruno Larsen
42dde3f364 gdb/testsuite: add XFAIL to gdb.cp/derivation.exp when using Clang
When running gdb.cp/derivation.exp using Clang, we get an unexpected
failure when printing the type of a class with an internal typedef. This
happens because Clang doesn't add accessibility information for typedefs
inside classes (see https://github.com/llvm/llvm-project/issues/57608
for more info). To help with Clang testing, an XFAIL was added to this
test.

Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:36 +01:00
Bruno Larsen
3180839c4b gdb/testsuite: account for clang's nested destructor calls on gdb.cp/mb-ctor.exp
When compiling virtual classes's destructors, two versions are compiled,
one with a single parameter (this) and the other with 2 parameters (this
and vtt).

GCC's compilation makes it so either the version with 1
parameter or the one with 2 parameters is called, depending on whether
the destructor is being called by the class itself or by an inherited
class. On the test gdb.cp/mb-ctor.exp, this means that the breakpoint
set at the destructor will be hit 4 times.

Clang, on the other hand, makes the single-parameter version call the 2
parameter version, probably in an attempt to reduce the size of the
resulting executable. This means that the gdb.cp/mb-ctor.exp will hit 6
breakpoints before finishing, and is the reason why this test was
failing. To make this test stop failing, a compiler check is added and
another "continue" instruction is issued to account for this difference.

Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:31 +01:00
Bruno Larsen
729421925a gdb/testsuite: enable running gdb.cp/classes.exp with clang
When attempting to run the gdb.cp/classes.exp test using Clang++, the
test fails to prepare with -Wnon-c-typedef-for-linkage like the
previously fixed gdb.cp/class2.exp. Upon fixing this, the test shows 5
unexpected failures. One such failures is:

ptype/r class class_with_public_typedef
type = class class_with_public_typedef {
  private:
    int a;
  public:
    class_with_public_typedef::INT b;

  private:
    typedef int INT;
}
(gdb) FAIL: gdb.cp/classes.exp: ptype class class_with_public_typedef // wrong access specifier for typedef: private

While g++ provided the following output:

ptype/r class class_with_public_typedef
type = class class_with_public_typedef {
  private:
    int a;
  public:
    class_with_public_typedef::INT b;

    typedef int INT;
}
(gdb) PASS: gdb.cp/classes.exp: ptype class class_with_public_typedef

This error happens because Clang does not add DW_AT_accessibility to
typedefs inside classes, and without this information GDB defaults to
assuming the typedef is private.  Since there is nothing that GDB can do
about this, these tests have been set as xfails, and Clang bug 57608 has
been filed.

Bug: https://github.com/llvm/llvm-project/issues/57608
Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:25 +01:00
Bruno Larsen
9e9ffe8ee6 gdb/testsuite: ignore Non-C-typedefs for gdb.cp/class2.exp
When attempting to test gdb.cp/class2.exp using Clang, it fails to
prepare with the following error:

Executing on host: clang++    -fdiagnostics-color=never -Wno-unknown-warning-option  -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc    (timeout = 300)
builtin_spawn -ignore SIGHUP clang++ -fdiagnostics-color=never -Wno-unknown-warning-option -c -g -o /home/blarsen/Documents/fsf_build/gdb/testsuite/outputs/gdb.cp/class2/class20.o /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc
/home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage]
typedef class {
             ^
              Dbase
/home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration
 public:
 ^~~~~~~
/home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration
} Dbase;
  ^
1 warning generated.
gdb compile failed, /home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:53:14: warning: anonymous non-C-compatible type given name for linkage purposes by typedef declaration; add a tag name here [-Wnon-c-typedef-for-linkage]
typedef class {
             ^
              Dbase
/home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:54:2: note: type is not C-compatible due to this member declaration
 public:
 ^~~~~~~
/home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.cp/class2.cc:58:3: note: type is given name 'Dbase' for linkage purposes by this typedef declaration
} Dbase;
  ^
1 warning generated.
UNTESTED: gdb.cp/class2.exp: failed to prepare

This can be silenced by adding -Wno-non-c-typedef-for-linkage for Clang
11 or later.  The test shows no failures with this change.

Approved-by: Tom Tromey <tom@tromey.com>
2022-11-11 10:13:05 +01:00
Jan Beulich
b60f6a6288 gas: accept custom ".linefile <n> ."
While .linefile is generally intended for gas internal use only, its use
in a source file would better not result in an internal error. Give use
of it outside of any macro(-like) construct the meaning of restoring the
original (physical) input file name.
2022-11-11 09:27:41 +01:00
Jan Beulich
ca4726752f x86: drop stray IsString from PadLock insns
The need for IsString on the PadLock insns went away with the
introduction of RepPrefixOk. Drop these leftovers.
2022-11-11 09:27:23 +01:00
Jan Beulich
f6cbe8103f x86: drop duplicate sse4a entry from cpu_arch[]
Of the two instances the first is correct in using ANY_SSE4A as 3rd
argument to SUBARCH(), so drop the wrong/redundant/dead 2nd one.
2022-11-11 09:26:25 +01:00
Alan Modra
f7502dfe3f PR28834, PR26946 sanity checking section size
This patch provides a new function to sanity check section sizes.
It's mostly extracted from what we had in bfd_get_full_section_contents
but also handles compressed debug sections.
Improvements are:
- section file offset is taken into account,
- added checks that a compressed section can be read from file.

The function is then used when handling multiple .debug_* sections
that need to be read into a single buffer, to sanity check sizes
before allocating the buffer.

	PR 26946, PR 28834
	* Makefile.am (LIBBFD_H_FILES): Add section.c.
	* compress.c (bfd_get_full_section_contents): Move section size
	sanity checks..
	* section.c (_bfd_section_size_insane): ..to here.  New function.
	* dwarf2.c (read_section): Use _bfd_section_size_insane.
	(_bfd_dwarf2_slurp_debug_info): Likewise.
	* Makefile.in: Regenerate.
	* libbfd.h: Regenerate.
2022-11-11 18:05:36 +10:30
Alan Modra
d0e5049d8f Sanity check SHT_MIPS_OPTIONS size
* elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Use
	bfd_malloc_and_get_section to read contents of .MIPS.options.
2022-11-11 18:05:36 +10:30
Alan Modra
772e1fe54a Re: gold: add --compress-debug-sections=zstd [PR 29641]
Fix the following:
compressed_output.cc:86:8: error: assignment of read-only variable ‘size’
   86 |   size = ZSTD_compress(*compressed_data + header_size, size, uncompressed_data,
2022-11-11 18:05:36 +10:30
Fangrui Song
8b2d02cbb9 gold: add --compress-debug-sections=zstd [PR 29641]
This option compresses output debug sections with zstd and sets ch_type
to ELFCOMPRESS_ZSTD.  Latest gdb and lldb support ELFCOMPRESS_ZSTD.

There will be an error if zstd is not enabled at configure time.

    error: --compress-debug-sections=zstd: gold is not built with zstd support
2022-11-10 22:09:09 -08:00
Fangrui Song
332a4eeaea gold, dwp: support zstd compressed input debug sections [PR 29641]
This feature is enabled if config/zstd.m4 uses zstd.
2022-11-10 21:42:14 -08:00
Vladimir Mezentsev
1c343a13ba gprofng: fix typo in configure.ac
gprofng/ChangeLog
2022-11-10  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

	* configure.ac: Fix typo in redirect operator.
	* configure: Rebuild.
2022-11-10 17:25:07 -08:00
Vladislav Khmelevsky
cde010e1a8 Fix adrp distance check
gold/
	* aarch64.cc (aarch64_valid_for_adrp_p): Shift offset
	as a signed number.
2022-11-10 16:49:05 -08:00
GDB Administrator
a686428a8b Automatic date update in version.in 2022-11-11 00:00:43 +00:00
Mike Frysinger
897fc27b25 sim: v850: rename v850.dc to align with other ports
Other arches use the .dc extension for the instruction decode table.
2022-11-11 01:42:29 +07:00
Mike Frysinger
ef7c5fd15d sim: igen: fix hang when decoding boolean rule constants
The parser for boolean rules fails to skip over the , separator in
the options which makes it hang forever.  No dc files in the tree
use boolean rules atm which is why no one noticed.
2022-11-11 01:40:53 +07:00
Mike Frysinger
16cceb84be sim: igen: mark error func as noreturn since it exits 2022-11-11 01:40:35 +07:00
Mike Frysinger
c0c7e6ce2a sim: igen: mark output funcs with printf attribute
... and fix the legitimate bug that it catches.
2022-11-11 01:40:13 +07:00
Mike Frysinger
fa654e74f2 sim: igen: constify various func arguments 2022-11-11 01:39:49 +07:00
Mike Frysinger
689c2b4b65 sim: ppc: rename ppc-instructions to powerpc.igen
To make it clear this is an input to the igen tool, rename it with an
igen extension.  This matches the other files in the ppc dir (altivec
& e500 igen files), and the other igen ports (mips, mn10300, v850).
2022-11-11 01:38:42 +07:00
H.J. Lu
9373f27599 i386: Check invalid (%dx) usage
(%dx) isn't a valid memory address in any modes.  It is used as a special
memory operand for input/output port address in AT&T syntax and should
only be used with input/output instructions.  Update i386_att_operand to
set i.input_output_operand to true for (%dx) and issue an error if (%dx)
is used with non-input/output instructions.

	PR gas/29751
	* config/tc-i386.c (_i386_insn): Add input_output_operand.
	(md_assemble): Issue an error if input/output memory operand is
	used with non-input/output instructions.
	(i386_att_operand): Set i.input_output_operand to true for
	(%dx).
	* testsuite/gas/i386/inval.l: Updated.
	* testsuite/gas/i386/x86-64-inval.l: Likewise.
	* testsuite/gas/i386/inval.s: Add tests for invalid (%dx) usage.
	* testsuite/gas/i386/x86-64-inval.s: Likewise.
2022-11-10 10:11:25 -08:00