Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Wiederhake, Tim" <tim.wiederhake@intel.com>
To: Yao Qi <qiyaoltc@gmail.com>
Cc: "Jose E. Marchesi" <jose.marchesi@oracle.com>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: MemoryView missing from Python 2.4 and 2.6
Date: Mon, 06 Mar 2017 08:56:00 -0000	[thread overview]
Message-ID: <9676A094AF46E14E8265E7A3F4CCE9AF942654@irsmsx105.ger.corp.intel.com> (raw)
In-Reply-To: <86y3wmpsng.fsf@gmail.com>

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

Hi Yao,

> The change looks reasonable to me.  Do we need to update test case?
> In py-inferior.exp, we have (...)

Thanks for the pointer. I've attached a revised version of the patch.

Tim

> -----Original Message-----
> From: gdb-patches-owner@sourceware.org [mailto:gdb-patches-
> owner@sourceware.org] On Behalf Of Yao Qi
> Sent: Friday, March 3, 2017 11:22 AM
> To: Wiederhake, Tim <tim.wiederhake@intel.com>
> Cc: Jose E. Marchesi <jose.marchesi@oracle.com>; gdb-
> patches@sourceware.org
> Subject: Re: MemoryView missing from Python 2.4 and 2.6
> 
> "Wiederhake, Tim" <tim.wiederhake@intel.com> writes:
> 
> > This changes the return type of "gdb.BtraceInstruction.data ()" from
> > "memoryview" to "buffer" on Python 2.7 and below, similar to what
> > "gdb.Inferior.read_memory ()" does.
> 
> The change looks reasonable to me.  Do we need to update test case?
> In py-inferior.exp, we have
> 
> gdb_py_test_silent_cmd "python str = gdb.inferiors()\[0\].read_memory
> (addr, 5); print(str)" \
>   "read str contents" 1
> if { $gdb_py_is_py3k == 0 } {
>   gdb_py_test_silent_cmd "python a = 'a'" "" 0 } else {
>   gdb_py_test_silent_cmd "python a = bytes('a', 'ascii')" "" 0 }
> 
> I assume we need something similar here.
> 
> --
> Yao (齐尧)
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

[-- Attachment #2: v2-0001-Fix-break-on-Python-2.patch --]
[-- Type: application/octet-stream, Size: 2818 bytes --]

From 093c751500597f503b5cc24955765fc746a86f33 Mon Sep 17 00:00:00 2001
From: Tim Wiederhake <tim.wiederhake@intel.com>
Date: Tue, 28 Feb 2017 09:10:58 +0100
Subject: [PATCH v2] Fix break on Python 2

This changes the return type of "gdb.BtraceInstruction.data ()" from
"memoryview" to "buffer" on Python 2.7 and below, similar to what
"gdb.Inferior.read_memory ()" does.

2017-03-06  Tim Wiederhake  <tim.wiederhake@intel.com>

gdb/ChangeLog:

	* python/py-record-btrace.c (btpy_insn_data): Change return type
	for Python 2.

gdb/doc/ChangeLog:

	* python.texi (Recordings In Python): Document return type of
	gdb.BtraceInstruction.data.

gdb/testsuite/ChangeLog:
	* gdb.python/py-record-btrace.exp: Check for buffer on Python 2
	and memory view on Python 3.


---
 gdb/doc/python.texi                           | 3 ++-
 gdb/python/py-record-btrace.c                 | 5 +++++
 gdb/testsuite/gdb.python/py-record-btrace.exp | 6 +++++-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index c3ea203..b4a52bd 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -3181,7 +3181,8 @@ if the instruction is a gap or the debug symbols could not be read.
 
 @defvar BtraceInstruction.data
 A buffer with the raw instruction data.  May be @code{None} if the
-instruction is a gap.
+instruction is a gap.  In Python 3, the return value is a @code{memoryview}
+object.
 @end defvar
 
 @defvar BtraceInstruction.decoded
diff --git a/gdb/python/py-record-btrace.c b/gdb/python/py-record-btrace.c
index 6158f31..c816332 100644
--- a/gdb/python/py-record-btrace.c
+++ b/gdb/python/py-record-btrace.c
@@ -330,7 +330,12 @@ btpy_insn_data (PyObject *self, void *closure)
   if (object == NULL)
     return NULL;
 
+#ifdef IS_PY3K
   return PyMemoryView_FromObject (object);
+#else
+  return PyBuffer_FromObject (object, 0, Py_END_OF_BUFFER);
+#endif
+
 }
 
 /* Implementation of BtraceInstruction.decode [str].  Returns
diff --git a/gdb/testsuite/gdb.python/py-record-btrace.exp b/gdb/testsuite/gdb.python/py-record-btrace.exp
index 65a3e7d..7752cac 100644
--- a/gdb/testsuite/gdb.python/py-record-btrace.exp
+++ b/gdb/testsuite/gdb.python/py-record-btrace.exp
@@ -85,7 +85,11 @@ with_test_prefix "instruction " {
     gdb_test "python print(i.error)" "None"
     gdb_test "python print(i.sal)" "symbol and line for .*"
     gdb_test "python print(i.pc)" "$decimal"
-    gdb_test "python print(i.data)" "<memory at $hex>"
+    if { $gdb_py_is_py3k == 0 } {
+	gdb_test "python print(repr(i.data))" "<read-only buffer for $hex,.*>"
+    } else {
+	gdb_test "python print(repr(i.data))" "<memory at $hex>"
+    }
     gdb_test "python print(i.decoded)" ".*"
     gdb_test "python print(i.size)" "$decimal"
     gdb_test "python print(i.is_speculative)" "False"
-- 
2.7.4


  reply	other threads:[~2017-03-06  8:56 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-23 16:48 Jose E. Marchesi
2017-02-23 17:06 ` Jose E. Marchesi
2017-02-23 22:59 ` Yao Qi
2017-02-24 10:37   ` Wiederhake, Tim
2017-02-24 16:06     ` Yao Qi
2017-02-24 16:14       ` Paul.Koning
2017-02-28 10:53       ` Wiederhake, Tim
2017-02-28 12:51         ` Jose E. Marchesi
2017-03-07  0:21           ` Joel Brobecker
2017-03-07 13:38             ` Wiederhake, Tim
2017-03-07 15:27               ` Joel Brobecker
2017-03-03 10:21         ` Yao Qi
2017-03-06  8:56           ` Wiederhake, Tim [this message]
2017-03-07 10:32             ` Yao Qi
2017-03-07 17:18               ` Wiederhake, Tim
2017-03-17 15:59                 ` Yao Qi
2017-03-17 16:39                   ` Jose E. Marchesi
2017-03-20  9:04             ` Yao Qi
2017-03-20 22:44               ` Yao Qi

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=9676A094AF46E14E8265E7A3F4CCE9AF942654@irsmsx105.ger.corp.intel.com \
    --to=tim.wiederhake@intel.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jose.marchesi@oracle.com \
    --cc=qiyaoltc@gmail.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