diff options
author | emelcher <elmar@dsc.ufcg.edu.br> | 2021-08-24 17:03:42 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-24 13:03:42 -0700 |
commit | ea5d76121bef5e3d54bbaba21cce75d0299c461e (patch) | |
tree | 372bf993e773b2493dad9e9eda5ba4a56d35f0dc /riscv/interactive.cc | |
parent | 01be71430cadc4b6df7ed16a4d32dd7c57c9bb34 (diff) | |
download | spike-ea5d76121bef5e3d54bbaba21cce75d0299c461e.zip spike-ea5d76121bef5e3d54bbaba21cce75d0299c461e.tar.gz spike-ea5d76121bef5e3d54bbaba21cce75d0299c461e.tar.bz2 |
error message for bad command argument (#777)
Diffstat (limited to 'riscv/interactive.cc')
-rw-r--r-- | riscv/interactive.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/riscv/interactive.cc b/riscv/interactive.cc index faf3763..8bc30d7 100644 --- a/riscv/interactive.cc +++ b/riscv/interactive.cc @@ -184,7 +184,9 @@ void sim_t::interactive() else sout << "Unknown command " << cmd << endl; } - catch(trap_t& t) {} + catch(trap_t& t) { + sout << "Bad or missing arguments for command " << cmd << endl; + } #ifdef HAVE_BOOST_ASIO wout(&bout); // socket output, if required #endif @@ -309,6 +311,9 @@ freg_t sim_t::get_freg(const std::vector<std::string>& args) void sim_t::interactive_vreg(const std::string& cmd, const std::vector<std::string>& args) { + if (args.size() < 1) + throw trap_interactive(); + int rstart = 0; int rend = NVPR; if (args.size() >= 2) { @@ -497,11 +502,17 @@ void sim_t::interactive_until(const std::string& cmd, const std::vector<std::str bool cmd_until = cmd == "until" || cmd == "untiln"; if (args.size() < 3) - return; + throw trap_interactive(); + + if (args.size() == 3) + get_core(args[1]); // make sure that argument is a valid core number - reg_t val = strtol(args[args.size()-1].c_str(),NULL,16); + char *end; + reg_t val = strtol(args[args.size()-1].c_str(),&end,16); if (val == LONG_MAX) - val = strtoul(args[args.size()-1].c_str(),NULL,16); + val = strtoul(args[args.size()-1].c_str(),&end,16); + if (args[args.size()-1].c_str() == end) // not a valid number + throw trap_interactive(); // mask bits above max_xlen int max_xlen = procs[strtol(args[1].c_str(),NULL,10)]->get_max_xlen(); @@ -516,7 +527,7 @@ void sim_t::interactive_until(const std::string& cmd, const std::vector<std::str NULL; if (func == NULL) - return; + throw trap_interactive(); ctrlc_pressed = false; |