In the Command Line Interface mode, although the possible execution file types are c, asm, bin (as shown by the command-line option --t), it is not possible to simulate C programs.
int Ripes::CLIRunner::processInput(): Assertion `false && "Command-line support for this source type is not yet implemented"' failed.
Aborted (core dumped)
This has been fixed with the possibility to execute RISC-VELF files too.
In the clirunner.cpp file I've added the logic to load three new source types: C, InternalELF and ExternalELF.
For an ELF file first a check is done to be sure that the specified file is valid for the selected processor and then the file is loaded with the method loadElfFile. I moved this method to the programutilities.cpp file, following what was done for loading binary files with the method loadFlatBinaryFile. The function was moved so that it can be used both by CLI and GUI.
To execute C programs first they are compiled using the already existing methods (such as compileRaw() from ccmanager.cpp), then they are converted as ExternalELF and loaded as mentioned above.
Since I've noticed that running CLI programs can sometimes have problems with large addresses (that cannot fit in an int variable), I've changed the type of the byteAddress variable to long. (Fixing #266)
In the Command Line Interface mode, although the possible execution file types are
c, asm, bin
(as shown by the command-line option--t
), it is not possible to simulateC
programs.This has been fixed with the possibility to execute RISC-V
ELF
files too.In the
clirunner.cpp
file I've added the logic to load three new source types:C
,InternalELF
andExternalELF
. For an ELF file first a check is done to be sure that the specified file is valid for the selected processor and then the file is loaded with the methodloadElfFile
. I moved this method to theprogramutilities.cpp
file, following what was done for loading binary files with the methodloadFlatBinaryFile
. The function was moved so that it can be used both by CLI and GUI.To execute
C
programs first they are compiled using the already existing methods (such ascompileRaw()
fromccmanager.cpp
), then they are converted asExternalELF
and loaded as mentioned above.Since I've noticed that running CLI programs can sometimes have problems with large addresses (that cannot fit in an
int
variable), I've changed the type of thebyteAddress
variable tolong
. (Fixing #266)