binutils-gdb.git
4 years agoDon't write to inferior_ptid in bsd-kvm.c
Pedro Alves [Thu, 18 Jun 2020 20:28:30 +0000 (21:28 +0100)]
Don't write to inferior_ptid in bsd-kvm.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* bsd-kvm.c (bsd_kvm_target::close): Use switch_to_no_thread
instead of writing to inferior_ptid directly.

4 years agoDon't write to inferior_ptid in corelow.c
Pedro Alves [Thu, 18 Jun 2020 20:28:29 +0000 (21:28 +0100)]
Don't write to inferior_ptid in corelow.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* corelow.c (core_target::close): Use switch_to_no_thread instead
of writing to inferior_ptid directly.
(add_to_thread_list, core_target_open): Use switch_to_thread
instead of writing to inferior_ptid directly.

4 years agoDon't write to inferior_ptid in darwin-nat.c
Pedro Alves [Thu, 18 Jun 2020 20:28:28 +0000 (21:28 +0100)]
Don't write to inferior_ptid in darwin-nat.c

Untested.

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* darwin-nat.c (darwin_nat_target::decode_message): Don't write to
inferior_ptid.
(darwin_nat_target::stop_inferior, darwin_nat_target::kill): Avoid
inferior_ptid.
(darwin_attach_pid): Use switch_to_no_thread instead of writing to
inferior_ptid directly.
(darwin_nat_target::init_thread_list): Switch to thread, instead
of writing to inferior_ptid.
(darwin_nat_target::attach): Don't write to inferior_ptid.
(darwin_nat_target::get_ada_task_ptid): Avoid inferior_ptid.

4 years agoDon't write to inferior_ptid in gnu-nat.c
Pedro Alves [Thu, 18 Jun 2020 20:28:28 +0000 (21:28 +0100)]
Don't write to inferior_ptid in gnu-nat.c

Untested.

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* gnu-nat.c (gnu_nat_target::create_inferior): Switch to the added
thread.
(gnu_nat_target::attach): Don't write to inferior_ptid directly.
Instead use switch_to_thread.
(gnu_nat_target::detach): Use switch_to_no_thread
instead of writing to inferior_ptid directly.  Used passed-in
inferior instead of looking up the inferior by pid.

4 years agoDon't write to inferior_ptid in go32-nat.c
Pedro Alves [Thu, 18 Jun 2020 20:28:27 +0000 (21:28 +0100)]
Don't write to inferior_ptid in go32-nat.c

generic_mourn_inferior already takes care of switching to no thread.

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* go32-nat.c (go32_nat_target::create_inferior): Don't write to
inferior_ptid.

4 years agoDon't write to inferior_ptid in nto-procfs.c
Pedro Alves [Thu, 18 Jun 2020 20:28:26 +0000 (21:28 +0100)]
Don't write to inferior_ptid in nto-procfs.c

A best effort patch, which fixes some bit rot and removes some
inferior_ptid references -- this port clearly hasn't been built in a
long while.

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* nto-procfs.c (nto_procfs_target::update_thread_list): Avoid
inferior_ptid.
(nto_procfs_target::attach): Avoid inferior_ptid.  Switch to
thread.
(nto_procfs_target::detach): Avoid referencing
inferior_ptid.  Use switch_to_no_thread instead of writing to
inferior_ptid directly.
(nto_procfs_target::mourn_inferior): Use switch_to_no_thread
instead of writing to inferior_ptid directly.
(nto_procfs_target::create_inferior): Avoid inferior_ptid.  Switch
to thread.

4 years agoDon't write to inferior_ptid in remote-sim.c
Pedro Alves [Thu, 18 Jun 2020 20:28:25 +0000 (21:28 +0100)]
Don't write to inferior_ptid in remote-sim.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* remote-sim.c (gdbsim_target::create_inferior): Switch to thread
after creating it, instead of writing to inferior_ptid.
(gdbsim_target_open): Use switch_to_no_thread instead of writing
to inferior_ptid directly.
(gdbsim_target::wait): Don't write to inferior_ptid.

4 years agoDon't write to inferior_ptid in remote.c
Pedro Alves [Thu, 18 Jun 2020 20:28:24 +0000 (21:28 +0100)]
Don't write to inferior_ptid in remote.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* remote.c (remote_target::remote_notice_new_inferior): Use
switch_to_thread instead of writing to inferior_ptid directly.
(remote_target::add_current_inferior_and_thread): Use
switch_to_no_thread instead of writing to inferior_ptid directly.
(extended_remote_target::attach): Use switch_to_inferior_no_thread
and switch_to_thread instead of using set_current_inferior or
writing to inferior_ptid directly.

4 years agoDon't write to inferior_ptid in tracectf.c
Pedro Alves [Thu, 18 Jun 2020 20:28:24 +0000 (21:28 +0100)]
Don't write to inferior_ptid in tracectf.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* tracectf.c (ctf_target_open): Switch to added thread instead of
writing to inferior_ptid directly.
(ctf_target::close): Use switch_to_no_thread instead of writing to
inferior_ptid directly.

4 years agoDon't write to inferior_ptid in tracefile-tfile.c
Pedro Alves [Thu, 18 Jun 2020 20:28:23 +0000 (21:28 +0100)]
Don't write to inferior_ptid in tracefile-tfile.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* tracefile-tfile.c (tfile_target_open): Don't write to
inferior_ptid directly, instead switch to added thread.
(tfile_target::close): Use switch_to_no_thread instead of writing
to inferior_ptid directly.

4 years agoDon't write to inferior_ptid in procfs.c
Pedro Alves [Thu, 18 Jun 2020 20:28:22 +0000 (21:28 +0100)]
Don't write to inferior_ptid in procfs.c

The inferior_ptid write in procfs_do_thread_registers should be
unnecessary because the target_fetch_registers method should (and
does) extract the ptid from the regcache.

Not tested.

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* procfs.c (procfs_target::attach): Don't write to inferior_ptid.
(procfs_target::detach): Use switch_to_no_thread
instead of writing to inferior_ptid directly.
(do_attach): Change return type to void.  Switch to the added
thread.
(procfs_target::create_inferior): Switch to the added thread.
(procfs_do_thread_registers): Don't write to inferior_ptid.

4 years agoDon't write to inferior_ptid in infrun.c
Pedro Alves [Thu, 18 Jun 2020 20:28:21 +0000 (21:28 +0100)]
Don't write to inferior_ptid in infrun.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* infrun.c (generic_mourn_inferior): Use switch_to_thread instead
of writing to inferior_ptid.
(scoped_restore_exited_inferior): Delete.
(handle_vfork_child_exec_or_exit): Simplify using
scoped_restore_current_pspace_and_thread.  Use switch_to_thread
instead of writing to inferior_ptid.
(THREAD_STOPPED_BY): Delete.
(thread_stopped_by_watchpoint, thread_stopped_by_sw_breakpoint)
(thread_stopped_by_hw_breakpoint): Delete.
(save_waitstatus): Use
scoped_restore_current_thread+switch_to_thread, and call
target_stopped_by_watchpoint instead of
thread_stopped_by_watchpoint, target_stopped_by_sw_breakpoint
instead of thread_stopped_by_sw_breakpoint, and
target_stopped_by_hw_breakpoint instead of
thread_stopped_by_hw_breakpoint.
(handle_inferior_event)
<TARGET_WAITKIND_EXITED/TARGET_WAITKIND_SIGNALLED>: Don't write to
inferior_ptid directly, nor
set_current_inferior/set_current_program_space.  Use
switch_to_thread / switch_to_inferior_no_thread instead.

4 years agoDon't write to inferior_ptid in target.c
Pedro Alves [Thu, 18 Jun 2020 20:28:20 +0000 (21:28 +0100)]
Don't write to inferior_ptid in target.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* target.c (generic_mourn_inferior): Use switch_to_no_thread
instead of writing to inferior_ptid.

4 years agoDon't write to inferior_ptid in inf-ptrace.c
Pedro Alves [Thu, 18 Jun 2020 20:28:20 +0000 (21:28 +0100)]
Don't write to inferior_ptid in inf-ptrace.c

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* inf-ptrace.c (inf_ptrace_target::create_inferior): Switch to the
added thread.
(inf_ptrace_target::attach): Don't write to inferior_ptid.  Switch
to the added thread.
(inf_ptrace_target::detach_success): Use switch_to_no_thread
instead of writing to inferior_ptid.

4 years agoDon't write to inferior_ptid in gdbarch-selftests.c, mock address_space too
Pedro Alves [Thu, 18 Jun 2020 20:28:19 +0000 (21:28 +0100)]
Don't write to inferior_ptid in gdbarch-selftests.c, mock address_space too

Use switch_to_thread instead of writing to inferior_ptid.  This
requires a couple of improvements to the mocking environment.  One is
to mock a pspace too, and assigning it to the inferior.  In turn, this
requires heap-allocating the address space, so that the regular
program_space dtor destroys the address space correctly.

(Note that new the mock program_space is allocated on the stack, and
thus depends on the previous patch that eliminated
delete_program_space.)

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* gdbarch-selftests.c: Include "progspace-and-thread.h".
(register_to_value_test): Mock a program_space too.  Heap-allocate
the address space.  Don't write to inferior_ptid.  Use
switch_to_thread instead.

4 years agogcore, handle exited threads better
Pedro Alves [Thu, 18 Jun 2020 20:28:18 +0000 (21:28 +0100)]
gcore, handle exited threads better

An early (and since discarded) version of this series tried to make
exited threads have distinct PTID between each other, and that change
exposed a problem in linux-tdep.c...  This was exposed by the
gdb.threads/gcore-stale-thread.exp testcase, which is exactly about
calling gcore with an exited thread selected:

 (gdb) [Thread 0x7ffff7fb6740 (LWP 31523) exited]
 PASS: gdb.threads/gcore-stale-thread.exp: continue to breakpoint: break-here
 gcore /home/pedro/gdb/binutils-gdb/build/gdb/testsuite/outputs/gdb.threads/gcore-stale-thread/gcore-stale-thread.core
 /home/pedro/gdb/binutils-gdb/build/../src/gdb/inferior.c:66: internal-error: void set_current_inferior(inferior*): Assertion `inf != NULL' failed.
 A problem internal to GDB has been detected,

That was find_inferior_ptid being called on the "exited" ptid, which
on that previous (and discarded attempt) had pid==-1.  The problem is
that linux-tdep.c, where it looks for the signalled thread, isn't
considering exited threads.  Also, while at it, that code isn't
considering multi-target either, since it is using
iterate_over_threads which iterates over all threads of all targets.
Fixed by switching to range-for iteration instead.

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* linux-tdep.c (find_signalled_thread(thread_info *,void *)):
Delete.
(find_signalled_thread()): New, factored out from
linux_make_corefile_notes and adjusted to handle exited threads.
(linux_make_corefile_notes): Adjust to use the new
find_signalled_thread.

4 years agoDon't write to inferior_ptid in linux_get_siginfo_data
Pedro Alves [Thu, 18 Jun 2020 20:28:17 +0000 (21:28 +0100)]
Don't write to inferior_ptid in linux_get_siginfo_data

gdb/ChangeLog:
2020-06-18  Pedro Alves  <palves@redhat.com>

* linux-tdep.c (btrace_fetch): Save/restore current thread instead
of saving/restoring inferior_ptid.

4 years ago[gdb/testsuite] Move code from gdb_init to default_gdb_init
Tom de Vries [Thu, 18 Jun 2020 13:06:04 +0000 (15:06 +0200)]
[gdb/testsuite] Move code from gdb_init to default_gdb_init

If a baseboard file wants to override a proc foo, but also use the original
proc, it'll have to do something like:
...
rename foo save_foo
proc foo { } {
    ...
    set res [save_foo]
    ...
    return res
}
...
This adds a new proc named save_foo, which introduces the risk of clashing with
an existing proc.

There's a pattern in the gdb testsuite procs, that facilitates this override:
...
proc default_foo { } {
  ...
}

proc foo { } {
    return [default_foo]
}
...
such that in a baseboard file we don't need the rename:
...
proc foo { } {
    ...
    set res [default_foo]
    ...
    return res
}
...

The exception to the pattern though is gdb_init, which has a default_gdb_init
counterpart, but contains much more code than just the call to
default_gdb_init.

Fix this by moving all but the call to default_gdb_init to default_gdb_init.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-06-18  Tom de Vries  <tdevries@suse.de>

* lib/gdb.exp (gdb_init): Move all but call to default_gdb_init to ...
(default_gdb_init): ... here.

4 years agox86: also test alternative VMGEXIT encoding
Jan Beulich [Thu, 18 Jun 2020 07:13:49 +0000 (09:13 +0200)]
x86: also test alternative VMGEXIT encoding

gas/

* testsuite/gas/i386/arch-13.s: Add alternative VMGEXIT case.
* testsuite/gas/i386/arch-13.d: Extend -march=. Adjust
expectations.

opcodes/

* i386-dis.c (prefix_table): Revert the last vmgexit change.

4 years ago[PATCH] gold: Set DF_1_PIE for -pie
Fangrui Song [Thu, 18 Jun 2020 09:46:18 +0000 (10:46 +0100)]
[PATCH] gold: Set DF_1_PIE for -pie

PR gold/26039
* layout.cc (Layout::finish_dynamic_section): Set DF_1_PIE.

elfcpp/
* elfcpp.h (enum DF_1): New enum member DF_1_PIE.

4 years agoFix TUI support checks in gdb.tui tests.
Sandra Loosemore [Thu, 18 Jun 2020 04:57:16 +0000 (21:57 -0700)]
Fix TUI support checks in gdb.tui tests.

2020-06-17 Sandra Loosemore <sandra@codesourcery.com>

gdb/testsuite/
* gdb.tui/basic.exp: Skip test when TUI is unsupported, don't
just say UNSUPPORTED.
* gdb.tui/corefile-run.exp: Likewise.
* gdb.tui/empty.exp: Likewise.
* gdb.tui/list-before.exp: Likewise.
* gdb.tui/list.exp: Likewise.
* gdb.tui/main.exp: Likewise.
* gdb.tui/regs.exp: Likewise.
* gdb.tui/resize.exp: Likewise.
* gdb.tui/tui-layout-asm-short-prog.exp: Likewise.
* gdb.tui/tui-layout-asm.exp: Likewise.
* gdb.tui/tui-missing-src.exp: Likewise.
* gdb.tui/winheight.exp: Likewise.
* gdb.tui/new-layout.exp: Likewise.  Also move check earlier.

4 years agoRemove unnecessary TUI declarations
Tom Tromey [Tue, 16 Jun 2020 23:45:36 +0000 (17:45 -0600)]
Remove unnecessary TUI declarations

I found some unnecessary declarations (and one unused macro) in the
TUI.  This patch removes them.

gdb/ChangeLog
2020-06-17  Tom Tromey  <tom@tromey.com>

* tui/tui-win.h (tui_scroll_forward, tui_scroll_backward)
(tui_scroll_left, tui_scroll_right, struct tui_win_info): Don't
declare.
* tui/tui-data.h (MIN_CMD_WIN_HEIGHT): Remove.

4 years agoAutomatic date update in version.in
GDB Administrator [Thu, 18 Jun 2020 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

4 years agoFix typo in my gdb.debuginfod entry.
Keith Seitz [Wed, 17 Jun 2020 22:07:45 +0000 (15:07 -0700)]
Fix typo in my gdb.debuginfod entry.

4 years agoFix TCL error in gdb.python/py-format-string.exp.
Sandra Loosemore [Wed, 17 Jun 2020 20:43:32 +0000 (13:43 -0700)]
Fix TCL error in gdb.python/py-format-string.exp.

2020-06-17 Sandra Loosemore <sandra@codesourcery.com>

gdb/testsuite/
* gdb.python/py-format-string.exp: Move test for python support
earlier, out of function body.

4 years agogdb: check for partial symtab presence in dwarf2_initialize_objfile
Simon Marchi [Wed, 17 Jun 2020 18:48:46 +0000 (14:48 -0400)]
gdb: check for partial symtab presence in dwarf2_initialize_objfile

This patch fixes an internal error that is triggered when loading the
same binary twice with the index-cache on:

    $ ./gdb -q -nx --data-directory=data-directory
    (gdb) set index-cache on
    (gdb) shell mktemp -d
    /tmp/tmp.BLgouVoPq4
    (gdb) set index-cache directory /tmp/tmp.BLgouVoPq4
    (gdb) file a.out
    Reading symbols from a.out...
    (gdb) file a.out
    Load new symbol table from "a.out"? (y or n) y
    Reading symbols from a.out...
    /home/smarchi/src/binutils-gdb/gdb/dwarf2/read.c:2540: internal-error: void create_cus_from_index(dwarf2_per_bfd*, const gdb_byte*, offset_type, const gdb_byte*, offset_type): Assertion `per_bfd->all_comp_units.empty ()' failed.
    A problem internal to GDB has been detected,
    further debugging may prove unreliable.
    Quit this debugging session? (y or n)

This is what happens:

1. We load the binary the first time, partial symtabs are created,
   per_bfd->all_comp_units is filled from those.
2. Because index-cache is on, we also generate an index in the cache.
3. We load the binary a second time, in dwarf2_initialize_objfile we
   check: was an index already loaded for this BFD?  No, so we try to
   read the index and fill the per-bfd using it.  We do find an index,
   it's in the cache.
4. The function create_cus_from_index asserts (rightfully) that
   per_cu->all_comp_units is empty, and the assertion fails.

This assertion verifies that we are not reading an index for a BFD for
which we have already built partial symtabs or read another index.

The index-cache gives a situation that isn't currently accounted for: a
BFD for which we have built the partial symtabs the first time, but has
an index the second time.

This patch addresses it by checking for the presence of partial symtabs
in dwarf2_initialize_objfile.  If there are, we don't try reading the
index.

gdb/ChangeLog:

* dwarf2/read.c (dwarf2_initialize_objfile): Check for presence
of partial symtabs.

gdb/testsuite/ChangeLog:

* gdb.base/index-cache-load-twice.c: New.
* gdb.base/index-cache-load-twice.exp: New.

Change-Id: Ie05474c44823fcdff852b73170dd28dfd66cb6a2

4 years agogdb/regformats: remove unused regformats/reg-*.dat
Simon Marchi [Wed, 17 Jun 2020 18:42:35 +0000 (14:42 -0400)]
gdb/regformats: remove unused regformats/reg-*.dat

I believe that the .dat files starting with `reg-` are the manually
written ones, the other being generated from xml files from the features
directory.

This patch removes the manually-written files that are no longer needed.
They are unused since the recent series that removed a bunch of
gdbserver ports.

gdb/ChangeLog:

* regformats/reg-arm.dat: Remove.
* regformats/reg-bfin.dat: Remove.
* regformats/reg-cris.dat: Remove.
* regformats/reg-crisv32.dat: Remove.
* regformats/reg-m32r.dat: Remove.
* regformats/reg-tilegx.dat: Remove.
* regformats/reg-tilegx32.dat: Remove.

Change-Id: I55ab6e45e3d0d316cda93f863c51fc9b867adfaa

4 years agogdb, gdbserver: remove ARM regdat files
Simon Marchi [Wed, 17 Jun 2020 18:42:53 +0000 (14:42 -0400)]
gdb, gdbserver: remove ARM regdat files

This patch removes the leftover regformats .dat files for the arm
architecture.  There are no longer relevant, since the arm architecture
has been converted to use feature-based target-descriptions.  These .dat
files are used by GDBserver ports that still use static target
descriptions.

These .dat files are generated from corresponding .xml files in the
features directory.  And since the corresponding .xml files for these
arm .dat files don't exist anymore, it is impossible to re-generated
them.  If you delete these .dat files and type "make" in the features
directory, you'll get:

  make: *** No rule to make target '../regformats/arm/arm-with-iwmmxt.dat', needed by 'all'.  Stop.

So it removes the entries in the `WHICH` variable of
gdb/features/Makefile.

Finally, it removes the rule in gdbserver/Makefile to generate .cc files
from `../gdb/regformats/arm/%.dat`.

gdb/ChangeLog:

* features/Makefile (WHICH): Remove arm files.
* regformats/arm/arm-with-iwmmxt.dat: Remove.
* regformats/arm/arm-with-neon.dat: Remove.
* regformats/arm/arm-with-vfpv2.dat: Remove.
* regformats/arm/arm-with-vfpv3.dat: Remove.

gdbserver/ChangeLog:

* Makefile.in (%-generated.cc: ../gdb/regformats/arm/%.dat):
Remove.

Change-Id: I3b7d989c50e2cb92235c1f7c7071a26839d84c78

4 years agogdb/features: remove rx.xml from XMLTOC list
Simon Marchi [Wed, 17 Jun 2020 18:42:50 +0000 (14:42 -0400)]
gdb/features: remove rx.xml from XMLTOC list

When trying to run `make` in the features directory, in a clean repo, we
get:

    Makefile:254: warning: overriding recipe for target 'rx.c'
    Makefile:250: warning: ignoring old recipe for target 'rx.c'
    make: Nothing to be done for 'all'.

The warnings come from the fact that `rx.xml` is present in two lists,
causing two `rx.c` targets to be defined.  It is ok for it to be in the
FEATURES_XMLFILES list, as this architecture uses the "feature-based"
target-descriptions.  It shouldn't be in the XMLTOC list, as this is for
architectures that define complete/static target descriptions as XML
files.

gdb/ChangeLog:

* features/Makefile (XMLTOC): Remove rx.xml.

Change-Id: Iada4ab54b3d4542588fac543d16ee35a92537319

4 years agoPass INTERNAL_GDBFLAGS when executing GDB
Keith Seitz [Wed, 17 Jun 2020 15:21:30 +0000 (08:21 -0700)]
Pass INTERNAL_GDBFLAGS when executing GDB

gdb.debuginfod/fetch_src_and_symbols.exp attempts to ascertain
whether GDB was built with debuginfod support by executing
"$GDB --configuration".

That seems harmless enough. However, if GDB is not already installed
on the host, the command will fail:

$ ./gdb --config
Exception caught while booting Guile.
Error in function "open-file":
No such file or directory: "/usr/share/gdb/guile/gdb/boot.scm"
./gdb: warning: Could not complete Guile gdb module initialization from:
/usr/share/gdb/guile/gdb/boot.scm.
Limited Guile support is available.
Suggest passing --data-directory=/path/to/gdb/data-directory.
Python Exception <class 'ModuleNotFoundError'> No module named 'gdb':
./gdb: warning:
Could not load the Python gdb module from `/usr/share/gdb/python'.
Limited Python support is available from the _gdb module.
Suggest passing --data-directory=/path/to/gdb/data-directory.
This GDB was configured as follows:
   configure --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu
      [abbreviated output]

The problem here is, of course, that while running in the test suite,
we must pass INTERNAL_GDBFLAGS in order to pick up the --data-directory
option.

gdb/testsuite/ChangeLog
2020-06-17  Keith Seitz  <keiths@redhat.com>

* gdb.deuginfod/fetch_src_and_symbols.exp: Pass INTERNAL_GDBFLAGS
when executing "gdb --configuration".

4 years agold: Suppress warning for unsupported attribute from older GCC
H.J. Lu [Wed, 17 Jun 2020 14:53:19 +0000 (07:53 -0700)]
ld: Suppress warning for unsupported attribute from older GCC

Suppress warning for unsupported attribute from older GCC:

.../ld/testsuite/ld-elf/pr25754-1a.c:9: warning: 'noclone' attribute directive ignored
.../ld/testsuite/ld-elf/pr25754-1a.c:9: warning: 'noclone' attribute directive ignored
ERROR: .../ld/testsuite/ld-elf/pr25754-1a.c: compilation failed
UNRESOLVED: Build pr25754-1a ( )

* testsuite/ld-elf/linux-x86.exp (check_pr25749a): Append "-w"
to cflags.

4 years agold: Require GCC 5 for Build pr25749-1b (-pie -fPIE)
H.J. Lu [Wed, 17 Jun 2020 14:39:11 +0000 (07:39 -0700)]
ld: Require GCC 5 for Build pr25749-1b (-pie -fPIE)

Before GCC 5, Build pr25749-1b (-pie -fPIE) won't trigger the expected
linker error.

* testsuite/ld-elf/linux-x86.exp: Require GCC 5 for Build
pr25749-1b (-pie -fPIE).

4 years agox86: Delete incorrect vmgexit entry in prefix_table
Cui,Lili [Tue, 16 Jun 2020 14:11:31 +0000 (07:11 -0700)]
x86: Delete incorrect vmgexit entry in prefix_table

* i386-dis.c (prefix_table): Delete the incorrect vmgexit.

4 years ago[gdb/testsuite] Remove dependence on tcl_unknown
Tom de Vries [Wed, 17 Jun 2020 13:40:41 +0000 (15:40 +0200)]
[gdb/testsuite] Remove dependence on tcl_unknown

In gdb_init we install a local version of ::unknown, which relies on
::tcl_unknown, which is defined by dejagnu.

This proc may be moved into a namespace, or disappear altogether, as
indicated by dejagnu maintainers, so we can't rely on it.

Fix this by recreating tcl's version of unknown, and using that instead.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-06-17  Tom de Vries  <tdevries@suse.de>

* lib/gdb.exp (gdb_tcl_unknown): New proc.
(gdb_init): Use gdb_tcl_unknown for ::unknown override.  Make override
conditional on presence of gdb_tcl_unknown.
(gdb_finish): Make override undo conditional on presence of
gdb_tcl_unknown.

4 years agoUpdate thread_control_state::trap_expected comments
Pedro Alves [Wed, 17 Jun 2020 10:56:43 +0000 (11:56 +0100)]
Update thread_control_state::trap_expected comments

The comments describing trap_expected are out of date.  It
predates displaced stepping and non-stop mode ("keep other threads
stopped").  It predates stepping over watchpoints with breakpoints
inserted (keep_going_pass_signal).  Says the variable is cleared
in normal_stop, when it isn't.  This fixes it.

gdb/ChangeLog:
2020-06-17  Pedro Alves  <palves@redhat.com>

* gdbthread.h (thread_control_state) <trap_expected> Update
comments.

4 years agogdb: Convert language la_lookup_symbol_nonlocal field to a method
Andrew Burgess [Mon, 1 Jun 2020 21:17:59 +0000 (22:17 +0100)]
gdb: Convert language la_lookup_symbol_nonlocal field to a method

This commit changes the language_data::la_lookup_symbol_nonlocal
function pointer member variable into a member function of
language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_lookup_symbol_nonlocal): Rename to
ada_language::lookup_symbol_nonlocal.
(ada_language_data): Delete la_lookup_symbol_nonlocal initializer.
(ada_language::lookup_symbol_nonlocal): New member function,
implementation from ada_lookup_symbol_nonlocal.
* c-lang.c (c_language_data): Delete la_lookup_symbol_nonlocal
initializer.
(cplus_language_data): Delete la_lookup_symbol_nonlocal
initializer.
(cplus_language::lookup_symbol_nonlocal): New member function.
(asm_language_data): Delete la_lookup_symbol_nonlocal initializer.
(minimal_language_data) Likewise.
* cp-namespace.c (cp_lookup_nested_symbol): Update comment.
* d-lang.c (d_language_data): Delete la_lookup_symbol_nonlocal
initializer.
(d_language::lookup_symbol_nonlocal): New member function.
* f-lang.c (f_language_data): Delete la_lookup_symbol_nonlocal
initializer.
(f_language::lookup_symbol_nonlocal): New member function.
* go-lang.c (go_language_data): Delete la_lookup_symbol_nonlocal
initializer.
* language.c (unknown_language_data): Likewise.
(auto_language_data): Likewise.
* language.h (language_data): Delete la_lookup_symbol_nonlocal
field.
(language_defn::lookup_symbol_nonlocal): New member function.
* m2-lang.c (m2_language_data): Delete la_lookup_symbol_nonlocal
initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_lookup_symbol_nonlocal): Rename to
rust_language::lookup_symbol_nonlocal.
(rust_language_data): Delete la_lookup_symbol_nonlocal
initializer.
(rust_language::lookup_symbol_nonlocal): New member function,
implementation from rust_lookup_symbol_nonlocal.
* symtab.c (lookup_symbol_aux): Update call to
lookup_symbol_nonlocal.
(basic_lookup_symbol_nonlocal): Rename to...
(language_defn::lookup_symbol_nonlocal): ...this, and update
header comment.  Remove language_defn parameter, and replace with
uses of `this'.
* symtab.h (basic_lookup_symbol_nonlocal): Delete declaration.

4 years agogdb: Convert language la_value_print_inner field to a method
Andrew Burgess [Mon, 1 Jun 2020 14:36:30 +0000 (15:36 +0100)]
gdb: Convert language la_value_print_inner field to a method

This commit changes the language_data::la_value_print_inner function
pointer member variable into a member function of language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_language_data): Delete la_value_print_inner
initializer.
(ada_language::value_print_inner): New member function.
* c-lang.c (c_language_data): Delete la_value_print_inner
initializer.
(cplus_language_data): Likewise.
(asm_language_data): Likewise.
(minimal_language_data): Likewise.
* d-lang.c (d_language_data): Likewise.
(d_language::value_print_inner): New member function.
* f-lang.c (f_language_data): Delete la_value_print_inner
initializer.
(f_language::value_print_inner): New member function.
* f-lang.h (f_value_print_innner): Rename to...
(f_value_print_inner): ...this (note spelling of 'inner').
* f-valprint.c (f_value_print_innner): Rename to...
(f_value_print_inner): ...this (note spelling of 'inner').
* go-lang.c (go_language_data): Delete la_value_print_inner
initializer.
(go_language::value_print_inner): New member function.
* language.c (language_defn::value_print_inner): Define new member
function.
(unk_lang_value_print_inner): Delete.
(unknown_language_data): Delete la_value_print_inner initializer.
(unknown_language::value_print_inner): New member function.
(auto_language_data): Delete la_value_print_inner initializer.
(auto_language::value_print_inner): New member function.
* language.h (language_data): Delete la_value_print_inner field.
(language_defn::value_print_inner): Delcare new member function.
* m2-lang.c (m2_language_data): Delete la_value_print_inner
initializer.
(m2_language::value_print_inner): New member function.
* objc-lang.c (objc_language_data): Delete la_value_print_inner
initializer.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
(pascal_language::value_print_inner): New member function.
* rust-lang.c (rust_language_data): Delete la_value_print_inner
initializer.
(rust_language::value_print_inner): New member function.
* valprint.c (do_val_print): Update call to value_print_inner.

4 years agogdb: Convert language la_value_print field to a method
Andrew Burgess [Mon, 1 Jun 2020 14:21:33 +0000 (15:21 +0100)]
gdb: Convert language la_value_print field to a method

This commit changes the language_data::la_value_print function pointer
member variable into a member function of language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_language_data): Delete la_value_print
initializer.
(ada_language::value_print): New member function.
* c-lang.c (c_language_data): Delete la_value_print initializer.
(cplus_language_data): Likewise.
(asm_language_data): Likewise.
(minimal_language_data): Likewise.
* d-lang.c (d_language_data): Likewise.
* f-lang.c (f_language_data): Likewise.
* go-lang.c (go_language_data): Likewise.
* language.c (unk_lang_value_print): Delete.
(language_defn::value_print): Define new member function.
(unknown_language_data): Delete la_value_print initializer.
(unknown_language::value_print): New member function.
(auto_language_data): Delete la_value_print initializer.
(auto_language::value_print): New member function.
* language.h (language_data): Delete la_value_print field.
(language_defn::value_print): Declare new member function.
(LA_VALUE_PRINT): Update call to value_print.
* m2-lang.c (m2_language_data): Delete la_value_print initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
(pascal_language::value_print): New member function.
* rust-lang.c (rust_language_data): Delete la_value_print
initializer.

4 years agogdb: Convert language la_watch_location_expression field to a method
Andrew Burgess [Mon, 1 Jun 2020 14:06:43 +0000 (15:06 +0100)]
gdb: Convert language la_watch_location_expression field to a method

This commit changes the language_data::la_watch_location_expression
function pointer member variable into a member function of
language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_watch_location_expression): Rename to
ada_language::watch_location_expression.
(ada_language_data): Delete la_watch_location_expression
initializer.
(ada_language::watch_location_expression): New member function,
implementation from ada_watch_location_expression.
* breakpoint.c (watch_command_1): Update call to
watch_location_expression.
* c-lang.c (c_watch_location_expression): Rename to
language_defn::watch_location_expression.
(c_language_data): Delete la_watch_location_expression
initializer.
(cplus_language_data): Likewise.
(asm_language_data): Likewise.
(minimal_language_data): Likewise.
* c-lang.h (c_watch_location_expression): Delete declaration.
* d-lang.c (d_language_data): Delete la_watch_location_expression
initializer.
* f-lang.c (f_language_data): Likewise.
* go-lang.c (go_language_data): Likewise.
* language.c (language_defn::watch_location_expression): Member
function implementation from c_watch_location_expression.
(unknown_language_data): Delete la_watch_location_expression
initializer.
(auto_language_data): Likewise.
* language.h (language_data): Delete la_watch_location_expression
field.
(language_defn::watch_location_expression): Declare new member
function.
* m2-lang.c (m2_language_data): Delete
la_watch_location_expression initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_watch_location_expression): Rename to
rust_language::watch_location_expression.
(rust_language_data): Delete la_watch_location_expression
initializer.
(rust_language::watch_location_expression): New member function,
implementation from rust_watch_location_expression.

4 years agogdb: Convert language la_collect_symbol_completion_matches field to a method
Andrew Burgess [Mon, 1 Jun 2020 13:53:55 +0000 (14:53 +0100)]
gdb: Convert language la_collect_symbol_completion_matches field to a method

This commit changes the
language_data::la_collect_symbol_completion_matches function pointer
member variable into a member function of language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_collect_symbol_completion_matches): Rename to
ada_language::collect_symbol_completion_matches.
(ada_language_data): Delete la_collect_symbol_completion_matches
initializer.
(ada_language::collect_symbol_completion_matches): New member
function, implementation from
ada_collect_symbol_completion_matches.
* c-lang.c (c_language_data): Delete
la_collect_symbol_completion_matches initializer.
(cplus_language_data): Likewise.
(asm_language_data): Likewise.
(minimal_language_data): Likewise.
* d-lang.c (d_language_data): Likewise.
* f-lang.c (f_collect_symbol_completion_matches): Rename to
f_language::collect_symbol_completion_matches.
(f_language_data): Delete la_collect_symbol_completion_matches
initializer.
(f_language::collect_symbol_completion_matches) New member
function, implementation from f_collect_symbol_completion_matches.
* go-lang.c (go_language_data): Delete
la_collect_symbol_completion_matches initializer.
* language.c (unknown_language_data): Likewise.
(auto_language_data): Likewise.
* language.h (language_data): Delete
la_collect_symbol_completion_matches field.
(language_defn::collect_symbol_completion_matches): New member
function.
* m2-lang.c (m2_language_data): Delete
la_collect_symbol_completion_matches initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_language_data): Likewise.
* symtab.c (default_collect_symbol_completion_matches): Delete.
(collect_symbol_completion_matches): Update call to
collect_symbol_completion_matches.
(collect_symbol_completion_matches_type): Likewise.
* symtab.h (default_collect_symbol_completion_matches): Delete
declaration.

4 years agogdb: Convert language la_word_break_characters field to a method
Andrew Burgess [Mon, 1 Jun 2020 13:40:22 +0000 (14:40 +0100)]
gdb: Convert language la_word_break_characters field to a method

This commit changes the language_data::la_word_break_characters
function pointer member variable into a member function of
language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_get_gdb_completer_word_break_characters): Delete.
(ada_language_data): Delete la_word_break_characters initializer.
(ada_language::word_break_characters): New member function.
* c-lang.c (c_language_data): Delete la_word_break_characters
initializer.
(cplus_language_data): Likewise.
(asm_language_data): Likewise.
(minimal_language_data): Likewise.
* completer.c: Update global comment.
(advance_to_expression_complete_word_point): Update call to
word_break_characters.
(complete_files_symbols): Likewise.
(complete_line_internal_1): Likewise.
(default_completer_handle_brkchars): Likewise.
(skip_quoted_chars): Likewise.
* d-lang.c (d_language_data): Delete la_word_break_characters
initializer.
* f-lang.c (f_word_break_characters): Delete.
(f_language_data): Delete la_word_break_characters initializer.
(f_language::word_break_characters): New member function.
* go-lang.c (go_language_data): Delete la_word_break_characters
initializer.
* language.c (unknown_language_data): Likewise.
(auto_language_data): Likewise.
* language.h (default_word_break_characters): Move declaration to
earlier in the file.
(language_data): Delete la_word_break_characters field.
(language_defn::word_break_characters): New member function.
* m2-lang.c (m2_language_data): Delete la_word_break_characters
initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_language_data): Likewise.

4 years agogdb: Convert language la_get_symbol_name_matcher field to a method
Andrew Burgess [Mon, 1 Jun 2020 10:46:54 +0000 (11:46 +0100)]
gdb: Convert language la_get_symbol_name_matcher field to a method

This commit changes the language_data::la_get_symbol_name_matcher
function pointer member variable into a member function of
language_defn.

There should be no user visible changes after this commit.

Before this commit access to the la_get_symbol_name_matcher function
pointer was through the get_symbol_name_matcher function, which looked
something like this (is pseudo-code):

  <return-type>
  get_symbol_name_matcher (language_defn *lang, <other args>)
  {
    if (current_language == ada)
      current_language->la_get_symbol_name_matcher (<other args>);
    else
      lang->la_get_symbol_name_matcher (<other args>);
  }

In this commit I moved the get_symbol_name_matcher as a non-virtual
function in the language_defn base class, I then add a new virtual
method that is only used from within get_symbol_name_matcher, this can
then be overridden by specific languages as needed.  So we now have:

  class language_defn
  {
    <return-type> get_symbol_name_matcher (<args>)
    {
      if (current_language == ada)
        return current_language->get_symbol_name_matcher_inner (<args>);
      else
        return this->get_symbol_name_matcher_inner (<args>);
    }

    virtual <return-type> get_symbol_name_matcher_inner (<args>)
    {
        ....
    }
  }

gdb/ChangeLog:

* ada-lang.c (ada_get_symbol_name_matcher): Update header comment.
(ada_language_data): Delete la_get_symbol_name_matcher
initializer.
(language_defn::get_symbol_name_matcher_inner): New member
function.
* c-lang.c (c_language_data): Delete la_get_symbol_name_matcher
initializer.
(cplus_language_data): Likewise.
(cplus_language::get_symbol_name_matcher_inner): New member
function.
(asm_language_data): Delete la_get_symbol_name_matcher initializer.
(minimal_language_data): Likewise.
* cp-support.h (cp_get_symbol_name_matcher): Update header comment.
* d-lang.c (d_language_data): Delete la_get_symbol_name_matcher
initializer.
* dictionary.c (iter_match_first_hashed): Update call to
get_symbol_name_matcher.
(iter_match_next_hashed): Likewise.
(iter_match_next_linear): Likewise.
* dwarf2/read.c (dw2_expand_symtabs_matching_symbol): Likewise.
* f-lang.c (f_language_data): Delete la_get_symbol_name_matcher
initializer.
(f_language::get_symbol_name_matcher_inner): New member function.
* go-lang.c (go_language_data): Delete la_get_symbol_name_matcher
initializer.
* language.c (default_symbol_name_matcher): Update header comment,
make static.
(language_defn::get_symbol_name_matcher): New definition.
(language_defn::get_symbol_name_matcher_inner): Likewise.
(get_symbol_name_matcher): Delete.
(unknown_language_data): Delete la_get_symbol_name_matcher
initializer.
(auto_language_data): Likewise.
* language.h (language_data): Delete la_get_symbol_name_matcher
field.
(language_defn::get_symbol_name_matcher): New member function.
(language_defn::get_symbol_name_matcher_inner): Likewise.
(default_symbol_name_matcher): Delete declaration.
* linespec.c (find_methods): Update call to
get_symbol_name_matcher.
* m2-lang.c (m2_language_data): Delete la_get_symbol_name_matcher
initializer.
* minsyms.c (lookup_minimal_symbol): Update call to
get_symbol_name_matcher.
(iterate_over_minimal_symbols): Likewise.
* objc-lang.c (objc_language_data): Delete
la_get_symbol_name_matcher initializer.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* psymtab.c (psymbol_name_matches): Update call to
get_symbol_name_matcher.
* rust-lang.c (rust_language_data): Delete
la_get_symbol_name_matcher initializer.
* symtab.c (symbol_matches_search_name): Update call to
get_symbol_name_matcher.
(compare_symbol_name): Likewise.

4 years agogdb: Convert language la_compute_program field to a method
Andrew Burgess [Mon, 1 Jun 2020 10:07:52 +0000 (11:07 +0100)]
gdb: Convert language la_compute_program field to a method

This commit changes the language_data::la_compute_program function
pointer member variable into a member function of language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_language_data): Delete la_compute_program
initializer.
* c-lang.c (c_language_data): Likewise.
(c_language::compute_program): New member function.
(cplus_language_data): Delete la_compute_program initializer.
(cplus_language::compute_program): New member function.
(asm_language_data): Delete la_compute_program initializer.
(minimal_language_data): Likewise.
* c-lang.h (c_compute_program): Update comment.
(cplus_compute_program): Likewise.
* compile/compile-c-support.c (c_compute_program): Likewise.
(cplus_compute_program): Likewise.
* compile/compile.c (compile_to_object): Update call to
la_compute_program.
* d-lang.c (d_language_data): Delete la_compute_program
initializer.
* f-lang.c (f_language_data): Likewise.
* go-lang.c (go_language_data): Likewise.
* language.c (unknown_language_data): Likewise.
(auto_language_data): Likewise.
* language.h (language_data): Delete la_compute_program field.
(language_defn::compute_program): New member function.
* m2-lang.c (m2_language_data): Delete la_compute_program
initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_language_data): Likewise.

4 years agogdb: Convert language la_class_name_from_physname field to a method
Andrew Burgess [Mon, 1 Jun 2020 09:53:05 +0000 (10:53 +0100)]
gdb: Convert language la_class_name_from_physname field to a method

This commit changes the language_data::la_class_name_from_physname function
pointer member variable into a member function of language_defn.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_language_data) Delete
la_class_name_from_physname initializer.
* c-lang.c (c_language_data): Likewise.
(cplus_language_data): Likewise.
(cplus_language::class_name_from_physname): New member function.
(asm_language_data): Delete la_class_name_from_physname
initializer.
(minimal_language_data): Likewise.
* d-lang.c (d_language_data): Likewise.
* dwarf2/read.c (guess_partial_die_structure_name): Update to call
method on language_defn class.
(guess_full_die_structure_name): Likewise.
* f-lang.c (f_language_data): Delete la_class_name_from_physname
initializer.
* go-lang.c (go_language_data): Likewise.
* language.c (language_class_name_from_physname): Delete.
(unk_lang_class_name): Delete.
(unknown_language_data): Delete la_class_name_from_physname
initializer.
(auto_language_data): Likewise.
* language.h (language_data): Delete la_class_name_from_physname
field.
(language_defn::class_name_from_physname): New function.
(language_class_name_from_physname): Delete declaration.
* m2-lang.c (m2_language_data): Delete la_class_name_from_physname
initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_language_data): Likewise.

4 years agoUse macros for TUI window names
Tom Tromey [Tue, 16 Jun 2020 23:55:57 +0000 (17:55 -0600)]
Use macros for TUI window names

Christian pointed out that tui-layout.c hard-codes various window
names.  This patch changes the code to use the macros from tui-data.h
instead.  For each window, I searched for uses of the name; but I only
found any in tui-layout.c.  This also adds a new macro to account for
the "status" window.

gdb/ChangeLog
2020-06-16  Tom Tromey  <tom@tromey.com>

* tui/tui-data.h (STATUS_NAME): New macro.
* tui/tui-layout.c (tui_remove_some_windows)
(initialize_known_windows, tui_register_window)
(tui_layout_split::remove_windows, initialize_layouts)
(tui_new_layout_command): Don't use hard-coded window names.

4 years agoFix crash when exiting TUI with gdb -tui
Tom Tromey [Tue, 16 Jun 2020 23:55:57 +0000 (17:55 -0600)]
Fix crash when exiting TUI with gdb -tui

PR tui/25348 points out that, when "gdb -tui" is used, then exiting
the TUI will cause a crash.

This happens because tui_setup_io stashes some readline variables --
but because this happens before readline is initialized, some of these
are NULL.  Then, when exiting the TUI, the NULL values are "restored",
causing a crash in readline.

This patch fixes the problem by ensuring that readline is initialized
first.  Back in commit 11061048d ("Give a name to the TUI SingleKey
keymap"), a call to rl_initialize was removed from
tui_initialize_readline; this patch resurrects the call, but moves it
to the end of the function, so as not to remove the ability to modify
the SingleKey map from .inputrc.

gdb/ChangeLog
2020-06-16  Tom Tromey  <tom@tromey.com>

PR tui/25348:
* tui/tui.c (tui_ensure_readline_initialized): Rename from
tui_initialize_readline.  Only run once.  Call rl_initialize.
* tui/tui.h (tui_ensure_readline_initialized): Rename from
tui_initialize_readline.
* tui/tui-io.c (tui_setup_io): Call
tui_ensure_readline_initialized.
* tui/tui-interp.c (tui_interp::init): Update.

4 years agoFix C-x 1 from gdb prompt
Tom Tromey [Tue, 16 Jun 2020 23:55:57 +0000 (17:55 -0600)]
Fix C-x 1 from gdb prompt

Pedro pointed out on irc that C-x 1 from the gdb prompt will cause a
crash.  This happened because of a bug in remove_windows -- it would
always remove all the windows from the layout.  This patch fixes this
bug, and also arranges to have C-x 1 preserve the status window.

gdb/ChangeLog
2020-06-16  Tom Tromey  <tom@tromey.com>

* tui/tui-layout.c (tui_layout_split::remove_windows): Fix logic.
Also preserve the status window.

4 years agoAutomatic date update in version.in
GDB Administrator [Wed, 17 Jun 2020 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

4 years agoFix crash when TUI window creation fails
Tom Tromey [Tue, 16 Jun 2020 23:48:38 +0000 (17:48 -0600)]
Fix crash when TUI window creation fails

If a TUI window is written in Python, and if the window construction
function fails, then gdb will crash.  This patch fixes the crash.

gdb/ChangeLog
2020-06-16  Tom Tromey  <tom@tromey.com>

* python/py-tui.c (tui_py_window::~tui_py_window): Handle case
where m_window==nullptr.

gdb/testsuite/ChangeLog
2020-06-16  Tom Tromey  <tom@tromey.com>

* gdb.python/tui-window.py (failwin): New function.  Register it
as a TUI window type.
* gdb.python/tui-window.exp: Create new "fail" layout.  Test it.

4 years agox86: Correct noavx512_vp2intersect
Cui,Lili [Tue, 16 Jun 2020 17:07:15 +0000 (10:07 -0700)]
x86: Correct noavx512_vp2intersect

* config/tc-i386.c (cpu_arch): Correct noavx512_vp2intersect
cpu_arch to CPU_ANY_VP2INTERSECT_FLAGS.
* doc/c-i386.texi: Add avx512_vp2intersect.

4 years agoRe: Use __asm__ rather than asm in ld testsuite
Alan Modra [Tue, 16 Jun 2020 13:09:44 +0000 (22:39 +0930)]
Re: Use __asm__ rather than asm in ld testsuite

* testsuite/ld-elf/pr19553c.c: Replace asm with __asm__.
* testsuite/ld-elfvers/vers27b.c: Likewise.

4 years agoUse __asm__ rather than asm in ld testsuite
Alan Modra [Tue, 16 Jun 2020 12:16:00 +0000 (21:46 +0930)]
Use __asm__ rather than asm in ld testsuite

* testsuite/ld-elf/pr23428.c: Define _DEFAULT_SOURCE.
* testsuite/ld-elf/indirect1b.c: Replace asm with __asm__.
* testsuite/ld-elf/indirect2.c: Likewise.
* testsuite/ld-elf/indirect3b.c: Likewise.
* testsuite/ld-elf/indirect4b.c: Likewise.
* testsuite/ld-elf/pr14323-2.c: Likewise.
* testsuite/ld-elf/pr18720b.c: Likewise.
* testsuite/ld-elf/pr23428.c: Likewise.
* testsuite/ld-elfvsb/common.c: Likewise.
* testsuite/ld-elfvsb/main.c: Likewise.
* testsuite/ld-elfvsb/sh1.c: Likewise.
* testsuite/ld-elfvsb/test.c: Likewise.
* testsuite/ld-pe/aligncomm-1.c: Likewise.
* testsuite/ld-pe/aligncomm-2.c: Likewise.
* testsuite/ld-pe/aligncomm-3.c: Likewise.
* testsuite/ld-pe/aligncomm-4.c: Likewise.
* testsuite/ld-plugin/pr23958.c: Likewise.
* testsuite/ld-size/size-1b.c: Likewise.
* testsuite/ld-size/size-2b.c: Likewise.
* testsuite/ld-size/size-3a.c: Likewise.
* testsuite/ld-size/size-3b.c: Likewise.
* testsuite/ld-size/size-3c.c: Likewise.
* testsuite/ld-size/size-4b.c: Likewise.
* testsuite/ld-size/size-5b.c: Likewise.
* testsuite/ld-size/size-6a.c: Likewise.
* testsuite/ld-size/size-7a.c: Likewise.
* testsuite/ld-size/size-8a.c: Likewise.
* testsuite/ld-size/size-9b.c: Likewise.
* testsuite/ld-size/size-10b.c: Likewise.

4 years agoUse __asm__ rather than asm in gold testsuite
Alan Modra [Tue, 16 Jun 2020 11:55:18 +0000 (21:25 +0930)]
Use __asm__ rather than asm in gold testsuite

discard_locals_test.c:28:6: error: expected declaration specifiers or
‘...’ before string constant
 asm (".Lshould_be_discarded:");
      ^

* testsuite/discard_locals_test.c: Replace uses of asm with __asm__.
* testsuite/discard_locals_relocatable_test.c: Likewise.

4 years agoAdd two missing return values in gdb.python/py-nested-maps.c
Gary Benson [Tue, 16 Jun 2020 11:41:28 +0000 (12:41 +0100)]
Add two missing return values in gdb.python/py-nested-maps.c

Two functions in gdb.python/py-nested-maps.c are missing return
values.  This causes clang to fail to compile the file with the
following error:
  warning: control reaches end of non-void function [-Wreturn-type]

This commit fixes, by causing the two functions to return pointers
to the objects they've just allocated and initialized.  I didn't
investigate how this test had been passing with other compilers;
I'm assuming serendipity, that in each function the value to be
returned was already in the register it would need to be in to be
the function's return value.

gdb/testsuite/ChangeLog:

* gdb.python/py-nested-maps.c (create_map): Add missing return
value.
(create_map_map): Likewise.

4 years agoUse CXXCOMPILE in gold/testsuite/Makefile for c++ testcases
Alan Modra [Tue, 16 Jun 2020 08:39:33 +0000 (18:09 +0930)]
Use CXXCOMPILE in gold/testsuite/Makefile for c++ testcases

I was playing with passing -std=c99 to an older version of gcc by
using CC="gcc-4 -std=c99", and ran into
cc1plus: error: command line option â€˜-std=c99’ is valid for C/ObjC but
not for C++ [-Werror]
This obvious fix uses the correct compiler for a number of gold
testcases.

* testsuite/Makefile.am (export_dynamic_plugin.o): Use CXXCOMPILE.
(plugin_test_wrap_symbols_1.o): Likewise.
(plugin_test_wrap_symbols_2.o): Likewise.
* testsuite/Makefile.in: Regenerate.

4 years agox86: drop SSE4a from SSE check again
Jan Beulich [Tue, 16 Jun 2020 08:34:55 +0000 (10:34 +0200)]
x86: drop SSE4a from SSE check again

Upon re-consideration in commit 569d50f1c611 ("x86: further refine SSE
check (SSE4a, SHA, GFNI)") I went too far: Mixing of SSE and AVX insns
doesn't suffer as bad a penalty on AMD CPUs as on Intel ones. SSE4a
being an AMD-only extension, it shouldn't be part of the ISA extensions
set for which the diagnostic may get issued. Undo that part.

4 years agoReally remove tic30-aout support
Alan Modra [Tue, 16 Jun 2020 02:43:05 +0000 (12:13 +0930)]
Really remove tic30-aout support

bfd/
* aout-tic30.c: Delete file.
* Makefile.am (BFD32_BACKENDS): Remove aout-tic30.lo.
(BFD32_BACKENDS_CFILES): Remove aout-tic30.c.
* config.bfd (c30-*-*aout*, tic30-*-*aout*): Remove entry.
(xc16x-*-elf): Sort properly.
* configure.ac: Remove tic30_aout_vec.
* targets.c: Likewise.
* Makefile.in: Regenerate.
* configure: Regenerate.
* po/SRC-POTFILES.in: Regenerate.
gas/
* config/tc-tic30.h: Remove OBJ_AOUT support.
* configure.tgt: Delete tic30-*-*aout* entry.
ld/
* emulparams/tic30aout.sh: Delete file.
* scripttempl/tic30aout.sc: Delete file.
* Makefile.am: Remove etic30aout.c from ALL_EMULATION_SOURCES and
delete dependency.
* configure.tgt: Delete tic30-*-*aout* entry.
* testsuite/ld-scripts/sane1.d: Delete tic30-*-aout mention.
* testsuite/ld-scripts/segment-start.d: Likewise.
* Makefile.in: Regenerate.
* po/BLD-POTFILES.in: Regenerate.

4 years agoAutomatic date update in version.in
GDB Administrator [Tue, 16 Jun 2020 00:00:20 +0000 (00:00 +0000)]
Automatic date update in version.in

4 years agoxtensa: allow runtime ABI selection
Max Filippov [Sun, 10 May 2020 15:03:08 +0000 (08:03 -0700)]
xtensa: allow runtime ABI selection

2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
bfd/
* elf32-xtensa.c (XSHAL_ABI, XTHAL_ABI_UNDEFINED)
(XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New macros.
(elf32xtensa_abi): New global variable.
(xtensa_abi_choice): New function.
(elf_xtensa_create_plt_entry): Use xtensa_abi_choice instead of
XSHAL_ABI to select PLT code.

gas/
* config/tc-xtensa.c (XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New
macros.
(elf32xtensa_abi): New declaration.
(option_abi_windowed, option_abi_call0): New enum constants.
(md_longopts): Add entries for --abi-windowed and --abi-call0.
(md_parse_option): Add handlers for --abi-windowed and
--abi-call0.
(xtensa_add_config_info): Use xtensa_abi_choice instead of
XSHAL_ABI to format ABI tag.
* doc/as.texi (Target Xtensa options): Add --abi-windowed and
--abi-call0 to the list of options.
* doc/c-xtensa.texi: Add description for options --abi-windowed
and --abi-call0.
* testsuite/gas/xtensa/abi-call0.d: New test definition.
* testsuite/gas/xtensa/abi-windowed.d: New test definition.
* testsuite/gas/xtensa/abi.s: New test source.

include/
* elf/xtensa.h (xtensa_abi_choice): New declaration.

ld/
* emultempl/xtensaelf.em (XSHAL_ABI): Remove macro definition.
(XTHAL_ABI_UNDEFINED, XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New
macros.
(elf32xtensa_abi): New declaration.
(xt_config_info_unpack_and_check): Set elf32xtensa_abi if it is
undefined.  Use xtensa_abi_choice instead of XSHAL_ABI to test
ABI tag consistency.
(xtensa_add_config_info): Use xtensa_abi_choice instead of
XSHAL_ABI to format ABI tag.
(PARSE_AND_LIST_PROLOGUE): Define OPTION_ABI_WINDOWED,
OPTION_ABI_CALL0 and declare elf32xtensa_abi.
(PARSE_AND_LIST_LONGOPTS): Add entries for --abi-windowed and
--abi-call0.
(PARSE_AND_LIST_OPTIONS): Add help text for --abi-windowed and
--abi-call0.
(PARSE_AND_LIST_ARGS_CASES): Add handlers for --abi-windowed and
--abi-call0.
* ld.texi: Add description for options --abi-windowed and
--abi-call0.

4 years agogold, ld: Implement -z start-stop-visibility=... option.
Roland McGrath [Mon, 15 Jun 2020 18:45:02 +0000 (11:45 -0700)]
gold, ld: Implement -z start-stop-visibility=... option.

gold/
Implement -z start-stop-visibility=... option.
* options.h (class General_options): Handle -z start-stop-visibility=.
(General_options::start_stop_visibility_enum): New public method.
(General_options::set_start_stop_visibility_enum): New private method.
(General_options::start_stop_visibility_enum_): New private member.
* options.cc (General_options::General_options): Add initializer.
(General_options::finalize): Set this->start_stop_visibility_enum_
from string value.
* layout.cc (Layout::define_section_symbols): Use option setting.

bfd/
* elflink.c (bfd_elf_define_start_stop): Use start_stop_visibility
field of bfd_link_info.

include/
* bfdlink.h (struct bfd_link_info): New field start_stop_visibility.

ld/
* NEWS: Mention -z start-stop-visibility=... option for ELF.
* ld.texi (Options): Document -z start-stop-visibility=... option.
* ldmain.c (main): Initialize link_info.start_stop_visibility.
* emultempl/elf.em (gld${EMULATION_NAME}_handle_option):
Parse -z start-stop-visibility=... option.

4 years agoChange target_read_string API
Tom Tromey [Mon, 15 Jun 2020 12:28:09 +0000 (06:28 -0600)]
Change target_read_string API

This simplifies the target_read_string API a bit.

Note that some code was using safe_strerror on the error codes
returned by target_read_string.  It seems to me that this is incorrect
(if it was ever correct, it must have been quite a long time ago).

gdb/ChangeLog
2020-06-15  Tom Tromey  <tromey@adacore.com>

* windows-nat.c (windows_nat::handle_output_debug_string):
Update.
(windows_nat::handle_ms_vc_exception): Update.
* target.h (target_read_string): Change API.
* target.c (target_read_string): Change API.
* solib-svr4.c (open_symbol_file_object, svr4_read_so_list):
Update.
* solib-frv.c (frv_current_sos): Update.
* solib-dsbt.c (dsbt_current_sos): Update.
* solib-darwin.c (darwin_current_sos): Update.
* linux-thread-db.c (inferior_has_bug): Update.
* expprint.c (print_subexp_standard): Update.
* ada-lang.c (ada_main_name, ada_tag_name_from_tsd)
(ada_exception_message_1): Update.

4 years agoRemove a use of target_read_string
Tom Tromey [Mon, 15 Jun 2020 12:28:09 +0000 (06:28 -0600)]
Remove a use of target_read_string

linux-tdep.c:dump_mapping_p uses target_read_string, but in a way that
does not really make sense.  It's better to use target_read_memory
here.

gdb/ChangeLog
2020-06-15  Tom Tromey  <tromey@adacore.com>

* linux-tdep.c (dump_mapping_p): Use target_read_memory.

4 years agoRewrite target_read_string
Tom Tromey [Mon, 15 Jun 2020 12:28:09 +0000 (06:28 -0600)]
Rewrite target_read_string

This rewrites target_read_string in terms of read_string.

gdb/ChangeLog
2020-06-15  Tom Tromey  <tromey@adacore.com>

* valprint.c (read_string): Update comment.
* target.c (MIN): Remove.
(target_read_string): Rewrite.

4 years agoRemove read_memory_string
Tom Tromey [Mon, 15 Jun 2020 12:28:09 +0000 (06:28 -0600)]
Remove read_memory_string

read_memory_string is redundant and only called in a couple of spots.
This patch removes it in favor of target_read_string.

gdb/ChangeLog
2020-06-15  Tom Tromey  <tromey@adacore.com>

* corefile.c (read_memory_string): Remove.
* ada-valprint.c (ada_value_print_ptr): Update.
* ada-lang.h (ada_tag_name): Change return type.
* ada-lang.c (type_from_tag): Update.
(ada_tag_name_from_tsd): Change return type.  Use
target_read_string.
(ada_tag_name): Likewise.
* gdbcore.h (read_memory_string): Don't declare.

4 years agogdb/testsuite: fix minor things in jit tests
Tankut Baris Aktemur [Mon, 15 Jun 2020 07:07:07 +0000 (09:07 +0200)]
gdb/testsuite: fix minor things in jit tests

gdb/testsuite/ChangeLog:
2020-06-15  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* gdb.base/jit-elf-so.exp: Refer to the global main_loader_basename
variable.
* gdb.base/jit-reader-simple.exp: Fix typo ("Built" -> "Build"),
and use the already-defined 'options' variable.

4 years agoObsolete PowerPC PE, winnt and cygwin targets
Alan Modra [Mon, 15 Jun 2020 05:16:01 +0000 (14:46 +0930)]
Obsolete PowerPC PE, winnt and cygwin targets

The PowerPC PE support is so old and bitrotted that it ought to be
removed.  Test results for a cross from x86_64 with no C cross
compiler currently shows 109 fails.  I don't think anyone cares about
the target.

This FIXME in bfd/peXXigen.c has been around since 1999, git commit
277d1b5e453:

/* FIXME: This file has various tests of POWERPC_LE_PE.  Those tests
   worked when the code was in peicode.h, but no longer work now that
   the code is in peigen.c.  PowerPC NT is said to be dead.  If
   anybody wants to revive the code, you will have to figure out how
   to handle those issues.  */

and this one in gas/config/tc-ppc.c since 1995, git commit
cd557d83d61:

 * FIXME: I just noticed this. This doesn't work at all really. It it
 *        setting bits that bfd probably neither understands or uses. The
 *        correct approach (?) will have to incorporate extra fields attached
 *        to the section to hold the system specific stuff. (krk)

* config.bfd: Obsolete powerpcle-*-pe targets.

4 years agoUnnecessary load_lib in ld testsuite
Alan Modra [Mon, 15 Jun 2020 03:28:26 +0000 (12:58 +0930)]
Unnecessary load_lib in ld testsuite

ld-lib.exp is loaded in config/defaults.exp

* testsuite/ld-scripts/include.exp: Don't load ld-lib.exp.
* testsuite/ld-scripts/phdrs3.exp: Likewise.
* testsuite/ld-scripts/rgn-at.exp: Likewise.
* testsuite/ld-scripts/rgn-over.exp: Likewise.
* testsuite/ld-scripts/sort.exp: Likewise.
* testsuite/ld-discard/discard.exp: Likewise.  Use is_elf_format.

4 years agoPR26103 testcase
Alan Modra [Mon, 15 Jun 2020 02:41:27 +0000 (12:11 +0930)]
PR26103 testcase

PR 26103
* testsuite/ld-linkonce/ref1.s,
* testsuite/ld-linkonce/ref2.s,
* testsuite/ld-linkonce/sym1.s,
* testsuite/ld-linkonce/sym2.s,
* testsuite/ld-linkonce/sym3.s: New test files.
* testsuite/ld-linkonce/linkonce.exp: Run tests for PE too.
Add pr26103 test.  Remove unnecessary load_lib.

4 years agoPR26103, Assertion failure with symbols defined in link-once sections
Alan Modra [Mon, 15 Jun 2020 02:40:06 +0000 (12:10 +0930)]
PR26103, Assertion failure with symbols defined in link-once sections

PR 26103
* elflink.c (elf_link_add_archive_symbols): Exclude undefined
symbols that were defined in discarded sections.
* cofflink.c (coff_link_check_archive_element): Likewise.
(coff_link_add_symbols): Set indx to -3 for symbols defined in
discarded sections.
(_bfd_coff_write_global_sym): Don't emit such symbols.
libcoff-in.h (struct coff_link_hash_entry): Update indx comment.
libcoff.h: Regenerate.

4 years agold-linkonce test
Alan Modra [Mon, 15 Jun 2020 02:38:33 +0000 (12:08 +0930)]
ld-linkonce test

* testsuite/ld-linkonce/zeroeh_x.s: Rename from x.s.
* testsuite/ld-linkonce/zeroeh_y.s: Rename from y.s.
* testsuite/ld-linkonce/zeroehl32.d: Adjust for renaming.  Support
big-endian output.  Run for powerpc.

4 years agoAutomatic date update in version.in
GDB Administrator [Mon, 15 Jun 2020 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in

4 years agoHandle Windows drives in rbreak paths
Hannes Domani [Wed, 13 May 2020 10:38:54 +0000 (12:38 +0200)]
Handle Windows drives in rbreak paths

Fixes this testsuite fail on Windows:
FAIL: gdb.base/fullpath-expand.exp: rbreak XXX/fullpath-expand-func.c:func

If the found colon is actually part of a Windows drive, look for another.

gdb/ChangeLog:

2020-06-14  Hannes Domani  <ssbssa@yahoo.de>

* symtab.c (rbreak_command): Ignore Windows drive colon.

4 years agox86: Correct xsusldtrk mnemonic
H.J. Lu [Sun, 14 Jun 2020 12:18:35 +0000 (05:18 -0700)]
x86: Correct xsusldtrk mnemonic

The correct mnemonic is xsusldtrk, not xsuspldtrk.

gas/

PR gas/26115
* testsuite/gas/i386/tsxldtrk.d: Replace xsuspldtrk with
xsusldtrk.
* testsuite/gas/i386/tsxldtrk.s: Likewise.
* testsuite/gas/i386/x86-64-tsxldtrk.d: Likewise.
* testsuite/gas/i386/x86-64-tsxldtrk.s: Likewise.

opcodes/

PR gas/26115
* i386-dis.c (prefix_table): Replace xsuspldtrk with xsusldtrk.
* i386-opc.tbl: Likewise.
* i386-tbl.h: Regenerated.

4 years agoAutomatic date update in version.in
GDB Administrator [Sun, 14 Jun 2020 00:00:13 +0000 (00:00 +0000)]
Automatic date update in version.in

4 years agoAutomatic date update in version.in
GDB Administrator [Sat, 13 Jun 2020 00:00:15 +0000 (00:00 +0000)]
Automatic date update in version.in

4 years agogdb: mention removed GDBserver host support in NEWS
Simon Marchi [Fri, 12 Jun 2020 20:06:46 +0000 (16:06 -0400)]
gdb: mention removed GDBserver host support in NEWS

gdb/ChangeLog:

* NEWS: Mention removed GDBserver host support.

Change-Id: Ib9e212e525d12ac7f3f9b5c056adc5bf9c4d52cd

4 years agogdbserver: remove support for ARM/WinCE
Simon Marchi [Fri, 12 Jun 2020 20:06:45 +0000 (16:06 -0400)]
gdbserver: remove support for ARM/WinCE

This port has been unmaintained for years, remove it.

gdbserver/ChangeLog:

* Makefile.in (SFILES): Remove win32-arm-low.cc, wincecompat.cc.
* configure.srv: Remove mingw32ce cases.
* server.h, win32-low.cc: Remove __MINGW32CE__-guarded code.
* win32-low.h (to_back_slashes): Remove.
* win32-arm-low.cc, wincecompat.cc, wincecompat.h: Remove.

Change-Id: Ib75c0b55b0ab7caca38bbeff5f2fa9397a8e7e8d

4 years agogdbserver: remove support for Tile
Simon Marchi [Fri, 12 Jun 2020 20:06:44 +0000 (16:06 -0400)]
gdbserver: remove support for Tile

This port has been unmaintained for years and the upstream Linux kernel
does not support this architecture anymore, remove it.

gdbserver/ChangeLog:

* Makefile.in (SFILES): linux-tile-low.cc.
* configure.srv: Remove tilegx case.
* linux-tile-low.cc: Remove.

Change-Id: I1c2910d04ddbd6013e5d228047106b41d80f9477

4 years agogdbserver: remove support for M32R
Simon Marchi [Fri, 12 Jun 2020 20:06:44 +0000 (16:06 -0400)]
gdbserver: remove support for M32R

This port has been unmaintained for years and the upstream Linux kernel
does not support this architecture anymore, remove it.

gdbserver/ChangeLog:

* Makefile.in (SFILES): Remove linux-m32r-low.cc.
* configure.srv: Remove m32r case.
* linux-m32r-low.cc: Remove.

Change-Id: I5617b2b1fd92aeec19b38e0e3c0b78adaafdb35b

4 years agogdbserver: remove support for CRIS
Simon Marchi [Fri, 12 Jun 2020 20:06:43 +0000 (16:06 -0400)]
gdbserver: remove support for CRIS

This port has been unmaintained for years and the upstream Linux kernel
does not support this architecture anymore, remove it.

gdbserver/ChangeLog:

* Makefile.in (SFILES): Remove linux-cris-low.c.
* configure.srv: Remove cris cases.
* linux-cris-low.cc, linux-crisv32-low.cc: Remove.

Change-Id: Ib3ff436b03373548215f15540a47f39cbec5f512

4 years agogdbserver: remove support for Blackfin
Simon Marchi [Fri, 12 Jun 2020 20:06:42 +0000 (16:06 -0400)]
gdbserver: remove support for Blackfin

This port has been unmaintained for years and the upstream Linux kernel
does not support this architecture anymore, remove it.

gdbserver/ChangeLog:

* Makefile.in (SFILES): Remove linux-bfin-low.c.
* configure.srv: Remove bfin case.
* linux-bfin-low.cc: Remove.
* linux-low.cc: Remove BFIN-conditional code.

Change-Id: I846310d15e6386118ec7eabb1b87e647174560fb

4 years agogdbserver: remove support for Neutrino
Simon Marchi [Fri, 12 Jun 2020 20:06:41 +0000 (16:06 -0400)]
gdbserver: remove support for Neutrino

This port has been unmaintained for years, remove it.

gdbserver/ChangeLog:

* configure: Re-generate.
* configure.ac: Remove srv_qnx test.
* configure.srv: Remove nto case.
* nto-low.cc, nto-low.h, nto-x86-low.cc: Remove.
* remote-utils.c: Remove __QNX__-guarded code.

Change-Id: I8a1ad9c740a69352da1f6993778dbf951eebb22f

4 years agogdbserver: remove support for LynxOS
Simon Marchi [Fri, 12 Jun 2020 20:06:41 +0000 (16:06 -0400)]
gdbserver: remove support for LynxOS

This port has been unmaintained for years, remove it.

gdbserver/ChangeLog:

* configure: Re-generate.
* configure.ac: Remove srv_lynxos test.
* configure.srv: Remove lynxos cases.
* lynx-i386-low.cc, lynx-low.cc, lynx-low.h, lynx-ppc-low.c:
Remove.

Change-Id: I239d1cf1fc7b4c7a174251bc7981707eaba7d972

4 years agogdbserver: small cleanup of README file
Simon Marchi [Fri, 12 Jun 2020 20:01:26 +0000 (16:01 -0400)]
gdbserver: small cleanup of README file

Fix a few outdated or incoherent things in the README:

- Don't mention remote.c nor *-stub.c files as references for the remote
  protocol.  remote.c is in GDB, not GDBserver, and *-stub.c files don't
  exist today.  Add a link to the documentation instead.

- In the "server (target) side" section, use `:2345` instead of
  `host:2345`.  It currently says that using `host:2345` means we would
  expect a connection from `host`.  That's not what I would expect by
  passing a host part here.  If I passed `11.22.33.44:2345` as the listen
  address, I would expect it to instruct gdbserver to listen only on that
  (11.22.33.44) network interface, not to expect a connection from host
  `11.22.33.44`.  So, remove that part of the sentence.

- Remove the list of supported target, refer to configure.srv instead.
  Keeping a list here is bound to lose sync with reality.

- In the cross-compile instructions, I don't think it's necessary to mention
  "In a Bourne shell".

- In the cross-compile instructions, I don't know what passing
  `your-target-name` to configure does, I don't think it's valid.  Use
  `make all-gdbserver` as in the instructions just above.

gdbserver/ChangeLog:

* README: Fix a few outdated or incoherent things.

Change-Id: I79349e25bc1bc53447855e0dea6cc7b9630f4553

4 years ago[gdbserver] Fix Wlto-type-mismatch for debug_agent
Tom de Vries [Fri, 12 Jun 2020 16:36:56 +0000 (18:36 +0200)]
[gdbserver] Fix Wlto-type-mismatch for debug_agent

When building gdb including gdbserver with CFLAGS/CXXFLAGS -O2 -g -flto=auto,
I run into:
...
src/gdbserver/../gdbsupport/agent.h:47:13: error: type of 'debug_agent' \
  does not match original declaration [-Werror=lto-type-mismatch]
 extern bool debug_agent;
             ^
src/gdbserver/ax.cc:28:5: note: type 'int' should match type 'bool'
 int debug_agent = 0;
     ^
src/gdbserver/ax.cc:28:5: note: 'debug_agent' was previously declared here
src/gdbserver/ax.cc:28:5: note: code may be misoptimized unless \
  -fno-strict-aliasing is used
...

Fix this by changing the type of debug_agent in ax.cc from int to bool.

Tested on x86_64-linux.

4 years agogdb/testsuite: Prevent globals leaking between test scripts
Andrew Burgess [Fri, 12 Jun 2020 13:09:33 +0000 (15:09 +0200)]
gdb/testsuite: Prevent globals leaking between test scripts

Many of the test scripts create variables in the global namespace,
these variables will then be present for the following test scripts.
In most cases this is harmless, but in some cases this can cause
problems.

For example, if a variable is created as an array in one script, but
then assigned as a scalar in a different script, this will cause a TCL
error.

The solution proposed in this patch is to have the GDB test harness
record a list of all known global variables at the point just before
we source the test script.  Then, after the test script has run, we
again iterate over all global variables.  Any variable that was not in
the original list is deleted, unless it was marked as a persistent global
variable using gdb_persistent_global.

The assumption here is that no test script should need to create a
global variable that will outlive the lifetime of the test script
itself.  With this patch in place all tests currently seem to pass, so
the assumption seems to hold.

gdb/testsuite/ChangeLog:

2020-06-12  Andrew Burgess  <andrew.burgess@embecosm.com>
    Tom de Vries  <tdevries@suse.de>

* lib/gdb.exp (gdb_known_globals, gdb_persistent_globals): New global.
(gdb_persistent_global, gdb_persistent_global_no_decl): New proc.
(gdb_setup_known_globals): New proc.
(gdb_cleanup_globals): New proc.
* lib/gdb.exp (load_lib): New override proc.
(gdb_stdin_log_init): Set var in_file as persistent global.
* lib/pascal.exp (gdb_stdin_log_init): Set vars
pascal_compiler_is_gpc, pascal_compiler_is_fpc, gpc_compiler and
fpc_compiler as persistent global.

4 years ago[gdb/testsuite] Don't leak tuiterm.exp spawn override
Tom de Vries [Fri, 12 Jun 2020 11:29:43 +0000 (13:29 +0200)]
[gdb/testsuite] Don't leak tuiterm.exp spawn override

In lib/tuiterm.exp the builtin spawn is overridden by a tui-specific version.

After running the first test-case that imports tuiterm.exp, the override
remains active, so it can cause trouble in subsequent test-cases, even if they
do not import tuiterm.exp.  See f.i. commit c8d4f6dfd9 "[gdb/testsuite] Fix
spawn in tuiterm.exp".

Fix this by:
- adding a variable gdb_finish_hooks which is a list of procs to run during
  gdb_finish
- adding a proc tuiterm_env that is used in test-cases instead of
  "load_lib tuiterm.exp".
- letting tuiterm_env:
  - install the tui-specific spawn version, and
  - use the gdb_finish_hooks to schedule restoring the builtin spawn
    version.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-06-12  Tom de Vries  <tdevries@suse.de>

* lib/tuiterm.exp (spawn): Rename to ...
(tui_spawn): ... this.
(toplevel): Move rename of spawn ...
(gdb_init_tuiterm): ... here.  New proc.
(gdb_finish_tuiterm): New proc.
* lib/gdb.exp (gdb_finish_hooks): New global var.
(gdb_finish): Handle gdb_finish_hooks.
(tuiterm_env): New proc.
* gdb.python/tui-window.exp: Replace load_lib tuiterm.exp with
tuiterm_env.
* gdb.tui/basic.exp: Same.
* gdb.tui/corefile-run.exp: Same.
* gdb.tui/empty.exp: Same.
* gdb.tui/list-before.exp: Same.
* gdb.tui/list.exp: Same.
* gdb.tui/main.exp: Same.
* gdb.tui/new-layout.exp: Same.
* gdb.tui/regs.exp: Same.
* gdb.tui/resize.exp: Same.
* gdb.tui/tui-layout-asm-short-prog.exp: Same.
* gdb.tui/tui-layout-asm.exp: Same.
* gdb.tui/tui-missing-src.exp: Same.
* gdb.tui/winheight.exp: Same.

4 years ago[gdb/testsuite] Don't abort testrun for invalid command in test-case
Tom de Vries [Fri, 12 Jun 2020 07:13:17 +0000 (09:13 +0200)]
[gdb/testsuite] Don't abort testrun for invalid command in test-case

Say we add a call to foobar at the end of a test-case, and run the
test-suite.  We'll run into a dejagnu error:
...
ERROR: (DejaGnu) proc "foobar" does not exist.
...
and the test-suite run is aborted.

It's reasonable that the test-case is aborted, but it's not reasonable that
the testsuite run is aborted.

Problems in one test-case should not leak into other test-cases, and they
generally don't.  The exception is the "invalid command name" problem due to
an override of ::unknown in dejagnu's framework.exp.

Fix this by reverting dejagnu's ::unknown override for the duration of each
test-case, using the gdb_init/gdb_finish hooks.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-06-12  Tom de Vries  <tdevries@suse.de>

PR testsuite/26110
* lib/gdb.exp (gdb_init): Revert dejagnu's override of ::unknown.
(gdb_finish): Reinstall dejagnu's override of ::unknown.

4 years agoRISC-V: Update the rebuild-csr-xml.sh.
Nelson Chu [Thu, 11 Jun 2020 01:42:40 +0000 (18:42 -0700)]
RISC-V: Update the rebuild-csr-xml.sh.

We add new arguments defined and aborted verisons for DECLARE_CSR to
support privileged versions controling in binutils.  Therefore, the
rebuild-csr-xml.sh should be updated, too.

gdb/
* features/riscv/rebuild-csr-xml.sh: Updated.

4 years agoRISC-V: Drop the privileged spec v1.9 support.
Nelson Chu [Wed, 10 Jun 2020 06:07:54 +0000 (14:07 +0800)]
RISC-V: Drop the privileged spec v1.9 support.

There is a conflict between v1.9 and v1.9.1 - CSR MISA address.  MISA is
0xf10 in v1.9, but change to 0x301 in v1.9.1.  The change made MISA writable,
but may also cause risk of compatibility.  Binutils already support the
-mpriv-spec options and ELF priv attributes, which can used to choose what
privileged spec you want, and then give a correponding CSR name and address
to use.  But Gdb and other tools don't have the simialr mechanism for now.
However, there are two things can be confirmed,

1. If we don't have a way to control the priv specs, then the changes, like
MISA, will cause risk and hard to maintain.

2. We get the guarantee that the CSR address won't be reused in the future
specs, even if it is dropped.

I'm not sure if Gdb needs to care about the priv spec versions, it is still
discussing.  But drop the priv spec v1.9, and make sure that we won't reuse
the CSR address is a useful solution for now.  Also, we might drop the v1.9.1
in a year or two.  After that, specs above v1.10 should be compatible anyway.

gas/
* testsuite/gas/riscv/priv-reg-fail-version-1p9.d: Removed.
* testsuite/gas/riscv/priv-reg-fail-version-1p9.l: Likewise.
* testsuite/gas/riscv/priv-reg-version-1p9.d: Likewise.

include/
* opcode/riscv-opc.h: Update the defined versions of CSR from
PRIV_SPEC_CLASS_1P9 to PRIV_SPEC_CLASS_1P9P1.  Also, drop the
MISA DECLARE_CSR_ALIAS since it's aborted version is v1.9.
* opcode/riscv.h (enum riscv_priv_spec_class): Remove
PRIV_SPEC_CLASS_1P9.

opcodes/
* riscv-opc.c (priv_specs): Remove v1.9 and PRIV_SPEC_CLASS_1P9.

4 years agoAutomatic date update in version.in
GDB Administrator [Fri, 12 Jun 2020 00:00:20 +0000 (00:00 +0000)]
Automatic date update in version.in

4 years agoUpdate documentation for Ada .gdb_index
Tom Tromey [Thu, 11 Jun 2020 15:45:51 +0000 (09:45 -0600)]
Update documentation for Ada .gdb_index

.gdb_index now supports Ada, so update the documentation to reflect
this.

gdb/doc/ChangeLog
2020-06-11  Tom Tromey  <tromey@adacore.com>

* gdb.texinfo (Index Files): Reword.  Remove Ada limitation.

4 years agoFix hex floating point lexing
Tom Tromey [Thu, 11 Jun 2020 16:34:31 +0000 (10:34 -0600)]
Fix hex floating point lexing

PR gdb/18318 notes that gdb will sometimes incorrectly handle hex
floating point input.  This turns out to be a bug in the C lexer; the
'p' was not being correctly recognized, and so the exponent was not
always passed to the floating point "from_string" method.

Tested by the buildbot "Fedora-x86_64-m64" builder.

gdb/ChangeLog
2020-06-11  Tom Tromey  <tom@tromey.com>

PR gdb/18318:
* c-exp.y (lex_one_token): Handle 'p' like 'e'.

gdb/testsuite/ChangeLog
2020-06-11  Tom Tromey  <tom@tromey.com>

PR gdb/18318:
* gdb.base/printcmds.exp (test_float_accepted): Add more hex
floating point tests.

4 years agogdb: add mailing list and IRC information to --help
Jonny Grant [Thu, 11 Jun 2020 14:30:03 +0000 (10:30 -0400)]
gdb: add mailing list and IRC information to --help

A few user-vibisble changes to the --help output:

 * Remove unnecessary quotes around bug url.
 * Mention the mailing list and IRC channel as places where users can
   ask GDB-related questions.
 * Add empty lines between items in the footer, to improve readability.
 * Remove unnecessary new line at the end of output.

2020-06-09  Jonny Grant  <jg@jguk.org>
2020-06-09  Simon Marchi  <simon.marchi@polymtl.ca>

* main.c (captured_main_1): Don't print new line after help.
(print_gdb_help): add mailing list and IRC channel information
to --help.  Add new lines between items in the footer.  Remove
quotes around bug url.

Signed-off-by: Jonathan Grant <jg@jguk.org>
Change-Id: Ibd0746a348d558fb35b5cd7e366f107742806565

4 years agoCompute proper length for dynamic types of TYPE_CODE_TYPEDEF
Keith Seitz [Thu, 11 Jun 2020 12:34:44 +0000 (14:34 +0200)]
Compute proper length for dynamic types of TYPE_CODE_TYPEDEF

This patch fixes gdb/21356 in which we hit an assertion in
value_contents_bits_eq:

(gdb) p container_object2
(gdb) p container_object2
$1 = {_container_member2 = 15, _vla_struct_object2 = {_some_member = 0,
    _vla_field = {
../../src/gdb/value.c:829: internal-error: \
  int value_contents_bits_eq(const value*, int, const value*, int, int): \
  Assertion `offset1 + length \
             <= TYPE_LENGTH (val1->enclosing_type) * TARGET_CHAR_BIT' failed.

This is happening because TYPE_LENGTH (val1->enclosing_type) is erroneously
based on enclosing_type, which is a typedef, instead of the actual underlying
type.

This can be traced back to resolve_dynamic_struct, where the size of the
type is computed:
...
        TYPE_FIELD_TYPE (resolved_type, i)
          = resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type, i),
                                           &pinfo, 0);
        gdb_assert (TYPE_FIELD_LOC_KIND (resolved_type, i)
                    == FIELD_LOC_KIND_BITPOS);

        new_bit_length = TYPE_FIELD_BITPOS (resolved_type, i);
        if (TYPE_FIELD_BITSIZE (resolved_type, i) != 0)
          new_bit_length += TYPE_FIELD_BITSIZE (resolved_type, i);
        else
          new_bit_length += (TYPE_LENGTH (TYPE_FIELD_TYPE (resolved_type, i))
                             * TARGET_CHAR_BIT);
...

In this function, resolved_type is TYPE_CODE_TYPEDEF which is not what we
want to use to calculate the size of the actual field.

This patch fixes this and the similar problem in resolve_dynamic_union.

gdb/ChangeLog:
2020-06-11  Keith Seitz  <keiths@redhat.com>

PR gdb/21356
* gdbtypes.c (resolve_dynamic_union, resolve_dynamic_struct):
Resolve typedefs for type length calculations.

gdb/testsuite/ChangeLog:
2020-06-11  Keith Seitz  <keiths@redhat.com>

PR gdb/21356
* gdb.base/vla-datatypes.c (vla_factory): Add typedef for struct
vla_struct.
Add new struct vla_typedef and union vla_typedef_union and
corresponding instantiation objects.
Initialize new objects.
* gdb.base/vla-datatypes.exp: Add tests for vla_typedef_struct_object
and vla_typedef_union_object.
Fixup type for vla_struct_object.

4 years ago[gdb/testsuite] Make gdb.base/dbx.exp more robust
Tom de Vries [Thu, 11 Jun 2020 12:10:05 +0000 (14:10 +0200)]
[gdb/testsuite] Make gdb.base/dbx.exp more robust

Test-case gdb.base/dbx.exp overrides:
- the GDBFLAGS variable
- the gdb_file_cmd proc

There's code at the end of the test-case to restore both, but that's not
guaranteed to be executed.

Fix this by:
- using save_vars to restore GDBFLAGS
- using a new proc with_override to restore gdb_file_cmd

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-06-11  Tom de Vries  <tdevries@suse.de>

* lib/gdb.exp (with_override): New proc, factored out of ...
* gdb.base/dbx.exp: ... here.  Use with_override and save_vars.

4 years ago[PATCH]: aarch64: Refactor representation of system registers
Alex Coplan [Thu, 11 Jun 2020 11:34:37 +0000 (12:34 +0100)]
[PATCH]: aarch64: Refactor representation of system registers

Prior to this patch, the information describing the AArch64 system
registers was separate from the information describing which system
registers are available depending on the CPU feature set. Indeed, the
latter was implemented as a separate function from the main table with
the system register information.

This patch remedies this situation and puts the feature information into
the system register table itself.

This has several advantages:

 * Having all the information described in one place is easier to
   maintain.
 * The logic to check whether a system register is supported now becomes
   trivial (and much more efficient).

Since this patch ended up touching every line of the system register
table, I took the opportunity to make the formatting more consistent and
remove some redundant comments.

Note that there is still more refactoring that could be done along the
same lines here (e.g. with the TLB instructions) but this seemed like a
reasonable first pass.

Testing:

 * Regression tested an x64 -> aarch64-none-elf cross binutils.
 * Built aarch64-none-elf cross toolchain, checked newlib startup
   code still works.
 * Bootstrapped binutils on aarch64-linux-gnu, regression tested.
 * Built aarch64 kernel using new binutils with allyesconfig.

OK for master? If so, I'll need a maintainer to commit on my behalf
since I don't have write access.

Thanks,
Alex

---

include/ChangeLog:

2020-06-11  Alex Coplan  <alex.coplan@arm.com>

* opcode/aarch64.h (aarch64_sys_reg): Add required features to struct
describing system registers.

opcodes/ChangeLog:

2020-06-11  Alex Coplan  <alex.coplan@arm.com>

* aarch64-opc.c (SYSREG): New macro for describing system registers.
(SR_CORE): Likewise.
(SR_FEAT): Likewise.
(SR_RNG): Likewise.
(SR_V8_1): Likewise.
(SR_V8_2): Likewise.
(SR_V8_3): Likewise.
(SR_V8_4): Likewise.
(SR_PAN): Likewise.
(SR_RAS): Likewise.
(SR_SSBS): Likewise.
(SR_SVE): Likewise.
(SR_ID_PFR2): Likewise.
(SR_PROFILE): Likewise.
(SR_MEMTAG): Likewise.
(SR_SCXTNUM): Likewise.
(aarch64_sys_regs): Refactor to store feature information in the table.
(aarch64_sys_reg_supported_p): Collapse logic for system registers
that now describe their own features.
(aarch64_pstatefield_supported_p): Likewise.

4 years agoRun certain ld-plugun lto tests only for ELF
Alan Modra [Thu, 11 Jun 2020 08:23:30 +0000 (17:53 +0930)]
Run certain ld-plugun lto tests only for ELF

lto-6.c refers to _etext, pr12760b.c has a .gnu.warning section,
the pr23818 test uses readelf, and pr23958.c has a .symver directive.

* testsuite/ld-plugin/lto.exp (lto_link_tests): Move lto-6,
pr12760, pr23818 and pr23958 tests to..
(lto_link_elf_tests): ..here.

4 years agoFix a compile time warning in the linker testsuite when compiling using clang.
Nick Clifton [Thu, 11 Jun 2020 08:27:41 +0000 (09:27 +0100)]
Fix a compile time warning in the linker testsuite when compiling using clang.

* testsuite/ld-elf/pr26094-1b.c (main): Change return type to
int.

4 years agoPR26107, Compilation failure in pdp11.c
Alan Modra [Thu, 11 Jun 2020 06:18:12 +0000 (15:48 +0930)]
PR26107, Compilation failure in pdp11.c

PR 26107
* pdp11.c (is_stab): Replace legacy "index" function with "strchr".