Since libgloss provides a default syscall table for arches, use that
to provide the default syscall table for ports. Only the exceptions
need to be enumerated now with the common logic as the default.
Force this on for all ports. We have a few common models that can
be used, so make them generally available. If the port doesn't use
any hardware (the default), then behavior is unchanged.
A rebuild showed that an earlier change of mine missed a built header
file -- cris/engv32.h. This patch fixes the problem.
sim/cris/ChangeLog
2021-04-25 Tom Tromey <tom@tromey.com>
* Makefile.in (SIM_EXTRA_DEPS): Add engv32.h.
This changes sim-options.c to use the libiberty hash table, rather
than its own custom hash table.
sim/common/ChangeLog
2021-04-25 Tom Tromey <tom@tromey.com>
* sim-options.c (compare_strings): New function.
(ARG_HASH_SIZE, ARG_HASH): Remove.
(dup_arg_p): Use htab_t.
(sim_parse_args): Remove assert.
As we turn on more modules by default for all ports, the number of
options has been increasing. The sim-options module has a limit on
the number of options it can support, and if it's exceeded, it likes
to go into an infinite loop. Increase the ceiling and add an assert
so we abort right away instead of hanging.
This will be needed to turn on hw support for v850 as it will then
exceed the current limit.
Every port using this sets the 1st arg to yes and the 2nd arg to "".
These are the defaults we probably want anyways in order to unify the
codebase, so move them to the macro and only allow ports to declare
extra hardware models.
A couple of sim Makefiles define LIBS, but don't use it. This removes
these.
sim/m32c/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Makefile.in (LIBS): Remove
sim/rx/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Makefile.in (LIBS): Remove.
Some Makefiles in sim define INCLUDE but don't use it. This removes
these instances.
sim/bfin/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Makefile.in (INCLUDE): Remove.
sim/m68hc11/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Makefile.in (INCLUDE): Remove.
sim/mn10300/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Makefile.in (INCLUDE): Remove.
sim/v850/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Makefile.in (INCLUDE): Remove.
This changes the sim/ppc Makefile to use the stamp file idiom for a
couple of generated files, avoiding extra rebuilds.
sim/ppc/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Makefile.in (stamp-vals, stamp-map): New targets.
(targ-vals.h, targ-map.c): Update.
(clean): Remove files.
This adds a stamp file for hw-config.h, to avoid unnecessary rebuilds.
It also arranges to remove hw-config.h in "mostlyclean", because the
file is created by "make".
sim/common/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Make-common.in (stamp-hw): New target.
(hw-config.h): Depend on stamp-hw.
(mostlyclean): Remove stamp-hw and hw-config.h.
I found out by accident that "mostlyclean" in a sim subdir removes all
the configure artifacts. The usual rule is:
* If the maintainer built it, maintainer-clean should remove it;
* If configure built it, distclean should remove it;
* If make built it, "clean" should remove it;
* If there is a handy subset of "clean" that is "easy" to rebuild,
"mostlyclean" should remove it; otherwise mostlyclean should be an
alias for clean
This patch makes mostlyclean an alias for clean.
sim/common/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* Make-common.in (mostlyclean): Now an alias for clean, not
distclean.
On x86-64 Fedora 32, the sim was failing to build.
sim_events_schedule was passing a 'dummy' argument to
sim_events_schedule_vtracef, which caused an error because the format
parameter was NULL. However, removing this dummy argument caused an
error because too few arguments were being passed -- catch 22.
This patch fixes the build problem by using sim_events_schedule_tracef
instead.
sim/common/ChangeLog
2021-04-22 Tom Tromey <tom@tromey.com>
* sim-events.c (sim_events_schedule): Use
sim_events_schedule_tracef.
Add some ATTRIBUTE_PRINTF attributes to functions that take a format
string, to fix a few -Wformat-nonliteral warnings. Use the
ATTRIBUTE_PRINTF macro like we use in GDB, instead of spelling out
__attribute__((format...)). Use ATTRIBUTE_NULL_PRINTF at one place,
because callers expect to be able to pass NULL.
sim/common/ChangeLog:
* callback.c (os_printf_filtered, os_vprintf_filtered,
os_evprintf_filtered, os_error): Use ATTRIBUTE_PRINTF.
* sim-engine.h (sim_engine_abort, sim_engine_vabort): Likewise.
* sim-events.h (sim_events_schedule_tracef,
sim_events_schedule_vtracef): Use ATTRIBUTE_NULL_PRINTF.
Change-Id: Icd206f7b2c325e8b144f72eb129fb2a6b5af2fa3
When building with clang, we get:
error: unknown warning option '-Wmissing-parameter-type' [-Werror,-Wunknown-warning-option]
This is because clang only warns by default when encountering an unknown
warning option, and the probe for supported warning flags is done
without -Werror. All flags are therefore accepted by configure, but
then it breaks when actually compiling a source file with -Werror.
This is equivalent to this commit in gdb:
3e019bdc20
gdb: Use -Werror when checking for (un)supported warning flags
We then see some other compilation errors when building with clang and
-Werror, they can be dealt with later.
Since getopt.h is provided by libiberty, there's no need to probe for
a system version of it. Plus we already assume it exists in other
parts of the sim.
Rather than hand duplicate the syscall constants, switch to the
common nltvals framework. I made sure the constants have the
same values before & after too :).
Rather than hand duplicate the syscall table, switch to the common
nltvals framework. We have to tweak the constant names, but we get
everything else for free. I made sure the constants have the same
values before & after too :).
Rather than hand duplicate the syscall table, switch to the common
nltvals framework. We have to tweak the constant names, but we get
everything else for free. I made sure the constants have the same
values before & after too :).
Rather than hand duplicate the syscall table, switch to the common
nltvals framework. We have to tweak the constant names, but we get
everything else for free. I made sure the constants have the same
values before & after too :).
Rather than hand duplicate the syscall table, switch to the common
nltvals framework. We have to tweak the constant names, but we get
everything else for free. I made sure the constants have the same
values before & after too :).
This avoids duplicate tests for functions between common m4, arches,
and any other sources that would trigger func tests.
Also manually delete known duplicate function tests between the m4,
bfin, and v850 ports.
The printf fix uses our PRIxTA for our sim address type.
Then cast away the const (since the underlying code safely treats it
as such) even if it's ugly.
Finally touch up the argv iterator pointer to match the new func arg.
With this tidied up, we can delete the SIM_AC_OPTION_WARNINGS(no) call
to get the default common behavior where -Werror is enabled.
The printf fix is obvious enough, but the hash one is a real bug:
cr16/interp.c: In function 'sim_open':
cr16/interp.c:560:17: error: 'h' may be used uninitialized in this function [-Werror=maybe-uninitialized]
560 | h = h->next;
| ~~^~~~~~~~~
It happens to not cause a problem currently because the first entry in
the generated table that this loop operates matches a codepath where h
is initialized. Then when later entries don't match, the previous value
is pointing at the end of a valid hash table already, and the rest of
the code does nothing.
With this tidied up, we can delete the SIM_AC_OPTION_WARNINGS(no) call
to get the default common behavior where -Werror is enabled.
Add a READLINE_CFLAGS variable which adds the include path to the
in-tree readline when using the in-tree readline library.
sim/erc32/ChangeLog:
* Makefile.in (READLINE_SRC, READLINE_CFLAGS): Add.
(SIM_EXTRA_CFLAGS): Add READLINE_CFLAGS.
* configure: Rebuild.
* configure.ac (READLINE_CFLAGS): Add.
Only pass the top-level instruction decode table (mn10300.igen) to
igen via -i. The additional files passed previously caused igen to
exit its getopt loop in main and exit silently without generating any
output. In addition, when am33-2.igen was added, it was not included
from mn10300.igen, so was never used.
sim/mn10300/ChangeLog:
* Makefile.in: (tmp-igen) Only pass mn10300.igen to igen.
* mn10300.igen: Include am33-2.igen.
Explicitly use a known-good shell found by autoconf for executing
additional scripts in genmloop.sh rather than the building user's
shell.
sim/lm32/ChangeLog:
* Makefile.in: Pass -shell to genmloop.sh.
Claim that the accumulator indices are out of range without raising an
exception if the CPU doesn't support media instructions.
sim/frv/ChangeLog:
* traps.c (frvbf_check_acc_range): Add missing return value.
The bfin sim adds include paths for the SDL libraries. These include
paths might include headers for different version of binutils. Move
SIM_EXTRA_CFLAGS after CSEARCH to ensure local includes are always
preferred to external includes.
sim/common/ChangeLog:
* Make-common.in (CONFIG_CFLAGS): Remove SIM_EXTRA_CFLAGS.
(ALL_CLAGS, COMMON_DEP_CFLAGS): Add SIM_EXTRA_CFLAGS after
CSEARCH.
On a 32-bit build, I ran into the following:
sim/rx/fpu.c:789:6: error: "*((void *)&a+8)" may be used uninitialized in this function [-Werror=maybe-uninitialized]
rv = fp_implode (&a);
To silence this, just initialize the struct with 0's.
sim/rx/ChangeLog:
2021-04-09 Luis Machado <luis.machado@linaro.org>
* fpu.c (rxfp_itof): Initialize structure.
GCC gives a -Wsequence-point warning for this code in the h8300 sim.
The bug is that memory_size is both assigned and used in the same
expression. The fix is to assign after the print.
sim/h8300/ChangeLog
2021-04-08 Tom Tromey <tom@tromey.com>
* compile.c (init_pointers): Fix sequence point warning.
This updates various parts of the sim to include missing system
headers. I made the includes unconditional, because other parts of
the tree are already doing this.
2021-04-08 Tom Tromey <tom@tromey.com>
* traps.c: Include stdlib.h.
* cris-tmpl.c: Include stdlib.h.
sim/erc32/ChangeLog
2021-04-08 Tom Tromey <tom@tromey.com>
* func.c: Include sys/time.h.
sim/frv/ChangeLog
2021-04-08 Tom Tromey <tom@tromey.com>
* traps.c: Include stdlib.h.
* registers.c: Include stdlib.h.
* profile.c: Include stdlib.h.
* memory.c: Include stdlib.h.
* interrupts.c: Include stdlib.h.
* frv.c: Include stdlib.h.
* cache.c: Include stdlib.h.
sim/iq2000/ChangeLog
2021-04-08 Tom Tromey <tom@tromey.com>
* iq2000.c: Include stdlib.h.
sim/m32r/ChangeLog
2021-04-08 Tom Tromey <tom@tromey.com>
* traps.c: Include stdlib.h.
* m32r.c: Include stdlib.h.
sim/ppc/ChangeLog
2021-04-08 Tom Tromey <tom@tromey.com>
* emul_unix.c: Include time.h.
I ran into a build failure with --enable-targets=all due to the fact that
the moxie sim expects to be able to use the dtc tool. If it isn't available,
the builds fails.
The following patch adds a prebuilt dtb file to the tree. That file is the one
that is used for installations.
The patch also enables (re-)generation of the dtb file through maintainer
mode, if it needs to be updated due to a change in the dts file.
Tested on aarch64-linux/x86_64-linux.
sim/moxie/ChangeLog:
2021-04-08 Luis Machado <luis.machado@linaro.org>
* Makefile.in (moxie-gdb.dtb): Add maintainer mode dependency.
(install-dtb): Install prebuilt dtb file.
* moxie-gdb.dtb: New prebuilt file.
The igen/dgen and opc2c tools leak their heap-allocated memory (on
purpose) at program exit, which makes AddressSanitizer fail the tool
execution. This breaks the build, as it makes the tool return a
non-zero exit code.
Fix that by disabling leak detection through the setting of that
environment variable.
I also changed the opc2c rules for m32c to go through a temporary file.
What happened is that the failing opc2c would produce an incomplete file
(probably because ASan exits the process before stdout is flushed).
This meant that further make attempts didn't try to re-create the file,
as it already existed. A "clean" was therefore necessary. This can
also happen in regular builds if the user interrupts the build (^C) in
the middle of the opc2c execution and tries to resume it. Going to a
temporary file avoids this issue.
sim/m32c/ChangeLog:
* Makefile.in: Set ASAN_OPTIONS when running opc2c.
sim/mips/ChangeLog:
* Makefile.in: Set ASAN_OPTIONS when running igen.
sim/mn10300/ChangeLog:
* Makefile.in: Set ASAN_OPTIONS when running igen.
sim/ppc/ChangeLog:
* Makefile.in: Set ASAN_OPTIONS when running igen.
sim/v850/ChangeLog:
* Makefile.in: Set ASAN_OPTIONS when running igen.
Change-Id: I00f21d4dc1aff0ef73471925d41ce7c23e83e082
Exit status 77 is common (including the autotools world) to indicate
"skip this test". Add support for mapping that to "unsupported" as
that's the closest in the dejagnu world.
If the port hasn't been enabled, don't try to run its tests. Making
this dynamic simplifies the test harnesses and avoids duplicating a
bunch of target tuple checks.