Mike Frysinger [Mon, 2 Jan 2023 05:11:00 +0000 (00:11 -0500)]
sim: common: simplify modules.c deps
Now that all ports (other than ppc) build in the top-level, we don't
need to expand all the modules.c targets as a recursive dep. Each
port depends on their respective file now, and the ppc port doesn't
use it at all.
Mike Frysinger [Mon, 2 Jan 2023 21:46:14 +0000 (16:46 -0500)]
sim: common: move modules.c to source tracking
This makes sure the arch-specific modules.c wildcard is matched and
not the common/%.c so that we compile it correctly. It also makes
sure each subdir has depdir logic enabled.
Mike Frysinger [Mon, 2 Jan 2023 19:34:52 +0000 (14:34 -0500)]
sim: build: drop most recursive build deps
Now that we build these objects in the top dir & generate modules.c
there, we don't need to generate them all first -- we can let the
normal dependency graph take care of building things in parallel.
Mike Frysinger [Mon, 2 Jan 2023 19:15:02 +0000 (14:15 -0500)]
sim: common: move libcommon.a objects to sources
This simplifies the build logic and avoids an Automake bug where the
common_libcommon_a_OBJECTS variable isn't set in the arch libsim.a
DEPENDENCIES for targets that, alphabetically, come before "common".
We aren't affected by that bug with the current code, but as we move
things out of SIM_ALL_RECURSIVE_DEPS and rely on finer dependencies,
we will trip over it.
Mike Frysinger [Mon, 2 Jan 2023 05:08:56 +0000 (00:08 -0500)]
sim: igen: simplify build dep
Now that all ports (other than ppc) build in the top-level, we don't
need to mark the igen tool as a recursive dep. Each port depends on
the tool if it actually uses it, and ppc doesn't use it at all.
Mike Frysinger [Mon, 2 Jan 2023 05:06:34 +0000 (00:06 -0500)]
sim: common: simplify hw-config.h deps
Now that all ports (other than ppc) build in the top-level, we don't
need to expand all the hw-config.h targets as a recursive dep. Each
port depends on their respective header now, and the ppc port doesn't
use it at all.
Tom Tromey [Sat, 14 Jan 2023 19:42:30 +0000 (12:42 -0700)]
Pass internal gdb flags to --configuration invocations
The test suite uses the --configuration flag to feature-test gdb.
However, when I added this, I neglected to pass the internal gdbflags
to this, causing an error, which then caused failures in the test
suite (which would not be seen if you'd ever run "make install").
This patch fixes the bug. Tested by removing my install tree first,
to verify that I could reproduce the failure.
Tom Tromey [Sun, 8 Jan 2023 19:42:29 +0000 (12:42 -0700)]
Rename to allow_tui_tests
This changes skip_tui_tests to invert the sense, and renames it to
allow_tui_tests. It also rewrites this function to use the output of
"gdb --configuration", and it adds a note about the state of the TUI
to that output.
Tom Tromey [Sun, 8 Jan 2023 19:01:33 +0000 (12:01 -0700)]
Rename to allow_guile_tests
This changes skip_guile_tests to invert the sense, and renames it to
allow_guile_tests. It also rewrites this proc to check the output of
"gdb --configuration", as was done for Python. Then it changes the
code to use "require" where possible.
Tom Tromey [Sun, 8 Jan 2023 18:54:47 +0000 (11:54 -0700)]
Rename to allow_hw_breakpoint_tests
This changes skip_hw_breakpoint_tests to invert the sense, and renames
it to allow_hw_breakpoint_tests. This also converts some tests to use
"require" -- I missed this particular check in the first series.
Tom Tromey [Sun, 8 Jan 2023 17:47:09 +0000 (10:47 -0700)]
Rename to allow_cplus_tests and allow_stl_tests
This changes skip_cplus_tests to invert the sense, and renames it to
allow_cplus_tests. This one also converts skip_stl_tests to
allow_stl_tests, as that was convenient to do at the same time.
Tom Tromey [Wed, 11 Jan 2023 23:52:38 +0000 (16:52 -0700)]
Fix latent bug in default_prompt_gdb_start
default_prompt_gdb_start mimics default_gdb_start, but does not set
the use_gdb_stub global. This caused one Python test to work only
because it used the ordinary gdb_start before later using
default_prompt_gdb_start.
This patch updates default_prompt_gdb_start to set this global as
well.
Tom Tromey [Sat, 7 Jan 2023 18:51:33 +0000 (11:51 -0700)]
Remove mi_skip_python_tests
mi_skip_python_tests was necessary because skip_python_tests used the
running gdb, and so needed to know what prompt to expect. Now that
skip_python_tests has been rewritten, mi_skip_python_tests is no
longer needed.
Tom Tromey [Sat, 7 Jan 2023 03:36:38 +0000 (20:36 -0700)]
Rewrite skip_python_tests
This rewrites skip_python_tests to examine the output of
"gdb --configuration". This is a bit nicer because it
does not require an already-running gdb.
Tom Tromey [Tue, 13 Dec 2022 22:59:39 +0000 (15:59 -0700)]
Use unsupported in 'require'
This changes 'require' to use 'unsupported' rather than 'untested'.
The latter doesn't really seem to be correct according to the DejaGNU
documentation:
Declares a test was not run. `untested' writes in the log file a
message beginning with _UNTESTED_, appending the `message' argument.
For example, you might use this in a dummy test whose only role is to
record that a test does not yet exist for some feature.
The example there, and some text elsewhere, is what makes me think
this isn't a great fit. On the other hand, 'unsupported' says:
Declares that a test case depends on some facility that does not exist
in the testing environment.
Tom Tromey [Tue, 13 Dec 2022 22:00:07 +0000 (15:00 -0700)]
Change 'require' to accept a list of predicates
This changes 'require' to accept a list of simple predicates. For
now, each predicate is just the name of a proc, optionally prefixed
with "!" to indicate that the result should be inverted.
It's possible to make this fancier, but so far I haven't done so. One
idea I had is to allow a predicate to have associated text to display
on failure. Another is to convert the predicates that need a running
gdb (e.g., skip_python_tests) to start their own gdb, and then
'require' could enforce the rule that gdb not be running when it is
called.
Tom Tromey [Thu, 15 Dec 2022 00:04:35 +0000 (17:04 -0700)]
Don't use ensure_gdb_index with require
This series changes 'require' to take a list of simple predicates.
This patch backs out the one use of 'require' that doesn't conform to
this -- calling ensure_gdb_index.
Indu Bhagat [Fri, 13 Jan 2023 19:15:43 +0000 (11:15 -0800)]
libsframe: replace an strncat with strcat
Calling strncat with the size of the src string is not so meaningful.
The length argument to strncat should specify the remaining bytes
bytes in the destination; although in this case, it appears to be
unncessary altogether to use strncat in the first place.
libsframe/
* sframe-dump.c (dump_sframe_func_with_fres): Use of strcat is
just as fine.
Tom Tromey [Fri, 6 Jan 2023 19:18:07 +0000 (12:18 -0700)]
Disable ptype/o for dynamic types
A user pointed out that "ptype/o" of a certain Ada type -- while in C
mode -- caused gdb to crash.
The bug here is that dynamic types can't really be printed this way.
This patch avoids the bug by disabling the "/o" feature in this case.
Note that using "ptype/o" in this way makes sense for the time being,
because the Ada code doesn't support the "/o" feature (yet); and in
any case gdb should not crash.
ARM: Fix ld bloat introduced between binutils-2.38 and 2.39
Since commit 9833b7757d24, "PR28824, relro security issues",
ELF_MAXPAGESIZE matters much more, with regards to layout of
the linked file. That commit fixed an actual bug, but also
exposes a problem for targets were that value is too high.
For example, for ARM(32, a.k.a. "Aarch32") specifically
bfd_arch_arm, it's set to 64 KiB, making all Linux(/GNU)
targets pay an extra amount of up to 60 KiB of bloat in
DSO:s and executables. This matters when there are many
such files, and where storage is expensive.
It's *mostly* bloat when using a Linux kernel, as ARM(32) is
a good example of an target where ELF_MAXPAGESIZE is set to
an extreme value for an obscure corner-case. The ARM
(32-bit) kernel has 4 KiB pages, has had that value forever,
and can't be configured to any other value. The use-case is
IIUC "Aarch32" emulation on an "Aarch64" (arm64) kernel, but
not just that, but a setup where the Linux page-size is
configured to something other than the *default* 4 KiB. Not
sure there actually any such systems in use, again with
both Aarch32 compatibility support and a non-4KiB pagesize,
with all the warnings in the kernel config and requiring the
"EXPERT" level set on.
So, let's do like x86-64 in a2267dbfc9e1 "x86-64: Use only
one default max-page-size" and set ELF_MAXPAGESIZE to 4096.
bfd:
* elf32-arm.c (ELF_MAXPAGESIZE): Always set to 0x1000.