When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/nested-subp2.exp ...
DUPLICATE: gdb.base/nested-subp2.exp: continue to the STOP marker
DUPLICATE: gdb.base/nested-subp2.exp: print c
DUPLICATE: gdb.base/nested-subp2.exp: print count
Fix by using with_test_prefix to differentiate the test that are
performed at different points during the execution of the debuggee.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/call-signal-resume.exp ...
DUPLICATE: gdb.base/call-signal-resume.exp: dummy stack frame number
DUPLICATE: gdb.base/call-signal-resume.exp: set confirm off
DUPLICATE: gdb.base/call-signal-resume.exp: return
This is due to the fact that a pattern was probably copy/pasted to
re-use the logic while not adjusting the test names to avoid the
duplication.
Fix by removing the redundant tests ('set confirm off' only needs to be
used once) and adjusting the test names where appropriate.
Tested on x86_64-linux.
When I run the testsuite, I have :
Running .../gdb/testsuite/gdb.base/pointers.exp ...
DUPLICATE: gdb.base/pointers.exp: pointer assignment
Fix by placing the sections with duplication in with_test_prefix blocks.
This removes the duplication and gives a better organization the file.
Tested on x86_64-linux.
Co-Authored-By: Pedro Alves <pedro@palves.net>
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/unload.exp ...
DUPLICATE: gdb.base/unload.exp: continuing to unloaded libfile
Fix by adjusting the test name.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/define-prefix.exp ...
DUPLICATE: gdb.base/define-prefix.exp: define user command: ghi-prefix-cmd
Fix by adjusting test names.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/funcargs.exp ...
DUPLICATE: gdb.base/funcargs.exp: run to call2a
Fix by using proc_with_prefix instead on plain proc to create logical
function blocks.
Tested on x86_64-linux.
When I run the testsuite, I have:
Running .../gdb/testsuite/gdb.base/shlib-call.exp ...
DUPLICATE: gdb.base/shlib-call.exp: print g
DUPLICATE: gdb.base/shlib-call.exp: set print sevenbit-strings
DUPLICATE: gdb.base/shlib-call.exp: set print address off
DUPLICATE: gdb.base/shlib-call.exp: set width 0
DUPLICATE: gdb.base/shlib-call.exp: continue until exit
Fix by adjusting the test names when required, and by removing
un-necessary commands.
While at it, do some cleanup:
- Replace an explicit GDB restart sequence with a call to clean_restart.
- Remove trailing whitespaces.
- Use $gdb_test_name in gdb_test_multiple.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/set-cwd.exp ...
DUPLICATE: gdb.base/set-cwd.exp: test_cwd_reset: continue to breakpoint: break-here
Fix by moving the tests after the 'runto_main' within the same
with_test_prefix scope.
While at it, I fix some indentation issues.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/exprs.exp ...
DUPLICATE: gdb.base/exprs.exp: \$[0-9]* = red (setup)
Fix by using with_test_prefix where appropriate.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/readline.exp ...
DUPLICATE: gdb.base/readline.exp: Simple operate-and-get-next - final prompt
Fix by adjusting the prefix given to the second 'simple' call to
operate_and_get_next.
Tested on x86_64-linux.
When I run the testsuite, I have:
Running .../gdb/testsuite/gdb.base/pretty-array.exp ...
DUPLICATE: gdb.base/pretty-array.exp: print nums
DUPLICATE: gdb.base/pretty-array.exp: print nums
Fix by giving a name to the test cases.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/ui-redirect.exp ...
DUPLICATE: gdb.base/ui-redirect.exp: redirect while already logging: set logging redirect off
Fix by moving the first 'set logging redirect off' to the end of the
previous [with_test_prefix] test block. The statement's purpose is to
clean the on flag set in this previous block, so moving it there makes
sense and does not change the sequence of commands in the test file.
Tested on x86_64-linux.
There is a expect support library in the source tree designed to help
developers test the auto-completion capabilities of GDB.
One of the functions is test_gdb_complete_unique_re. It is used
(usually indirectly via test_gdb_complete_unique) to test that a given
input line is completed as a given output line. The test checks for two
ways to do the completion: using tab-completion, or using the
'complete' command. To do this, calls to two dedicated functions are
performed. If we omit few details, we can consider that a call to
test_gdb_complete_unique $input $expected
is equivalent to the two following calls:
test_gdb_complete_tab_unique $input $expected
test_gdb_complete_cmd_unique $input $expected
When using the tab-completion, everything works as expected, but some
care must be taken when using the 'complete' command if the given input
has leading whitespaces. In such situation, the output of the
'complete' command will drop the leading whitespaces.
The current approach is that in such situation, the input and expected
outputs are right trimmed (i.e. all leading whitespaces are removed)
when performing the command completion check.
This means that the following call:
test_gdb_complete_unique " $input" " $expected"
is almost equivalent to (again, omitting few details and arguments):
test_gdb_complete_tab_unique " $input" " $expected"
test_gdb_complete_cmd_unique "$input" "$expected"
This approach comes with a problem that we encounter when running the
tests in complete-empty.exp. When doing so, we have:
Running .../gdb/testsuite/gdb.base/complete-empty.exp ...
DUPLICATE: gdb.base/complete-empty.exp: empty-input-line: cmd complete ""
This is because the test file does something like:
test_gdb_complete_unique "" "!" " " 1
test_gdb_complete_unique " " " !" " " 1¬
which, if we do the substitution introduced above is equivalent to:
test_gdb_complete_tab_unique "" "!"
test_gdb_complete_cmd_unique "" "!"
test_gdb_complete_tab_unique " " " !"
test_gdb_complete_cmd_unique "" "!"
We see that the lines 2 and 4 are now the same, and for this reason the
testing framework complains about DUPLICATE test names.
To fix that, this commit proposes that instead of left trimming both
input and expected outputs, only the expected output is trimmed.
Care must be taken in the case the completion gives more possibilities
than allowed by the max-completions setting. In this case, the input
will be repeated in the output in its left trimmed version. This commit
also ensures that this is taken care of.
With this commit, the gdb.base/complete-empty.exp still passes all its
tests but does not report the DUPLICATE anymore.
Tested on x86_64-linux.
When I run the testsuite, I have:
Running .../gdb/testsuite/gdb.base/subst.ex ...
DUPLICATE: gdb.base/subst.exp: unset substitute-path from, no rule entered yet
Fix by adjusting the problematic test name.
Tested on x86_64-linux.
When I run the testsuite, I have:
Running ../gdb/testsuite/gdb.base/dfp-exprs.exp ...
DUPLICATE: gdb.base/dfp-exprs.exp: p 1.2dl < 1.3df
Replace hand-written tests checking various comparison operators between
various decimal floating point types with a loop to programmatically
generate all the combinations. This removes the need to eyeball for all
suffixes, which lead to the original duplication.
Also add a lot more combinations, testing all comparison operators
comprehensively. The result is 262 unique tests vs 104 before this
patch.
Tested on x86_86-linux.
Change-Id: Id215a3d610aa8e032bf06ee160b5e3aed4a92d1e
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/ptype.exp ...
DUPLICATE: gdb.base/ptype.exp: ptype the_highest
DUPLICATE: gdb.base/ptype.exp: list intfoo
DUPLICATE: gdb.base/ptype.exp: list charfoo
Fix by adjusting the offending test names.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/dfp-test.exp ...
DUPLICATE: gdb.base/dfp-test.exp: 1.23E is an invalid number
DUPLICATE: gdb.base/dfp-test.exp: 1.23E45A is an invalid number
DUPLICATE: gdb.base/dfp-test.exp: 1.23E is an invalid number
DUPLICATE: gdb.base/dfp-test.exp: 1.23E45A is an invalid number
Fix by using proc_with_prefix where appropriate.
Tested on x86_64-linux.
Co-Authored-By: Andrew Burgess <aburgess@redhat.com>
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/del.exp ...
DUPLICATE: gdb.base/del.exp: info break after removing break on main
Refactor slightly this test to run the various configurations under
foreach_with_prefix so each variant is automatically prefixed, ensuring
that the forgotten custom test name cannot happen.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/solib-display.exp ...
DUPLICATE: gdb.base/solib-display.exp: NO: break 25
DUPLICATE: gdb.base/solib-display.exp: NO: continue
DUPLICATE: gdb.base/solib-display.exp: IN: break 25
DUPLICATE: gdb.base/solib-display.exp: IN: continue
DUPLICATE: gdb.base/solib-display.exp: SEP: break 25
DUPLICATE: gdb.base/solib-display.exp: SEP: continue
The 'break 25' appears because the test inserts two breakpoints at the
same location. Fix this by only inserting the breakpoint once.
Fix the 'continue' DUPLICATE by giving a phony name to the second
continue: 'continue two'.
While at it, this commit also removes a trailing space.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/decl-before-def.exp ...
DUPLICATE: gdb.base/decl-before-def.exp: p a
Fix by giving explicit names to the two tests that use the same command.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/pending.exp ...
DUPLICATE: gdb.base/pending.exp: disable other breakpoints
Fix by adjusting the test names.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/checkpoint.exp ...
DUPLICATE: gdb.base/checkpoint.exp: verify lines 5 two
DUPLICATE: gdb.base/checkpoint.exp: restart 0 one
This patch fixes the various erroneous incorrect test names.
While at it, this patch also remove some trailing white spaces across
the file.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/pie-fork.exp ...
DUPLICATE: gdb.base/pie-fork.exp: test_no_detach_on_fork: continue
Fix by giving explicit names to the 'continue' commands that cause the
duplicate message.
Tested on x86_64-linux.
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.base/realname-expand.exp ...
DUPLICATE: gdb.base/realname-expand.exp: set basenames-may-differ on
This is due to the fact that the test restarts GDB twice and each time
sets the basenames-may-differ setting. This patch proposes to fix this
by not restarting GDB so the setting is maintained. It just clears the
breakpoints between the two tests and updates the breakpoints number as
required.
This patch also perform some minor refactorings to improve visibility.
Tested on x86_64-linux.
When running the testsuite I have:
Running .../gdb/testsuite/gdb.base/interp.exp ...
DUPLICATE: gdb.base/interp.exp: interpreter-exec mi "-var-update *"
This is due to the fact that multiple successive instances of
gdb_test_multiple use 'pass $cmd', but one of them forgets to reset $cmd
to a new test name.
Fix by using 'pass $gdb_test_name', given that the gdb_test_name is set
by gdb_test_multiple.
While fixing this, this patch refactors all occurrences of the following
pattern:
set cmd foo
gdb_test_multiple $cmd $cmd {
-re ... {
pass $cmd
}
}
into
gdb_test_multiple foo "" {
-re ... {
pass $gdb_test_name
}
}
This makes this test file coherent in its use of $gdb_test_name.
Tested on x86_64-linux.
When running the testsuite I see:
Running .../gdb/testsuite/gdb.base/miscexprs.exp ...
DUPLICATE: gdb.base/miscexprs.exp: print value of !ibig.i[100]
DUPLICATE: gdb.base/miscexprs.exp: print value of !ibig.i[100]
This is due to an explicit test name repeated across multiple tests.
The actual test explicit names do not add much over the command from
wich default test names are derived.
Fix by removing the explicit test names across the file where they do
not add value. While at doing some cleaning, also use $gdb_test_name in
the various uses of gdb_test_multiple.
Tested on x86_64-linux.
When running the testsuite I have:
Running .../gdb/testsuite/gdb.base/stack-checking.exp ...
DUPLICATE: gdb.base/stack-checking.exp: bt
DUPLICATE: gdb.base/stack-checking.exp: bt
Fix by using with_test_prefix.
Tested on x86_64-linux.
After commit d8af286fff ("RISC-V: Drop the privileged spec v1.9
support.") has removed support for privileged spec v1.9, this removes
it from the documentation.
References: d8af286fff ("RISC-V: Drop the privileged spec v1.9 support.")
gas/ChangeLog:
* configure: Regenerate.
* configure.ac: Remove reference to priv spec 1.9.
* po/fr.po: Same.
* po/ru.po: Same.
* po/uk.po: Same.
While support for the privileged spec was added in a63375ac33
("RISC-V: Hypervisor ext: support Privileged Spec 1.12"), the
documentation has not been updated. Add 1.12 to the relevant
documentation.
References: a63375ac33 ("RISC-V: Hypervisor ext: support Privileged Spec 1.12")
gas/ChangeLog:
* config/tc-riscv.c: Add 1.12 to the usage message.
* configure: Regenerate.
* configure.ac: Add 1.12 to the help/usage message.
* po/fr.po: Same.
* po/ru.po: Same.
* po/uk.po: Same.
ax.cc checks CC_HAS_LONG_LONG, but nothing defines this. However,
PRINTF_HAS_LONG_LONG is checked in configure. This patch removes the
former and keeps the latter. This is PR remote/14976 (filed by me in
2012, lol).
I'm checking this in.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=14976
Building on the previous commit, this makes use of a trailing @ to
split long @deffn lines in the guile.texi source file. This splitting
doesn't change how the document is laid out by texinfo.
I have also wrapped keyword and argument name pairs in @w{...} to
prevent line breaks appearing between the two. I've currently only
done this for the longer @deffn lines, where a line break is
possible. This makes the @deffn lines much nicer to read in the
generated pdf.
Most guile procedures in the guile.texi file are defined like:
@deffn {Scheme Procedure} name arg1 arg2 arg3
But there are two places where we do this:
@deffn {Scheme Procedure} (name arg1 arg2 arg3)
Notice the added (...). Though this does represent how a procedure
call is written in scheme, it's not the normal style throughout the
manual. I also checked the 'info guile' info page to see how they
wrote there declarations, and they use the first style too.
The second style also has the drawback that index entries are added as
'(name', and so they are grouped in the '(' section of the index,
which is not very user friendly.
In this commit I've changed the definitions of make-command and
make-parameter to use the first style.
The procedure declaration lines can get pretty long with all of the
arguments, and this was true for both of the procedures I am changing
in this commit. I have made use of a trailing '@' to split the deffn
lines, and keep them under 80 characters in the texi source. This
makes no difference to how the final document looks.
Finally, our current style for keyword arguments, appears to be:
[#:keyword-name argument-name]
I don't really understand the reason for this, 'info guile' just seems
to use:
[#:keyword-name]
which seems just as good to me. But I don't propose to change
that just now. What I do notice though, is that sometimes, texinfo
will place a line break between the keyword-name and the
argument-name, for example, the pdf of make-command is:
make-command name [#:invoke invoke] [#:command-class
command-class] [#:completer-class completer] [#:prefix? prefix] [#:doc
doc-string]
Notice the line break after '#:command-class' and after '#:doc',
neither of which are ideal. And so, for the two commands I am
changing in this commit, I have made use of @w{...} to prevent line
breaks between the keyword-name and the argument-name. Now the pdf
looks like this:
make-command name [#:invoke invoke]
[#:command-class command-class] [#:completer-class completer]
[#:prefix? prefix] [#:doc doc-string]
Which seems much better. I'll probably update the other deffn lines
at some point.
Update the default ISA spec from 2.2 to 20191213 will change the default
version of i from 2.0 to 2.1. Since zicsr and zifencei are separated
from i 2.1, users need to add them in the architecture string if they need
fence.i and csr instructions. Besides, we also allow old ISA spec can
recognize zicsr and zifencei, but we won't output them since they are
already included in the i extension when i's version is less than 2.1.
bfd/
* elfxx-riscv.c (riscv_parse_add_subset): Allow old ISA spec can
recognize zicsr and zifencei.
gas/
* config/tc-riscv.c (DEFAULT_RISCV_ISA_SPEC): Updated to 20191213.
* testsuite/gas/riscv/csr-version-1p10.d: Added zicsr to -march since
the default version of i is 2.1.
* testsuite/gas/riscv/csr-version-1p11.d: Likewise.
* testsuite/gas/riscv/csr-version-1p12.d: Likewise.
* testsuite/gas/riscv/csr-version-1p9p1.d: Likewise.
* testsuite/gas/riscv/option-arch-03.d: Updated i's version to 2.1.
* testsuite/gas/riscv/option-arch-03.s: Likewise.
ld/
* testsuite/ld-riscv-elf/call-relax.d: Added zicsr to -march since
the default version of i is 2.1.
* testsuite/ld-riscv-elf/attr-merge-arch-01.d: Updated i's version to 2.1.
* testsuite/ld-riscv-elf/attr-merge-arch-01a.s: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-01b.: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-02.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-02a.s: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-02b.s: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-03.d: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-03a.s: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-03b.s: Likewise.
* testsuite/ld-riscv-elf/attr-merge-arch-failed-02.d: Added zifencei
into Tag_RISCV_arch since it is added implied when i's version is
larger than 2.1.
This patch adds support for three new SME instructions: ADDSPL,
ADDSVL and RDSVL. They behave like ADDPL, ADDVL and RDVL, but read
the streaming vector length instead of the current vector length.
opcodes/
* aarch64-tbl.h (aarch64_opcode_table): Add ADDSPL, ADDSVL and RDSVL.
* aarch64-dis-2.c: Regenerate.
gas/
* testsuite/gas/aarch64/sme.s, testsuite/gas/aarch64/sme.d: Add tests
for ADDSPL, ADDSVL and RDSVL.
target_announce_detach was added in commit 0f48b757 ("Factor out
"Detaching from program" message printing"). There, Pedro wrote:
(For now, I left the couple targets that print this a bit differently
alone. Maybe this could be further pulled out into infcmd.c. If we
did that, and those targets want to continue printing differently,
this new function could be converted to a target method.)
It seems to me that the differences aren't very big, and in some cases
other targets handled the output a bit more nicely. In particular,
some targets will print a different message when exec_file==NULL,
rather than printing the same output with an empty string as
exec_file.
This patch incorporates the nicer output into target_announce_detach,
then changes the remaining ports to use this function.
This introduces target_announce_attach, by analog with
target_announce_detach. Then it converts existing targets to use
this, rather than emitting their own output by hand.
In gnu-nat.c we currently implement some set/show prefix commands
"manually", that is, we call add_prefix_cmd, and assign a set and show
function to each prefix command.
These set/show functions print an error indicating that the user
didn't type a complete command.
If we instead switch to using add_setshow_prefix_cmd then we can
delete the set/show functions, GDB provides some default functions,
which give a nice help style summary that lists all of the available
sub-commands, along with a one line summary of what each does.
Though this clearly changes the existing behaviour, I think this
change is acceptable as the new behaviour is more inline with other
set/show prefix commands, and the new behaviour is more informative.
This change will conflict with Tom's change here:
https://sourceware.org/pipermail/gdb-patches/2022-January/184724.html
Where Tom changes the set/show functions that I delete. My suggestion
is that the set/show functions still be deleted even after Tom's
patch (or instead of Tom's patch).
For testing I've build GDB on GNU/Hurd, and manually tested these
functions. I did a grep over the testsuite, and don't believe the
existing error messages are being checked for in any tests.
windows-tdep.c checks the result of xmalloc, which isn't necessary. I
initially removed this dead check, but then went a bit further and
modified the code so that some "goto"s and explicit memory management
could be removed. Then, I added a couple of missing bounds checks.
I believe this also fixes a possible bug with a missing 0-termination
of a string. I am not certain, but that is why I think the existing
code allocates a buffer that is 1 byte too long -- but then it fails
to set this byte to 0.
language_info calls:
show_language_command (NULL, 1, NULL, NULL);
... "knowing" that show_language_command does not use its ui_file
parameter. However, this was changed in commit 7514a661
("Consistently Use ui_file parameter to show callbacks").
This patch changes language_info to pass a ui_file.
It took a while to write the test -- this function is only called when
'verbose' is on and when switching the "expected" language in auto
mode.
langs.exp currently has some fails for me because the stack trace
includes full paths to the source files.
FAIL: gdb.base/langs.exp: up to foo in langs.exp
FAIL: gdb.base/langs.exp: up to cppsub_ in langs.exp
FAIL: gdb.base/langs.exp: up to fsub in langs.exp
This fixes the failures by making the filename regexps a bit more lax.
To avoid issues like that addressed by 6e3e5c9e41 ("x86: extend SSE
check to PCLMULQDQ, AES, and GFNI insns"), base the check on opcode
attributes and operand types.
As already indicated in a remark when introducing these templates, the
"commutative" attribute is ignored for legacy encoding templates. Hence
it is possible to shorten a number of templates by specifying C directly
rather than through a template parameter. I think this helps readability
a bit.