summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlasdair Armstrong2017-11-21 17:31:17 +0000
committerAlasdair Armstrong2017-11-21 17:31:17 +0000
commit0437f97dbcf4e8a1a6e55ccb249e754dbd565e00 (patch)
treea0da6b00323666fcdb82d66cf2545fa9fef75cd1
parent97cf53759eab27d3c3ac7df95bf1370707609dc4 (diff)
Expose entry point in elf_loader for Sail model
-rw-r--r--editors/sail2-mode.el2
-rw-r--r--lib/ocaml_rts/elf_loader.ml6
2 files changed, 7 insertions, 1 deletions
diff --git a/editors/sail2-mode.el b/editors/sail2-mode.el
index 2958af21..b93542b5 100644
--- a/editors/sail2-mode.el
+++ b/editors/sail2-mode.el
@@ -12,7 +12,7 @@
(defconst sail2-kinds
'("Int" "Type" "Order" "inc" "dec"
- "barr" "depend" "rreg" "wreg" "rmem" "rmemt" "wmv" "wmvt" "eamem"
+ "barr" "depend" "rreg" "wreg" "rmem" "rmemt" "wmv" "wmvt" "eamem" "wmem"
"exmem" "undef" "unspec" "nondet" "escape"))
(defconst sail2-types
diff --git a/lib/ocaml_rts/elf_loader.ml b/lib/ocaml_rts/elf_loader.ml
index ab49c57b..b5ecce24 100644
--- a/lib/ocaml_rts/elf_loader.ml
+++ b/lib/ocaml_rts/elf_loader.ml
@@ -45,6 +45,7 @@ open Big_int
let opt_file_arguments = ref ([] : string list)
let opt_elf_threads = ref 1
+let opt_elf_entry = ref zero_big_int
let options = Arg.align []
@@ -125,5 +126,10 @@ let load_elf () =
match !opt_file_arguments with
| (name :: _) ->
let segments, e_entry = read name in
+ opt_elf_entry := e_entry;
List.iter load_segment segments
| [] -> ()
+
+(* The sail model can access this by externing a unit -> int function
+ as Elf_loader.elf_entry. *)
+let elf_entry () = !opt_elf_entry