diff options
| author | Jon French | 2018-06-11 15:25:02 +0100 |
|---|---|---|
| committer | Jon French | 2018-06-11 15:25:02 +0100 |
| commit | 826e94548a86a88d8fefeb1edef177c02bf5d68d (patch) | |
| tree | fc9a5484440e030cc479101c5cab345c1c77468e /src/elf_loader.ml | |
| parent | 5717bb3d0cef5932cb2b33bc66b3b2f0c0552164 (diff) | |
| parent | 4336409f923c10a8c5e4acc91fa7e6ef5551a88f (diff) | |
Merge branch 'sail2' into mappings
(involved some manual tinkering with gitignore, type_check, riscv)
Diffstat (limited to 'src/elf_loader.ml')
| -rw-r--r-- | src/elf_loader.ml | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/elf_loader.ml b/src/elf_loader.ml index 02ff072b..d2a0e9b5 100644 --- a/src/elf_loader.ml +++ b/src/elf_loader.ml @@ -60,9 +60,11 @@ let hex_line bs = in String.concat "" (List.mapi hex_char bs) ^ " " ^ String.concat "" (List.map (fun c -> Printf.sprintf "%c" (escape_char c)) bs) -let rec break n = function - | [] -> [] - | (_ :: _ as xs) -> [Lem_list.take n xs] @ break n (Lem_list.drop n xs) +let break n xs = + let rec helper acc =function + | [] -> List.rev acc + | (_ :: _ as xs) -> helper ([Lem_list.take n xs] @ acc) (Lem_list.drop n xs) + in helper [] xs let print_segment seg = let bs = seg.Elf_interpreted_segment.elf64_segment_body in @@ -121,7 +123,7 @@ let load_segment ?writer:(writer=write_sail_lib) seg = prerr_endline ("Segment base address: " ^ Big_int.to_string base); prerr_endline ("Segment physical address: " ^ Big_int.to_string paddr); print_segment seg; - List.iteri (writer paddr) (List.map int_of_char (Byte_sequence.char_list_of_byte_sequence bs)) + List.iteri (writer paddr) (List.rev_map int_of_char (List.rev (Byte_sequence.char_list_of_byte_sequence bs))) let load_elf ?writer:(writer=write_sail_lib) name = let segments, e_entry, symbol_map = read name in |
