* [PATCH RFC] safe_read_memory_integer() return value...
@ 2002-05-29 17:23 Kevin Buettner
2002-05-30 15:49 ` Kevin Buettner
0 siblings, 1 reply; 2+ messages in thread
From: Kevin Buettner @ 2002-05-29 17:23 UTC (permalink / raw)
To: gdb-patches
Earlier today, I discovered that safe_read_memory_integer() was never
returning a non-zero value. It appears to me from the its usage in
arm-tdep.c that it is intended to return zero if it fails to read the
target's memory, and a non-zero value if it is successful. The
patch below changes safe_read_memory_integer to behave precisely
in this fashion.
An earlier (unposted) version of this patch used GDB_RC_OK instead of
the constant 1. I changed my mind about using this constant after I
noticed that the return type of safe_read_memory_integer() and
do_captured_read_memory_integer() should change. That would have
necessitated including gdb.h in corefile.c as well as in those files
which include gdbcore.h. I decided that this was much too big of a
ripple.
If there are no objections, I'll commit this change tomorrow.
Kevin
* corefile.c (do_captured_read_memory_integer): Return non-zero
result.
(safe_read_memory_integer): Copy result of memory read when
status is non-zero. Also, add comments.
Index: corefile.c
===================================================================
RCS file: /cvs/src/src/gdb/corefile.c,v
retrieving revision 1.18
diff -u -p -r1.18 corefile.c
--- corefile.c 6 Mar 2002 06:28:33 -0000 1.18
+++ corefile.c 29 May 2002 23:39:08 -0000
@@ -260,7 +260,10 @@ dis_asm_print_address (bfd_vma addr, str
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_argu
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 *d
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 mema
status = catch_errors (do_captured_read_memory_integer, &args,
"", RETURN_MASK_ALL);
- if (!status)
+ if (status)
*return_value = args.result;
return status;
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2002-05-30 22:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-05-29 17:23 [PATCH RFC] safe_read_memory_integer() return value Kevin Buettner
2002-05-30 15:49 ` Kevin Buettner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox