Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Andrew Cagney <ac131313@redhat.com>
To: Kevin Buettner <kevinb@redhat.com>, gdb-patches@sources.redhat.com
Subject: [commit] Add get_target_memory ... + Use target in convert_from_func_ptr_addr
Date: Fri, 24 Oct 2003 20:27:00 -0000	[thread overview]
Message-ID: <3F998B16.4090407@redhat.com> (raw)
In-Reply-To: <1031023212255.ZM1334@localhost.localdomain>

[-- Attachment #1: Type: text/plain, Size: 568 bytes --]

> On Oct 23,  5:02pm, Andrew Cagney wrote:
> 
> 
>> If you want I can add a wrapper method, reducing the actual change to 
>> just the modification of:
>> 
>> -    return read_memory_unsigned_integer (addr, 8);
>> 
>> to:
>> 
>> +	return get_target_memory_unsigned (targ, addr, 8);
> 
> 
> That'd be great.  (With this change, consider it approved.)

I've committed the attached.  It also adds the new target wrapper methods:

	get_target_memory
and
	get_target_memory_unsigned

(I'm wondering about putting them in a separate file, but that's 
separate ...)

Andrew


[-- Attachment #2: diffs --]
[-- Type: text/plain, Size: 3944 bytes --]

2003-10-24  Andrew Cagney  <cagney@redhat.com>

	* target.c: Include "gdbcore.h".
	(get_target_memory, get_target_memory_unsigned): New functions.
	* target.h (get_target_memory, get_target_memory_unsigned): Declare.
	* ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr):
	Use get_target_memory_unsigned.
	* Makefile.in (target.o): Update dependencies.

Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.462
diff -u -r1.462 Makefile.in
--- Makefile.in	23 Oct 2003 22:36:14 -0000	1.462
+++ Makefile.in	24 Oct 2003 20:21:53 -0000
@@ -2367,7 +2367,8 @@
 	$(block_h) $(dictionary_h) $(gdb_string_h) $(gdb_stat_h) $(cp_abi_h)
 target.o: target.c $(defs_h) $(gdb_string_h) $(target_h) $(gdbcmd_h) \
 	$(symtab_h) $(inferior_h) $(bfd_h) $(symfile_h) $(objfiles_h) \
-	$(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h)
+	$(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h) \
+	$(gdbcore_h)
 thread.o: thread.c $(defs_h) $(symtab_h) $(frame_h) $(inferior_h) \
 	$(environ_h) $(value_h) $(target_h) $(gdbthread_h) $(command_h) \
 	$(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) $(ui_out_h)
Index: ppc-linux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/ppc-linux-tdep.c,v
retrieving revision 1.44
diff -u -r1.44 ppc-linux-tdep.c
--- ppc-linux-tdep.c	22 Oct 2003 23:54:11 -0000	1.44
+++ ppc-linux-tdep.c	24 Oct 2003 20:21:54 -0000
@@ -936,13 +936,11 @@
 					CORE_ADDR addr,
 					struct target_ops *targ)
 {
-  struct obj_section *s;
-
-  s = find_pc_section (addr);
+  struct section_table *s = target_section_by_addr (targ, addr);
 
   /* Check if ADDR points to a function descriptor.  */
   if (s && strcmp (s->the_bfd_section->name, ".opd") == 0)
-    return read_memory_unsigned_integer (addr, 8);
+    return get_target_memory_unsigned (targ, addr, 8);
 
   return addr;
 }
Index: target.c
===================================================================
RCS file: /cvs/src/src/gdb/target.c,v
retrieving revision 1.62
diff -u -r1.62 target.c
--- target.c	23 Oct 2003 00:13:53 -0000	1.62
+++ target.c	24 Oct 2003 20:21:54 -0000
@@ -37,6 +37,7 @@
 #include <signal.h>
 #include "regcache.h"
 #include "gdb_assert.h"
+#include "gdbcore.h"
 
 static void target_info (char *, int);
 
@@ -1212,6 +1213,28 @@
       QUIT;
     }
   return len;
+}
+
+/* Memory transfer methods.  */
+
+void
+get_target_memory (struct target_ops *ops, CORE_ADDR addr, void *buf,
+		   LONGEST len)
+{
+  if (target_read (ops, TARGET_OBJECT_MEMORY, NULL, buf, addr, len)
+      != len)
+    memory_error (EIO, addr);
+}
+
+ULONGEST
+get_target_memory_unsigned (struct target_ops *ops,
+			    CORE_ADDR addr, int len)
+{
+  char buf[sizeof (ULONGEST)];
+
+  gdb_assert (len <= sizeof (buf));
+  get_target_memory (ops, addr, buf, len);
+  return extract_unsigned_integer (buf, len);
 }
 
 static void
Index: target.h
===================================================================
RCS file: /cvs/src/src/gdb/target.h,v
retrieving revision 1.48
diff -u -r1.48 target.h
--- target.h	23 Oct 2003 03:01:55 -0000	1.48
+++ target.h	24 Oct 2003 20:21:54 -0000
@@ -248,6 +248,18 @@
 			     enum target_object object,
 			     const char *annex, const void *buf,
 			     ULONGEST offset, LONGEST len);
+
+/* Wrappers to target read/write that perform memory transfers.  They
+   throw an error if the memory transfer fails.
+
+   NOTE: cagney/2003-10-23: The naming schema is lifted from
+   "frame.h".  The parameter order is lifted from get_frame_memory,
+   which in turn lifted it from read_memory.  */
+
+extern void get_target_memory (struct target_ops *ops, CORE_ADDR addr,
+			       void *buf, LONGEST len);
+extern ULONGEST get_target_memory_unsigned (struct target_ops *ops,
+					    CORE_ADDR addr, int len);
 \f
 
 /* If certain kinds of activity happen, target_wait should perform

      parent reply	other threads:[~2003-10-24 20:27 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-23  1:37 [rfa:ppc64] " Andrew Cagney
2003-10-23 16:00 ` Kevin Buettner
2003-10-23 16:26   ` Andrew Cagney
2003-10-23 17:12     ` Kevin Buettner
2003-10-23 21:02       ` Andrew Cagney
2003-10-23 21:23         ` Kevin Buettner
2003-10-23 22:31           ` Andrew Cagney
2003-10-24 20:27           ` Andrew Cagney [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3F998B16.4090407@redhat.com \
    --to=ac131313@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=kevinb@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox