--- ./gdb/gdbcore.h_orig	2016-02-23 05:47:05.000000000 -0600
+++ ./gdb/gdbcore.h	2016-02-23 05:47:29.000000000 -0600
@@ -70,9 +70,9 @@
 
 extern LONGEST read_memory_integer (CORE_ADDR memaddr,
 				    int len, enum bfd_endian byte_order);
-extern int safe_read_memory_integer (CORE_ADDR memaddr, int len,
+extern CORE_ADDR safe_read_memory_integer (CORE_ADDR memaddr, int len,
 				     enum bfd_endian byte_order,
-				     LONGEST *return_value);
+				     CORE_ADDR *return_value);
 
 /* Read an unsigned integer from debugged memory, given address and
    number of bytes.  */
--- ./gdb/corefile.c_orig	2016-02-23 05:43:53.000000000 -0600
+++ ./gdb/corefile.c	2016-02-23 05:45:18.000000000 -0600
@@ -293,17 +293,17 @@
    RETURN_VALUE.  Return 0 if MEMADDR couldn't be read and non-zero
    if successful.  */
 
-int
+CORE_ADDR
 safe_read_memory_integer (CORE_ADDR memaddr, int len, 
 			  enum bfd_endian byte_order,
-			  LONGEST *return_value)
+			  CORE_ADDR *return_value)
 {
   gdb_byte buf[sizeof (LONGEST)];
 
   if (target_read_memory (memaddr, buf, len))
     return 0;
 
-  *return_value = extract_signed_integer (buf, len, byte_order);
+  *return_value = extract_unsigned_integer (buf, len, byte_order);
   return 1;
 }
 
