Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
The check target processes the output using grep; however, one of the
patterns misspelled 'Segmenetation'. Fixing the typo.
|
|
|
|
This commit adds the *.pc files for Spike's simulation library,
enabling dynamic and static linking without the need to directly
reference Spike sources. Using Spike as a stand-alone library
provides an interesting option for developing tools
and applications based on Spike.
|
|
|
|
It's just dead code. (Dependences on headers are auto-generated as
`.d` files.)
|
|
Otherwise, `ar rcs` will add to the previous archive, creating the
possibility of multiple functions with the same name in the archive.
The linker might not choose the most recent version, resulting in
undefined behavior.
|
|
|
|
Don't include .a files in other .a files. Doing so trips a sanity
check in the Xcode 14 toolchain, because the included .a files are
not themselves mach-o format, even though their contents are.
|
|
|
|
So we can use modern features like std::optional soon.
|
|
1f58b4d869a47d2f95621512455d52eb7c3546d9 introduced a link error on my
Mojave machine, because making the Boost include path the highest-priority
one was forcing use of the system's libfdt.h. But the system's libfdt.h
unfortunately lacks the 'extern "C"' linkage modifier, causing link errors
when invoking FDT routines from C++ code.
Fix by making the Boost include path the lowest-priority one.
|
|
This reverts commit 4f129845021b6086fd259186b0bc09203f5f8069.
|
|
Resolves #820
|
|
|
|
|
|
|
|
Precompiled headers were broken because they weren't compiled with
the same -fPIC setting as the rest of the code. Fix by just making
everything use -fPIC.
|
|
|
|
Resolves #549
|
|
|
|
Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
|
|
Before this patch, I don't think it was possible to change (say)
CFLAGS as part of running the make command. Nor did setting them when
running configure do anything. Getting this right is a little fiddly:
for example, see Automake's approach at [1] ("AM_CFLAGS" and friends).
This patch adds an "mcppbs-" prefix, and sets things up properly for
CFLAGS, CPPFLAGS, CXXFLAGS and LDFLAGS. Note that the bulk of the
patch is either the auto-generated configure script or the ax_*.m4
files vendored in from the autoconf archive (needed to handle
--export-dynamic correctly without trashing settings from the user
running configure).
What's supposed to happen is as follows:
- Base compilation flags that should apply to everything (standard
optimisation flags, warning flags etc.) are defined in
Makefile.in.
- When the user runs configure, they can set compilation flags on
the command line. These end up as environment variables in the
shell script.
- Compilation flags that can only be decided when we run
configure (this is currently just whether we support
-Wl,--export-dynamic) are appended to the configure-time LDFLAGS
environment variable.
- At the end of the configure script, these environment variables
are spliced into Makefile.in to fill out the corresponding
@<varname>@ entries.
- When running make, the user might again override compilation
flags. These will get appended to the flags found so far.
As a concrete example:
mkdir build
cd build
../configure CXXFLAGS='-O3'
make CXXFLAGS='-O0'
will result in c++ compile commands that look like this:
g++ -MMD -MP \
-DPREFIX=\"/usr/local\" -Wall -Wno-unused -g -O2 -std=c++11 \
-O3 \
-O0 \
-I. -I.. -I../fesvr -I../riscv -I../dummy_rocc -I../softfloat \
-I../spike_main -fPIC -c ../fesvr/elfloader.cc
(I've added some newlines to wrap the long line).
Note that we have the base flags from Makefile.in (called
$(default-CXXFLAGS) there) first. Then we have the -O3 from the
configure command. Finally we have the -O0 from the Make command line.
And I can finally run "make CXXFLAGS='-O0 -g3'". Phew!
[1] https://www.gnu.org/software/automake/manual/html_node/Flag-Variables-Ordering.html
|
|
|
|
|
|
|
|
vector unit tests need identical floating library to generate golden
pattern
Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
|
|
so can be built for one place and installed in another
|
|
|
|
|
|
|
|
|
|
Several people have raised the concern that dynamically linking the
built-in components of Spike causes more headaches than it's worth.
IIRC, the only reason we did this is to better support the
`--extension=libfoo.so` feature.
|
|
This has a tendency to blow up on other platforms.
|
|
Currently the DESTDIR variable is not used correctly which leads to
bogus RUNPATH entries.
https://www.gnu.org/prep/standards/html_node/DESTDIR.html
|
|
It seems that g++ 5.4 doesn't realize that it is building a precompiled
header unless you pass it -x c++-header.
|
|
They live in riscv-tests/debug now, since they also test gdb, and can be
used to test other targets besides spike.
|
|
|
|
|
|
|
|
|
|
It's not really a smoketest anymore.
|
|
The code compiles cleanly right now. Let's keep it that way.
|
|
|
|
|
|
The existing stuff all assumes you're writing your tests in C++.
|
|
|
|
Run it yourself if you modify configure.ac, and commit the configure script.
|
|
The actual Spike package consists of a whole bunch of libraries. This
installs a pkg-config file for each generated library, and a meta
pkg-config file (riscv-spike.pc) that links in all the other Spike
libraries except dummy_rocc (which I figure isn't interesting).
This allows me to package and install spike, and then use that package
to build an extension library (so I don't have to fork Spike for my
own ISA extension).
|