Commit Graph

113798 Commits

Author SHA1 Message Date
Simon Marchi
287de65625 gdb, gdbserver, gdbsupport: fix whitespace issues
Replace spaces with tabs in a bunch of places.

Change-Id: If0f87180f1d13028dc178e5a8af7882a067868b0
2023-03-09 16:32:00 -05:00
Tom de Vries
2562954ede [gdb/testsuite] Fix gdb.threads/pending-fork-event-detach.exp for remote target
Fix test-case gdb.threads/pending-fork-event-detach.exp for target board
remote-gdbserver-on-localhost using gdb_remote_download for $touch_file_bin.

Then, fix the test-case for target board remote-stdio-gdbserver with
REMOTE_TMPDIR=~/tmp.remote-stdio-gdbserver by creating $touch_file_path
on target using remote_download, and using the resulting path.

Tested on x86_64-linux.
2023-03-09 15:49:17 +01:00
Alan Modra
093b56776f objdump: report no section contents
objdump's read_section is never used for bss-style sections, so to
plug a hole that fuzzers have found, exclude sections without
SEC_HAS_CONTENTS.

	* objdump.c (read_section): Report and return an error on
	a no contents section.
2023-03-09 22:48:06 +10:30
Alan Modra
2dc2dfa7d7 gas: allow frag address wrapping in absolute section
This:
	 .struct -1
	x:
	 .fill 1
	y:
results in an internal error in frag_new due to abs_section_offset
wrapping from -1 to 0.  Frags in the absolute section don't do much so
I think we can allow the address wrap.

	* frags.c (frag_new): Allow address wrap in absolute section.
2023-03-09 22:47:51 +10:30
Tom de Vries
f2be4eeb6c [gdb/testsuite] Fix gdb.threads/multiple-successive-infcall.exp on native-gdbserver
With test-case gdb.threads/multiple-successive-infcall.exp and target board
native-gdbserver I run into:
...
(gdb) continue^M
Continuing.^M
[New Thread 758.759]^M
^M
Thread 1 "multiple-succes" hit Breakpoint 2, main () at \
  multiple-successive-infcall.c:97^M
97            thread_ids[tid] = tid + 2; /* prethreadcreationmarker */^M
(gdb) FAIL: gdb.threads/multiple-successive-infcall.exp: thread=5: \
  created new thread
...

The problem is that the new thread message doesn't match the regexp, which
expects something like this instead:
...
[New Thread 0x7ffff746e700 (LWP 570)]^M
...

Fix this by accepting this form of new thread message.

Tested on x86_64-linux.
2023-03-09 12:56:27 +01:00
Tom de Vries
89702edd93 [gdb/testsuite] Fix gdb.threads/thread-specific-bp.exp on native-gdbserver
With test-case gdb.threads/thread-specific-bp.exp and target board
native-gdbserver I run into:
...
(gdb) PASS: gdb.threads/thread-specific-bp.exp: non_stop=off: thread 1 selected
continue^M
Continuing.^M
Thread-specific breakpoint 3 deleted - thread 2 no longer in the thread list.^M
^M
Thread 1 "thread-specific" hit Breakpoint 4, end () at \
  thread-specific-bp.c:29^M
29      }^M
(gdb) FAIL: gdb.threads/thread-specific-bp.exp: non_stop=off: \
  continue to end (timeout)
...

The problem is that the test-case tries to match the "[Thread ... exited]"
message which we do see with native testing:
...
Continuing.^M
[Thread 0x7ffff746e700 (LWP 7047) exited]^M
Thread-specific breakpoint 3 deleted - thread 2 no longer in the thread list.^M
...

The fact that the message is missing was reported as PR remote/30129.

We could add a KFAIL for this, but the functionality the test-case is trying
to test has nothing to do with the message, so it should pass.  I only added
matching of the message in commit 2e5843d87c ("[gdb/testsuite] Fix
gdb.threads/thread-specific-bp.exp") to handle a race, not realizing doing so
broke testing on native-gdbserver.

Fix this by matching the "Thread-specific breakpoint $decimal deleted" message
instead.

Tested on x86_64-linux.
2023-03-09 12:31:26 +01:00
Tom de Vries
64c9b6398c [gdb/testsuite] Fix gdb.server/*.exp for remote target
Fix test-cases for target board remote-gdbserver-on-localhost by using
gdb_remote_download.

Tested on x86_64-linux.
2023-03-09 10:45:03 +01:00
Tom de Vries
b40b8facd5 [gdb/testsuite] Fix gdb.server/unittest.exp for remote target
With test-case gdb.server/unittest.exp and a build with --disable-unit-tests I
get:
...
(gdb) builtin_spawn /data/vries/gdb/leap-15-4/build/gdbserver/gdbserver \
  --selftest^M
Selftests have been disabled for this build.^M
UNSUPPORTED: gdb.server/unittest.exp: unit tests
...
but with target board remote-stdio-gdbserver I get instead:
...
(gdb) builtin_spawn /usr/bin/ssh -t -l vries localhost \
  /data/vries/gdb/leap-15-4/build/gdbserver/gdbserver --selftest^M
Selftests have been disabled for this build.^M
Connection to localhost closed.^M^M
FAIL: gdb.server/unittest.exp: unit tests
...

Fix this by making the regexp less strict.

Tested on x86_64-linux.
2023-03-09 10:45:03 +01:00
Tom de Vries
593dda1880 [gdb/testsuite] Fix gdbserver path in remote-stdio-gdbserver.exp
With test-case gdb.server/unittest.exp and target board remote-stdio-gdbserver
I run into:
...
(gdb) builtin_spawn /usr/bin/ssh -t -l vries localhost /usr/bin/gdbserver \
  --selftest^M
Selftests have been disabled for this build.^M
UNSUPPORTED: gdb.server/unittest.exp: unit tests
...
due to using the system gdbserver /usr/bin/gdbserver rather than the one from
the build.

Fix this by removing the hard-coding of /usr/bin/gdbserver in
remote-stdio-gdbserver, allowing find_gdbserver to do its work, such that we
have instead:
...
(gdb) builtin_spawn /usr/bin/ssh -t -l vries localhost \
  /data/vries/gdb/leap-15-4/build/gdbserver/gdbserver --selftest^M
Running selftest remote_memory_tagging.^M
Ran 1 unit tests, 0 failed^M
Connection to localhost closed.^M^M
PASS: gdb.server/unittest.exp: unit tests
...

Tested on x86_64-linux.
2023-03-09 10:45:03 +01:00
Tom de Vries
6407713fab [gdb/testsuite] Fix gdb.server/sysroot.exp for remote target
Fix test-case gdb.server/sysroot.exp with target board
remote-gdbserver-on-localhost, by:
- using gdb_remote_download, and
- disabling the "local" scenario for remote host.

Tested on x86_64-linux.
2023-03-09 10:45:03 +01:00
Tom de Vries
ed32754a8c [gdb/testsuite] Fix gdb.server/multi-ui-errors.exp for remote target
Test-case gdb.server/multi-ui-errors.exp fails for target board
remote-gdbserver-on-localhost with REMOTE_TARGET_USERNAME=remote-target:
...
(gdb) PASS: gdb.server/multi-ui-errors.exp: interact with GDB's main UI
Executing on target: kill -9 6447    (timeout = 300)
builtin_spawn [open ...]^M
XYZ1ZYX
sh: line 0: kill: (6447) - Operation not permitted
...

The problem is that the kill command:
...
remote_exec target "kill -9 $gdbserver_pid"
...
intended to kill gdbserver instead tries to kill the ssh client session in
which the gdbserver runs, and fails because it's trying as the remote target
user (remote-target on localhost) to kill a pid owned by the the build user
($USER on localhost).

Fix this by getting the gdbserver pid using the ppid trick from
server-kill.exp.

Likewise in gdb.server/server-kill-python.exp.

Tested on x86_64-linux.
2023-03-09 10:45:03 +01:00
Tom de Vries
079f190d4c [gdb/testsuite] Fix gdb.server/server-kill.exp for remote target
In commit 80dc83fd0e ("gdb/remote: handle target dying just before a stepi")
an observation is made that test-case gdb.server/server-kill.exp claims to
kill gdbserver, but actually kills the inferior.  Consequently, the commit
adds testing of killing gdbserver alongside.

The problem is that:
- the original observation is incorrect (possibly caused by misreading getppid
  as getpid)
- consequently, the test-case doesn't test killing the inferior, instead it
  tests killing gdbserver twice
- the method to get the gdbserver PID added in the commit doesn't work
  for target board remote-gdbserver-on-localhost, it returns the
  PID of the ssh client session instead.

Fixing the method for getting the inferior PID gives us fails, and there's no
evidence that killing the inferior ever worked.

So, fix this by reverting the commit and just killing gdbserver, using the
original method of getting the gdbserver PID which does work for target board
remote-gdbserver-on-localhost.

Tested on x86_64-linux.
2023-03-09 10:45:03 +01:00
Tom de Vries
3581f5e4f7 [gdb/testsuite] Fix gdb.server/connect-with-no-symbol-file.exp for remote target
Test-case gdb.server/connect-with-no-symbol-file.exp fails with target board
remote-gdbserver-on-localhost.

The problem is here:
...
       set target_exec [gdb_remote_download target $binfile.bak $binfile]
...
A "gdb_remote_download target" copies from build to target.  So $binfile is
assumed to be a target path, but it's actually a build path.

Fix this by:
- fist copying $binfile.bak to $binfile, and
- simply doing [gdb_remote_download target $binfile].

Then, $binfile.bak is created here:
...
 # Make sure we have the original symbol file in a safe place to copy from.
 gdb_remote_download host $binfile $binfile.bak
...
and since "gdb_remote_download host" copies from build to host, $binfile.bak
is assumed to be a host path, but it's actually a build path.  This happens to
cause no problems in this configuration (because build == host), but it would
for a remote host configuration.

So let's fix this by making build rather than host the "safe place to copy
from".

Tested on x86_64-linux.
2023-03-09 10:45:03 +01:00
Alan Modra
bf0e353754 lddigest 32-bit support and gcc-4 compile errors
* ld.texi: Revert 2023-03-08 commit 9a534b9f8e.
	* testsuite/ld-scripts/crc64-poly.d: Likewise.
	* testsuite/ld-scripts/crc64-poly.t: Likewise.
	* lddigest.c: Formatting.
	(get_uint64_t): New function.
	(lang_add_digest): Take etree_type* args.  Replace "illegal" with
	"invalid" in error message.
	* lddigest.h (lang_add_digest): Update prototype.
	* lddigest_tab.c (algorithms): Work around gcc-4 errors.
	* ldgram.y (polynome): Adjust lang_add_digest call.
	* testsuite/ld-scripts/crc64-poly-size.d: Update expected error.
2023-03-09 16:02:57 +10:30
GDB Administrator
1478a11d76 Automatic date update in version.in 2023-03-09 00:00:30 +00:00
Tom Tromey
100e393531 Remove OBJF_REORDERED
OBJF_REORDERED is set for nearly every object format.  And, despite
the ominous warnings here and there, it does not seem very expensive.
This patch removes the flag entirely.

Reviewed-By: Andrew Burgess <aburgess@redhat.com>
2023-03-08 12:11:49 -07:00
Carl Love
5992fb8541 PowerPC, fix test gdb.arch/altivec-regs.exp
The test fails on Power 10 with the RHEL9 distro.  It also fails on
Power 9.

The test set a the breakpoint in main that stops at line:
a = 9; /* start here */.  The test then sets a break point at the same
line where it wants to start the test and does a continue.  GDB does not
stop again on the same line where it is stopped, but rather continues to
the end of the program.

Initialize variable A to zero so the break on main will stop before setting
a break point on line a = 9; /* start here */.

Make the match on the breakpoint number generic.

Patch has been tested on Power 10 with RHEL 9, Power 10 with Ubuntu 22.04,
and Power 9 with Fedora 36 with no regression failures.
2023-03-08 11:14:18 -05:00
Nick Clifton
9a534b9f8e ld: Use correct types for crc64 calculations 2023-03-08 13:11:37 +00:00
Alan Modra
447d066969 Tidy pe_ILF_build_a_bfd a little
* peicode.h (ILF section, pe_ILF_object_p): Correct comments
	and update the reference to Microsoft's docs.
	(pe_ILF_build_a_bfd): Move all symbol creation before flipping
	the bfd over to in-memory.
2023-03-08 17:47:35 +10:30
Alan Modra
c8e85484d8 Re: DIGEST: testsuite
Correct test target/skip lines to fix fails on alpha-dec-vms,
alpha-linux-gnuecoff, i386-bsd, i386-msdos, ns32k-openbsd,
ns32k-pc532-mach, pdp11-dec-aout, rs6000-aix*, tic4x-coff, and
tic54x-coff.
2023-03-08 13:43:34 +10:30
Alan Modra
4d98c966f8 Regen potfiles 2023-03-08 11:25:31 +10:30
Alan Modra
160f200778 Re: Move nm.c cached line number info to bfd usrdata
Commit e3f450f393 resulted in a nm -l segfault on object files
without undefined symbols.  Fix that, and be paranoid about bfd
section count changing.

	* nm.c (struct lineno_cache): Add seccount.
	(free_lineno_cache): Don't segfault on NULL lc->relocs.
	(print_symbol): Stash section count when creating arrays.
2023-03-08 11:24:55 +10:30
Alan Modra
d64c8f7181 z8 and z80 coff_reloc16_extra_cases sanity checks
* reloc16.c (bfd_coff_reloc16_get_relocated_section_contents):
	Use size_t variables.  Sanity check reloc address.  Handle
	errors from bfd_coff_reloc16_extra_cases.
	* coffcode.h (_bfd_coff_reloc16_extra_cases): Return bool, take
	size_t* args.
	(dummy_reloc16_extra_cases): Adjust to suit.  Don't abort.
	* coff-z80.c (extra_case): Sanity check reloc address.  Return
	errors.  Tidy formatting.  Use bfd_signed_vma temp var to
	check for reloc overflow.  Don't abort on unexpected reloc type,
	instead print an error and return false.
	* coff-z8k.c (extra_case): Likewise.
	* libcoff.h: Regenerate.
2023-03-08 11:24:50 +10:30
GDB Administrator
b9ee26d9ca Automatic date update in version.in 2023-03-08 00:00:32 +00:00
Simon Marchi
365aee2bdf gdb/amdgpu: provide dummy implementation of gdbarch_return_value_as_value
The AMD GPU support has been merged shortly after commit 4e1d2f5814
("Add new overload of gdbarch_return_value"), which made it mandatory
for architectures to provide either a return_value or
return_value_as_value implementation.  Because of my failure to test
properly after rebasing and before pushing, we get this with the current
master:

    $ gdb ./gdb -nx --data-directory=data-directory -q -ex "set arch amdgcn:gfx1010" -batch
    /home/simark/src/binutils-gdb/gdb/gdbarch.c:517: internal-error: verify_gdbarch: the following are invalid ...
            return_value_as_value

I started trying to change GDB to not force architectures to provide a
return_value or return_value_as_value implementation, but Andrew pointed
out that any serious port will have an implementation one day or
another, and it's easy to add a dummy implementation in the mean time.
So it's better to not complicate the core of GDB to know how to deal
with this.

There is an implementation of return_value in the downstream ROCgdb port
(which we'll need to convert to the new return_value_as_value), which
we'll contribute soon-ish.  In the mean time, add a dummy implementation
of return_value_as_value to avoid the failed assertion.

Change-Id: I26edf441b511170aa64068fd248ab6201158bb63
Reviewed-By: Lancelot SIX <lancelot.six@amd.com>
2023-03-07 17:45:58 -05:00
Tom Tromey
21f6be77b9 Merge forget_cached_source_info_for_objfile into objfile method
forget_cached_source_info_for_objfile does some objfile-specific work
and then calls objfile::forget_cached_source_info.  It seems better to
me to just have the method do all the work.
2023-03-07 14:46:58 -07:00
Tom Tromey
2a32d78f8a Clean up attribute reprocessing
I ran across the attribute reprocessing code recently and noticed that
it unconditionally sets members of the CU when reading a DIE.  Also,
each spot reading attributes needs to be careful to "reprocess" them
as a separate step.

This seemed excessive to me, because while reprocessing applies to any
DIE, setting the CU members is only necessary for the toplevel DIE in
any given CU.

This patch introduces a new read_toplevel_die function and changes a
few spots to call it.  This is easily done because reading the
toplevel DIE is already special.

I left the reprocessing flag and associated checks in attribute.  It
could be stripped out, but I am not sure it would provide much value
(maybe some iota of performance).

Regression tested on x86-64 Fedora 36.
2023-03-07 14:32:45 -07:00
Simon Marchi
4d2e669ca9 gdb: initialize interp::next
This field is never initialized, it seems to me like it would be a good
idea to initialize it to nullptr to avoid bad surprises.

Change-Id: I8c04319d564f5d385d8bf0acee758f6ce28b4447
Reviewed-By: Tom Tromey <tom@tromey.com>
2023-03-07 16:30:14 -05:00
Simon Marchi
5a8ac2cb96 gdb: make interp::m_name an const char *
I realized that the memory for interp names does not need to be
allocated.  The name used to register interp factory functions is always
a literal string, so has static storage duration.  If we change
interp_lookup to pass that name instead of the string that it receives
as a parameter (which does not always have static storage duration),
then interps can simply store pointers to the name.

So, change interp_lookup to pass `factory.name` rather than `name`.
Change interp::m_name to be a `const char *` rather than an std::string.

Change-Id: I0474d1f7b3512e7d172ccd73018aea927def3188
Reviewed-By: Tom Tromey <tom@tromey.com>
2023-03-07 16:30:14 -05:00
Simon Marchi
f4db482bac gdb: make get_interp_info return a reference
get_interp_info and get_current_interp_info always return non-nullptr,
so they can return a reference instead of a pointer.

Since we don't need to copy it, make ui_interp_info non-copyiable, to
avoid a copying it in a local variable, instead of getting a reference.

Change-Id: I6d8dea92dc26a58ea340d04862db6b8d9cf906a0
Reviewed-By: Tom Tromey <tom@tromey.com>
2023-03-07 16:30:08 -05:00
Tom Tromey
4779ed9757 Fix selfcheck regression due to new maint command
Simon points out that the new maint command, intended to fix a
regression, also introduces a new regression in "maint selftest".

This patch fixes the error.  I did a full regression test on x86-64
Fedora 36.
2023-03-07 11:30:20 -07:00
Vladimir Mezentsev
74f1d7f4a3 gprofng: read Dwarf 5
gprofng reads Dwarf to find function names, sources, and line numbers.
gprofng skips other debug information.
I fixed three places in gprofng Dwarf reader:
 - parsing the compilation unit header.
 - parsing the line number table header.
 - parsing new DW_FORMs.

Tested on aarch64-linux/x86_64-linux.

gprofng/ChangeLog
2023-03-05  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

	PR gprofng/30195
	gprofng/src/Dwarf.cc: Support Dwarf-5.
	gprofng/src/DwarfLib.cc: Likewise.
	gprofng/src/Dwarf.h: Likewise.
	gprofng/src/DwarfLib.h: Likewise.
	gprofng/src/collctrl.cc: Don't read freed memory.
2023-03-07 09:56:19 -08:00
Richard Purdie
5fc6b6d44c gdb: Fix GDB_AC_CHECK_BFD macro regression
Commit 5218fa9e89, "gdb: use libtool in
GDB_AC_CHECK_BFD" dropped passing in existing LDFLAGS. In our environment,
this caused the configure check "checking for ELF support in BFD" to stop
working causing build failures as we need our LDFLAGS to be used for
correct linking.

That change also meant the code failed to match the comments. Add back the
missing LDFLAGS preservation, fix our builds and match the comment.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Change-Id: Ie91509116fab29f95b9db1ff0b6ddc280d460112
Approved-By: Simon Marchi <simon.marchi@efficios.com>
Reviewed-By: Jose E. Marchesi <jose.marchesi@oracle.com>
2023-03-07 11:12:14 -05:00
Aditya Vidyadhar Kamath
2eb2613519 Enable vector instruction debugging for AIX
AIX now supports vector register contents debugging for both VMX
VSX registers.
2023-03-07 16:52:18 +01:00
Tom de Vries
711b1f02f3 [gdb/testsuite] Fix gdb.threads/execl.exp for remote target
Fix test-case gdb.threads/execl.exp on target board
remote-gdbserver-on-localhost using gdb_remote_download.

Tested on x86_64-linux.
2023-03-07 16:11:19 +01:00
Tom Tromey
f0c3dcc1ca Ensure index cache entry written in test
Now that index cache files are written in the background, one test in
index-cache.exp is racy -- it assumes that the cache file will have
been written during startup.

This patch fixes the problem by introducing a new maintenance command
to wait for all pending writes to the index cache.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
2023-03-07 07:58:30 -07:00
Tom de Vries
e9f59c6f6c [gdb/testsuite] Fix gdb.base/skip-solib.exp for remote target
Fix test-case gdb.base/skip-solib.exp for target board
remote-gdbserver-on-localhost using gdb_load_shlib.

Tested on x86_64-linux.
2023-03-07 15:45:47 +01:00
Tom de Vries
e06f6174c0 [gdb/testsuite] Use shlib gdb_compile option in gdb.base/skip-solib.exp
In test-case gdb.base/skip-solib.exp the linking against a shared library is
done manually:
...
if {[gdb_compile "${binfile_main}.o" "${binfile_main}" executable \
        [list debug "additional_flags=-L$testobjdir" \
             "additional_flags=-l${test}" \
             "ldflags=-Wl,-rpath=$testobjdir"]] != ""} {
...

Instead, use the shlib gdb_compile option such that we simply have:
...
        [list debug shlib=$binfile_lib]] != ""} {
...

Tested on x86_64-linux.
2023-03-07 15:45:47 +01:00
Tom de Vries
dfe30a41c8 [gdb/testsuite] Fix gdb.base/fork-no-detach-follow-child-dlopen.exp for remote target
Fix test-case gdb.base/fork-no-detach-follow-child-dlopen.exp for target board
remote-gdbserver-on-localhost.exp by using gdb_download_shlib and gdb_locate_shlib.

Tested on x86_64-linux.
2023-03-07 15:28:52 +01:00
Tom de Vries
da4cc0cc36 [gdb/testsuite] Fix gdb.base/break-probes.exp for remote target
With test-case gdb.base/break-probes.exp and target board
remote-gdbserver-on-localhost (using REMOTE_TARGET_USERNAME) we run into some
failures.

Fix these by adding the missing gdb_download_shlib and gdb_locate_shlib.

Tested on x86_64-linux.
2023-03-07 15:20:18 +01:00
Tom de Vries
b7b7151da0 [gdb/testsuite] Fix gdb.dwarf2/dw2-zero-range.exp for remote-gdbserver-on-localhost
Fix test-case gdb.dwarf2/dw2-zero-range.exp for target board
remote-gdbserver-on-localhost using gdb_load_shlib.

Tested on x86_64-linux.
2023-03-07 15:12:06 +01:00
Ulf Samuelsson
3a80a48386 Build ldint
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:11 +00:00
Ulf Samuelsson
78ef6ab03f DIGEST: Makefile.*
The Makefile.in was generated using automake
after adding a few files.

When adding the ldreflect.* files, the autotools
versions were wrong.
After upgrading the host OS, autotools were upgraded to 2.71
reinstalling the desired 2.69 still generates a lot of changes.

Makefile.ini has therefore been manually edited.

Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:11 +00:00
Ulf Samuelsson
5243990191 DIGEST: calculation
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:11 +00:00
Ulf Samuelsson
bd9466d4aa DIGEST: ldlang.*: add timestamp
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:11 +00:00
Ulf Samuelsson
c8f8653fa7 DIGEST: ldmain.c
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:11 +00:00
Ulf Samuelsson
d73c01be26 DIGEST: ldgram.y
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:11 +00:00
Ulf Samuelsson
48b5163a9d DIGEST: ldlex.l
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:11 +00:00
Ulf Samuelsson
a4135d1a48 DIGEST: testsuite
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:10 +00:00
Ulf Samuelsson
3ec28966c3 DIGEST: Documentation
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
2023-03-07 13:53:10 +00:00