diff options
| author | Alasdair Armstrong | 2019-11-01 20:13:36 +0000 |
|---|---|---|
| committer | Alasdair Armstrong | 2019-11-01 20:13:36 +0000 |
| commit | 3aca640eaf8cb10d473c64bd1ee7c462ab2236f4 (patch) | |
| tree | ed3f87873bb564956c1256606b80f69b009bac8d /src/interpreter.ml | |
| parent | 24c0617820ff98a7cc46d21ededc13c9d6b56e24 (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.ml | 1 |
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)) |
