summaryrefslogtreecommitdiff
path: root/src/elf_loader.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/elf_loader.ml')
-rw-r--r--src/elf_loader.ml18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/elf_loader.ml b/src/elf_loader.ml
index d6016c8b..99407393 100644
--- a/src/elf_loader.ml
+++ b/src/elf_loader.ml
@@ -176,6 +176,24 @@ let load_elf ?writer:(writer=write_sail_lib) name =
opt_elf_class := ELF_Class_32
)
+let load_binary ?writer:(writer=write_sail_lib) addr name =
+ let f = open_in_bin name in
+ let buf = Buffer.create 1024 in
+ try
+ while true do
+ let char = input_char f in
+ Buffer.add_char buf char;
+ done;
+ assert false
+ with
+ | End_of_file -> begin
+ Bytes.iteri (fun i ch -> writer addr i (int_of_char ch)) (Buffer.to_bytes buf);
+ close_in f
+ end
+ | exc ->
+ close_in f;
+ raise exc
+
(* The sail model can access this by externing a unit -> int function
as Elf_loader.elf_entry. *)
let elf_entry () = !opt_elf_entry