*)
let log_buf = StringMap.find "log_buf" symbols in
let log_buf = Kernel.follow_pointer k log_buf in
+ debug "log_buf = %Ld" log_buf;
let log_buf_len = StringMap.find "log_buf_len" symbols in
let log_buf_len = Kernel.get_int32 k log_buf_len in
+ debug "log_buf_len = %Ld" log_buf_len;
(* let log_start = StringMap.find "log_start" symbols in
let log_start = Kernel.get_int64 k log_start in *)
let log_end = StringMap.find "log_end" symbols in
let log_end = Kernel.get_int64 k log_end in
+ debug "log_end = %Ld" log_end;
(* let con_start = StringMap.find "con_start" symbols in
let con_start = Kernel.get_int64 k con_start in *)
let logged_chars = StringMap.find "logged_chars" symbols in
let logged_chars = Kernel.get_int64 k logged_chars in
+ debug "logged_chars = %Ld" logged_chars;
(* This is basically the same algorithm from
* printk.c:do_syslog type=3, translated into OCaml. Unlike
with
Not_found ->
error "could not find kernel log buffer in kernel image";
+ error "try: %s --dump-kernel %s | strings | less"
+ (get_program_name ()) guest_name;
exit 1
)
match addr with
| None ->
error "init_uts_ns nor system_utsname symbols not found in this kernel";
+ error "try: %s --dump-kernel %s | strings | less"
+ (get_program_name ()) guest_name;
exit 1
| Some addr ->
(* Sanity check. *)
if system <> "Linux" then (
error "utsname symbols found in kernel, but points to unknown structure";
+ error "try: %s --dump-kernel %s | strings | less"
+ (get_program_name ()) guest_name;
exit 1
);