|
|
|
@ -260,7 +260,10 @@ dis_asm_print_address (bfd_vma addr, struct disassemble_info *info) |
|
|
|
print_address (addr, info->stream); |
|
|
|
} |
|
|
|
|
|
|
|
/* Read an integer from debugged memory, given address and number of bytes. */ |
|
|
|
/* Argument / return result struct for use with
|
|
|
|
do_captured_read_memory_integer(). MEMADDR and LEN are filled in |
|
|
|
by gdb_read_memory_integer(). RESULT is the contents that were |
|
|
|
successfully read from MEMADDR of length LEN. */ |
|
|
|
|
|
|
|
struct captured_read_memory_integer_arguments |
|
|
|
{ |
|
|
|
@ -269,6 +272,13 @@ struct captured_read_memory_integer_arguments |
|
|
|
LONGEST result; |
|
|
|
}; |
|
|
|
|
|
|
|
/* Helper function for gdb_read_memory_integer(). DATA must be a
|
|
|
|
pointer to a captured_read_memory_integer_arguments struct. |
|
|
|
Return 1 if successful. Note that the catch_errors() interface |
|
|
|
will return 0 if an error occurred while reading memory. This |
|
|
|
choice of return code is so that we can distinguish between |
|
|
|
success and failure. */ |
|
|
|
|
|
|
|
static int |
|
|
|
do_captured_read_memory_integer (void *data) |
|
|
|
{ |
|
|
|
@ -278,9 +288,13 @@ do_captured_read_memory_integer (void *data) |
|
|
|
|
|
|
|
args->result = read_memory_integer (memaddr, len); |
|
|
|
|
|
|
|
return 0; |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
/* Read memory at MEMADDR of length LEN and put the contents in
|
|
|
|
RETURN_VALUE. Return 0 if MEMADDR couldn't be read and non-zero |
|
|
|
if successful. */ |
|
|
|
|
|
|
|
int |
|
|
|
safe_read_memory_integer (CORE_ADDR memaddr, int len, LONGEST *return_value) |
|
|
|
{ |
|
|
|
@ -291,7 +305,7 @@ safe_read_memory_integer (CORE_ADDR memaddr, int len, LONGEST *return_value) |
|
|
|
|
|
|
|
status = catch_errors (do_captured_read_memory_integer, &args, |
|
|
|
"", RETURN_MASK_ALL); |
|
|
|
if (!status) |
|
|
|
if (status) |
|
|
|
*return_value = args.result; |
|
|
|
|
|
|
|
return status; |
|
|
|
|