summaryrefslogtreecommitdiff
path: root/kernel/driver.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-02-19 13:36:54 +0100
committerClifford Wolf <clifford@clifford.at>2015-02-19 13:36:54 +0100
commite0e6d130cd083a8285ea2991629e0049023da234 (patch)
tree7be213913f1145b536f7b696e95e300ef67c834f /kernel/driver.cc
parent08c0fe164fefb28dc209d35e7bd757538311d2e6 (diff)
YosysJS stuff
Diffstat (limited to 'kernel/driver.cc')
-rw-r--r--kernel/driver.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/kernel/driver.cc b/kernel/driver.cc
index d0ebdde7..dda27c6a 100644
--- a/kernel/driver.cc
+++ b/kernel/driver.cc
@@ -78,6 +78,7 @@ USING_YOSYS_NAMESPACE
extern "C" int main(int, char**);
extern "C" void run(const char*);
+extern "C" const char *errmsg();
extern "C" const char *prompt();
int main(int, char**)
@@ -92,7 +93,21 @@ int main(int, char**)
void run(const char *command)
{
- run_pass(command);
+ int selSize = GetSize(yosys_get_design()->selection_stack);
+ try {
+ log_last_error = "Internal error (see JavaScript console for details)";
+ run_pass(command);
+ log_last_error = "";
+ } catch (...) {
+ while (GetSize(yosys_get_design()->selection_stack) > selSize)
+ yosys_get_design()->selection_stack.pop_back();
+ throw;
+ }
+}
+
+const char *errmsg()
+{
+ return log_last_error.c_str();
}
const char *prompt()