summaryrefslogtreecommitdiff
path: root/src/interpreter.ml
diff options
context:
space:
mode:
authorAlasdair Armstrong2019-11-01 20:13:36 +0000
committerAlasdair Armstrong2019-11-01 20:13:36 +0000
commit3aca640eaf8cb10d473c64bd1ee7c462ab2236f4 (patch)
treeed3f87873bb564956c1256606b80f69b009bac8d /src/interpreter.ml
parent24c0617820ff98a7cc46d21ededc13c9d6b56e24 (diff)
More work on GDB interface
The following now works to run sail on every HVC call with hafnium function gdb_init() -> unit = { // Connect to QEMU via GDB sail_gdb_qemu(""); sail_gdb_symbol_file("hafnium.elf.sym"); sail_gdb_send("break-insert sync_lower_exception") } function gdb() -> unit = { gdb_init(); while true do { sail_gdb_send("exec-continue"); sail_gdb_sync() } }
Diffstat (limited to 'src/interpreter.ml')
-rw-r--r--src/interpreter.ml1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/interpreter.ml b/src/interpreter.ml
index dd322369..baa3f240 100644
--- a/src/interpreter.ml
+++ b/src/interpreter.ml
@@ -286,6 +286,7 @@ let rec step (E_aux (e_aux, annot) as orig_exp) =
match e_aux with
| E_block [] -> wrap (E_lit (L_aux (L_unit, Parse_ast.Unknown)))
| E_block [exp] when is_value exp -> return exp
+ | E_block [E_aux (E_block _, _) as exp] -> return exp
| E_block (exp :: exps) when is_value exp -> wrap (E_block exps)
| E_block (exp :: exps) ->
step exp >>= fun exp' -> wrap (E_block (exp' :: exps))