diff options
| author | Kathy Gray | 2015-04-17 15:03:51 +0100 |
|---|---|---|
| committer | Kathy Gray | 2015-04-17 15:03:51 +0100 |
| commit | 565d5da276d42fb7af810e5b6a84dc668eaf589e (patch) | |
| tree | 0accf50a1ef688891d0741cdea7925acdef5647f /src/elf_model/sail_interface.lem | |
| parent | 0bcc529f60400a555f45e0f3630c6c943cffb17e (diff) | |
remove old elf sources
Diffstat (limited to 'src/elf_model/sail_interface.lem')
| -rw-r--r-- | src/elf_model/sail_interface.lem | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/src/elf_model/sail_interface.lem b/src/elf_model/sail_interface.lem deleted file mode 100644 index 6c474fa7..00000000 --- a/src/elf_model/sail_interface.lem +++ /dev/null @@ -1,120 +0,0 @@ -open import Basic_classes -open import Function -open import Maybe -open import String -open import Tuple - -open import Assert_extra - -open import Bitstring -open import Error -open import Missing_pervasives -open import Show - -open import Elf_header -open import Elf_executable_file3 -open import Elf_types - -type elf_class - = ELF_Class_32 - | ELF_Class_64 - -val populate : string -> executable_process_image * elf_class -let populate fname = - let res = - (* Acquire the data from the file... *) - Bitstring.acquire fname >>= fun bs0 -> - (* Read the magic number and the flags in the header... *) - repeatM' Elf_header.ei_nident bs0 (read_unsigned_char Endianness.default_endianness) >>= fun (ident, bs) -> - match List.index ident 4 with - | Nothing -> fail "populate: ELF ident transcription error" - | Just c -> - (* Calculate whether we are dealing with a 32- or 64-bit file based on - * what we have read... - *) - if nat_of_unsigned_char c = Elf_header.elf_class_32 then - Elf_executable_file3.read_elf32_executable_file3 bs0 >>= fun ef5 -> - Elf_executable_file3.get_elf32_executable_image ef5 >>= fun (chunks, entry) -> - return ((chunks, entry), ELF_Class_32) - else if nat_of_unsigned_char c = Elf_header.elf_class_64 then - Elf_executable_file3.read_elf64_executable_file3 bs0 >>= fun ef5 -> - Elf_executable_file3.get_elf64_executable_image ef5 >>= fun (chunks, entry) -> - return ((chunks, entry), ELF_Class_64) - else - fail "populate: ELF class unrecognised" - end - in - match res with - | Fail err -> failwith err - | Success chunks -> chunks - end - -val obtain_symbol_to_address_mapping : string -> list (string * nat) -let obtain_symbol_to_address_mapping fname = - let res = - (* Acquire the data from the file... *) - Bitstring.acquire fname >>= fun bs0 -> - (* Read the magic number and the flags in the header... *) - repeatM' Elf_header.ei_nident bs0 (read_unsigned_char Endianness.default_endianness) >>= fun (ident, bs) -> - match List.index ident 4 with - | Nothing -> fail "populate: ELF ident transcription error" - | Just c -> - (* Calculate whether we are dealing with a 32- or 64-bit file based on - * what we have read... - *) - if nat_of_unsigned_char c = Elf_header.elf_class_32 then - Elf_executable_file3.read_elf32_executable_file3 bs0 >>= fun f1 -> - Elf_executable_file3.get_elf32_symbol_table f1 >>= fun symtab -> - Elf_executable_file3.get_elf32_symbol_string_table f1 >>= fun strtab -> - Elf_symbol_table.get_elf32_symbol_image_address symtab strtab >>= fun strs -> - return strs - else if nat_of_unsigned_char c = Elf_header.elf_class_64 then - Elf_executable_file3.read_elf64_executable_file3 bs0 >>= fun f1 -> - Elf_executable_file3.get_elf64_symbol_table f1 >>= fun symtab -> - Elf_executable_file3.get_elf64_symbol_string_table f1 >>= fun strtab -> - Elf_symbol_table.get_elf64_symbol_image_address symtab strtab >>= fun strs -> - return strs - else - fail "obtain_symbol_to_address_mapping: ELF class unrecognised" - end - in - match res with - | Fail err -> failwith err - | Success strs -> strs - end - -val populate_and_obtain_symbol_to_address_mapping : string -> ((executable_process_image * elf_class) * list (string * nat)) -let populate_and_obtain_symbol_to_address_mapping fname = - let res = - (* Acquire the data from the file... *) - Bitstring.acquire fname >>= fun bs0 -> - (* Read the magic number and the flags in the header... *) - repeatM' Elf_header.ei_nident bs0 (read_unsigned_char Endianness.default_endianness) >>= fun (ident, bs) -> - match List.index ident 4 with - | Nothing -> fail "populate: ELF ident transcription error" - | Just c -> - (* Calculate whether we are dealing with a 32- or 64-bit file based on - * what we have read... - *) - if nat_of_unsigned_char c = Elf_header.elf_class_32 then - Elf_executable_file3.read_elf32_executable_file3 bs0 >>= fun f1 -> - Elf_executable_file3.get_elf32_symbol_table f1 >>= fun symtab -> - Elf_executable_file3.get_elf32_symbol_string_table f1 >>= fun strtab -> - Elf_symbol_table.get_elf32_symbol_image_address symtab strtab >>= fun strs -> - Elf_executable_file3.get_elf32_executable_image f1 >>= fun (chunks, entry) -> - return (((chunks, entry), ELF_Class_32), strs) - else if nat_of_unsigned_char c = Elf_header.elf_class_64 then - Elf_executable_file3.read_elf64_executable_file3 bs0 >>= fun f1 -> - Elf_executable_file3.get_elf64_symbol_table f1 >>= fun symtab -> - Elf_executable_file3.get_elf64_symbol_string_table f1 >>= fun strtab -> - Elf_symbol_table.get_elf64_symbol_image_address symtab strtab >>= fun strs -> - Elf_executable_file3.get_elf64_executable_image f1 >>= fun (chunks, entry) -> - return (((chunks, entry), ELF_Class_64), strs) - else - fail "populate_and_obtain_symbol_to_address_mapping: ELF class unrecognised" - end - in - match res with - | Fail err -> failwith err - | Success res -> res - end
\ No newline at end of file |
