binutils-gdb.git
2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 9 Nov 2022 00:00:31 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agogdb/linux-nat: get core count using /sys/devices/system/cpu/possible
Simon Marchi [Fri, 4 Nov 2022 14:07:09 +0000 (10:07 -0400)]
gdb/linux-nat: get core count using /sys/devices/system/cpu/possible

I get this test failure on my CI;

  FAIL: gdb.base/info-os.exp: get process list

The particularity of this setup is that builds are done in containers
who are allocated 4 CPUs on a machine that has 40.  The code in
nat/linux-osdata.c fails to properly fetch the core number for each
task.

linux_xfer_osdata_processes uses `sysconf (_SC_NPROCESSORS_ONLN)`, which
returns 4, so it allocates an array of 4 integers.  However, the core
numbers read from /proc/pid/task/tid/stat, by function
linux_common_core_of_thread, returns a value anywhere between 0 and 39.
The core numbers above 3 are therefore ignored, many processes end up
with no core value, and the regexp in the test doesn't match (it
requires an integer as the core field).

The way this the CPUs are exposed to the container is that the container
sees 40 CPUs "present" and "possible", but only 4 arbitrary CPUs
actually online:

    root@ci-node-jammy-amd64-04-08:~# cat /sys/devices/system/cpu/present
    0-39
    root@ci-node-jammy-amd64-04-08:~# cat /sys/devices/system/cpu/online
    5,11,24,31
    root@ci-node-jammy-amd64-04-08:~# cat /sys/devices/system/cpu/possible
    0-39

The solution proposed in this patch is to find out the number of
possible CPUs using /sys/devices/system/cpu/possible.  In practice, this
will probably always contain `0-N`, where N is the number of CPUs, minus
one.  But the documentation [1] doesn't such guarantee, so I'll assume
that it can contain a more complex range list such as `2,4-31,32-63`,
like the other files in that directory can have.  The solution is to
iterate over these numbers to find the highest possible CPU id, and
use that that value plus one as the size of the array to allocate.

[1] https://www.kernel.org/doc/Documentation/admin-guide/cputopology.rst

Change-Id: I7abce2e43b000c1327fa94cd7b99d46e49d7ccf3

2 years agogdbsupport, gdb: add read_text_file_to_string, use it in linux_common_core_of_thread
Simon Marchi [Fri, 4 Nov 2022 13:39:12 +0000 (09:39 -0400)]
gdbsupport, gdb: add read_text_file_to_string, use it in linux_common_core_of_thread

I would like to add more code to nat/linux-osdata.c that reads an entire
file from /proc or /sys and processes it as a string afterwards.  I
would like to avoid duplicating the somewhat error-prone code that reads
an entire file to a buffer.  I think we should have a utility function
that does that.

Add read_file_to_string to gdbsupport/filestuff.{c,h}, and make
linux_common_core_of_thread use it.  I want to make the new function
return an std::string, and because strtok doesn't play well with
std::string (it requires a `char *`, std::string::c_str returns a `const
char *`), change linux_common_core_of_thread to use std::string methods
instead.

Approved-By: Tom Tromey <tom@tromey.com>
Change-Id: I1793fda72a82969c28b944a84acb953f74c9230a

2 years agoPowerPC: Add XSP operand define
Peter Bergner [Tue, 8 Nov 2022 18:15:06 +0000 (12:15 -0600)]
PowerPC: Add XSP operand define

opcodes/
* ppc-opc.c (XSP): New define.
(powerpc_opcodes) <stxvp, stxvpx, pstxvp>: Use it.

2 years ago[gdb/cli] Make quit really quit after remote connection closed
Tom de Vries [Tue, 8 Nov 2022 17:47:24 +0000 (18:47 +0100)]
[gdb/cli] Make quit really quit after remote connection closed

Consider a hello world a.out, started using gdbserver:
...
$ gdbserver --once 127.0.0.1:2345 ./a.out
Process ./a.out created; pid = 15743
Listening on port 2345
...
that we can connect to using gdb:
...
$ gdb -ex "target remote 127.0.0.1:2345"
Remote debugging using 127.0.0.1:2345
Reading /home/vries/a.out from remote target...
  ...
0x00007ffff7dd4550 in _start () from target:/lib64/ld-linux-x86-64.so.2
(gdb)
...

After that, we can for instance quit with confirmation:
...
(gdb) quit
A debugging session is active.

        Inferior 1 [process 16691] will be killed.

Quit anyway? (y or n) y
$
...

Or, kill with confirmation and quit:
...
(gdb) kill
Kill the program being debugged? (y or n) y
[Inferior 1 (process 16829) killed]
(gdb) quit
$
...

Or, monitor exit, kill with confirmation, and quit:
...
(gdb) monitor exit
(gdb) kill
Kill the program being debugged? (y or n) y
Remote connection closed
(gdb) quit
$
...

But when doing monitor exit followed by quit with confirmation, we get the gdb
prompt back, requiring us to do quit once more:
...
(gdb) monitor exit
(gdb) quit
A debugging session is active.

        Inferior 1 [process 16944] will be killed.

Quit anyway? (y or n) y
Remote connection closed
(gdb) quit
$
...

So, the first quit didn't quit.  This happens as follows:
- quit_command calls query_if_trace_running
- a TARGET_CLOSE_ERROR is thrown
- it's caught in remote_target::get_trace_status, but then
  rethrown because it's TARGET_CLOSE_ERROR
- catch_command_errors catches the error, at which point the quit command
  has been aborted.

The TARGET_CLOSE_ERROR is defined as:
...
  /* Target throwing an error has been closed.  Current command should be
     aborted as the inferior state is no longer valid.  */
  TARGET_CLOSE_ERROR,
...
so in a way this is expected behaviour.  But aborting quit because the inferior
state (which we've already confirmed we're not interested in) is no longer
valid, and having to type quit again seems pointless.

Furthermore, the purpose of not catching errors thrown by
query_if_trace_running as per commit 2f9d54cfcef ("make -gdb-exit call
disconnect_tracing too, and don't lose history if the target errors on
"quit""), was to make sure that error (_("Not confirmed.") had effect.

Fix this in quit_command by catching only the TARGET_CLOSE_ERROR exception
during query_if_trace_running and reporting it:
...
(gdb) monitor exit
(gdb) quit
A debugging session is active.

        Inferior 1 [process 19219] will be killed.

Quit anyway? (y or n) y
Remote connection closed
$
...

Tested on x86_64-linux.

PR server/15746
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=15746
Approved-By: Tom Tromey <tom@tromey.com>
2 years ago[gdb/testsuite] Remove test-case from test name
Tom de Vries [Tue, 8 Nov 2022 17:40:25 +0000 (18:40 +0100)]
[gdb/testsuite] Remove test-case from test name

Remove test-cases from test-names, such that we don't have the redundant:
...
PASS: gdb.base/corefile.exp: backtrace in corefile.exp
...
but simply:
...
PASS: gdb.base/corefile.exp: backtrace
...

Fixed all instances found using:
...
$ grep ":.*:.*\.exp" gdb.sum
...

Tested on x86_64-linux.

2 years ago[gdb/testsuite] Fix find_core_file for core named core
Tom de Vries [Tue, 8 Nov 2022 15:28:11 +0000 (16:28 +0100)]
[gdb/testsuite] Fix find_core_file for core named core

With test-case gdb.base/bigcore.exp I run into:
...
(gdb) PASS: gdb.base/bigcore.exp: get inferior pid
signal SIGABRT^M
Continuing with signal SIGABRT.^M
^M
Program terminated with signal SIGABRT, Aborted.^M
The program no longer exists.^M
(gdb) PASS: gdb.base/bigcore.exp: signal SIGABRT
UNTESTED: gdb.base/bigcore.exp: can't generate a core file
...
due to find_core_file returning "".

There is a core file name core:
...
$ ls ./outputs/gdb.base/bigcore
bigcore  bigcore.corefile  core  gdb.cmd.1  gdb.in.1  gdbserver.cmd.1
...
but it's not found.

The problem is this statement:
...
    lappend files [list ${::testfile}.core core]
...
which adds a single list item "${::testfile}.core core".

Fix this in the most readable way:
...
    lappend files ${::testfile}.core
    lappend files core
...

Tested on x86_64-linux.

2 years agosim: mips: call Unpredictable instead of setting bogus values [PR sim/29276]
Mike Frysinger [Fri, 4 Nov 2022 00:38:20 +0000 (07:38 +0700)]
sim: mips: call Unpredictable instead of setting bogus values [PR sim/29276]

The intention of this code seems to be to indicate that this insn
should not be used and produces undefined behavior, so instead of
setting registers to bogus values, call Unpredictable.  This fixes
build warnings due to 32-bit/64-bit type conversions, and outputs
a log message for users at runtime instead of silent corruption.

Bug: https://sourceware.org/PR29276

2 years agosim: drop unused CORE_ADDR_TYPE
Mike Frysinger [Tue, 8 Nov 2022 07:09:06 +0000 (14:09 +0700)]
sim: drop unused CORE_ADDR_TYPE

This hasn't been used by gdb in decades, and doesn't make sense with
a standalone sim program/library where the ABI is fixed.  So punt it
to simplify the code.

2 years agox86: Correct wrong comments in vex_w_table
Haochen Jiang [Tue, 8 Nov 2022 01:20:18 +0000 (09:20 +0800)]
x86: Correct wrong comments in vex_w_table

Hi all,

This wrong comment was introduced by previous AVX-VNNI-INT8 commit.

Committed as obvious fix.

BRs,
Haochen

opcodes/ChangeLog:

* i386-dis.c (VEX_W_0F3851): Corrected from
VEX_W_0F3851_P_0.

2 years agoSupport Intel RAO-INT
Kong Lingling [Tue, 8 Nov 2022 01:51:07 +0000 (09:51 +0800)]
Support Intel RAO-INT

gas/ChangeLog:

* NEWS: Support Intel RAO-INT.
* config/tc-i386.c: Add raoint.
* doc/c-i386.texi: Document .raoint.
* testsuite/gas/i386/i386.exp: Run RAO_INT tests.
* testsuite/gas/i386/raoint-intel.d: New test.
* testsuite/gas/i386/raoint.d: Ditto.
* testsuite/gas/i386/raoint.s: Ditto.
* testsuite/gas/i386/x86-64-raoint-intel.d: Ditto.
* testsuite/gas/i386/x86-64-raoint.d: Ditto.
* testsuite/gas/i386/x86-64-raoint.s: Ditto.

opcodes/ChangeLog:

* i386-dis.c (PREFIX_0F38FC): New.
(prefix_table): Add PREFIX_0F38FC.
* i386-gen.c: (cpu_flag_init): Add CPU_RAO_INT_FLAGS and
CPU_ANY_RAO_INT_FLAGS.
* i386-init.h: Regenerated.
* i386-opc.h: (CpuRAO_INT): New.
(i386_cpu_flags): Add cpuraoint.
* i386-opc.tbl: Add RAO_INT instructions.
* i386-tbl.h: Regenerated.

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 8 Nov 2022 00:00:30 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoSilence libtool during link
Tom Tromey [Mon, 7 Nov 2022 17:43:25 +0000 (10:43 -0700)]
Silence libtool during link

The switch to linking with libtool now shows a very long link line
even when V=0.  This patch arranges to silence libtool in this
situation.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
2 years agogdb: make lookup_selected_frame static
Simon Marchi [Fri, 4 Nov 2022 19:12:55 +0000 (15:12 -0400)]
gdb: make lookup_selected_frame static

Change-Id: Ide2749a34333110c7f0112b25852c78cace0d2b4

2 years agosim: riscv: add missing AC_MSG_RESULT call
Mike Frysinger [Mon, 7 Nov 2022 16:44:36 +0000 (23:44 +0700)]
sim: riscv: add missing AC_MSG_RESULT call

Previous commit in here forgot to include this.

2 years agosim: v850: drop subdir configure logic
Mike Frysinger [Mon, 7 Nov 2022 16:07:43 +0000 (23:07 +0700)]
sim: v850: drop subdir configure logic

We've been using this only to set the default word size to 32.  We
can easily move this into the makefile via a -D compiler flag and
clean up the build logic quite a bit.

2 years agosim: mn10300: drop subdir configure logic
Mike Frysinger [Mon, 7 Nov 2022 16:05:46 +0000 (23:05 +0700)]
sim: mn10300: drop subdir configure logic

We've been using this only to set the default word size to 32.  We
can easily move this into the makefile via a -D compiler flag and
clean up the build logic quite a bit.

2 years agosim: or1k: drop subdir configure logic
Mike Frysinger [Mon, 7 Nov 2022 16:04:25 +0000 (23:04 +0700)]
sim: or1k: drop subdir configure logic

We've been using this only to set the default word size to 32.  We
can easily move this into the makefile via a -D compiler flag and
clean up the build logic quite a bit.

2 years agosim: bpf: drop subdir configure logic
Mike Frysinger [Mon, 7 Nov 2022 15:59:30 +0000 (22:59 +0700)]
sim: bpf: drop subdir configure logic

We've been using this only to set the default word size to 64.  We
can easily move this into the makefile via a -D compiler flag and
clean up the build logic quite a bit.

2 years agosim: riscv: drop subdir configure logic
Mike Frysinger [Mon, 7 Nov 2022 15:56:58 +0000 (22:56 +0700)]
sim: riscv: drop subdir configure logic

We've been using this only to set the default word size to 32-vs-64
based on the $target.  We can easily merge this with the top-level
configure script to clean things up a bit.

2 years agogdb: link executables with libtool
Jose E. Marchesi [Sat, 5 Nov 2022 10:52:09 +0000 (11:52 +0100)]
gdb: link executables with libtool

This patch changes the GDB build system in order to use libtool to
link the several built executables.  This makes it possible to refer
to libtool libraries (.la files) in CLIBS.

As an application of the above,

  BFD              now refers to ../libbfd/libbfd.la
  OPCODES          now refers to ../opcodes/libopcodes.la
  LIBBACKTRACE_LIB now refers to ../libbacktrace/libbacktrace.la
  LIBCTF           now refers to ../libctf/libctf.la

NOTE1: The addition of libtool adds a few new configure-time options
       to GDB.  Among these, --enable-shared and --disable-shared, which were
       previously ignored.  Now GDB shall honor these options when linking,
       picking up the right version of the referred libtool libraries
       automagically.

NOTE2: I have not tested the insight build.

NOTE3: For regenerating configure I used an environment with Autoconf
       2.69 and Automake 1.15.1.  This should match the previously
       used version as announced in the configure script.

NOTE4: Now the installed shared objects libbfd.so, libopcodes.so and
       libctf.so are used by gdb if binutils is installed with
       --enable-shared.

Testing performed:

- --enable-shared and --disable-shared (the default in binutils) work
  as expected: the linked executables link with the archive or shared
  libraries transparently.

- Makefile.in modified for EXEEXT = .exe.  It installs the binaries
  just fine.  The installed gdb.exe runs fine.

- Native build regtested in x86_64. No regressions found.

- Cross build for aarch64-linux-gnu built to exercise
  program_transform_name and friends.  The installed
  aarch64-linux-gnu-gdb runs fine.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29372
Approved-By: Simon Marchi <simon.marchi@efficios.com>
2 years agogdb/testsuite: use a more unique name in gdb.mi/mi-breakpoint-multiple-locations.exp
Simon Marchi [Mon, 7 Nov 2022 14:38:12 +0000 (09:38 -0500)]
gdb/testsuite: use a more unique name in gdb.mi/mi-breakpoint-multiple-locations.exp

I see failures in this test, due to the function name "add" being too
generic, and unexpected breakpoint locations being found in my
libstdc++, such as (wrapped for readability):

    {
   number="2.4",enabled="y",addr="0x00007ffff7d67e68",
   func="(anonymous namespace)::fast_float::bigint::add",
file="/usr/src/debug/gcc/libstdc++-v3/src/c++17/fast_float/fast_float.h",
fullname="/usr/src/debug/gcc/libstdc++-v3/src/c++17/fast_float/fast_float.h",
line="1815", thread-groups=["i1"]
    }

Change the test to use a more unique name.

Change-Id: I91de781be62d246eb41c73eaa410ebdd12633d1d

2 years agoDon't explicitly set clone child ptrace options
Pedro Alves [Fri, 14 Oct 2022 19:17:36 +0000 (20:17 +0100)]
Don't explicitly set clone child ptrace options

linux_handle_extended_wait calls target_post_attach if we're handling
a PTRACE_EVENT_CLONE, and libthread_db.so isn't active.
target_post_attach just calls linux_init_ptrace_procfs to set the
lwp's ptrace options.  However, this is completely unnecessary,
because, as man ptrace [1] says, options are inherited:

  "Flags are inherited by new tracees created and "auto-attached" via
   active PTRACE_O_TRACEFORK, PTRACE_O_TRACEVFORK, or PTRACE_O_TRACECLONE
   options."

This removes the unnecessary call.

[1] - https://man7.org/linux/man-pages/man2/ptrace.2.html

Approved-By: Simon Marchi <simon.marchi@efficios.com>
Change-Id: I533eaa60b700f7e40760311fc0d344d0b3f19a78

2 years agosim: .gdbinit: generate for all arch subdirs
Mike Frysinger [Mon, 7 Nov 2022 14:49:53 +0000 (21:49 +0700)]
sim: .gdbinit: generate for all arch subdirs

This was being skipped for ports that had a recursive configure,
but we want it for them too.

2 years agosim: build: add a proper var for enabled arches
Mike Frysinger [Mon, 7 Nov 2022 14:30:10 +0000 (21:30 +0700)]
sim: build: add a proper var for enabled arches

The install code was using $SUBDIRS to track all enabled arches.  This
works, but isn't great if we want to add a subdir that isn't an arch
port, or as we merge the subdirs into the top-level.  Create a new var
explicitly to track the list of enabled arches instead.

2 years agoconfigure: require libzstd >= 1.4.0
Christophe Lyon [Fri, 4 Nov 2022 10:06:47 +0000 (11:06 +0100)]
configure: require libzstd >= 1.4.0

gas uses ZSTD_compressStream2 which is only available with libzstd >=
1.4.0, leading to build errors when an older version is installed.

This patch updates the check libzstd presence to check its version is
>= 1.4.0. However, since gas seems to be the only component requiring
such a recent version this may imply that we disable ZSTD support for
all components although some would still benefit from an older
version.

I ran 'autoreconf -f' in all directories containing a configure.ac
file, using vanilla autoconf-2.69 and automake-1.15.1. I noticed
several errors from autoheader in readline, as well as warnings in
intl, but they are unrelated to this patch.

This should fix some of the buildbots.

OK for trunk?

Thanks,

Christophe

2 years agold/testsuite: skip tests related to -shared when disabled
Clément Chigot [Fri, 4 Nov 2022 15:52:05 +0000 (16:52 +0100)]
ld/testsuite: skip tests related to -shared when disabled

Call the helper function "check_shared_lib_support" to ensure -shared
is enabled before launching ld-shared, ld-elfweak and ld-elfvers.
This allows to catch custom targets explicitly disabling it.

ld/ChangeLog:

* testsuite/ld-elfvers/vers.exp: Call check_shared_lib_support.
* testsuite/ld-elfweak/elfweak.exp: Likewise.
* testsuite/ld-shared/shared.exp: Likewise.

2 years agoRISC-V: Remove RV32EF conflict
Tsukasa OI [Sat, 10 Sep 2022 08:32:17 +0000 (08:32 +0000)]
RISC-V: Remove RV32EF conflict

Despite that the RISC-V ISA Manual version 2.2 prohibited "RV32EF", later
versions beginning with the version 20190608-Base-Ratified removed this
restriction.  Because the 'E' extension is still a draft, the author chose
to *just* remove the conflict (not checking the ISA version).

Note that, because RV32E is only used with a soft-float calling convention,
there's no valid official ABI for RV32EF.  It means, even if we can assemble
a program with -march=rv32ef -mabi=ilp32e, floating-point registers are kept
in an unmanaged state (outside ABI management).

The purpose of this commit is to suppress unnecessary errors while parsing
an ISA string and/or disassembling, not to allow hard-float with RVE.

bfd/ChangeLog:

* elfxx-riscv.c (riscv_parse_check_conflicts): Accept RV32EF
because only older specifications disallowed it.

gas/ChangeLog:

* testsuite/gas/riscv/march-fail-rv32ef.d: Remove as not directly
prohibited.
* testsuite/gas/riscv/march-fail-rv32ef.l: Likewise.

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 7 Nov 2022 00:00:24 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agosim: build: respect AM_MAKEFLAGS when entering subdirs
Mike Frysinger [Sun, 6 Nov 2022 14:09:25 +0000 (21:09 +0700)]
sim: build: respect AM_MAKEFLAGS when entering subdirs

This doesn't matter right now, but it will as we add more flags to
the recursive make step to pass state down.

2 years agosim: build: stop passing down SIM_PRIMARY_TARGET
Mike Frysinger [Sun, 6 Nov 2022 14:08:04 +0000 (21:08 +0700)]
sim: build: stop passing down SIM_PRIMARY_TARGET

This was needed when the install step was run in subdirs, but now
that we process that entirely in the top-level, we don't need to
pass this down, so drop it.

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 6 Nov 2022 00:00:20 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoDeprecate MI version 1
Tom Tromey [Wed, 21 Sep 2022 16:46:51 +0000 (10:46 -0600)]
Deprecate MI version 1

MI version 1 is long since obsolete.  Rather than remove it
immediately (though I did send a patch for that), instead let's
deprecate it in GDB 13 and then remove it for GDB 14.

This version of the patch incorporates Simon's warning change, and
Luis' recommendation to mention the gdb versions here.

2 years agosim: fix readline linkage
Mike Frysinger [Sat, 5 Nov 2022 14:21:31 +0000 (21:21 +0700)]
sim: fix readline linkage

Now that we link programs in the top dir instead of the arch subdir,
update the readline library path to be relative to the top dir.

2 years agosim: use libtool to install programs
Mike Frysinger [Sat, 5 Nov 2022 13:27:16 +0000 (20:27 +0700)]
sim: use libtool to install programs

Now that we use libtool to link, we have to use it to install instead
of keeping the manual logic so we don't install wrapper shell scripts.

2 years agosim: bfin: move linux-fixed-code.h to top-level
Mike Frysinger [Sat, 5 Nov 2022 09:15:30 +0000 (16:15 +0700)]
sim: bfin: move linux-fixed-code.h to top-level

2 years agosim: run: move linking into top-level
Mike Frysinger [Thu, 3 Nov 2022 11:19:13 +0000 (18:19 +0700)]
sim: run: move linking into top-level

Automake will run each subdir individually before moving on to the next
one.  This means that the linking phase, a single threaded process, will
not run in parallel with anything else.  When we have to link ~32 ports,
that's 32 link steps that don't take advantage of parallel systems.  On
my really old 4-core system, this cuts a multi-target build from ~60 sec
to ~30 sec.  We eventually want to move all compile+link steps to this
common dir anyways, so might as well move linking now for a nice speedup.

We use noinst_PROGRAMS instead of bin_PROGRAMS because we're taking care
of the install ourselves rather than letting automake process it.

2 years agosim: build: add uninstall support
Mike Frysinger [Sat, 5 Nov 2022 07:44:15 +0000 (14:44 +0700)]
sim: build: add uninstall support

This never worked before, but adding it to the common top-level dir
is pretty easy to do now that we're unified.

2 years agosim: build: move install steps to the top-level
Mike Frysinger [Sat, 5 Nov 2022 07:35:00 +0000 (14:35 +0700)]
sim: build: move install steps to the top-level

We still have to maintain custom install rules due to how we rename
arch-specific files with an arch prefix in their name, but we can at
least unify the logic in the common dir.

2 years agosim: cris: move rvdummy linking to top-level
Mike Frysinger [Sat, 5 Nov 2022 03:38:37 +0000 (10:38 +0700)]
sim: cris: move rvdummy linking to top-level

This is only used by `make check`, so we can move it out of the
default build too.

2 years agosim: build: add SIM_HW_CFLAGS to top-level build too
Mike Frysinger [Sat, 5 Nov 2022 03:33:37 +0000 (10:33 +0700)]
sim: build: add SIM_HW_CFLAGS to top-level build too

This matches what we do with targets already.

2 years agosim: drop unused SIM_HARDWARE variable
Mike Frysinger [Sat, 5 Nov 2022 03:31:15 +0000 (10:31 +0700)]
sim: drop unused SIM_HARDWARE variable

This hasn't been used since the refactor way back in commit
f872d0d643968c1101bb8c07b252edd54f626da2 ("Only enable H/W
on some mips targets."), so punt it.

2 years agosim: adjust sim_hw options style
Mike Frysinger [Sat, 5 Nov 2022 03:23:28 +0000 (10:23 +0700)]
sim: adjust sim_hw options style

We use uppercase for other variables, and are already turning it to
uppercase in the arch-subdir.mk, so convert it in the configure step.

2 years agosim: ppc: drop unused /dev/zero logic
Mike Frysinger [Sat, 5 Nov 2022 03:02:58 +0000 (10:02 +0700)]
sim: ppc: drop unused /dev/zero logic

Nothing in the tree checks this option, or has checked for decades.
The pre-cvs-import ChangeLog suggests this was added & removed back
then, but can't be sure as that history doesn't exist in the VCS.

2 years agosim: ppc: delete unused host bitsize settings
Mike Frysinger [Sat, 5 Nov 2022 02:52:29 +0000 (09:52 +0700)]
sim: ppc: delete unused host bitsize settings

Nothing checks this define anywhere, so drop all the logic.  We don't
want this to be a configure option in the first place as all such usage
should be automatic & following proper types.

2 years agosim: ppc: inline the sim-packages option
Mike Frysinger [Sat, 5 Nov 2022 02:29:17 +0000 (09:29 +0700)]
sim: ppc: inline the sim-packages option

This has only ever had a single option that's enabled by default.
The objects it adds are pretty small and don't add overhead at
runtime if it isn't used, so just enable it all the time to make
the build code simpler.

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 5 Nov 2022 00:00:21 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agobinutils: Run PR binutils/26160 test
H.J. Lu [Tue, 1 Nov 2022 00:02:17 +0000 (17:02 -0700)]
binutils: Run PR binutils/26160 test

Update expected PR binutils/26160 test output for readelf out change
and run PR binutils/26160 test.

PR binutils/26160
* testsuite/binutils-all/pr26160.r: Updated.
* testsuite/binutils-all/readelf.exp: Run PR binutils/26160 test.

2 years ago[testsuite] gdb.base/dlmopen: Fix test name and use gdb_attach
Lancelot SIX [Fri, 4 Nov 2022 15:36:21 +0000 (15:36 +0000)]
[testsuite] gdb.base/dlmopen: Fix test name and use gdb_attach

One test name in gdb.base/dlmopen.exp changes from run to run
since it includes a process id:

    PASS: gdb.base/dlmopen.exp: attach 3442682

This is not convenient do diff gdb.sum files to compare test runs.

Fix by using gdb_attach helper function to handle attaching to the
process as it produce a constant test name.

While at it also check gdb_attach's return value to only run the
rest of the test if the attach was successful.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
2 years agoPowerPC update comments for the MMA instruction name changes.
Carl Love [Fri, 4 Nov 2022 16:14:01 +0000 (12:14 -0400)]
PowerPC update comments for the MMA instruction name changes.

The mnemonics for the pmxvf16ger*, pmxvf32ger*,pmxvf64ger*, pmxvi4ger8*,
pmxvi8ger4*, and pmxvi16ger2* instructions were officially changed to
pmdmxbf16ger*, pmdmxvf32ger*, pmdmxvf64ger*, pmdmxvi4ger8*, pmdmxvi8ger4*,
pmdmxvi16ger* respectively.  The old mnemonics are still supported by the
assembler as extended mnemonics.  The disassembler generates the new
mnemonics.  The name changes occurred in commit:

  commit bb98553cad4e017f1851153fa5de91f2cee98fb2
  Author: Peter Bergner <bergner@linux.ibm.com>
  Date:   Sat Oct 8 16:19:51 2022 -0500

    PowerPC: Add support for RFC02658 - MMA+ Outer-Product Instructions

    gas/
            * config/tc-ppc.c (md_assemble): Only check for prefix opcodes.
            * testsuite/gas/ppc/rfc02658.s: New test.
            * testsuite/gas/ppc/rfc02658.d: Likewise.
            * testsuite/gas/ppc/ppc.exp: Run it.

    opcodes/
            * ppc-opc.c (XMSK8, P_GERX4_MASK, P_GERX2_MASK, XX3GERX_MASK): New.
            (powerpc_opcodes): Add dmxvi8gerx4pp, dmxvi8gerx4, dmxvf16gerx2pp,
            dmxvf16gerx2, dmxvbf16gerx2pp, dmxvf16gerx2np, dmxvbf16gerx2,
            dmxvi8gerx4spp, dmxvbf16gerx2np, dmxvf16gerx2pn, dmxvbf16gerx2pn,
            dmxvf16gerx2nn, dmxvbf16gerx2nn, pmdmxvi8gerx4pp, pmdmxvi8gerx4,
            pmdmxvf16gerx2pp, pmdmxvf16gerx2, pmdmxvbf16gerx2pp, pmdmxvf16gerx2np,
            pmdmxvbf16gerx2, pmdmxvi8gerx4spp, pmdmxvbf16gerx2np, pmdmxvf16gerx2pn,
            pmdmxvbf16gerx2pn, pmdmxvf16gerx2nn, pmdmxvbf16gerx2nn.

This patch updates the comments in the various gdb files to reflect the
name changes.  There are no functional changes made by this patch.

The older instruction names are still used in the test
gdb.reverse/ppc_record_test_isa_3_1.exp for backwards compatibility.

Patch has been tested on Power 10 with no regressions.

2 years agoPowerPC fix for the gdb.arch/powerpc-power10.exp test.
Carl Love [Fri, 4 Nov 2022 16:13:52 +0000 (12:13 -0400)]
PowerPC fix for the gdb.arch/powerpc-power10.exp test.

The mnemonics for the pmxvf16ger*, pmxvf32ger*,pmxvf64ger*, pmxvi4ger8*,
pmxvi8ger4*, pmxvi16ger2* instructions were officially changed to
pmdmxvf16ger*, pmdmxvf32ger*, pmdmxvf64ger*, pmdmxvi4ger8*, pmdmxvi8ger4*,
pmdmxvi16ger* respectively.  The old mnemonics are still supported by the
assembler as extended mnemonics.  The disassembler generates the new
mnemonics.  The name changes occurred in commit:

  commit bb98553cad4e017f1851153fa5de91f2cee98fb2
  Author: Peter Bergner <bergner@linux.ibm.com>
  Date:   Sat Oct 8 16:19:51 2022 -0500

    PowerPC: Add support for RFC02658 - MMA+ Outer-Product Instructions

    gas/
            * config/tc-ppc.c (md_assemble): Only check for prefix opcodes.
            * testsuite/gas/ppc/rfc02658.s: New test.
            * testsuite/gas/ppc/rfc02658.d: Likewise.
            * testsuite/gas/ppc/ppc.exp: Run it.

    opcodes/
            * ppc-opc.c (XMSK8, P_GERX4_MASK, P_GERX2_MASK, XX3GERX_MASK): New.
            (powerpc_opcodes): Add dmxvi8gerx4pp, dmxvi8gerx4, dmxvf16gerx2pp,
            dmxvf16gerx2, dmxvbf16gerx2pp, dmxvf16gerx2np, dmxvbf16gerx2,
            dmxvi8gerx4spp, dmxvbf16gerx2np, dmxvf16gerx2pn, dmxvbf16gerx2pn,
            dmxvf16gerx2nn, dmxvbf16gerx2nn, pmdmxvi8gerx4pp, pmdmxvi8gerx4,
            pmdmxvf16gerx2pp, pmdmxvf16gerx2, pmdmxvbf16gerx2pp, pmdmxvf16gerx2np,
            pmdmxvbf16gerx2, pmdmxvi8gerx4spp, pmdmxvbf16gerx2np, pmdmxvf16gerx2pn,
            pmdmxvbf16gerx2pn, pmdmxvf16gerx2nn, pmdmxvbf16gerx2nn.

The above commit results in about 224 failures on Power 10 since the
disassembled names do not match the expected names in the test.  This
patch updates the expected names in the test to match the values produced
by the disassembler.

This patch updates file gdb.arch/powerpc-power10.exp with the new expected
values to the instructions.  The comment giving the name of the instruction
for each binary value in the file gdb.arch/powerpc-power10.c is updated
with the new name.   There are no functional changes in file
gdb.arch/powerpc-power10.c.

2 years agoPowerpc fix for gdb.base/unwind-on-each-insn.exp
Carl Love [Fri, 4 Nov 2022 16:06:37 +0000 (12:06 -0400)]
Powerpc fix for gdb.base/unwind-on-each-insn.exp

The test disassembles function foo and searches for the line
"End of assembler dump" to determing the last address in the function.  The
assumption is the last instruction will be given right before the line
"End of assembler dump".  This assumption fails on PowerPC.

The PowerPC disassembly of the function foo looks like:
 Dump of assembler code for function foo:
#  => 0x00000000100006dc <+0>:     std     r31,-8(r1)
#     0x00000000100006e0 <+4>:     stdu    r1,-48(r1)
#     0x00000000100006e4 <+8>:     mr      r31,r1
#     0x00000000100006e8 <+12>:    nop
#     0x00000000100006ec <+16>:    addi    r1,r31,48
#     0x00000000100006f0 <+20>:    ld      r31,-8(r1)
#     0x00000000100006f4 <+24>:    blr
#     0x00000000100006f8 <+28>:    .long 0x0
#     0x00000000100006fc <+32>:    .long 0x0
#     0x0000000010000700 <+36>:    .long 0x1000180
#     End of assembler dump.

The blr instruction is the last instruction in function foo.  The lines
with .long following the blr instruction need to be ignored.

This patch adds a new condition to the gdb_test_multiple "disassemble foo"
test to ignore the lines with the .long.

The patch has been tested on PowerPC and Intel X86-64.

2 years agox86: adjust recently introduced testcases
Jan Beulich [Fri, 4 Nov 2022 13:13:01 +0000 (14:13 +0100)]
x86: adjust recently introduced testcases

The issue addressed by 2c02c72c62d2 ("re: Support Intel AMX-FP16") has
been introduced once again in a number of new tests.

2 years agoUpdate release documentation with regard to uploading gprofng docs
Nick Clifton [Fri, 4 Nov 2022 12:01:03 +0000 (12:01 +0000)]
Update release documentation with regard to uploading gprofng docs

2 years agogdb/testsuite: add KFAILs to gdb.reverse/step-reverse.exp
Bruno Larsen [Thu, 3 Nov 2022 09:01:42 +0000 (10:01 +0100)]
gdb/testsuite: add KFAILs to gdb.reverse/step-reverse.exp

Recent changes to gdb.reverse/step-reverse.exp revealed the latent bug
PR record/29745, where we can't skip one funcion forward if we're using
native-gdbserver. This commit just adds kfails to the test.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29745
Approved-By: Simon Marchi <simon.marchi@efficios.com>
2 years agoopcodes/arm: silence compiler warning about uninitialized variable use
Andrew Burgess [Fri, 4 Nov 2022 10:46:59 +0000 (10:46 +0000)]
opcodes/arm: silence compiler warning about uninitialized variable use

After this commit:

  commit 6576bffe6cbbb53c5756b2fccd2593ba69b74cdf
  Date:   Thu Jul 7 13:43:45 2022 +0100

      opcodes/arm: add disassembler styling for arm

Some people were seeing their builds failing with complaints about a
possible uninitialized variable usage.  I previously fixed an instance
of this issue in this commit:

  commit 2df82cd4b459fbc32120e0ad1ce19e26349506fe
  Date:   Tue Nov 1 10:36:59 2022 +0000

      opcodes/arm: silence compiler warning about uninitialized variable use

which did fix the build problems that the sourceware buildbot was
hitting, however, an additional instance of the same problem was
brought to my attention, and that is fixed in this commit.

Where commit 2df82cd4b4 fixed the uninitialized variable problem in
print_mve_unpredictable, this commit fixes the same problem in
print_mve_undefined.

As with the previous commit, I don't believe we could really ever get
an uninitialized variable usage, based on the current usage of the
function, so I have just initialized the reason variable to "??".

2 years agosim: rx: drop unused $arch setting
Mike Frysinger [Fri, 4 Nov 2022 07:23:50 +0000 (14:23 +0700)]
sim: rx: drop unused $arch setting

This is only needed for CGEN ports which RX isn't, so drop it.

2 years agosim: build: remove various obsolete generation dep variables
Mike Frysinger [Thu, 3 Nov 2022 13:26:01 +0000 (20:26 +0700)]
sim: build: remove various obsolete generation dep variables

These manual settings were necessary when we weren't doing automatic
header dependency tracking.  That was changed a while ago, and we use
automake now to do it all for us.  As a result, many of these vars
aren't even referenced anymore.

Further, some of the source file generation (e.g. .c files, or igen,
or cgen outputs) were moved to the common automake build, and it takes
care of dependency tracking for us with the object files.

2 years agosim: don't hardcode -ldl for SDL support
Mike Frysinger [Thu, 3 Nov 2022 10:38:46 +0000 (17:38 +0700)]
sim: don't hardcode -ldl for SDL support

Since we use AC_SEARCH_LIBS to find dlopen, we don't need to hardcode
-ldl when using SDL ourselves.

2 years agoSupport Intel AVX-NE-CONVERT
konglin1 [Fri, 4 Nov 2022 02:40:07 +0000 (10:40 +0800)]
Support Intel AVX-NE-CONVERT

gas/ChangeLog:

* NEWS: Support Intel AVX-NE-CONVERT.
* config/tc-i386.c: Add avx_ne_convert.
* doc/c-i386.texi: Document .avx_ne_convert.
* testsuite/gas/i386/i386.exp: Run AVX NE CONVERT tests.
* testsuite/gas/i386/avx-ne-convert-intel.d: New test.
* testsuite/gas/i386/avx-ne-convert.d: Ditto.
* testsuite/gas/i386/avx-ne-convert.s: Ditto.
* testsuite/gas/i386/x86-64-avx-ne-convert-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx-ne-convert.d: Ditto.
* testsuite/gas/i386/x86-64-avx-ne-convert.s: Ditto.

opcodes/ChangeLog:

* i386-dis.c (Mw): New.
(PREFIX_VEX_0F3872): Ditto.
(PREFIX_VEX_0F38B0_W_0): Ditto.
(PREFIX_VEX_0F38B1_W_0): Ditto.
(VEX_W_0F3872_P_1): Ditto.
(VEX_W_0F38B0): Ditto.
(VEX_W_0F38B1): Ditto.
(prefix_table): Add PREFIX_VEX_0F3872, PREFIX_VEX_0F38B0_W_0,
PREFIX_VEX_0F38B1_W_0.
(vex_w_table): Add VEX_W_0F3872_P_1, VEX_W_0F38B0, VEX_W_0F38B1.
* i386-gen.c (cpu_flag_init): Add CPU_AVX_NE_CONVERT_FLGAS and
CPU_ANY_AVX_NE_CONVERT_FLAGS.
(cpu_flags): Add CpuAVX_NE_CONVERT.
* i386-init.h: Regenerated.
* i386-opc.h (CpuAVX_NE CONVERT): New.
(i386_cpu_flags): Add cpuavx_ne_convert.
* i386-opc.tbl: Add Intel AVX-NE-CONVERT instructions.
* i386-tbl.h: Regenerated.

2 years agoi386: Rename <xy> template.
konglin1 [Fri, 4 Nov 2022 01:40:07 +0000 (09:40 +0800)]
i386: Rename <xy> template.

opcodes/
            * i386-opc.tbl: Rename <xy> template for VEX insn with x/y suffix to <Vxy>.
    Rename <xy> for EVEX insn with x/y suffix to <Exy>.

2 years agoSupport multiple .eh_frame sections
Jojo R [Wed, 13 Jul 2022 16:28:09 +0000 (00:28 +0800)]
Support multiple .eh_frame sections

This patch is based on MULTIPLE_FRAME_SECTIONS and EH_FRAME_LINKONCE,
it allows backend to enable this feature and use '--gc-sections' simply.

* gas/dw2gencfi.h (TARGET_MULTIPLE_EH_FRAME_SECTIONS): New.
(MULTIPLE_FRAME_SECTIONS): Add TARGET_MULTIPLE_EH_FRAME_SECTIONS.
* gas/dw2gencfi.c (EH_FRAME_LINKONCE): Add TARGET_MULTIPLE_EH_FRAME_SECTIONS.
(is_now_linkonce_segment): Likewise.
(get_cfi_seg): Create relocation info between .eh_frame.* and .text.* section.

* bfd/elf-bfd.h (elf_backend_can_make_multiple_eh_frame): New.
* bfd/elfxx-target.h (elf_backend_can_make_multiple_eh_frame): Likewise.
* bfd/elflink.c (_bfd_elf_default_action_discarded): Add checking for
elf_backend_can_make_multiple_eh_frame.

2 years agogas/doc/internals.texi: fix typo
Jojo R [Wed, 2 Nov 2022 06:09:52 +0000 (14:09 +0800)]
gas/doc/internals.texi: fix typo

* gas/doc/internals.texi (md_emit_single_noop_insn):
fix '@var missing closing brace'
* gas/doc/internals.texi (Hash tables):
fix '@menu reference to nonexistent node `Hash tables''

2 years agosim: drop -lm from SIM_EXTRA_LIBS
Mike Frysinger [Thu, 3 Nov 2022 09:53:21 +0000 (16:53 +0700)]
sim: drop -lm from SIM_EXTRA_LIBS

We have configure tests for this in the top-level configure script
to link this when necessary, so we don't need to explicitly list it
for specific ports.

2 years agosim: build: change AC_CHECK_LIB to AC_SEARCH_LIBS
Mike Frysinger [Thu, 3 Nov 2022 08:21:12 +0000 (15:21 +0700)]
sim: build: change AC_CHECK_LIB to AC_SEARCH_LIBS

With more C libraries moving functions entirely into the main -lc,
change the AC_CHECK_LIB calls to AC_SEARCH_LIBS so we look in there
first and avoid extra linkage when possible.

2 years agosim: build: drop duplicate $(LIBS) usage
Mike Frysinger [Thu, 3 Nov 2022 07:58:29 +0000 (13:43 +0545)]
sim: build: drop duplicate $(LIBS) usage

COMMON_LIBS is set to $(LIBS), and CONFIG_LIBS is set to that plus
@LIBS@.  This leds to the values being used twice.  Inline the
CONFIG_LIBS variable without @LIBS@ since it's used only once.

2 years agosim: build: switch to bfd & opcodes libtool linker scripts
Mike Frysinger [Thu, 3 Nov 2022 07:50:32 +0000 (13:35 +0545)]
sim: build: switch to bfd & opcodes libtool linker scripts

Now that we use libtool to link, we don't need to duplicate all the
libs that bfd itself uses.  This simplifies the configure & Makefile.

2 years agosim: build: switch to libtool for linking
Mike Frysinger [Thu, 3 Nov 2022 07:26:41 +0000 (13:11 +0545)]
sim: build: switch to libtool for linking

The top-level already sets up a libtool script for the host, so use
that when linking rather than invoking CC directly.  This will also
happen when we (someday) move the building to pure automake.

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 4 Nov 2022 00:00:16 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agosim: testsuite: fix cris stat3 in diff setups
Mike Frysinger [Wed, 2 Nov 2022 14:42:54 +0000 (20:27 +0545)]
sim: testsuite: fix cris stat3 in diff setups

This test uses the test itself as an input to stating regular files.
This gets funky though: when we run check in parallel, the output
object dir is the subdir that matches the .exp file.  When we run
with -j1, the output object dir is the sim builddir itself.

The old test would append argv[0] to find the file, while the new
test uses basename on it.  Each method works in only one of the
aforementioned build scenarios.  Rather than complicate this any
more, switch to a different file that we know will always exist:
the Makefile.

2 years agosim: testsuite: fix cris badarch in multi-target builds
Mike Frysinger [Wed, 2 Nov 2022 14:40:27 +0000 (20:25 +0545)]
sim: testsuite: fix cris badarch in multi-target builds

This test assumes that /bin/sh will never be a CRIS ELF by way of
assuming that the current bfd cannot load it (since a basic cris
cross-compiler only understands CRIS ELFs).  In a multi-target
build though, bfd understands just about every ELF out there, so
we're able to read the /bin/sh format before failing at a diff
point in the cris code.

Let's switch to using / instead since it'll fail for a similar
reason (at least similar enough for what this test is testing).

2 years agosim: cleanup unused SIM_EXTRA_CFLAGS
Mike Frysinger [Thu, 3 Nov 2022 10:45:09 +0000 (17:45 +0700)]
sim: cleanup unused SIM_EXTRA_CFLAGS

We want to eventually delete this, so at least drop the empty ones.

2 years agosim: m32c/rx: drop useless $(ENDLIST)
Mike Frysinger [Thu, 3 Nov 2022 18:07:53 +0000 (01:07 +0700)]
sim: m32c/rx: drop useless $(ENDLIST)

This is used to allow for dangling \ in object lists, but these are the
only ports that do it, and it isn't really necessary.  Punt it to keep
the various makefiles harmonized.

2 years agosim: mips: simplify fpu configure logic
Mike Frysinger [Thu, 3 Nov 2022 18:28:09 +0000 (01:28 +0700)]
sim: mips: simplify fpu configure logic

The configure code always defaults to HARD_FLOATING_POINT, so inline
that value and drop redundant target checks as a result.

2 years agosim: erc32: link sis to run program
Mike Frysinger [Thu, 3 Nov 2022 17:25:32 +0000 (00:25 +0700)]
sim: erc32: link sis to run program

The erc32 sim does a lot itself, including handling of the CLI.  It
used to provide a run-compatible interface in the pre-nrun days, but
it was dropped when the old run interface was punted.  Since the old
commit 465fb143c87076b6416a8d0d5dd79bb016060fe3 ("sim: make nrun the
default run program"), the erc32 run & sis programs have been the
same, and erc32 hasn't provide a real run-compatible interface.

Simplify this by linking the two programs via ln/cp instead of running
the linking phase twice to produce the same result.  If/when we fix up
the erc32 port to have a proper run interface, it should be easy to
split these back apart into real programs.

Note: the interf.o reference in here is a bit of a misdirect.  Since
that object is placed into libsim.a, it's never been linked into the
programs since the linker ignores objects that aren't referenced, and
only gdb uses those symbols.

2 years agoV850 Linker: do not complain about RWX segments.
Nick Clifton [Thu, 3 Nov 2022 16:26:52 +0000 (16:26 +0000)]
V850 Linker: do not complain about RWX segments.

PR 29748
* configure.tgt (ac_default_ld_warn_rwx_segments): Set to 0 for
the V850.

2 years agosim: v850: switch to standard (high-level) trace defines
Mike Frysinger [Thu, 3 Nov 2022 13:58:23 +0000 (20:58 +0700)]
sim: v850: switch to standard (high-level) trace defines

The v850 port uses -DDEBUG to control whether to enable internal tracing.
We already have such options via the common trace framework, and those
can be controlled at build time via configure flags (which the v850 code
currently cannot).  So switch it over to WITH_TRACE_ANY_P to simplify the
v850 build code even if it doesn't (yet) respect any other trace options.

2 years agosim: ppc: include copyright & license in --version
Mike Frysinger [Thu, 3 Nov 2022 13:15:19 +0000 (20:15 +0700)]
sim: ppc: include copyright & license in --version

This makes it match the other sim run programs and GNU tools.

2 years agosim: update --version copyright year
Mike Frysinger [Thu, 3 Nov 2022 13:08:13 +0000 (20:08 +0700)]
sim: update --version copyright year

Probably should have done this 11 months ago ...

2 years agosim: ppc: drop use of DATE & TIME
Mike Frysinger [Thu, 3 Nov 2022 13:06:01 +0000 (20:06 +0700)]
sim: ppc: drop use of DATE & TIME

No other tool does this, sim or otherwise, and it makes the ppc build
non-reproducible.  Drop it to simplify & make reproducible.

2 years agogdb: Fix issue with Clang CLI macros
Bruno Larsen [Wed, 20 Apr 2022 17:41:11 +0000 (14:41 -0300)]
gdb: Fix issue with Clang CLI macros

Clang up to version 15 (current) adds macros that were defined in the
command line or by "other means", according to the Dwarf specification,
after the last DW_MACRO_end_file, instead of before the first
DW_MACRO_start_file, as the specification dictates.  When GDB reads the
macros after the last file is closed, the macros never end up "in scope"
and so we can't print them.  This has been submitted as a bug to Clang
developers (https://github.com/llvm/llvm-project/issues/54506), and PR
macros/29034 was opened for GDB to keep track of this.

Seeing as there is no expected date for it to be fixed, add a workaround
for all current versions of Clang.  The workaround detects when
the main file would be closed and if the producer is Clang, and turns
that operation into a noop, so we keep a reference to the current_file
as those macros are read.

A test case was added to confirm the functionality, and the KFAIL for
running gdb.base/macro-source-path when using clang.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29034
Approved-By: Simon Marchi <simon.marchi@efficios.com>
2 years agoAVR Linker: Allow the start of the data region to be specified on the linker command...
Nick Clifton [Thu, 3 Nov 2022 09:20:37 +0000 (09:20 +0000)]
AVR Linker: Allow the start of the data region to be specified on the linker command line.  [Fix PR number in ChangeLog entry]

PR 29741
* scripttempl/avr.sc (__DATA_REGION_ORIGIN__): Define.  If a value
has not been provided on the command line then use DATA_ORIGIN.
(MEMORY): Use __DATA_REGION_ORIGIN__ as the start of the data region.

2 years agoAVR Linker: Allow the start of the data region to specified on the command line.
Nick Clifton [Thu, 3 Nov 2022 09:17:41 +0000 (09:17 +0000)]
AVR Linker: Allow the start of the data region to specified on the command line.

PR 29471
* scripttempl/avr.sc (__DATA_REGION_ORIGIN__): Define.  If a value
has not been provided on the command line then use DATA_ORIGIN.
(MEMORY): Use __DATA_REGION_ORIGIN__ as the start of the data region.

2 years agosim: move common flags to default AM_CPPFLAGS
Mike Frysinger [Mon, 31 Oct 2022 12:50:52 +0000 (18:35 +0545)]
sim: move common flags to default AM_CPPFLAGS

Since all host files we compile use these settings, move them out of
libcommon.a and into the default AM_CPPFLAGS.  This has the effect of
dropping the custom per-target automake rules.  Currently it saves us
~150 lines, but since it's about ~8 lines per object, the overhead
will increase quite a bit as we merge more files into a single build.

This also changes the object output names, so we have to tweak the
rules that were pulling in the common objects when linking.

2 years agosim: merge gnulib logic into the top-level
Mike Frysinger [Mon, 31 Oct 2022 12:46:44 +0000 (18:31 +0545)]
sim: merge gnulib logic into the top-level

We aren't using this just yet, but we will, so make it available to
building of common sim files.

2 years agosim: common: remove unused include paths
Mike Frysinger [Mon, 31 Oct 2022 12:31:14 +0000 (18:16 +0545)]
sim: common: remove unused include paths

A bunch of these paths don't include any headers, and most likely
never will, so there's no real need to keep them.  This will let
us harmonize paths with the top-level Makefile more easily, which
will in turn make it easier to move more compile steps there.

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 3 Nov 2022 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in

2 years agoarm: PR 29739 Fix typo where ';' should not have been replaced with '@'
Christophe Lyon [Wed, 2 Nov 2022 16:50:15 +0000 (16:50 +0000)]
arm: PR 29739 Fix typo where ';' should not have been replaced with '@'

';' does not always indicate the start of a comment, and commit
8cb6e17571f3fb66ccd4fa19f881602542cd06fc incorrectly replaced 3
instances of ';' with '@' in expected diagnostics, leading to tests
failures.

This patch restores the original ';' as needed in these testcases.

Fixes bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29739

2 years agosim: split CPPFLAGS between build & host
Mike Frysinger [Mon, 31 Oct 2022 07:35:13 +0000 (13:20 +0545)]
sim: split CPPFLAGS between build & host

In order to merge more common/ files into the top-level, we need to
add more host flags to CPPFLAGS, and that conflicts with our current
use with build-time tools.  So split them apart like we do with all
other build flags to avoid the issue.

2 years agosim: h8300: switch to cpu for state
Mike Frysinger [Tue, 16 Aug 2016 14:35:13 +0000 (07:35 -0700)]
sim: h8300: switch to cpu for state

Rather than rely on pulling out the first cpu from the sim state
for cpu state, pass down the active cpu that's already available.

2 years agosim: common: change sim_{fetch,store}_register helpers to use void* buffers
Mike Frysinger [Mon, 31 Oct 2022 15:58:10 +0000 (21:43 +0545)]
sim: common: change sim_{fetch,store}_register helpers to use void* buffers

When reading/writing arbitrary data to the system's memory, the unsigned
char pointer type doesn't make that much sense.  Switch it to void so we
align a bit with standard C library read/write functions, and to avoid
having to sprinkle casts everywhere.

2 years agoFix Cygwin build after 20489cca
Jon Turney [Sun, 12 Jun 2022 15:59:40 +0000 (16:59 +0100)]
Fix Cygwin build after 20489cca

Update code under __CYGWIN__ which accesses inferior process information
which is now stored in windows_process_info rather than globals.

2 years agoFix Cygwin build after bcb9251f
Jon Turney [Sun, 12 Jun 2022 15:39:46 +0000 (16:39 +0100)]
Fix Cygwin build after bcb9251f

Absent _UNICODE being defined (which gdb's Makefile doesn't do),
windows.h will always define STARTUPINFO is as STARTUPINFOA, so this
cast isn't correct when create_process expects a STARTUPINFOW
parameter (i.e. in a Cygwin build).

Instead write this as &info_ex.StartupInfo (which is always of the
correct type).

2 years agox86: drop bogus Tbyte
Jan Beulich [Wed, 2 Nov 2022 07:21:04 +0000 (08:21 +0100)]
x86: drop bogus Tbyte

Prior to commit 1cb0ab18ad24 ("x86/Intel: restrict suffix derivation")
the Tbyte modifier on the FLDT and FSTPT templates was pointless, as
No_ldSuf would have prevented it being accepted. Due to the special
nature of LONG_DOUBLE_MNEM_SUFFIX said commit, however, has led to these
insns being accepted in Intel syntax mode even when "tbyte ptr" was
present. Restore original behavior by dropping Tbyte there. (Note that
these insns in principle should by marked AT&T syntax only, but since
they haven't been so far we probably shouldn't change that.)

2 years agox86: simplify expressions in update_imm()
Jan Beulich [Wed, 2 Nov 2022 07:18:24 +0000 (08:18 +0100)]
x86: simplify expressions in update_imm()

Comparing the sum of the relevant .imm<N> fields against a constant imo
makes more obvious what is actually meant. It allows dropping of two
static variables, with a 3rd drop requiring two more minor adjustments
elsewhere, utilizing that "i" is zeroed first thing in md_assemble().
This also increases the chances of the compiler doing the calculations
all in registers.

2 years agoRISC-V: Fixed the missing $x+arch when adding odd paddings for alignment.
Nelson Chu [Tue, 1 Nov 2022 13:51:55 +0000 (21:51 +0800)]
RISC-V: Fixed the missing $x+arch when adding odd paddings for alignment.

Consider the case,

.option arch, rv32i
.option norelax
.option arch, +c
.byte   1
.align  2
addi    a0, zero, 1

Assembler adds $d for the odd .byte, and then adds $x+arch for the
alignment.  Since norelax, riscv_add_odd_padding_symbol will add the
$d and $x for the odd alignment, but accidently remove the $x+arch because
it has the same address as $d.  Therefore, we will get the unexpected result
before applying this patch,

.byte   1            # $d
.align  2            # odd alignment, $xrv32ic replaced by $d + $x

After this patch, the expected result should be,

.byte   1            # $d
.align  2            # odd alignment, $xrv32ic replaced by $d + $xrv32ic

gas/
    * config/tc-riscv.c (make_mapping_symbol): If we are adding mapping symbol
    for odd alignment, then we probably will remove the $x+arch by accidently
    when it has the same address of $d.  Try to add the removed $x+arch back
    after the $d rather than just $x.
    (riscv_mapping_state): Updated since parameters of make_mapping_symbol are
    changed.
    (riscv_add_odd_padding_symbol): Likewise.
    (riscv_remove_mapping_symbol): Removed and moved the code into the
    riscv_check_mapping_symbols.
    (riscv_check_mapping_symbols): Updated.
    * testsuite/gas/riscv/mapping-dis.d: Updated and added new testcase.
    * testsuite/gas/riscv/mapping-symbols.d: Likewise.
    * testsuite/gas/riscv/mapping.s: Likewise.

2 years agoSupport Intel MSRLIST
Hu, Lin1 [Tue, 1 Nov 2022 02:50:27 +0000 (10:50 +0800)]
Support Intel MSRLIST

gas/ChangeLog:

* NEWS: Support Intel MSRLIST.
* config/tc-i386.c: Add msrlist.
* doc/c-i386.texi: Document .msrlist.
* testsuite/gas/i386/i386.exp: Add MSRLIST tests.
* testsuite/gas/i386/msrlist-inval.l: New test.
* testsuite/gas/i386/msrlist-inval.s: Ditto.
* testsuite/gas/i386/x86-64-msrlist-intel.d: Ditto.
* testsuite/gas/i386/x86-64-msrlist.d: Ditto.
* testsuite/gas/i386/x86-64-msrlist.s: Ditto.

opcodes/ChangeLog:

* i386-dis.c (X86_64_0F01_REG_0_MOD_3_RM_6_P_1): New.
(X86_64_0F01_REG_0_MOD_3_RM_6_P_3): Ditto.
(prefix_table): New entry for msrlist.
(x86_64_table): Add X86_64_0F01_REG_0_MOD_3_RM_6_P_1
and X86_64_0F01_REG_0_MOD_3_RM_6_P_3.
* i386-gen.c (cpu_flag_init): Add CPU_MSRLIST_FLAGS
and CPU_ANY_MSRLIST_FLAGS.
* i386-init.h: Regenerated.
* i386-opc.h (CpuMSRLIST): New.
(i386_cpu_flags): Add cpumsrlist.
* i386-opc.tbl: Add MSRLIST instructions.
* i386-tbl.h: Regenerated.

2 years agoSupport Intel WRMSRNS
Hu, Lin1 [Tue, 1 Nov 2022 02:50:14 +0000 (10:50 +0800)]
Support Intel WRMSRNS

gas/ChangeLog:

        * NEWS: Support Intel WRMSRNS.
        * config/tc-i386.c: Add wrmsrns.
        * doc/c-i386.texi: Document .wrmsrns.
        * testsuite/gas/i386/i386.exp: Add WRMSRNS tests.
        * testsuite/gas/i386/wrmsrns-intel.d: New test.
        * testsuite/gas/i386/wrmsrns.d: Ditto.
        * testsuite/gas/i386/wrmsrns.s: Ditto.
        * testsuite/gas/i386/x86-64-wrmsrns-intel.d: Ditto.
        * testsuite/gas/i386/x86-64-wrmsrns.d: Ditto.

opcodes/ChangeLog:

* i386-dis.c (PREFIX_0F01_REG_0_MOD_3_RM_6): New.
(prefix_table): Add PREFIX_0F01_REG_0_MOD_3_RM_6.
(rm_table): New entry for wrmsrns.
* i386-gen.c (cpu_flag_init): Add CPU_WRMSRNS_FLAGS
and CPU_ANY_WRMSRNS_FLAGS.
(cpu_flags): Add CpuWRMSRNS.
        * i386-init.h: Regenerated.
        * i386-opc.h (CpuWRMSRNS): New.
(i386_cpu_flags): Add cpuwrmsrns.
        * i386-opc.tbl: Add WRMSRNS instructions.
        * i386-tbl.h: Regenerated.

2 years agoAdd handler for more i386_cpu_flags
Kong Lingling [Tue, 1 Nov 2022 02:50:08 +0000 (10:50 +0800)]
Add handler for more i386_cpu_flags

gas/ChangeLog:

* config/tc-i386.c (cpu_flags_all_zero): Add new ARRAY_SIZE handle.
(cpu_flags_equal): Ditto.
(cpu_flags_and): Ditto.
(cpu_flags_or): Ditto.
(cpu_flags_and_not): Ditto.

2 years agoSupport Intel CMPccXADD
Haochen Jiang [Tue, 1 Nov 2022 02:50:01 +0000 (10:50 +0800)]
Support Intel CMPccXADD

gas/ChangeLog:

* NEWS: Support Intel CMPccXADD.
* config/tc-i386.c: Add cmpccxadd.
(build_modrm_byte): Add operations for Vex.VVVV reg
on operand 0 while have memory operand.
* doc/c-i386.texi: Document .cmpccxadd.
* testsuite/gas/i386/i386.exp: Run CMPccXADD tests.
* testsuite/gas/i386/cmpccxadd-inval.s: New test.
* testsuite/gas/i386/cmpccxadd-inval.l: Ditto.
* testsuite/gas/i386/x86-64-cmpccxadd-intel.d: Ditto.
* testsuite/gas/i386/x86-64-cmpccxadd.s: Ditto.
* testsuite/gas/i386/x86-64-cmpccxadd.d: Ditto.

opcodes/ChangeLog:

* i386-dis.c (Mdq): New.
(X86_64_VEX_0F38E0): Ditto.
(X86_64_VEX_0F38E1): Ditto.
(X86_64_VEX_0F38E2): Ditto.
(X86_64_VEX_0F38E3): Ditto.
(X86_64_VEX_0F38E4): Ditto.
(X86_64_VEX_0F38E5): Ditto.
(X86_64_VEX_0F38E6): Ditto.
(X86_64_VEX_0F38E7): Ditto.
(X86_64_VEX_0F38E8): Ditto.
(X86_64_VEX_0F38E9): Ditto.
(X86_64_VEX_0F38EA): Ditto.
(X86_64_VEX_0F38EB): Ditto.
(X86_64_VEX_0F38EC): Ditto.
(X86_64_VEX_0F38ED): Ditto.
(X86_64_VEX_0F38EE): Ditto.
(X86_64_VEX_0F38EF): Ditto.
(x86_64_table): Add X86_64_VEX_0F38E0, X86_64_VEX_0F38E1,
X86_64_VEX_0F38E2, X86_64_VEX_0F38E3, X86_64_VEX_0F38E4,
X86_64_VEX_0F38E5, X86_64_VEX_0F38E6, X86_64_VEX_0F38E7,
X86_64_VEX_0F38E8, X86_64_VEX_0F38E9, X86_64_VEX_0F38EA,
X86_64_VEX_0F38EB, X86_64_VEX_0F38EC, X86_64_VEX_0F38ED,
X86_64_VEX_0F38EE, X86_64_VEX_0F38EF.
* i386-gen.c (cpu_flag_init): Add CPU_CMPCCXADD_FLAGS and
CPU_ANY_CMPCCXADD_FLAGS.
(cpu_flags): Add CpuCMPCCXADD.
* i386-init.h: Regenerated.
* i386-opc.h (CpuCMPCCXADD): New.
(i386_cpu_flags): Add cpucmpccxadd. Comment unused for it is actually 0.
* i386-opc.tbl: Add Intel CMPccXADD instructions.
* i386-tbl.h: Regenerated.