Andrew Burgess [Thu, 6 Jan 2022 15:32:55 +0000 (15:32 +0000)]
gdb/hurd: handle inferiors exiting
While testing on GNU/Hurd (i386) I noticed that GDB crashes when an
inferior exits, with this error:
inferior.c:293: internal-error: inferior* find_inferior_pid(process_stratum_target*, int): Assertion `pid != 0' failed.
The problem appears to be in gnu_nat_target::wait.
We always set inferior_ptid to null_ptid before calling target_wait,
this has been the case since the multi-target changes were made to GDB
in commit:
commit
5b6d1e4fa4fc6827c7b3f0e99ff120dfa14d65d2
Date: Fri Jan 10 20:06:08 2020 +0000
Multi-target support
With follow up changes in commit:
commit
24ed6739b699f329c2c45aedee5f8c7d2f54e493
Date: Thu Jan 30 14:35:40 2020 +0000
gdb/remote: Restore support for 'S' stop reply packet
Unfortunately, the GNU/Hurd target is still relying on the value of
inferior_ptid in the case where an inferior exits - we return the
value of inferior_ptid as the pid of the process that exited. This
was fine in the single target world, where inferior_ptid identified
the one running inferior, but this is no longer good enough.
Instead, we should return a ptid containing the pid of the process
that exited, as obtained from the wait event, and this is what this
commit does.
I've not run the full testsuite on GNU/Hurd as there appear to be lots
of other issues with this target that makes running the full testsuite
very painful, but I think this looks like a small easy improvement.
Tom Tromey [Sat, 8 Jan 2022 16:45:27 +0000 (09:45 -0700)]
Add explicit check for nullptr to target_announce_attach
Lancelot pointed out that target_announce_attach was missing an
explicit check against nullptr. This patch adds it.
Hannes Domani [Tue, 7 Apr 2020 18:57:07 +0000 (20:57 +0200)]
Add _sigsys info to siginfo struct
This patch adds information about _sigsys structure from newer
kernels, so that $_siginfo decoding can show information about
_sigsys, making it easier for developers to debug seccomp failures.
Requested in PR gdb/24283.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=24283
Tiezhu Yang [Sat, 8 Jan 2022 10:43:00 +0000 (14:43 +0400)]
gdb: testsuite: show print array-indexes after set in arrayidx.exp
Add "show print array-indexes" testcases after set print array-indexes
to off or on.
Without this patch:
PASS: gdb.base/arrayidx.exp: set print array-indexes to off
PASS: gdb.base/arrayidx.exp: print array with array-indexes off
PASS: gdb.base/arrayidx.exp: set print array-indexes to on
PASS: gdb.base/arrayidx.exp: print array with array-indexes on
With this patch:
PASS: gdb.base/arrayidx.exp: set print array-indexes to off
PASS: gdb.base/arrayidx.exp: show print array-indexes is off
PASS: gdb.base/arrayidx.exp: print array with array-indexes off
PASS: gdb.base/arrayidx.exp: set print array-indexes to on
PASS: gdb.base/arrayidx.exp: show print array-indexes is on
PASS: gdb.base/arrayidx.exp: print array with array-indexes on
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
H.J. Lu [Mon, 27 Dec 2021 18:13:06 +0000 (10:13 -0800)]
ld: Extract _bfd_elf_link_iterate_on_relocs
DT_RELR encodes consecutive R_*_RELATIVE relocations in GOT (the global
offset table) and data sections in a compact format:
https://groups.google.com/g/generic-abi/c/bX460iggiKg
On some targets, R_*_RELATIVE relocations are counted and the GOT offsets
are allocated when setting the dynamic section sizes after seeing all
relocations. R_*_RELATIVE relocations are generated while relocating
sections after section layout has been finalized.
To prepare for DT_RELR implementation on these targets, extract
_bfd_elf_link_iterate_on_relocs from _bfd_elf_link_check_relocs so
that a backend can scan relocations in elf_backend_always_size_sections
For x86 targets, the old check_relocs is renamed to scan_relocs and a
new check_relocs is added to chek input sections and create dynamic
relocation sections so that they will be mapped to output sections.
scan_relocs is now called from elf_backend_always_size_sections.
Since relocations are scanned after __start, __stop, .startof. and
.sizeof. symbols have been finalized on x86, __[start|stop]_SECNAME for
--gc-sections -z start-stop-gc are now zero when all SECNAME sections
been garbage collected. This is no need for elf_x86_start_stop_gc_p.
bfd/
* elf-bfd.h (_bfd_elf_link_iterate_on_relocs): New.
* elf32-i386.c (elf_i386_convert_load_reloc): Don't call
elf_x86_start_stop_gc_p.
(elf_i386_check_relocs): Renamed to ...
(elf_i386_scan_relocs): This. Don't call
_bfd_elf_make_dynamic_reloc_section.
(elf_i386_always_size_sections): New.
(elf_backend_check_relocs): Removed.
(elf_backend_always_size_sections): New.
* elf64-x86-64.c (elf_x86_64_convert_load_reloc): Don't call
elf_x86_start_stop_gc_p.
(elf_x86_64_check_relocs): Renamed to ...
(elf_x86_64_scan_relocs): This. Don't call
_bfd_elf_make_dynamic_reloc_section.
(elf_x86_64_always_size_sections): New.
(elf_backend_check_relocs): Removed.
(elf_backend_always_size_sections): New.
* elflink.c (elf_link_check_or_scan_relocs):
New. Extracted from _bfd_elf_link_check_relocs.
(_bfd_elf_link_check_relocs): Call elf_link_check_or_scan_relocs.
* elfxx-x86.c (_bfd_x86_elf_check_relocs): New.
* elfxx-x86.h (X86_64_NEED_DYNAMIC_RELOC_TYPE_P): New.
(I386_NEED_DYNAMIC_RELOC_TYPE_P): Likewise.
(X86_NEED_DYNAMIC_RELOC_TYPE_P): Likewise.
(_bfd_x86_elf_check_relocs): Likewise.
(elf_backend_check_relocs): Likewise.
(elf_backend_always_size_sections): Removed.
(elf_x86_start_stop_gc_p): Likewise.
ld/
* testsuite/ld-i386/pr27491-1a.d: Updated.
* testsuite/ld-x86-64/pr27491-1a.d: Likewise.
GDB Administrator [Sat, 8 Jan 2022 00:00:09 +0000 (00:00 +0000)]
Automatic date update in version.in
Lancelot SIX [Mon, 22 Nov 2021 22:36:47 +0000 (22:36 +0000)]
gdb/testsuite: Remove duplicates from gdb.mi/mi-catch-load.exp
When I run the testsuite, I have:
Running .../gdb/testsuite/gdb.mi/mi-catch-load.exp ...
DUPLICATE: gdb.mi/mi-catch-load.exp: breakpoint at main
DUPLICATE: gdb.mi/mi-catch-load.exp: mi runto main
Fix by grouping the various phases in with_test_prefix blocks. Since
the tests now have a prefix, remove the manually written prefixes in
testnames.
Also change some messages with the pattern "(timeout) $testname" into
"$estname (timeout)" since tools will handle this as $testname[1] (which
is what we want in this particular scenario).
Tested on x86_64-linux.
[1] https://sourceware.org/gdb/wiki/GDBTestcaseCookbook#Do_not_use_.22tail_parentheses.22_on_test_messages
Lancelot SIX [Tue, 23 Nov 2021 16:40:24 +0000 (16:40 +0000)]
gdb/testsuite: Remove duplicates from gdb.threads/staticthreads.ex
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.threads/staticthreads.exp ...
DUPLICATE: gdb.threads/staticthreads.exp: couldn't compile staticthreads.c: unrecognized error
Fix by using foreach_with_prefix instead of foreach when preparing the
test case.
Testeed on x86_64-linux both in a setup where the test fails to prepare
and in a setup where the test fails to setup.
Lancelot SIX [Tue, 23 Nov 2021 15:15:57 +0000 (15:15 +0000)]
gdb/testsuite: Remove duplicates from gdb.mi/mi-language.exp
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.mi/mi-language.exp ...
DUPLICATE: gdb.mi/mi-language.exp: set lang ada
This is due to an erroneous explicit test name. This explicit test name
also happens to be useless (at least it would have been if it was
correct) since it only repeats the command, so just remove the explicit
test name and let the command be used as default test name. Also remove
explicit test name at another location in the file since it also just
repeat the command.
Tested on x86_64-linux.
Lancelot SIX [Tue, 23 Nov 2021 13:42:13 +0000 (13:42 +0000)]
gdb/testsuite: Remove duplicates from gdb.mi/mi-nonstop-exit.exp
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.mi/mi-nonstop-exit.exp ...
DUPLICATE: gdb.mi/mi-nonstop-exit.exp: breakpoint at main
DUPLICATE: gdb.mi/mi-nonstop-exit.exp: mi runto main
This test runs the same sequence of operations twice. Refactor the code
by running both of those sequences within a foreach_with_prefix block to
ensure that the commands have unique test names.
Tested on x86_64-linux.
Lancelot SIX [Tue, 23 Nov 2021 13:35:47 +0000 (13:35 +0000)]
gdb/testsuite: Remove duplicates from gdb.mi/mi-nonstop.exp
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.mi/mi-nonstop.exp ...
DUPLICATE: gdb.mi/mi-nonstop.exp: check varobj, w1, 1
DUPLICATE: gdb.mi/mi-nonstop.exp: stacktrace of stopped thread
Fix by adjusting the problematic test names.
Tested on x86_64-linux.
Lancelot SIX [Mon, 22 Nov 2021 22:03:47 +0000 (22:03 +0000)]
gdb/testsuite: Remove duplicates from gdb.mi/mi-nsthrexec.exp
When running the testsuite, I have:
Running .../gdb/testsuite/gdb.mi/mi-nsthrexec.exp ...
DUPLICATE: gdb.mi/mi-nsthrexec.exp: breakpoint at main
Fix by adjusting the duplicated test name.
Tested on x86_64-linux.
Lancelot SIX [Sun, 21 Nov 2021 17:21:40 +0000 (17:21 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/watchpoints.exp
When running the testsuite, I have:
Running ../gdb/testsuite/gdb.base/watchpoints.exp ...
DUPLICATE: gdb.base/watchpoints.exp: watchpoint hit, first time
Fix by adjusting the test names where appropriate.
Tested on x86_64-linux.
Lancelot SIX [Sun, 21 Nov 2021 15:34:09 +0000 (15:34 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/nested-subp2.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 15:22:49 +0000 (15:22 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/call-signal-resume.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 01:55:43 +0000 (01:55 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/pointers.exp
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>
Lancelot SIX [Sun, 21 Nov 2021 01:50:26 +0000 (01:50 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/unload.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 01:45:21 +0000 (01:45 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/define-prefix.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 01:38:43 +0000 (01:38 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/funcargs.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 01:33:13 +0000 (01:33 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/shlib-call.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 00:55:01 +0000 (00:55 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/set-cfd.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 00:44:36 +0000 (00:44 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/exprs.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 00:35:01 +0000 (00:35 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/readline.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 00:29:01 +0000 (00:29 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/pretty-array.exp
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.
Lancelot SIX [Sun, 21 Nov 2021 00:20:56 +0000 (00:20 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/ui-redirect.exp
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.
Lancelot SIX [Sat, 20 Nov 2021 23:20:23 +0000 (23:20 +0000)]
gdb: completion-support.exp: improve leading whitespace support
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.
Lancelot SIX [Sat, 20 Nov 2021 23:07:55 +0000 (23:07 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/subst.exp
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.
Pedro Alves [Fri, 10 Dec 2021 22:41:54 +0000 (22:41 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/dfp-exprs.exp
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
Lancelot SIX [Sat, 20 Nov 2021 22:57:10 +0000 (22:57 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/ptype.exp
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.
Lancelot SIX [Sat, 20 Nov 2021 00:10:07 +0000 (00:10 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/dfp-test.exp
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>
Lancelot SIX [Fri, 19 Nov 2021 23:55:05 +0000 (23:55 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/del.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 23:34:27 +0000 (23:34 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/solib-display.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 23:27:18 +0000 (23:27 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/decl-before-def.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 23:22:53 +0000 (23:22 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/pending.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 23:16:51 +0000 (23:16 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/checkpoint.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 23:08:23 +0000 (23:08 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/pie-fork.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 22:48:59 +0000 (22:48 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/realname-expand.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 19:55:05 +0000 (19:55 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/interp.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 19:05:37 +0000 (19:05 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/miscexprs.exp
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.
Lancelot SIX [Fri, 19 Nov 2021 18:58:04 +0000 (18:58 +0000)]
gdb/testsuite: Remove duplicates from gdb.base/stack-checking.exp
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.
Philipp Tomsich [Wed, 5 Jan 2022 13:57:28 +0000 (14:57 +0100)]
RISC-V: update docs to reflect privileged spec v1.9 has been dropped
After commit
d8af286fffa ("RISC-V: Drop the privileged spec v1.9
support.") has removed support for privileged spec v1.9, this removes
it from the documentation.
References:
d8af286fffa ("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.
Philipp Tomsich [Tue, 4 Jan 2022 17:12:32 +0000 (18:12 +0100)]
RISC-V: update docs for -mpriv-spec/--with-priv-spec for 1.12
While support for the privileged spec was added in
a63375ac337
("RISC-V: Hypervisor ext: support Privileged Spec 1.12"), the
documentation has not been updated. Add 1.12 to the relevant
documentation.
References:
a63375ac337 ("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.
Tom Tromey [Fri, 7 Jan 2022 21:00:33 +0000 (14:00 -0700)]
Do not use CC_HAS_LONG_LONG
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
Andrew Burgess [Wed, 22 Dec 2021 16:47:29 +0000 (16:47 +0000)]
gdb/doc: shorten some source lines, and prevent some line breaks
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.
Andrew Burgess [Wed, 22 Dec 2021 16:04:56 +0000 (16:04 +0000)]
gdb/doc: Remove (...) around guile procedure names in @deffn lines
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.
Pavel Mayorov [Fri, 7 Jan 2022 12:34:37 +0000 (12:34 +0000)]
Revert previous delta to debug.c. Replace with patch to reject indirect types that point to indirect types.
PR 28718
* dwarf.c: Revert previous delta.
(debug_get_real_type): Reject indirect types that point to
indirect types.
(debug_get_type_name, debug_get_type_size, debug_write_type):
Likewise.
Nelson Chu [Thu, 30 Dec 2021 15:23:46 +0000 (23:23 +0800)]
RISC-V: Updated the default ISA spec to
20191213.
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.
Alan Modra [Fri, 7 Jan 2022 03:13:56 +0000 (13:43 +1030)]
Move elf_backend_always_size_sections earlier
* elflink.c (bfd_elf_size_dynamic_sections): Move plt/got init
earlier and call elf_backend_always_size_sections at the start
of this function.
GDB Administrator [Fri, 7 Jan 2022 00:00:18 +0000 (00:00 +0000)]
Automatic date update in version.in
H.J. Lu [Thu, 6 Jan 2022 22:52:11 +0000 (14:52 -0800)]
ldelfgen.c: Add missing newlines when calling einfo
* ldelfgen.c (ldelf_map_segments): Add the missing newline to
einfo.
Nick Clifton [Thu, 6 Jan 2022 16:37:26 +0000 (16:37 +0000)]
Fix a stack exhaustion bug parsing malicious STABS format debug information.
PR 28718
* debug.c (debug_write_type): Allow for malicious recursion via
indirect debug types.
Richard Sandiford [Thu, 6 Jan 2022 16:22:54 +0000 (16:22 +0000)]
aarch64: Add support for new SME instructions
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.
Tom Tromey [Mon, 27 Dec 2021 05:03:09 +0000 (22:03 -0700)]
Use target_announce_detach in more targets
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.
Tom Tromey [Mon, 27 Dec 2021 04:49:48 +0000 (21:49 -0700)]
Introduce target_announce_attach
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.
Andrew Burgess [Thu, 6 Jan 2022 12:53:20 +0000 (12:53 +0000)]
gdb: make use add_setshow_prefix_cmd in gnu-nat.c
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.
Tom Tromey [Sun, 26 Dec 2021 21:21:28 +0000 (14:21 -0700)]
Use warning in windows-nat error messages
A warning in windows-nat.c can be converted to use the warning
function. As a side effect, this arranges for the output to be sent
to gdb_stderr.
Tom Tromey [Sun, 26 Dec 2021 20:49:22 +0000 (13:49 -0700)]
Clean up some dead code in windows-tdep.c
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.
Tom Tromey [Wed, 5 Jan 2022 17:42:25 +0000 (10:42 -0700)]
Avoid crash in language_info
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.
Tom Tromey [Thu, 6 Jan 2022 14:34:44 +0000 (07:34 -0700)]
Fix some failures in langs.exp
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.
Jan Beulich [Thu, 6 Jan 2022 13:19:56 +0000 (14:19 +0100)]
x86: drop NoAVX insn attribute
To avoid issues like that addressed by
6e3e5c9e4181 ("x86: extend SSE
check to PCLMULQDQ, AES, and GFNI insns"), base the check on opcode
attributes and operand types.
Jan Beulich [Thu, 6 Jan 2022 13:19:20 +0000 (14:19 +0100)]
x86: drop NoAVX from POPCNT
With the introduction of CpuPOPCNT the NoAVX attribute has become
meaningless for POPCNT.
Jan Beulich [Thu, 6 Jan 2022 13:18:54 +0000 (14:18 +0100)]
x86: drop some "comm" template parameters
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.
Jan Beulich [Thu, 6 Jan 2022 13:18:23 +0000 (14:18 +0100)]
x86: templatize FMA insn templates
The operand ordering portion of the mnemonics repeats, causing a flurry
of almost identical templates. Abstract this out.
Jan Beulich [Thu, 6 Jan 2022 13:17:40 +0000 (14:17 +0100)]
x86-64: restrict PC32 -> PLT32 conversion
Neither non-64-bit code nor uses with a non-zero offset from a symbol
should be converted to PLT32, as an eventual PLT entry would not express
what was requested.
Lancelot SIX [Thu, 6 Jan 2022 11:53:29 +0000 (06:53 -0500)]
gdb: Fix copyright year in gdb/testsuite/gdb.base/inferior-clone.exp
I just realized that I forgot to update the year before pushing the
patch that created this file. Since it landed after the global
copyright year update have been done, this file’s copyright year is
updated.
This patch fixes that.
Change-Id: I280f7d86e02d38425f7afdcf19a1c3500d51c23f
Mike Frysinger [Mon, 6 Dec 2021 07:42:00 +0000 (02:42 -0500)]
sim: ppc: migrate to standard uintXX_t types
Drop the sim-specific unsignedXX types and move to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:29:47 +0000 (02:29 -0500)]
sim: common: migrate to standard uintXX_t types
Drop the sim-specific unsignedXX types and move to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:18:31 +0000 (02:18 -0500)]
sim: igen: migrate to standard uintXX_t types
Move off the custom local 64-bit types and to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:17:02 +0000 (02:17 -0500)]
sim: mips: migrate to standard uintXX_t types
Move off the sim-specific unsignedXX types and to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:16:25 +0000 (02:16 -0500)]
sim: cris: migrate to standard uintXX_t types
Move off the sim-specific unsignedXX types and to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:16:02 +0000 (02:16 -0500)]
sim: iq2000: migrate to standard uintXX_t types
Move off the sim-specific unsignedXX types and to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:15:41 +0000 (02:15 -0500)]
sim: synacor: migrate to standard uintXX_t types
Move off the sim-specific unsignedXX types and to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:14:44 +0000 (02:14 -0500)]
sim: msp430: migrate to standard uintXX_t types
Move off the sim-specific unsignedXX types and to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:10:27 +0000 (02:10 -0500)]
sim: riscv: migrate to standard uintXX_t types
Move off the sim-specific unsignedXX types and to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Mon, 6 Dec 2021 07:09:47 +0000 (02:09 -0500)]
sim: bfin: migrate to standard uintXX_t types
Move off the sim-specific unsignedXX types and to the standard uintXX_t
types that C11 provides.
Mike Frysinger [Sun, 5 Dec 2021 17:32:34 +0000 (12:32 -0500)]
sim: testsuite: migrate to standard uintXX_t types
This old code setup its own uintXX types, but since we require C11
now, we can assume the standard uintXX_t types exist and use them.
Mike Frysinger [Sun, 5 Dec 2021 17:29:43 +0000 (12:29 -0500)]
sim: erc32: migrate to standard uintXX_t types
This old port setup its own uintXX types, but since we require C11
now, we can assume the standard uintXX_t types exist and use them.
Mike Frysinger [Sun, 5 Dec 2021 17:28:57 +0000 (12:28 -0500)]
sim: mn10300: migrate to standard uintXX_t types
This old port setup its own uintXX types, but since we require C11
now, we can assume the standard uintXX_t types exist and use them.
Mike Frysinger [Sun, 5 Dec 2021 17:28:46 +0000 (12:28 -0500)]
sim: v850: migrate to standard uintXX_t types
This old port setup its own uintXX types, but since we require C11
now, we can assume the standard uintXX_t types exist and use them.
Mike Frysinger [Sun, 5 Dec 2021 17:26:29 +0000 (12:26 -0500)]
sim: m68hc11: migrate to standard uintXX_t types
This old port setup its own uintXX types, but since we require C11
now, we can assume the standard uintXX_t types exist and use them.
Also migrate off the sim-specific unsignedXX types.
Mike Frysinger [Sun, 5 Dec 2021 17:24:12 +0000 (12:24 -0500)]
sim: d10v: migrate to standard uintXX_t types
This old port setup its own uintXX types, but since we require C11
now, we can assume the standard uintXX_t types exist and use them.
Also migrate off the sim-specific unsignedXX types.
Mike Frysinger [Sun, 5 Dec 2021 17:22:54 +0000 (12:22 -0500)]
sim: cr16: migrate to standard uintXX_t types
This old port setup its own uintXX types, but since we require C11
now, we can assume the standard uintXX_t types exist and use them.
Also migrate off the sim-specific unsignedXX types.
GDB Administrator [Thu, 6 Jan 2022 00:00:14 +0000 (00:00 +0000)]
Automatic date update in version.in
H.J. Lu [Wed, 5 Jan 2022 21:14:20 +0000 (13:14 -0800)]
x86: Add elf_x86_allocate_local_got_info
Add elf_x86_allocate_local_got_info to allocate x86 GOT info for local
symbols.
* elf32-i386.c (elf_i386_check_relocs): Call
elf_x86_allocate_local_got_info.
* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
* elfxx-x86.h (elf_x86_allocate_local_got_info): New.
Vladimir Mezentsev [Wed, 5 Jan 2022 07:07:26 +0000 (23:07 -0800)]
opcodes: Make i386-dis.c thread-safe
Improve thread safety in print_insn_i386_att, print_insn_i386_intel and
print_insn_i386 by removing the use of static variables.
Tested on x86_64-pc-linux-gnu.
2022-01-04 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
* i386-dis.c: Make print_insn_i386_att, print_insn_i386_intel
and print_insn_i386 thread-safe
H.J. Lu [Wed, 5 Jan 2022 19:51:40 +0000 (11:51 -0800)]
doc: Replace =frame-interp with =frames-interp
The actual objdump and readelf option name is =frames-interp, not
=frames-interp.
PR binutils/28747
* doc/debug.options.texi: Replace =frame-interp with
=frames-interp.
Tom Tromey [Tue, 14 Dec 2021 15:46:59 +0000 (08:46 -0700)]
Change riscv_return_value to use RETURN_VALUE_ABI_PRESERVES_ADDRESS
Internally, AdaCore has a test that is equivalent to (really a direct
translation of) gdb.base/gnu_vector.exp. On 32-bit RISC-V, the
"return" part of this test fails.
Joel tracked this down to riscv_return_value returning
RETURN_VALUE_ABI_RETURNS_ADDRESS. Using
RETURN_VALUE_ABI_PRESERVES_ADDRESS is more correct here, and fixes the
bug.
I tested this for both 32- and 64-bit RISC-V using the AdaCore
internal test suite, and Andrew Burgess tested it using
gnu_vector.exp.
Tom Tromey [Thu, 30 Dec 2021 19:34:15 +0000 (12:34 -0700)]
Filtered output cleanup in expression dumping
Most of the expression-dumping code uses filtered output, but a few
functions did not. This patch cleans up these instance.
Note that this won't cause any behavior change, because the only calls
to dump_prefix_expression pass in gdb_stdlog. However, in the long
run it's easier to audit the code if the number of uses of _unfiltered
is reduced.
Tom Tromey [Mon, 27 Dec 2021 01:33:12 +0000 (18:33 -0700)]
Use filtered output in terminal_info implementations
This changes one terminal_info implementation, and
default_terminal_info, to use filtered output. Other implementations
of this method already use filtered output.
I can't compile go32-nat.c, so this is a 'best effort' patch.
Tom Tromey [Mon, 27 Dec 2021 01:22:30 +0000 (18:22 -0700)]
Use filtered output in gnu-nat.c commands
gnu-nat.c has a number of ordinary commands that should use filtered
output. In a few cases, I changed the output to use gdb_stderr as
well. I can't compile this file, so this patch is split out as a
"best effort".
Tom Tromey [Sat, 25 Dec 2021 05:15:42 +0000 (22:15 -0700)]
Use filtered output in *-tdep commands
Various targets introduce their own commands, which then use
unfiltered output. It's better to use filtered output by default, so
this patch fixes the instances I found.
Tom Tromey [Mon, 27 Dec 2021 05:13:48 +0000 (22:13 -0700)]
Use filtered output in btrace-related commands
This changes btrace.c and record-btrace.c to use filtered output in
the commands implemented there.
Tom Tromey [Thu, 30 Dec 2021 19:16:58 +0000 (12:16 -0700)]
Use filtered output in some dumping commands
There are several commands that may optionally send their output to a
file -- they take an optional filename argument and open a file. This
patch changes these commands to use filtered output. The rationale
here is that, when printing to gdb_stdout, filtering is appropriate --
it is, and should be, the default for all commands. And, when writing
to a file, paging will not happen anyway (it only happens when the
stream==gdb_stdout), so using the _filtered form will not change
anything.
Tom Tromey [Mon, 27 Dec 2021 04:42:03 +0000 (21:42 -0700)]
Use filtered output in kill command
This changes the kill command to use filtered output. I split this
one into its own patch because, out of an abundance of caution, I
changed the function to call bfd_cache_close_all a bit earlier, in
case pagination caused an exception.
Tom Tromey [Sat, 25 Dec 2021 05:31:53 +0000 (22:31 -0700)]
Use filtered output in ordinary commands
Many otherwise ordinary commands choose to use unfiltered output
rather than filtered. I don't think there's any reason for this, so
this changes many such commands to use filtered output instead.
Note that complete_command is not touched due to a comment there
explaining why unfiltered output is believed to be used.
Tom Tromey [Mon, 27 Dec 2021 01:17:55 +0000 (18:17 -0700)]
Use filtered output in language_info
Change language_info to use filtered output. This is ok because the
sole caller uses filtered output elsewhere, and because this function
calls show_language_command, which also uses filtered output.
Tom Tromey [Mon, 27 Dec 2021 01:14:39 +0000 (18:14 -0700)]
Use filtered output in files_info implementations
This changes the implementations of the target files_info method to
use filtered output. This makes sense because the sole caller of this
method is an ordinary command (info_program_command). This patch
changes this command to use filtered output as well.
Tom Tromey [Sun, 26 Dec 2021 20:37:23 +0000 (13:37 -0700)]
Use filtered output in target-descriptions.c
target-descriptions.c uses unfiltered output. However, if you happen
to invoke this command interactively, it's probably better for it to
use filtering. For non-interactive use, this doesn't matter.
Tom Tromey [Sun, 26 Dec 2021 20:26:58 +0000 (13:26 -0700)]
Use filtered output for gdbarch dump
This changes gdbarch dumping to use filtered output. This seems a bit
better to me, both on the principle that this is an ordinary command,
and because the output can be voluminous, so it may be nice to stop in
the middle.
Tom Tromey [Fri, 31 Dec 2021 17:40:02 +0000 (10:40 -0700)]
Implement putstr and putstrn in ui_file
In my tour of the ui_file subsystem, I found that fputstr and fputstrn
can be simplified. The _filtered forms are never used (and IMO
unlikely to ever be used) and so can be removed. And, the interface
can be simplified by removing a callback function and moving the
implementation directly to ui_file.
A new self-test is included. Previously, I think nothing was testing
this code.
Regression tested on x86-64 Fedora 34.