50070 Commits

Author SHA1 Message Date
Tom Tromey
28343f921b Use require is_elf_target
This changes some tests to use "require is_elf_target".
2023-01-13 13:18:56 -07:00
Tom Tromey
9eeafef372 Use require is_amd64_regs_target
This changes some tests to use "require is_amd64_regs_target".
2023-01-13 13:18:56 -07:00
Tom Tromey
abdc86caeb Use require is_aarch32_target
This changes some tests to use "require is_aarch32_target".
2023-01-13 13:18:56 -07:00
Tom Tromey
d9050fb8fa Use require is_aarch64_target
This changes some tests to use "require is_aarch64_target".
2023-01-13 13:18:55 -07:00
Tom Tromey
0a7043e0c5 Use require support_displaced_stepping
This changes some tests to use "require support_displaced_stepping".
2023-01-13 13:18:55 -07:00
Tom Tromey
2a90424099 Use require !skip_avx_*
This changes some tests to use "require" with !skip_avx_*.
2023-01-13 13:18:55 -07:00
Tom Tromey
6848695de2 Use require !skip_btrace_tests
This changes some tests to use "require !skip_btrace_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
ede8c648c4 Use require !skip_btrace_pt_tests
This changes some tests to use "require !skip_btrace_pt_tests" and
"require !skip_tsx_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
37c3d17ab7 Use require !skip_aarch64_sve_tests
This changes some tests to use "require !skip_aarch64_sve_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
caab91aebb Use require !skip_ifunc_tests
This changes some tests to use "require !skip_ifunc_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
7c1a12b3e8 Use require !skip_hw_watchpoint_tests
This changes some tests to use "require !skip_hw_watchpoint_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
c76fbc7fc3 Use require !skip_ctf_tests
This changes some tests to use "require !skip_ctf_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
1952d8b042 Use require !skip_d_tests
This changes some tests to use "require !skip_d_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
0c2a02481a Use require !skip_go_tests
This changes some tests to use "require !skip_go_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
d3f81254e5 Use require !skip_ada_tests
This changes some tests to use "require !skip_ada_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
8d0278eb40 Use require !skip_fortran_tests
This changes some tests to use "require !skip_fortran_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
a9145b105e Use require !skip_rust_tests
This changes some tests to use "require !skip_rust_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
c89196229b Use require !skip_stl_tests
This changes some tests to use "require !skip_stl_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
b47c999618 Use require !skip_dlmopen_tests
This changes some tests to use "require !skip_dlmopen_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
980d95b48c Use require !skip_shlib_tests
This changes some tests to use "require !skip_shlib_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
7978d474f2 Use require !skip_cplus_tests
This changes some tests to use "require !skip_cplus_tests".
2023-01-13 13:18:55 -07:00
Tom Tromey
18d2b8767a Use require is_x86_like_target
This changes some tests to use "require is_x86_like_target".
2023-01-13 13:18:55 -07:00
Tom Tromey
ce8d533e88 Use require dwarf2_support
This changes some tests to use "require dwarf2_support".
2023-01-13 13:18:55 -07:00
Tom Tromey
ade3e4f5b1 Use require supports_process_record
This changes some tests to use "require supports_process_record".
2023-01-13 13:18:55 -07:00
Tom Tromey
5954db83d1 Use require supports_reverse
This changes some tests to use "require supports_reverse".
2023-01-13 13:18:55 -07:00
Tom Tromey
fc5ab4bc44 Use unsupported in 'require'
This changes 'require' to use 'unsupported' rather than 'untested'.
The latter doesn't really seem to be correct according to the DejaGNU
documentation:

    Declares a test was not run.  `untested' writes in the log file a
    message beginning with _UNTESTED_, appending the `message' argument.
    For example, you might use this in a dummy test whose only role is to
    record that a test does not yet exist for some feature.

The example there, and some text elsewhere, is what makes me think
this isn't a great fit.  On the other hand, 'unsupported' says:

    Declares that a test case depends on some facility that does not exist
    in the testing environment.
2023-01-13 13:18:54 -07:00
Tom Tromey
793862d2f4 Change 'require' to accept a list of predicates
This changes 'require' to accept a list of simple predicates.  For
now, each predicate is just the name of a proc, optionally prefixed
with "!" to indicate that the result should be inverted.

It's possible to make this fancier, but so far I haven't done so.  One
idea I had is to allow a predicate to have associated text to display
on failure.  Another is to convert the predicates that need a running
gdb (e.g., skip_python_tests) to start their own gdb, and then
'require' could enforce the rule that gdb not be running when it is
called.
2023-01-13 13:18:54 -07:00
Tom Tromey
15bdcf4ca1 Don't use ensure_gdb_index with require
This series changes 'require' to take a list of simple predicates.
This patch backs out the one use of 'require' that doesn't conform to
this -- calling ensure_gdb_index.
2023-01-13 13:18:54 -07:00
Andrew Burgess
bb0797528b gdb/infrun: add debug print in print_signal_received_reason
It would have helped me to see an infrun debug line being printed from
print_signal_received_reason, so I'm adding one.
2023-01-13 16:36:17 +00:00
Andrew Burgess
8dd08de7e4 gdb: int to bool conversion for normal_stop
Change the return type of normal_stop (infrun.c) from int to bool.
Update callers.

I've also converted the (void) to () in the function declaration and
definition, given I was changing those lines anyway.

There should be no user visible changes after this commit.
2023-01-13 16:34:10 +00:00
Tom Tromey
0c1aa2a095 Disable ptype/o for dynamic types
A user pointed out that "ptype/o" of a certain Ada type -- while in C
mode -- caused gdb to crash.

The bug here is that dynamic types can't really be printed this way.
This patch avoids the bug by disabling the "/o" feature in this case.

Note that using "ptype/o" in this way makes sense for the time being,
because the Ada code doesn't support the "/o" feature (yet); and in
any case gdb should not crash.
2023-01-12 12:15:41 -07:00
Simon Marchi
7bd836d5d9 gdb/doc: fix install-html with Texinfo 7
Starting with Texinfo 7 (this commit [1]), the output directory for the
HTML doc format is gdb/doc/gdb_html, rather than gdb/doc/gdb previously.
This breaks the install-html target, which expects the HTML doc to be in
gdb/doc/gdb:

    $ make install-html MAKEINFO=makeinfo DESTDIR=/tmp/install
    make[1]: Entering directory '/home/simark/build/binutils-gdb/gdb'
    make[2]: Entering directory '/home/simark/build/binutils-gdb/gdb/doc'
    makeinfo  -DHAVE_MAKEINFO_CLICK --html  -I /home/simark/src/binutils-gdb/gdb/doc/../../readline/readline/doc -I /home/simark/src/binutils-gdb/gdb/doc/../mi -I /home/simark/src/binutils-gdb/gdb/doc /home/simark/src/binutils-gdb/gdb/doc/gdb.texinfo
    makeinfo  -DHAVE_MAKEINFO_CLICK --html  -I /home/simark/src/binutils-gdb/gdb/doc /home/simark/src/binutils-gdb/gdb/doc/stabs.texinfo
    makeinfo  -DHAVE_MAKEINFO_CLICK --html  -I /home/simark/src/binutils-gdb/gdb/doc /home/simark/src/binutils-gdb/gdb/doc/annotate.texinfo
    test -z "/usr/local/share/doc/gdb" || /bin/sh /home/simark/src/binutils-gdb/gdb/doc/../../mkinstalldirs "/tmp/install/usr/local/share/doc/gdb"
     /usr/bin/install -c -m 644 '/home/simark/src/binutils-gdb/gdb/doc/gdb' '/tmp/install/usr/local/share/doc/gdb/gdb'
    /usr/bin/install: cannot stat '/home/simark/src/binutils-gdb/gdb/doc/gdb': No such file or directory
     /usr/bin/install -c -m 644 '/home/simark/src/binutils-gdb/gdb/doc/stabs' '/tmp/install/usr/local/share/doc/gdb/stabs'
    /usr/bin/install: cannot stat '/home/simark/src/binutils-gdb/gdb/doc/stabs': No such file or directory
     /usr/bin/install -c -m 644 '/home/simark/src/binutils-gdb/gdb/doc/annotate' '/tmp/install/usr/local/share/doc/gdb/annotate'
    /usr/bin/install: cannot stat '/home/simark/src/binutils-gdb/gdb/doc/annotate': No such file or directory
    make[2]: *** [Makefile:278: install-html] Error 1
    make[2]: Leaving directory '/home/simark/build/binutils-gdb/gdb/doc'
    make[1]: *** [Makefile:2240: subdir_do] Error 1
    make[1]: Leaving directory '/home/simark/build/binutils-gdb/gdb'
    make: *** [Makefile:2006: install-html] Error 2

Fix this by adding -o switches to the HTML targets, to force the output
directories.

[1] https://git.savannah.gnu.org/cgit/texinfo.git/commit/?id=a868421baf9c44227c43490687f8d6b8d6c95414

Change-Id: Ie147dc7b4a52eb2348005b8dc006a41b0784621f
2023-01-11 17:30:05 -05:00
Thiago Jung Bauermann
6be354acf3 gdb: Update gdbarch.py with latest changes in gdbarch.c
Commit 2b16913cdca2 ("gdb: make gdbarch_alloc take ownership of the tdep")
changed gdbarch.c without updating gdbarch.py.  As a result, running
gdbarch.py reverts those changes and causes the build to fail.

So change gdbarch.py to generate the current version of gdbarch.c.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
2023-01-11 19:41:50 +00:00
Tom Tromey
2124b2de4b Set _WIN32_WINNT in common.m4 configure check
GCC recently added support for the Windows thread model, enabling
libstdc++ to support Windows natively.  However, this supporrt
requires a version of Windows later than the minimum version that is
supported by GDB.

PR build/29966 points out that the GDB configure test for std::thread
does not work in this situation, because _WIN32_WINNT is not defined
in test program, and so <thread> seems to be fine.

This patch is an attempt to fix the problem, by using the same setting
for _WIN32_WINNT at configure time as is used at build time.

I don't have access to one of the older systems so I don't think I can
truly test this.  I did do a mingw cross build, though.  I'm going to
ask the bug reporter to test it.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29966
2023-01-11 11:00:42 -07:00
Simon Marchi
1b9af5b949 [gdb/testsuite] Fix regexp in gdb.threads/dlopen-libpthread.exp
Fix regexp in gdb.threads/dlopen-libpthread.exp:
'libpthread\\.so' -> '/libpthread\\.so'.

Tested on x86_64-linux.
2023-01-11 18:37:20 +01:00
Tom de Vries
f1e1932859 [gdb/testsuite] Fix gdb.threads/dlopen-libpthread.exp for upstream glibc, again
On an x86_64 laptop running ubuntu 22.04.1 with unity desktop:
...
$ echo $XDG_CURRENT_DESKTOP
Unity:Unity7:ubuntu
...
I have:
...
$ echo $LD_PRELOAD
libgtk3-nocsd.so.0
...
due to package gtk3-nocsd, a package recommended by unity-session.

Consequently, for each exec these dependencies are pulled in, including
libpthread.so.0:
...
$ lddtree /lib/x86_64-linux-gnu/libgtk3-nocsd.so.0
libgtk3-nocsd.so.0 => /lib/x86_64-linux-gnu/libgtk3-nocsd.so.0 (interpreter => none)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
        ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
...

So, while test-case gdb.threads/dlopen-libpthread.exp appears to run ok:
...
 # of expected passes		12
 # of unsupported tests		1
...
with LD_PRELOAD="" we have instead:
...
(gdb) PASS: gdb.threads/dlopen-libpthread.exp: continue to breakpoint: notify
info sharedlibrary^M
From  To                  Syms Read   Shared Object Library^M
$hex  $hex  Yes         /lib64/ld-linux-x86-64.so.2^M
$hex  $hex  Yes         /lib/x86_64-linux-gnu/libc.so.6^M
$hex  $hex  Yes         dlopen-libpthread.so^M
(gdb) FAIL: gdb.threads/dlopen-libpthread.exp: libpthread.so found
...

The problem is that libpthread is expected as dependency of
dlopen-libpthread.so, but it's missing:
...
$ lddtree dlopen-libpthread.so
dlopen-libpthread.so => ./dlopen-libpthread.so (interpreter => none)
    libc.so.6 => $outputs/gdb.threads/dlopen-libpthread/dlopen-libpthread.so.d/libc.so.6
        ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
...
due to having glibc 2.35, which has libpthread integrated into libc.

Fix this by:
- adding a proc has_dependency
- using [has_dependency $exec libpthread.so] as hint that libpthread
  may be preloaded
- using ![has_dependency $shlib libpthread.so] to detect that
  the libpthread.so dependency is missing.

Also add a missing return after untested "no matching probes".

Tested on x86_64-linux, with and without LD_PRELOAD="".
2023-01-11 11:44:00 +01:00
Tom Tromey
066620dcfb Fix bug in 'say_where' transform
The patch to change say_where into a method introduced a bug.  This
patch fixes it.
2023-01-10 16:36:48 -07:00
Rohr, Stephan
38190b2f01 gdb/dwarf2: Fix 'rw_pieced_value' for values casted to different type.
The 'rw_pieced_value' function is executed when fetching a (lazy)
variable described by 'DW_OP_piece' or 'DW_OP_bit_piece'.  The
function checks the 'type' and 'enclosing_type' fields of the value
for identity.

  * The 'type' field describes the type of a value.
  * In most cases, the 'enclosing_type' field is identical to the
    'type' field.
  * Scenarios where the 'type' and 'enclosing_type' of an object
    differ are described in 'gdb/value.c'.  Possible cases are:
    * If a value represents a C++ object, then the 'type' field
      gives the object's compile-time type.  If the object actually
      belongs to some class derived from `type', perhaps with other
      base classes and additional members, then `type' is just a
      subobject of the real thing, and the full object is probably
      larger than `type' would suggest.
    * If 'type' is a dynamic class (i.e. one with a vtable), then GDB
      can actually determine the object's run-time type by looking at
      the run-time type information in the vtable.  GDB may then elect
      to read the entire object.
    * If the user casts a variable to a different type
      (e.g. 'print (<type> []) <variable>'), the value's type is
      updated before reading the value.

If a lazy value is fetched, GDB allocates space based on the enclosing
type's length and typically reads the 'full' object.  This is not
implemented for pieced values and causes an internal error if 'type'
and 'enclosing_type' of a value are not identical.

However, GDB can read the value based on its type.  Thus, this patch
fixes the previously mentioned cases by removing the check for identity.

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

gdb/ChangeLog:
2022-04-13  Stephan Rohr  <stephan.rohr@intel.com>

	* dwarf2/loc.c (rw_pieced_value): Fix check on 'type' and
	'enlcosing_type' when reading pieced value 'v'.

gdb/testsuite/ChangeLog:
2022-04-13  Stephan Rohr  <stephan.rohr@intel.com>

	* gdb.dwarf2/shortpiece.exp: Added test cases.
2023-01-10 14:26:32 -07:00
Tom Tromey
7987c4636a Convert say_where to method on code_breakpoint
'say_where' is only useful (and only called for) code breakpoints, so
convert it to be a protected method on code_breakpoint.
2023-01-10 14:09:32 -07:00
Simon Marchi
8ec0b0b5df gdb/doc: use @value{GDBP} in some spots
Examples are supposed to use @value{GDBP} instead of the literal "(gdb)"
(many of them already do).  Update a bunch of spots where it wasn't the
case.

Change-Id: I601adaad61fd277a5fceea1759e49cede72e456d
2023-01-10 10:11:48 -05:00
Simon Marchi
01c470037c gdb/doc: use @value{GDBN} in some spots
Change some spots to use "@value{GDBN}" instead of just "GDB".

Change-Id: I3fc26438e603538271cf33e4d148be5fda9ece7e
2023-01-10 10:11:48 -05:00
Simon Marchi
cc81f07b80 gdb/doc: some whitespace fixes
For consistency, replace tabs with spaces in all gdb.texinfo menus.

Change-Id: I0801a72cf82a8afe49ec842244f42d30719634ce
2023-01-10 10:11:48 -05:00
Aaron Merey
7dd38e31d6 gdb/linespec.c: Fix missing source file during breakpoint re-set
During breakpoint re-setting, the source_filename of an
explicit_location_spec is used to lookup the symtabs associated with
the breakpoint being re-set.  This source_filename is compared with each
known symtab filename in order to retrieve the breakpoint's symtabs.

However the source_filename may have been originally copied from a
symtab's fullname (the path where GDB found the source file) when the
breakpoint was first created.  If a breakpoint symtab's filename and
fullname differ and there is no substitute-path rule that converts the
fullname to the filename, this will cause a NOT_FOUND_ERROR to be thrown
during re-setting.

Fix this by using a symtab's filename to set the explicit_location_spec
source_filename instead of the symtab's fullname.
2023-01-09 19:47:10 -05:00
Aaron Merey
2ff63a29b0 gdb/linespec.c: Fix -Wmaybe-uninitialized warning
Although the bool want_start_sal isn't actually used without being assigned
a value, initialize it to be false in order to prevent the following
-Wmaybe-uninitialized warning:

    linespec.c: In function ‘void minsym_found(linespec_state*, objfile*, minimal_symbol*, std::vector<symtab_and_line>*)’:
    linespec.c:4150:19: warning: ‘want_start_sal’ may be used uninitialized [-Wmaybe-uninitialized]
     4150 |   if (is_function && want_start_sal)
2023-01-09 19:47:00 -05:00
Tom Tromey
bf716a53bd Fix crash with C++ qualified names
PR c++/29503 points out that something like "b->Base::member" will
crash when 'b' does not have pointer type.  This seems to be a simple
oversight in eval_op_member.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29503
Reviewed-By: Bruno Larsen <blarsen@redhat.com>
2023-01-09 12:16:02 -07:00
Simon Marchi
000f9cbef9 gdb/doc: fix @code{GDBN} -> @value{GDBN}
Change-Id: I928d6f8d6e6bc41d8c7ddbfae8f6ae0614f4993e
2023-01-09 14:11:29 -05:00
Tankut Baris Aktemur
23f3415896 testsuite: add -O0 to Intel compilers if no 'optimize' option is given
icpx/icx give the following warning if '-g' is used without '-O'.

   icpx: remark: Note that use of '-g' without any optimization-level
   option will turn off most compiler optimizations similar to use of
   '-O0'; use '-Rno-debug-disables-optimization' to disable this
   remark [-Rdebug-disables-optimization]

The warning makes dejagnu think that compilation has failed.  E.g.:

  $ make check TESTS="gdb.cp/local.exp" RUNTESTFLAGS="CXX_FOR_TARGET='icpx' CC_FOR_TARGET=icx"
  ...
  gdb compile failed, icpx: remark: Note that use of '-g' without any optimization-level option will turn off most compiler optimizations similar to use of '-O0'; use '-Rno-debug-disables-optimization' to disable this remark [-Rdebug-disables-optimization]

                  === gdb Summary ===

  # of untested testcases         1

Furthermore, if no -O flag is passed, icx/icc optimize
the code by default.  This breaks assumptions in many GDB tests
that the code is unoptimized by default.  E.g.:

  $ make check TESTS="gdb.cp/cmpd-minsyms.exp" RUNTESTFLAGS="CXX_FOR_TARGET='icpx' CC_FOR_TARGET=icx"
  ...
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at 'GDB<int>::a() const'
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at 'GDB<int>::b() volatile'
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at 'GDB<int>::c() const volatile'
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at GDB<int>::operator ==
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at GDB<int>::operator==(GDB<int> const&)
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at GDB<char>::harder(char)
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at GDB<int>::harder(int)
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at "int GDB<char>::even_harder<int>(char)"
  FAIL: gdb.cp/cmpd-minsyms.exp: gdb_breakpoint: set breakpoint at GDB<int>::simple()

                  === gdb Summary ===

  # of expected passes            1
  # of unexpected failures        9

To fix both problems, pass the -O0 flag explicitly, if no optimization
option is given.

With this patch we get, e.g.:

  $ make check TESTS="gdb.cp/cmpd-minsyms.exp gdb.cp/local.exp" RUNTESTFLAGS="CXX_FOR_TARGET='icpx' CC_FOR_TARGET=icx"
  ...
                  === gdb Summary ===

  # of expected passes            19
  # of known failures             1

Approved-By: Tom Tromey <tom@tromey.com>
2023-01-09 09:50:15 +01:00
Nils-Christian Kempke
0046ff6068 testsuite: handle icc and icpc deprecated remarks
Starting with icc/icpc version 2021.7.0 and higher both compilers emit a
deprecation remark when used.  E.g.

  >> icc --version
  icc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is
  deprecated and will be removed from product release in the second half
  of 2023. The Intel(R) oneAPI DPC++/C++ Compiler (ICX) is the recommended
  compiler moving forward. Please transition to use this compiler. Use
  '-diag-disable=10441' to disable this message.
  icc (ICC) 2021.7.0 20220713
  Copyright (C) 1985-2022 Intel Corporation.  All rights reserved.

  >> icpc --version
  icpc: remark #10441: The Intel(R) C++ Compiler Classic (ICC) is
  deprecated ...
  icpc (ICC) 2021.7.0 20220720
  Copyright (C) 1985-2022 Intel Corporation.  All rights reserved.

As the testsuite compile fails when unexpected output by the compiler is
seen this change in the compiler breaks all existing icc and icpc tests.
This patch makes the gdb testsuite more forgiving by a) allowing the
output of the remark when trying to figure out the compiler version
and by b) adding '-diag-disable=10441' to the compile command whenever
gdb_compile is called without the intention to detect the compiler.

Approved-By: Tom Tromey <tom@tromey.com>
2023-01-09 09:50:08 +01:00
Bruno Larsen
bb391cb24d gdb/c++: Detect ambiguous variables in imported namespaces
When running gdb.cp/nsusing.cc and stopping at line 17, we can ask GDB
to print x and get a compiler-dependent answer. Using gcc 12.2.1, GDB
will print M::x, and using clang 16.0.0 prints N::x. Not only is this
behavior confusing to users, it is also not consistent with compiler
behaviors, which would warn that using x is ambiguous at this point.

This commit makes GDB behavior consistent with compilers. it achieves
this by making it so instead of exiting early when finding any symbol
with the correct name, GDB continues searching through all include
directives, storing all matching symbols in a relational map betwen the
mangled name and the found symbols.

If the resulting map has more than one entry, GDB says that the
reference is ambiguous and lists all possibilities. Otherwise it returns
the block_symbol structure for the desired symbol, or an empty struct if
nothing was found.

The commit also changes gdb.cp/nsusing.exp to test the ambiguous
detection.
2023-01-06 10:52:55 +01:00
Bruno Larsen
37f54063ed gdb/mi: add no-history stop reason
When executing in reverse and runs out of recorded history, GDB prints
a warning to the user, but does not add a reason in the stopped record,
for example:

*stopped,frame={addr="0x000000000040113e",func="main",args=[],file="/home/blarsen/Documents/fsf_build/gdb/testsuite/../../../binutils-gdb/gdb/testsuite/gdb.reverse/solib-reverse.c",fullname="/home/blarsen/Documents/binutils-gdb/gdb/testsuite/gdb.reverse/solib-reverse.c",line="27",arch="i386:x86-64"},thread-id="1",stopped-threads="all",core="1"

This problem was reported as record/29260.

This commit adds the reason no-history to the record, making it easier
for interfaces using the mi interpreter to report the result.  It also
changes the test gdb.mi/mi-reverse.exp to test that the reason shows up
correctly.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29260
2023-01-06 10:51:50 +01:00