Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [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