X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fvirt_mem_ksyms.ml;h=8a38caec5b9fa05904c3b9e8b5fcdb76871f27ae;hb=20ccce7fb55e81b6b8dd7d25512c4c1e215aea53;hp=32031fb4d7e2a89cee5dfe40e6b7a2d603ba15d2;hpb=e7fad361d3dbf1689a22fdd1ae5f5579d6ef5fb0;p=virt-mem.git diff --git a/lib/virt_mem_ksyms.ml b/lib/virt_mem_ksyms.ml index 32031fb..8a38cae 100644 --- a/lib/virt_mem_ksyms.ml +++ b/lib/virt_mem_ksyms.ml @@ -45,7 +45,7 @@ let common_ksyms = [ "schedule"; (* scheduler entry point *) ] -let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) = +let find_kernel_symbols debug ({ mem = mem; domname = domname } as kimage) = (* Searching for string *) let common_ksyms_nul = List.map (sprintf "\000%s\000") common_ksyms in @@ -131,7 +131,7 @@ let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) = List.iter ( fun (addr, size) -> eprintf "\t%Lx\t%Lx\t%!" addr size; - eprintf "first symbol: %s\n%!" + eprintf "first symbol: %S\n%!" (Virt_mem_mmap.get_string mem (Virt_mem_mmap.follow_pointer mem (Virt_mem_mmap.succ_long mem addr))) @@ -141,12 +141,12 @@ let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) = (* Vote for the most popular symbol table candidate and from this * generate a function to look up ksyms. *) - let ksymmap = + let ksyms, have_ksyms = let freqs = frequency ksymtabs in match freqs with | [] -> eprintf (f_"%s: cannot find start of kernel symbol table\n") domname; - Ksymmap.empty + Ksymmap.empty, false | (_, (ksymtab_addr, ksymtab_size)) :: _ -> if debug then @@ -161,23 +161,23 @@ let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) = (Int64.to_int ksymtab_size)) in (* Construct kernel symbol map. *) - let ksymmap = + let ksyms = let bits = bits_of_wordsize (Virt_mem_mmap.get_wordsize mem) in let e = Virt_mem_mmap.get_endian mem in - let rec loop ksymmap bs = + let rec loop ksyms bs = bitmatch bs with | { value : bits : endian(e); name_ptr : bits : endian(e); bs : -1 : bitstring } -> let name = Virt_mem_mmap.get_string mem name_ptr in - let ksymmap = Ksymmap.add name value ksymmap in - loop ksymmap bs + let ksyms = Ksymmap.add name value ksyms in + loop ksyms bs | { _ } -> - ksymmap + ksyms in loop Ksymmap.empty ksymtab in - ksymmap + ksyms, true in if debug then ( @@ -186,4 +186,4 @@ let find_kernel_symbols debug ({ mem = mem; domname = domname } as image) = (end_t -. start_t) ); - ((image, ksymmap) : image1) + { kimage with ksyms = ksyms; have_ksyms = have_ksyms }